Netatmo Modul - 38_netatmo.pm (Support)

Begonnen von Markus M., 17 Mai 2016, 12:37:34

Vorheriges Thema - Nächstes Thema

Markus M.

Zitat von: AB1970 am 11 Juni 2024, 18:06:27Ich kann mal schauen, kann ich denn die Anzahl der Log Einträge zeitlich reduzieren?
Du scheinst auch das Problem mit dem Token zu haben.
Probier auch mal die Test-Version aus, die ich heute angehängt habe.
Dazu die Datei in das fhem/FHEM Verzeichnis kopieren, die reguläre Version überschreiben und dann mit "reload 38_netatmo" aktivieren.
Das Account Device hat ein manuelles "set refreshtoken" und das Logging ist auf die Token bei verbose=4 optimiert
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Blue-Denn

Hallo Miteinander,

ich hatte auch das Problem, dass wenn ich den Refresh Token von der Netatmo-Seite angegeben habe, ich alle 2-3 Stunden keine Verbindung her hatte. Mein Problem war (ist eigentlich immer noch), dass wenn ich auf der Netatmo-Seite navigiere, Access und Refresh Token nicht mehr angezeigt werden. Die Kommunikation mit Netatmo war diesbezüglich auch nicht sehr hilfreich.
ZitatNow, this behavior changed to be compliant with the recommendations of the RFC of the OAuth2 Authorization Framework (section 10.4) and improving the security of the data of our users
When refreshing tokens, access_token and refresh_token values will be automatically renewed and former tokens invalidated
 
So, if you do not update and use the new refresh_token value when refreshing your access_token, your users will be disconnected after 3 hours and you will retrieve an "invalid_grant" error
To fix it, you need to update the tokens value as soon as you get the newly generated ones

Das hat mich dann dazu gebracht den Access Token in der FHEM Definition anzugeben. Nach einem get <name> update lief dann alles. Derzeitig habe ich das Gefühl, dass der Token in der Definition sich regelmäßig ändert (zumindest ist es nicht mehr der vom Anfang), aber das Modul läuft seit 1,5 Tagen wieder reibungslos.

Daher eine kurze Frage, da es für mich aus der commandref nicht ganz hervorgeht:
Wird bei der Definition der Refresh Token oder der Access Token angegeben?

Viel Grüße

Blue-Denn

grappa24

me too:

Nach jedem Neustart muss ich mir ein neues refresh token besorgen.

Markus: Wo find ich die "überarbeitete" 38_netatmo.pm - im Thread hier im 1. Post?

Gruß,
Dieter
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

tomcat.x

Zitat von: Blue-Denn am 12 Juni 2024, 10:03:39Wird bei der Definition der Refresh Token oder der Access Token angegeben?
Der Refresh-Token wird übergeben, damit dann Refresh- und Access-Token aktualisiert. Und die sind dann nur 3 Stunden gültig. Daher werden sie alle 2:20 (wenn ich das im Log richtig gesehen habe) aktualisiert.

Zitat von: grappa24 am 12 Juni 2024, 10:37:23Nach jedem Neustart muss ich mir ein neues refresh token besorgen.

Markus: Wo find ich die "überarbeitete" 38_netatmo.pm - im Thread hier im 1. Post?
Sicherst Du vor einen Neustart (siehe Diskussion weiter oben)? Das Refresh-Toekn wird in die Definition geschreiben, damit das aber einen Neustart übersteht, muss vorher gesichert werden.

Die letzte Version war hier drin https://forum.fhem.de/index.php?msg=1314949,  aber das war glaube ich nur eine zum Testen. Die anderen Änderungen gibt es schon regulär mit einem Update.
FHEM: 6.3 auf Raspi 3B+, Raspbian (Buster), Perl v5.28.1
Sender/Empfänger: 2 x CULv3, Duofern Stick, HM-MOD-RPI-PCB
Gateways: FRITZ!Box 6591 (OS: 8.00), Trädfri, ConBee 2,  piVCCU, OpenMQTTGateway
Sensoren/Aktoren: FRITZ!DECT, FS20, FHT, HMS, HomeMatic, Trädfri, DuoFern, NetAtmo

grappa24

Zitat von: tomcat.x am 12 Juni 2024, 10:50:55
Zitat von: grappa24 am 12 Juni 2024, 10:37:23Nach jedem Neustart muss ich mir ein neues refresh token besorgen.
Sicherst Du vor einen Neustart (siehe Diskussion weiter oben)? Das Refresh-Toekn wird in die Definition geschreiben, damit das aber einen Neustart übersteht, muss vorher gesichert werden.
o.k. hab FHEM jetzt mal bewusst gesichert und neugestartet, netatmo läuft noch  ;D
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Markus M.

In die Definition kommt der refresh_token, der auf der Dev Seite generiert wird.
Der Scope muss genau übereinstimmen mit dem was auch in der Hilfe angegeben ist:
read_thermostat write_thermostat read_camera write_camera access_camera read_doorbell access_doorbell read_presence write_presence access_presence read_homecoach read_carbonmonoxidedetector read_smokedetector read_station

Der Access Token wird aktualisiert, gleichzeitig auch der Refresh Token, der dabei auch in der Definition aktualisiert wird.
Das macht das Modul schon eine ganze Weile und ich hatte seit Monaten nie Probleme damit.
Wenn das bei irgendjemandem nicht funktioniert, bitte mal die Testversion von hier ausprobieren: 38_netatmo.pm

Die Fehlermeldung kommt auf jeden Fall, wenn neu gestartet aber der gerade aktuelle Token nicht gespeichert ist, und vermutlich auch wenn der Scope nicht passt - was dann möglicherweise zur fehlschlagenden Aktualisierung nach 3 Stundenführt.
Bitte generiert in diesem Fall einen Token mit genau dem Scope wie angegeben.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

grappa24

3 Dinge:
- Speichern von FHEM, obwohl kein "roter Haken" bei "save config" angezeigt wird - verstehe  ;)
- Ich hatte beim Scope bisher immer alle angegeben - verstehe
- In der def mit ACCOUNT stehen schon auch client_id und client_secret drin, aber nur das refresh token verändert sich jedesmal - verstehe ...
FHEM 6.3, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

AB1970

Zitat von: Markus M. am 11 Juni 2024, 23:38:08
Zitat von: AB1970 am 11 Juni 2024, 18:06:27Ich kann mal schauen, kann ich denn die Anzahl der Log Einträge zeitlich reduzieren?
Du scheinst auch das Problem mit dem Token zu haben.
Probier auch mal die Test-Version aus, die ich heute angehängt habe.
Dazu die Datei in das fhem/FHEM Verzeichnis kopieren, die reguläre Version überschreiben und dann mit "reload 38_netatmo" aktivieren.
Das Account Device hat ein manuelles "set refreshtoken" und das Logging ist auf die Token bei verbose=4 optimiert
Sieht gut bisher aus, aber heißt das , das die neue Version, sich automatisch das Refresh Token holt und auch den richtigen Scope setzt?

Markus M.

Zitat von: AB1970 am 12 Juni 2024, 16:43:01Sieht gut bisher aus, aber heißt das , das die neue Version, sich automatisch das Refresh Token holt und auch den richtigen Scope setzt?
Nein, das funktioniert initial nur manuell über die Netatmo Dev Seite.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Roger

Hi Markus,
Du speicherst den neuen Refresh-Token (wird wohl aller 2:20 Stunden erneuert) durch Änderung vom DEF.
Vorschlag: Wäre es nicht besser, diesen in einem Reading abzulegen. Dann wäre die ganze Arie mit Speichern der Konfiguration erledigt.

(Wahrscheinlich müsste er dann manuell einmalig über ein set-Kommando gesetzt werden).

//Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

AB1970

Zitat von: Markus M. am 13 Juni 2024, 00:27:41
Zitat von: AB1970 am 12 Juni 2024, 16:43:01Sieht gut bisher aus, aber heißt das , das die neue Version, sich automatisch das Refresh Token holt und auch den richtigen Scope setzt?
Nein, das funktioniert initial nur manuell über die Netatmo Dev Seite.

Hi Markus,
eine gute und eine vielleicht nicht so gute ( muss schauen ob der Fehler bei mir lag).
Ich nutze deine Testversion.

Zu der guten Nachricht:
FHEM wird nach einem erfolglosen Login nicht mehr blockiert, das Log File nicht mehr geflutet. FHEM läuft weiterhin stabil. Das ist schon einmal großartig.
Im Logfile sind keine Einträge von dem Problem mit dem Login zu finden, Verbose war auf 1 , hab jetzt mal auf 2 angehoben.

Das Einzige was zu finden ist , sind Nachrichten wie diese:
Das Device WZ.Klima hat ausgeloest, der Event sah so aus: 1343
Ist das ein Fehler oder schlicht eine Aussage die ich nicht verstehe?

Zu der nicht so guten Nachricht:
Nach ung 24 h steht wieder Login failed im Hauptdevice. Werde das Refresh Token nochmals mit den oben gennanten Rechten neu generieren 


Rainer H.


Zu der nicht so guten Nachricht:
Nach ung 24 h steht wieder Login failed im Hauptdevice. Werde das Refresh Token nochmals mit den oben gennanten Rechten neu generieren 


Das kann ich bestätigen - hatte mit der Testversion die Scops genau nach Anleitung ausgewählt - nach einiger Zeit "Login failed"

Markus M.

#1512
Ein Update: ich hatte das Problem gestern nun erstmals auch, also zumindest so ähnlich.
Modul heute wieder aktiviert, get refreshtoken -> und es lief wieder!

2024.06.12 13:26:15 4: netatmo: token still valid
2024.06.12 13:32:11 3: netatmo: poll (ACCOUNT)
2024.06.12 13:32:11 3: netatmo: refreshing token
2024.06.12 13:32:11 4: netatmo: pollGlobal
2024.06.12 13:32:11 3: netatmo: refreshing token
2024.06.12 13:32:11 4: netatmo: pollGlobalHealth
2024.06.12 13:32:11 4: netatmo: dispatch (token)
2024.06.12 13:32:11 4: netatmo: dispatch return: token
2024.06.12 13:32:11 3: netatmo: old access token: ...211b
2024.06.12 13:32:11 3: netatmo: new access token: ...5a23
2024.06.12 13:32:11 3: netatmo: old refresh token: ...cf27
2024.06.12 13:32:11 3: netatmo: new refresh token: ...6928
2024.06.12 13:32:11 3: netatmo: token expires: 2024-06-12 15:56:11
2024.06.12 13:32:11 4: netatmo: dispatch (token)
2024.06.12 13:32:11 4: netatmo: dispatch return: token
2024.06.12 13:32:11 2: netatmo: json message error: invalid_grant
2024.06.12 13:32:11 2: netatmo: invalid refresh ticket, disabling module
2024.06.12 13:32:11 4: netatmo: dispatch (stationsdata)
2024.06.12 13:32:11 4: netatmo: dispatch return: stationsdata
2024.06.12 13:32:11 4: netatmo: parseGlobal
2024.06.12 13:32:11 4: netatmo: dispatch (stationsdata)
2024.06.12 13:32:11 4: netatmo: dispatch return: stationsdata
2024.06.12 13:32:11 4: netatmo: parseGlobal
2024.06.12 15:49:54 2: netatmo_webhook: dev hash error: $VAR1 = {
          'message' => 'Access token expired',
          'code' => 3
        };

Man sieht es im Log eigentlich recht schön:
Das Problem liegt zumindest bei mir daran, dass parallel zwei Requests mit dem gleichen refresh token entstanden sind, die dann sofort nacheinander an den Server geschickt wurden.
Der erste Request wurde mit einem frischen Tokenpaar beantwortet und das auch so abgespeichert.
Beim zweiten Request war der Token aber schon ungültig und wurde mit der entsprechenden Fehlermeldung invalid_grant beantwortet.
Das hat dann das Modul deaktiviert, hätte aber ganz einfach ignoriert werden können.
Ich versuche jetzt hier mal dieses Problem zu verhindern oder zumindest sehr viel unwahrscheinlicher zu machen.

Bitte testen, diese Version braucht einen Neustart


Neue Testversion in https://forum.fhem.de/index.php?msg=1315239
Hier nach 14 Downloads gelöscht.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Markus M.

#1513
Zitat von: AB1970 am 13 Juni 2024, 13:19:51Im Logfile sind keine Einträge von dem Problem mit dem Login zu finden, Verbose war auf 1 , hab jetzt mal auf 2 angehoben.
Um zu sehen was passiert brauchst du verbose 4
Eins drüber gibt es die aktuelle Testversion.

Zitat von: AB1970 am 13 Juni 2024, 13:19:51Das Einzige was zu finden ist , sind Nachrichten wie diese:
Code Select Expand
Das Device WZ.Klima hat ausgeloest, der Event sah so aus: 1343Ist das ein Fehler oder schlicht eine Aussage die ich nicht verstehe?
Ich habe leider keine Ahnung was das ist, jedenfalls keine Meldung aus dem Modul - das spricht nur Englisch.


Die letzte Testversion hatte übrigens noch einen Bug, bitte nochmal runterladen.
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

AB1970

Dank dir Markus.
Ich kann bestätigen, dass nach einem set <Name> getrefreshtoken das Modul wieder auf connected steht.
Habe gerade die letzte Version heruntergeladen, und einen Reload gemacht. Mal schauen, sage Bescheid.