Ankündigung

Einklappen
Keine Ankündigung bisher.

Miele @Home mit MQTT

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jonny7792
    antwortet
    Guten Abend

    ich bekomme leider keine Verbindung.

    Code:
    2023-03-31 21:33:15 WARNING plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection - reason : HTTPSConnectionPool(host='api.mcs3.miele.com', port=443): Read timed out. (read timeout=10.0)
    ​

    Secret sowie Client ID Stimmen.


    Die ITEMS sind wie folgt definert:

    Code:
    MieleDevices:
    Oven:
    type: str
    miele_deviceid: '0001603806xx'
    struct: mieleathome.child
    Dryer:
    type: str
    miele_deviceid: '0001775021x'
    struct: mieleathome.child
    Washer:
    type: str
    miele_deviceid: '0001498346xx'
    struct: mieleathome.child​

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo,

    ich habe den letzten Stand als PR Richtung Develop gestellt. Eventuell schafft es der "proof of concept" des plugins in nächste Release.

    Viele Grüße
    Andre

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Doch, hast du. Alles, was unter Miele.Kuehlschrank und Miele.Steamer steht kommt automatisch durch das Struct.
    Alles gut. Jetzt kannst du dir überlegen, was du eigentlich mit den ganzen Items/Informationen anfangen willst

    Z.B.:

    grafik.png

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Das Ping ist auch bei mir auf 20 Sekunden. Einen automatischen Eintrag im Item-Tree gab es bei mir nicht. Ich habe nur die Items, die ich definiert habe:

    sh1.jpg

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Das hier:

    grafik.png

    Da bekomme ich ein Update alle 9-11s
    Das war am Anfang mal alle 5s, dann funktionierte das Eventing nicht mehr, weil sie das auf 20s hochgesetzt hatten, das Plugin aber ein Timeout von 10s hatte. Als wir das Timeout auf 30s erhöht hatten, klappte es wieder tadellos. Wenn's bei dir - warum auch immer - 5s sind und es funktioniert, umso besser. Warum es bei dir 5s, bei mir aber eher 10s sind, weiß ich nicht.

    Deine miele.yaml passt natürlich. Wenn im Admininterface im Item-Tree sowas auftaucht und plausible Werte enthält, ist alles gut:

    grafik.png

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Meine "miele.yaml" sieht so aus:

    Code:
    %YAML 1.1
    ---
    Miele:
        Kuehlschrank:
            type: str
            miele_deviceid: '007106053497'
            struct: mieleathome.child
        Steamer:
            type: str
            miele_deviceid: '000127876311'
            struct: mieleathome.child
    Die Werte sehen plausibel aus.

    Die Ausgabe im WebIf unter "Event-Informations" wird alle 5 Sekunden aufgefrischt.

    Was meinst Du mit dem Timeout von 20 Sekunden ? Ich finde nur die Aktualisierung im WebIf und die springt immer wieder auf 5s zurück.

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Sehr schön. Wie erwartet, die beiden Geräte sehen nicht außergewöhnlich aus.
    Schalt die mal ein und beobachte vor allem die Events. Wenn die zuverlässig den Zustand zurückmelden (alle 20s sollte das aktuell sein), dann ist das schon die halbe Miete. Und überprüfe nochmal das Timeout, das sollte nicht 10s sein, weil die Miele Entwickler das Intervall von 5s auf 20 erhöht haben.
    Auch ein Blick in die plugin.yaml im Miele Plugin Ordner ist sehr aufschlußreich. Vor allem, wie die Struct-/Itemdefinition aussieht.

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Hier der Device-Event der beiden Geräte:

    Code:
    {
      "007106053497": {
        "ident": {
          "type": {
            "key_localized": "Gerätetyp",
            "value_raw": 19,
            "value_localized": "Kühlschrank"
          },
          "deviceName": "",
          "protocolVersion": 1,
          "deviceIdentLabel": {
            "fabNumber": "007106053497",
            "fabIndex": "17",
            "techType": "K 37683 iDF",
            "matNumber": "09484990",
            "swids": [
              "3309",
              "0"
            ]
          },
          "xkmIdentLabel": {
            "techType": "",
            "releaseVersion": ""
          }
        },
        "state": {
          "ProgramID": {
            "value_raw": 2466250752,
            "value_localized": "",
            "key_localized": "Programmbezeichnung"
          },
          "status": {
            "value_raw": 5,
            "value_localized": "In Betrieb",
            "key_localized": "Status"
          },
          "programType": {
            "value_raw": 0,
            "value_localized": "Programm",
            "key_localized": "Programmart"
          },
          "programPhase": {
            "value_raw": 0,
            "value_localized": "",
            "key_localized": "Programmphase"
          },
          "remainingTime": [
            0,
            0
          ],
          "startTime": [
            0,
            0
          ],
          "targetTemperature": [
            {
              "value_raw": 600,
              "value_localized": 6,
              "unit": "Celsius"
            }
          ],
          "coreTargetTemperature": [],
          "temperature": [
            {
              "value_raw": 600,
              "value_localized": 6,
              "unit": "Celsius"
            }
          ],
          "coreTemperature": [],
          "signalInfo": false,
          "signalFailure": false,
          "signalDoor": false,
          "remoteEnable": {
            "fullRemoteControl": true,
            "smartGrid": false,
            "mobileStart": false
          },
          "ambientLight": null,
          "light": null,
          "elapsedTime": [],
          "spinningSpeed": {
            "unit": "U/min",
            "value_raw": null,
            "value_localized": null,
            "key_localized": "Schleuderdrehzahl"
          },
          "dryingStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Trockenstufe"
          },
          "ventilationStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Lüfterstufe"
          },
          "plateStep": [],
          "ecoFeedback": null,
          "batteryLevel": null
        }
      },
      "000127876311": {
        "ident": {
          "type": {
            "key_localized": "Gerätetyp",
            "value_raw": 31,
            "value_localized": "Combi-Dampfgarer"
          },
          "deviceName": "",
          "protocolVersion": 2,
          "deviceIdentLabel": {
            "fabNumber": "000127876311",
            "fabIndex": "10",
            "techType": "DGC6800   CH",
            "matNumber": "09453120",
            "swids": [
              "3401",
              "25003",
              "20146",
              "3384",
              "20251",
              "25086"
            ]
          },
          "xkmIdentLabel": {
            "techType": "XKM3000Z",
            "releaseVersion": "01.02"
          }
        },
        "state": {
          "ProgramID": {
            "value_raw": 0,
            "value_localized": "",
            "key_localized": "Programmbezeichnung"
          },
          "status": {
            "value_raw": 2,
            "value_localized": "Bereit",
            "key_localized": "Status"
          },
          "programType": {
            "value_raw": 0,
            "value_localized": "Programm",
            "key_localized": "Programmart"
          },
          "programPhase": {
            "value_raw": 7936,
            "value_localized": "",
            "key_localized": "Programmphase"
          },
          "remainingTime": [
            0,
            0
          ],
          "startTime": [
            0,
            0
          ],
          "targetTemperature": [
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            },
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            }
          ],
          "coreTargetTemperature": [],
          "temperature": [
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            },
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            }
          ],
          "coreTemperature": [],
          "signalInfo": false,
          "signalFailure": false,
          "signalDoor": false,
          "remoteEnable": {
            "fullRemoteControl": false,
            "smartGrid": false,
            "mobileStart": false
          },
          "ambientLight": 2,
          "light": null,
          "elapsedTime": [
            0,
            0
          ],
          "spinningSpeed": {
            "unit": "U/min",
            "value_raw": null,
            "value_localized": null,
            "key_localized": "Schleuderdrehzahl"
          },
          "dryingStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Trockenstufe"
          },
          "ventilationStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Lüfterstufe"
          },
          "plateStep": [],
          "ecoFeedback": null,
          "batteryLevel": null
        }
      }
    }​
    Und der Action-Event:

    Code:
    {
      "007106053497": {
        "processAction": [
          6
        ],
        "light": [],
        "ambientLight": [],
        "startTime": [],
        "ventilationStep": [],
        "programId": [],
        "targetTemperature": [
          {
            "zone": 1,
            "min": 1,
            "max": 9
          }
        ],
        "deviceName": true,
        "powerOn": false,
        "powerOff": false,
        "colors": [],
        "modes": []
      },
      "000127876311": {
        "processAction": [],
        "light": [],
        "ambientLight": [],
        "startTime": [],
        "ventilationStep": [],
        "programId": [],
        "targetTemperature": [],
        "deviceName": true,
        "powerOn": false,
        "powerOff": true,
        "colors": [],
        "modes": []
      }
    }​

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Auf eine Fleißarbeit könnt ihr euch schon mal einstellen.
    Alles was unter state steht, also:

    Code:
        "state": {
          "ProgramID": {
            "value_raw": 28,
            "value_localized": "ECO",
            "key_localized": "Programmbezeichnung"
          },
          "status": {
            "value_raw": 5,
            "value_localized": "In Betrieb",
            "key_localized": "Status"
          },
          "programType": {
            "value_raw": 2,
            "value_localized": "Automatikprogramm",
            "key_localized": "Programmart"
          },
          "programPhase": {
            "value_raw": 1799,
            "value_localized": "Trocknen",
            "key_localized": "Programmphase"
          },
    ​
    ist ja variabel und hängt vom Zustand ab. Da Miele nicht für alle Geräte ne schöne Liste aller raw Values und localized keys für jede Sprache anbietet, muss man das selber rausfinden. Also bei verschiedenen Programmen immer mal die Werte notieren, die dabei raus kommen. Vor allem für die Visu interessant. Das kann dauern. Ich hatte nach einem Jahr noch nen Zustand der sonst nie vorkam und ich für die Visu nachtragen musste.

    Beispiel:

    Code:
    {{ basic.symbol('', 'MieleDevices.Dryer.state.status.value_localized', ['nicht verbunden', 'Aus', 'Bereit', 'Programm gewählt', 'In Betrieb', 'Ende', 'Pause', 'Fehler!', 'Start verzögert'], ['message_attention.svg', 'scene_clothes_dryer.svg', 'scene_clothes_dryer.svg', 'scene_clothes_dryer.svg', 'scene_clothes_dryer.svg', 'scene_clothes_dryer.svg', 'scene_clothes_dryer.svg', 'message_attention.svg', 'scene_clothes_dryer.svg'], ['nicht verbunden', 'Aus', 'Bereit', 'Programm gewählt', 'In Betrieb', 'Ende', 'Pause', 'Fehler!', 'Start verzögert'], '', ['#f00', 'icon0', 'icon1', 'icon1', 'icon1', 'icon0', 'icon1', '#f00', 'icon1']) }}

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Ne, der Kurze JSON String sagt nicht viel aus.
    Du hast im selben Post weiter oben aber schon den String gepostet, der im Webinterface unter Device-Event kommen müsste:

    Code:
    {
      "00010370xxxx": {
        "ident": {
          "type": {
            "key_localized": "Gerätetyp",
            "value_raw": 7,
            "value_localized": "Geschirrspüler"
          },
          "deviceName": "",
          "protocolVersion": 2,
          "deviceIdentLabel": {
            "fabNumber": "00010370xxxx",
            "fabIndex": "64",
            "techType": "G6865",
            "matNumber": "10345030",
            "swids": [
              "3892",
              "20211",
              "20150"
            ]
          },
          "xkmIdentLabel": {
            "techType": "EK039W",
            "releaseVersion": "02.72"
          }
        },
        "state": {
          "ProgramID": {
            "value_raw": 28,
            "value_localized": "ECO",
            "key_localized": "Programmbezeichnung"
          },
          "status": {
            "value_raw": 5,
            "value_localized": "In Betrieb",
            "key_localized": "Status"
          },
          "programType": {
            "value_raw": 2,
            "value_localized": "Automatikprogramm",
            "key_localized": "Programmart"
          },
          "programPhase": {
            "value_raw": 1799,
            "value_localized": "Trocknen",
            "key_localized": "Programmphase"
          },
          "remainingTime": [
            1,
            19
          ],
          "startTime": [
            0,
            0
          ],
          "targetTemperature": [
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            }
          ],
          "coreTargetTemperature": [],
          "temperature": [
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit":"Celsius"
            },
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            },
            {
              "value_raw": -32768,
              "value_localized": null,
              "unit": "Celsius"
            }
          ],
          "coreTemperature": [],
          "signalInfo": false,
          "signalFailure": false,
          "signalDoor": false,
          "remoteEnable": {
            "fullRemoteControl": true,
            "smartGrid": false,
            "mobileStart": false
          },
          "ambientLight": null,
          "light": null,
          "elapsedTime": [
            1,
            57
          ],
          "spinningSpeed": {
            "unit": "U\/min",
            "value_raw": null,
            "value_localized": null,
            "key_localized": "Schleuderdrehzahl"
          },
          "dryingStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Trockenstufe"
          },
          "ventilationStep": {
            "value_raw": null,
            "value_localized": "",
            "key_localized": "Lüfterstufe"
          },
          "plateStep": [],
          "ecoFeedback": null,
          "batteryLevel": null
        }
      }
    }
    
    ​
    Der sieht völlig normal aus. Ist fast identisch zu meinem Trockner und der Waschmaschine. Nur sind die möglichen Zustände noch nicht im Plugin implementiert.
    Solange dieser String und die Events rechts daneben im Webinterface bei dir aber noch nicht auftauchen, ist irgendwo noch der Wurm drin.

    Der Kühlschrank von manhartm dürfte sich kaum von meinem Gefrierschrank unterscheiden, was die Daten angeht.
    Interessant werden der Dampfgarer und die Kaffeemaschine.

    Einen Kommentar schreiben:


  • gklein
    antwortet
    Hi,

    ich hab einen Geschirrspüler im Angebot.
    Die Daten im WebIF sind bei mit leer. Wenn Du mir sagen kannst welcher API-Call das ist, kann ich das auch über die Miele-Seite runterladen.

    Weiter vorn hatte ich schonmal das hier eingefügt. Evtl. ist das schon das Richtige?

    Code:
    { "fabNumber": "00010370....", "state": "In Betrieb", "type": "Geschirrspüler", "deviceName": "", "details": "https://api.mcs3.miele.com/v1/devices/00010370...." }
    00010370xxxx ist meine Device-ID.

    VG

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo,

    ich benötige "nur" die Daten des Payloads die im Web-IF des Plugins unter Event-Informations angezeigt (beide Devcie-Event / Action-Event) werden. Gerne auch via PN oder mail.
    Es muss dann die Struktur des "structs" entsprechend erweitetert werden. und eventuelle neue "Actions" ergänzt werden.
    Das mit der Kaffee-Maschine wird sicherlich nochmal spannend - die kann warhscheinlich von Espresso über Late und Melange fast alles :-)

    Viele Grüße
    Andre

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Ich hätte einen Kaffee Vollautomaten beizusteuern.
    ich werde mich in der kommenden Woche mal damit beschäftigen.

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Zitat von AndreK Beitrag anzeigen
    Hi gklein,
    (ich meine Du hast einen Dampfgarer erwähnt ?). Da diese Struktur aktuell nicht eingebaut ist wird es wohl zu Problemen kommen. Wenn Du mir die Gerätedaten der API zukommen lässt kann ich mir das gerne ansehen.
    Der Steamer steht bei mir. Was genau brauchst Du?

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hi gklein,

    welche Geräte hast Du im Einsatz, bisher sind nur Waschmaschine, Gefrierschrank, Trockner im Plugin eingebaut. Ich vermute Du hast ein anderes Gerät im Einsatz (ich meine Du hast einen Dampfgarer erwähnt ?). Da diese Struktur aktuell nicht eingebaut ist wird es wohl zu Problemen kommen. Wenn Du mir die Gerätedaten der API zukommen lässt kann ich mir das gerne ansehen. (Sollte trotz Fehlern im Web-IF zu sehen sein)

    Der Thread war fast zwei Jahre tod, also kein riesiger Bedarf. Wenn nun wieder etwas Bewegung in den Thread kommt können wir gerne weitere Geräte einbauen.
    Da ich selbst (noch) keine Miele-Geräte habe bin ich auf Eure Unterstützung zur Weiterentwicklung angewisesen.

    Viele Grüße
    Andre

    Einen Kommentar schreiben:

Lädt...
X