Vitoconnect - Verbesserte Version

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

Vorheriges Thema - Nächstes Thema

wieral

Hi Stefan,

danke für den Hinweis.
Ich hatte bereits alles neu gestartet und keine weiteren Energiedaten erhalten.
Das Kommunikationsmodul muss aber die Daten an Viessmann senden.
In der ViCare App werden unter "Analyse -> erweiterte Berichte" die Energiedaten sogar für stündlich angezeigt.

Gruß
Ralf

stefanru

Ja ich weiß, das ist bei der API leider so.
Sie senden die Daten sehr unregelmäßig.
Wenn sie mal gar nicht kommen wollen starte ich das Kommunikationsmodul durch und dann kommen sie für gewöhnlich.
Genau deshalb gibt es das von mir eingebaute .asSingleValue. Dies trägt die Werte dann nach. Wenn man das logged bekommt alle Werte dann ins log. Natürlich so verspätet wie von der API gemeldet.
Leider hat die API so ihre Eigenheiten, da kann ich leider nichts machen.
Ich hoffe immer noch dass Viessmann das irgendwann mal fixed.
Zur Zeit habe ich aber eher das Gefühl dass es schlechter wird.
Z.b. wird seit ein paar Tagen (vielleicht auch Wochen) in der API nicht mehr gemeldet wenn das WarmWasser per Timer ausgeschaltet wurde.
In der API ist alles weiter aktiv.
In der ViCare App sieht man aber das es deaktiviert wurde durch den Timer.

Naja ich hoffe Viessmann bekommt das alles irgendwann auf die Reihe.

Viele Grüße,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

stefanru

Ok noch ein kleiner Fix für die Power Readings.
Ich konnte das nun bei mir nachvollziehen und es sieht nun endlich sauber aus:
98_vitoconnect:Power reading asSingleValue finally fixed

Morgen im SVN, heute schon im GitHub ;-)

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

stefanru

Oh man, das ist hartnäckig.
Hatte noch einen Bug, der ist nun raus.
Ich konnte nun endlich nachvollziehen dass es wirklich richtig funktioniert.
Ich hoffe ich finde nicht nochmal was.
Also man kann die asSingleValue nun sicher verwenden und bekommt den Verbrauch der letzten Tage immer wenn die API updatet in die jeweiligen Tage gelogged, ohne Duplikate in richtiger Reihenfolge usw.
  "1.0.3"  => "11.12.2025  asSingleValue fixed – this time for real"

Morgen im SVN und heute schon auf Git ;-)

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

stefanru

Sorry nein das war es immer noch nicht. Auf das Datum der API kann man sich nicht verlassen. Es kommen neue Werte aber dayValueReadAt ändert sich nicht.
Ich schaue jetzt in anderen Implementierungen und versuche es zu lösen.
Dauert noch etwas...
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

binlan

Hallo zusammen,

ich ende nach gefühlten 24h regelmässig immer wieder an diesem Punkt:
statusCode: 401 errorType: UNAUTHORIZED message: Token provided in request is expired or invalid. error: EXPIRED TOKEN reason: undef

ich habe diesen und den vorangegangen Thread nach diesem Problem durchgeschaut. Nichts hat mir weitergeholfen. Dabei ging es regelmässig um die Häufigkeit des Pollens auf die viessmann api. Anders als die anderen Problem habe ich minütlich diese Meldung im Log:
fhem  | 2025.12.13 23:41:38 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:43:09 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:44:39 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:46:10 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:47:40 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:49:10 1: Heizung - Access Token: nicht definiert
fhem  | 2025.12.13 23:50:36 1: Heizung - Access Token: nicht definiert

Die Meldungen kommen schon solange der Abruf auch noch funktioniert. Daraus schliesse ich, dass irgendwas mit dem Token renewal bei mir nicht funzt. Ich kann aber weder in der Doku noch im Forum entdecken, was ich dagegen tun tan.
Ich benutze das Modul schon sehr lange. Hab das Upgrade auf diesen rewrite mitgemacht, bin aber bislang nicht auf die "raw-readings" gegangen, weil mir das alle Metriken zerreißt. Für diese Umstellung war ich bisher zu faul, sorry. Das ist aber hoffentlich nicht ursächlich für das Token Problem.

Wenn ich dann wieder UNAUTHORIZED bin und ich es auch bemerke schafft die Eingabe des api-key wieder Abhilfe - bis zum nächsten mal.

Ich polle aktuell alle 90 Sekunden um das Limit garantiert nicht zu tangieren, aber daran liegts vrmt. nicht.
defmod Heizung vitoconnect mein-user@meine-domain.net meinpw 90

Hat jemand ne Idee? Es nervt schon sehr.

Danke.

Binlan

stefanru

Hi Binlan,

das ist seltsam.
Vor allem die Meldung:
Access Token: nicht definiert

Da kommt von der API kein Fehler aber auch nicht das erwartete Access Token in der Antwort.

Gib mir bitte mal mehr Infos.
Was für eine Heizung verwendest du, wie viele Geräte hast du?
Welche Version des Moduls verwendest du?
Und mach mal ein logReponseOnce und schicke mir die Dateien mit .json und .err aus dem Logverzeichniss.
Man könnte wenn die Meldung kommt auf Verbose 5 schalten.
Da kommt dann sehr viel, interessant wäre was genau nach der Fehlermeldung kommt, da sollte die Antwort der API stehen und die scheint irgendwie falsch zu sein.

Wenn dich Verbose 5 erschlägt könnte ich die interessante stelle für dich auch mal auf Verbose 3 stellen.
In der aktuellen Version ist das in Zeile 3321:
            Log3($name,1,$name." - Access Token: nicht definiert");
            Log3($name,5,$name." - Received response: ".$response_body."\n");
            InternalTimer(gettimeofday() + $hash->{intervall},"vitoconnect_GetUpdate",$hash);

Die Zeile in der Mitte könntest du mal auf:
Log3($name,1,$name." - Received response: ".$response_body."\n");

Dann würdest du zum Fehler die API Antwort im Log sehen.
Da könnten wir dann vielleicht etwas mit anfangen.

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01

binlan

Hi Stefan,

ich habe eine (und kein weitere) Vitodens 333 F Heizung.

Ist das hier die Modulversion?
98_vitoconnect.pm:v1.0.1-s30569/2025-11-29

alle .json (meine persönlichen Daten bereinigt) hängen hier dran. .err file hatte ich nicht. nur einen alten vor 3 Tagen:

# cat log/vitoconnect_7571381609484203.err
$VAR1 = {
          'statusCode' => 500,
          'message' => 'Internal server error occurs',
          'errorType' => 'INTERNAL_SERVER_ERROR',
          'viErrorId' => '00-aae014924afe2cc760171b4af2d7fa26-aacccd6f9122ee37-00',
          'extendedPayload' => {}
        };

Ich muss mich bezüglich des "Access Token: nicht definiert" korrigieren. Das kommt minütlich, wenn ich gerade unauth bin. Gestern Abend nach 23:50 Uhr hab ich den api-key wieder reingetan. Seitdem läufts. Somit kann ich den Fehler auch gerade nicht reproduzieren. Aber trotzdem schafft er es bei mir ja früher oder später nicht den Token zu freshen. Den Fehlerlog kann ich dann vrmtl. erst morgen liefern. Provozieren kann ich das ja nicht, oder?

Danke Binlan


stefanru

Hi Binlan,

ok, hab mir deine Dateien angeschaut, das sieht für mich alles sehr normal aus.
Warum das bei dir nach 24h kein Access Token mehr bekommt ist mir ein Rätsel.
Access Token laufen viel öfter ab, jede Stunde.
Also prinzipiell scheint es zu gehen das zu erneuern, aber irgendwann bei dir auf einmal nicht mehr.

Nur zur Sicherheit, du hast irgendwann mal dein FHEM durchgestartet?
Vor sehr längerer Zeit gab es mal ein Problem dass 2 Update Prozesse gleichzeitig liefen und so die API Calls aufgebraucht wurden.
Dann ist aber die Fehlermeldung für gewöhnlich eine anderer.
Wenn du willst könntest du nur zur Sicherheit und um irgendwelche Seiteneffekte auszuschließen FHEM mal stoppen und wieder starten.

Warum er dein Access Token irgendwann nicht mehr aktualisieren will ist das Rätsel.
Aber das bekommen wir schon raus.
Schick mir mal wenn der Fehler auftritt alle Dateien die dabei im Log entstehen und was du im FHEM log findest.
Wenn das nicht hilft ändern wir hier die 2te Zeile:
Log3($name,1,$name." - Access Token: nicht definiert");
Log3($name,5,$name." - Received response: ".$response_body."\n"); ändern in Log3($name,1,$name." - Received response: ".$response_body."\n");
Dann wird die Reponse ausgegeben und wir sehen eventuell etwas.

Gruß,
Stefan
FHEM: Raspberry PI 400+SSD Viessmann, Fronius, BYD, Wunderground, Max, Shelly, ESPEasy, FHEMPY,...  Docker + Portainer: Immich, Authelia, Caddy, Gerbera, Paperless NGX
Maintainer: Vitoconnect
GIT: https://github.com/StefanRu1
Kaffeekasse: https://www.paypal.me/stefanru01