Ankündigung

Einklappen
Keine Ankündigung bisher.

Miele @Home mit MQTT

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

  • gklein
    antwortet
    Hallo AndreK,

    nach der Gartenarbeit habe ich mal das Exceutor-Plaugin angeworfen und getestet. Die Response ist wie von Dir als Beispiel gezeigt:

    Code:
    200
    {"access_token":"DE_de9286fbbxxxxxxxxxxxxxxxxxx","refresh_token":"DE_3cbff8995d6a32cxxxxxxxxxxxxxxxxxxxx","token_type":"Bearer","expires_in":2592000}​
    Er zeigt mir in der Fehlermeldung im Log auch schon meine Geräte-ID an. Die scheint halt nur an der falschen Stelle zu stehen, so das beim Auswerten was schiefläuft.

    Hier noch ein Screenshot vom WebIF, da sieht es soweit auch gut aus.
    Screenshot_Miele.png

    Danke für Deine Unterstützung und einen schönen Abend
    Gunnar

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Fehler gefunden. Ich lebe in der Schweiz und mein Account braucht somit den Code "de-CH". Das Python-Script oben zeigte mir diesen Fehler:

    Code:
    401
    {"message":"username/password is invalid"}
    Mit der Änderung auf 'de-CH' klappt nun alles und das Plugin läuft.
    Zuletzt geändert von manhartm; 25.03.2023, 18:30.

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo manhartm, gklein

    bitte versucht mal im Web-IF des Excecutor-Plugins oder in einer Python-Console folgenden Code mit Euren Werten

    Code:
    import requests
    import json
    Url='https://api.mcs3.miele.com/v1'
    pwd           = 'xxxxxxxx'
    user          = 'xxxxxxxxxxxxxxxxxxxxxx'
    client_id     = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    client_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    country       = 'de-DE'
    myHeaders = { "accept" : "application/json" }
            
    payload =  {"grant_type": "password",
                "password" :pwd,
                "username" : user,
                "client_id" : client_id,
                "client_secret":client_secret,
                "vg" :country
               }
            
    myResult = requests.post(Url[:-3]+'/thirdparty/token/',data=payload,headers=myHeaders)
    print (myResult.status_code)
    print (myResult.content.decode())
    Das Ergebnis sollte so aussehen. Ich vermute Du bekommst ein anderes Ergebnis sonst würde ja alles funktionieren.
    Code:
    200
    {"access_token":"DE_4326d8b2d7eec458a87a28xxxxxxxxx","refresh_token":"DE_5fdc23ad15205cd07d61xxxxxxxxxxxx","token_type":"Bearer","expires_in":2592000}​
    Viele Grüße
    Andre
    Zuletzt geändert von AndreK; 25.03.2023, 14:18.

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hi,

    im Moment hab ich auch keine weitere Idee, ich schau mir das übers Wochenende mal genauer an.

    VG
    Andre

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Hier der Inhalt meiner "smarthome-warnings.log" auf meinem Test-System:

    Code:
    2023-03-23  19:48:09 NOTICE   lib.smarthome       --------------------   Init SmartHomeNG v1.9.4.1-c35554ee.develop   --------------------
    2023-03-23  19:48:09 NOTICE   lib.smarthome       Running in Python interpreter 'v3.9.2 final', from directory /usr/local/smarthome
    2023-03-23  19:48:09 NOTICE   lib.smarthome        - operating system 'Debian GNU/Linux 11 (bullseye)' (pid=6641)
    2023-03-23  19:48:09 NOTICE   lib.smarthome        - on 'Raspberry Pi (Rev. d03115)'
    2023-03-23  19:48:11 NOTICE   lib.smarthome        - Nutze Feiertage für Land 'CH', Provinz 'ZH', 1 benutzerdefinierte(r) Feiertag(e) definiert
    2023-03-23  19:48:13 NOTICE   lib.userfunctions   Imported userfunctions from 'mm' v0.1.0 - This Tools
    2023-03-23  19:48:26 NOTICE   lib.smarthome       --------------------   SmartHomeNG initialization finished   --------------------
    2023-03-23  19:49:26 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:50:56 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:52:26 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:53:57 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:55:27 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:56:57 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  19:58:27 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo manhartm,

    kannst Du bitte direkt beim Neustart von shNG nochmal schauen ob Log-Einträge in der "warnings.log" sind.

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Auch in der "smarthome-warnings.log" sehe ich nur diese Einträge:

    Code:
    2023-03-23  16:47:29 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  16:48:59 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  16:50:29 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=60.0)
    2023-03-23  16:52:00 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=60.0)
    2023-03-23  16:53:30 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  16:55:00 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hi,

    Benötigt werden nur diese Pakete
    Code:
    import requests
    import json
    import time
    import threading
    from datetime import datetime, timedelta
    import sys
    ​
    daran kann es nicht liegen.

    Irgendetwas beim Login geht schief. in der "smarthome-warnings.log" müsste ein Eintrag mit "Error while authentication on​......" sein. Ist dieser vorhanden ?
    Gibt es in der warnings.log andere Einträge vom Miele-Plugin ?

    Gruss Andre

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Ich verwende bei mir aktuell für diese Tests:

    Betriebssystemebian GNU/Linux 11 (bullseye)
    SmartHomeNG Version:v1.9.4.1-a3ab3c93.develop
    Python Version:3.9.2 final
    mieleathome 1.0.0

    Meine Pakete:

    shp.jpg
    Angehängte Dateien

    Einen Kommentar schreiben:


  • Sipple
    antwortet
    Ok, also schon das ganze OAuth Gedöhns funktioniert nicht. Mich wundert nur, dass da nichts im Log steht.

    Deine Plugin Konfiguration sieht ja korrekt aus. Ich gehe davon aus, dass du Secret, ID, Passwort etc. fehlerfrei übernommen hast.
    Fangen wir mit den Versionen an:


    Mein System: Debian GNU/Linux 11 (bullseye)​ auf Intel NUC, genauso läuft es aber auch problemlos auf meinen PI's.
    Meine SHNG Version: 1.9.2. Master
    Meine Python Version: 3.9.2 final​
    Meine Miele@home Plugin Version: 1.0.0 mit dem Timeout auf 30s.
    Meine Python Pakete:

    grafik.png

    AndreK, welche brauchen wir für das Plugin?

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Ich habe den Level für das Plugin auf Debug geändert und sehe leider nicht viel mehr:

    Code:
    2023-03-23  15:06:33 DEBUG    plugins.mieleathome Run method called
    2023-03-23  15:06:33 DEBUG    plugins.mieleathome mieleathome - starting Event-Listener
    2023-03-23  15:06:33 DEBUG    plugins.mieleathome scheduler_add: name = plugins.mieleathome.poll_device, parameters: prio=3, cycle=300
    2023-03-23  15:06:33 DEBUG    plugins.mieleathome scheduler_add: name = plugins.mieleathome._refreshToken, parameters: prio=3, cycle=-100
    2023-03-23  15:06:33 NOTICE   lib.smarthome       --------------------   SmartHomeNG initialization finished   --------------------
    2023-03-23  15:07:33 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  15:09:03 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)
    2023-03-23  15:10:33 WARNING  plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : Expecting value: line 1 column 1 (char 0)

    Einen Kommentar schreiben:


  • manhartm
    antwortet
    Ich verwende u.a. das OpenWeatherMap Plugin und das läuft stabil. Also klappt die Namensauflösung.

    Die Hochkomma habe ich weggelassen und es ändert nichts. Die Fehler bleiben.

    Ich verwende für die Tests den aktuellen Dev.

    Einen Kommentar schreiben:


  • gklein
    antwortet
    Hi,

    ich klinke mich mal mit ein, da ich das gestern abend auch getestet habe und erstmal keine Geräte gefunden habe.
    Nachdem mir mal das JSON und die Auswertung im Plugin angeschaut habe, sieht es so aus als wenn für unseren Geschirrspüler ein ganz anderes JSON zurückkommt für das das Parsen nicht funktioniert.
    Fehlermeldung im Log ist:

    Code:
    plugins.mieleathome mieleathome - connection canceled - waiting 30sec - retry to get new Event-Connection -  reason : '00010370xxxx'
    
    ​
    Wobei '00010370xxxx' die Device-ID ist.
    Das JSON (über das php-Script abgerufen) sieht dann so aus

    Code:
    {"00010370xxxx":{"ident":{"type":{"key_localized":"Ger\u00e4tetyp","value_raw":7,"value_localized":"Geschirrsp\u00fcler"},"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\u00fcfterstufe"},"plateStep":[],"ecoFeedback":null,"batteryLevel":null}}}
    
    ​
    Grüße
    Gunnar

    habe gerade gesehen, dass das Plugin nur devices/short abruft. Das sieht für einen GSP so aus
    Code:
     { "fabNumber": "00010370....", "state": "In Betrieb", "type": "Geschirrspüler", "deviceName": "", "details": "https://api.mcs3.miele.com/v1/devices/00010370...." } ]
    Zuletzt geändert von gklein; 23.03.2023, 15:34.

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Ich hab ja keine Ahnung, aber kommt dein Rechner überhaupt ins Internet, funktioniert die DNS Auflösung? Aber zum debuggen müssen da andere ran.

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    OK,
    dann funktioniert das ganze Login nicht. Eventuell hast Du noch Einträge mit Warning-Level beim Start von shng. Im ersten Schritt würde ich die Hochkommas (') in
    der Konfiguration der etc/plugin.yaml mal weg lassen, es könnte sein, dass diese mit in den jeweiligen String wandern. Dann passt natürlich gar nichts mehr.

    Gruss Andre

    Einen Kommentar schreiben:

Lädt...
X