Vitoconnect - Verbesserte Version

Begonnen von stefanru, 14 Dezember 2024, 23:32:17

Vorheriges Thema - Nächstes Thema

JWRu

@stefanru
Vielen Dank für die schnelle Reaktion!
Kein Problem - es ist nicht eilig. Ich kann damit gut leben.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

stefanru

@JWRu

Ich habe eine neue Version des Moduls erstellt, die das Verhalten bei einem set-Befehl im Fehlerfall deutlich verbessert:

Fehlerbehandlung beim set:
401 EXPIRED TOKEN Wenn beim Senden ein 401 mit EXPIRED TOKEN zurückkommt, wird automatisch ein neues Token angefordert. Sollte jedoch auch das Token-Refresh fehlschlagen, wird der Vorgang abgebrochen – der set-Befehl gilt dann als verloren. Ich denke, in diesem Fall ist die Verbindung oder das Backend wirklich gestört, und ein weiteres Wiederholen macht keinen Sinn.

Andere Fehler (z. B. Netzwerkprobleme) Tritt ein anderer Fehler auf, wird der set-Befehl nach 10 Sekunden erneut versucht. Um Endlosschleifen zu vermeiden, habe ich ein Retry-Limit von 20 Versuchen eingebaut. Nach dem 20. Fehlversuch wird der Vorgang abgebrochen und ein entsprechender Hinweis ins Log und ins Reading Aktion_Status geschrieben.

Die Version läuft bei mir stabil und ist soweit getestet. Der Fehlerfall mit EXPIRED TOKEN konnte bisher nicht reproduziert werden – tritt ja auch eher selten auf.

Im Fehlerfall wird jeder Wiederholungsversuch sauber geloggt und im Reading dokumentiert.

Die Version liegt im Anhang. Ich freue mich über ausführliche Tests und Rückmeldungen!

Gruß,
Stefan

JWRu

@stefanru
Das ging aber schnell!
Bin zur Zeit unterwegs und kann leider erst Ende nächster Woche testen.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

stefanru

Alles gut, vielleicht will ja noch jemand testen. Ich beobachte es auch.

Gruß,
Stefan

stefanru

Hi,

bisher hatte es keine Seiteneffekte bei mir also habe ich es mal eingechecked.
Toll wäre wenn jemand es mal live beobachten könnte und bescheid geben dass es auch wirklich funktioniert.
Zu sehen sollte sein:
Log3($name,1,$name.",vitoconnect_action: set ".$name." ".$opt." ".@args.", Fehler bei Befehlsausfuehrung ($retry_count/20): ".$err." :: ".$msg);
und danach dass es doch klappt mit:
Log3($name,3,$name.",vitoconnect_action: set name:".$name." opt:".$opt." text:".$Text.", korrekt ausgefuehrt");

Eingechecked ist:
"0.9.1"  => "11.09.2025  In case of set action when token is expired get new token and try again",

Gruß,
Stefan

stefanru

Hi,
sorry die 0.9.1 hat ein Bug und führt zum Absturz wenn ein anderer Fehler als 401 Token auftaucht.

Z.B. 400 DEVICE_COMMUNICATION_ERROR
genau beim Set, dann gibt es:
2025.09.15 13:37:13 1: VitoCal250AH,vitoconnect_action: set VitoCal250AH heating.dhw.temperature.main.value 1, Fehler bei Befehlsausfuehrung (1/20):  :: {
  "viErrorId": "00-dee581216f6467334683afff8c49c9c2-36c8a91d4ecc8b12-00",
  "statusCode": 400,
  "errorType": "DEVICE_COMMUNICATION_ERROR",
  "message": "Device communication error",
  "extendedPayload": {
    "httpStatusCode": "NotFound",
    "code": "404",
    "reason": "GATEWAY_OFFLINE"
  }
}
Not a HASH reference at ./FHEM/98_vitoconnect.pm line 3818.

Und FHEM restartet.

Ich fixe es gerade und versuche heute Abend noch einen neue Version einzuchecken.

Gruß,
Stefan

stefanru

Hi,

neue Version mit Bugfix ist soeben eingechecked:
"0.9.2"  => "15.09.2025  Fix Not a HASH reference at ./FHEM/98_vitoconnect.pm line 3818 when set action error"

Läuft bei mir unauffällig.
Leider kann ich das Verhalten im Fehlerfall beim vitoconnect_action nur sehen wenn es auch einen Fehler gibt.

Sollte euch etwas auffallen oder ihr seht dass die Retries funktionieren, bitte melden.

Gruß,
Stefan