Vitoconnect - Verbesserte Version

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

Vorheriges Thema - Nächstes Thema

Felix_86

Hallo zusammen,

nach einigem Rumprobieren und Überstrapazieren der Viessmann-API (freie Token für diesen Monat aufgebraucht) habe ich herausgefunden, dass der WW-Zirkulationspumpe_Zeitplan mit den Angaben "{"mon":[{"start":"06:00","end":"08:00","mode":"on","position":0}]}" gesetzt werden kann.

Die von der API ausgelesenen Werte und Darstellung im Reading haben ein anderes Format, als wie der Zeitplan mit dem set-Befehl zu setzen ist.

Um den "WW-Zirkulationspumpe_Zeitplan" auf null zu setzen und alle Pläne zu löschen ist nicht "[]" sondern "{}" zu verwenden.
Grüße von Felix

Pi3, Raspbian 13, FHEM 6.4, ca 330 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

stefanru

#496
Hi Felix,

oh super, das ist sehr hilfreich.

Kannst du mir mal Beispiele für funktionierende strings zum setzen geben.
Ich schau dann mal was ich machen kann.
Ich denke ich gebe es so zurück wie es mir die API liefert, aber da würde ich mir was einfallen lassen, dass man es dann auch direkt setzen kann.

Auch schaue ich mal, nach einem Bad Request wegen falscher Parameter sollte er nicht 20 mal probieren, das ist ein Bug den ich fixen sollte.

Ah noch was hast du raw entries und damit den neuen Setter verwendet?
Ich habe es mir mal angeschaut und mit dem neuen Setter sollte es gehen.
Ich denke ich habe da etwas zu viel optimiert beim Einlesen und der alte Setter funktioniert so nicht mehr.
Ich wüsste auch was ich ändern könnte aber warte auf deine Antwort.

Also wäre super wenn du mir noch ein paar exakte Daten für die Eingaben die funktionieren liefern könntest, dann setze ich etwas um.

Ich habe mal ne untested Version gebaut. Wenn du willst kannst du sie probieren.
Wenn nicht teste ich demnächst mal selbst.


Danke und 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

Felix_86

#497
Hallo Stefan,

was ich für meine Zwecke (Einschalten der Zirkulationspumpe nach Aufheizen des WW-Speichers) brauche und was ich wie setzen konnte habe ich oben gepostet.
In der App (und daher vermutlich auch über den set-Befehl) kann man bis zu 4 Einträge pro Tag mit Laufzeiten der Zirkulationspumpe eingeben. Dies habe ich jedoch über FHEM nicht probiert, da für meinen Zweck (bisher) nicht relevant.

Funktionieren sollte für das Setzen einer Laufzeit der Zirkulationspumpe alles, was folgendem Aufbau entspricht:

{"<englischer Wochentag mit 3 Buchstaben>":[{"start":"<00 bis 23>:<00 bis 50 in 10 Minuten Schritten>","end":"<00 bis 24>:<10 bis 00 in 10 Minuten Schritten>","mode":"on","position":<0 bis 3>}]}
Das heißt und von mir bereits erfolgreich gesetzt:

{"mon":[{"start":"06:00","end":"08:00","mode":"on","position":0}]}
{"tue":[{"start":"19:50","end":"20:00","mode":"on","position":0}]}
{"tue":[{"start":"21:30","end":"21:40","mode":"on","position":0}]}
{"wed":[{"start":"13:20","end":"13:30","mode":"on","position":0}]}
{"thu":[{"start":"14:30","end":"14:40","mode":"on","position":0}]}

Grade noch getestet, den "WW-Zeitplan" kann man mit dem gleichen Parameteraufbau setzen und aktivieren.

Hilft das?
Grüße von Felix

Pi3, Raspbian 13, FHEM 6.4, ca 330 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

stefanru

#498
Hi Felix, ja danke für die Infos.
Ich habe keine Zirkulationspumpe, aber WW Zeiten.
Da werde ich das mal probiern.
Ich denke es liegt nur an einer Umformatierung die ich durchführe und weglassen sollte.

Wichtig für mich wäre noch, nutzt du RAW Readings oder standard Mapping?
Habe RAW readings, so wie ich es nutze mal getestet und es geht.
2026.05.01 14:59:37 3: VitoCal250AH, vitoconnect_action url=https://api.viessmann-climatesolutions.com/iot/v2/features/installations/XXXXXX/gateways/XXXXXXX/devices/0/features/heating.dhw.schedule/commands/setSchedule
2026.05.01 14:59:37 3: VitoCal250AH, vitoconnect_action data={"newSchedule":{"sat":[{"start":"00:00","end":"01:00","mode":"on","position":0},{"position":1,"start":"06:00","mode":"on","end":"24:00"}],"sun":[{"start":"00:00","mode":"on","end":"01:00","position":0},{"position":1,"start":"06:00","mode":"on","end":"24:00"}],"wed":[{"position":0,"mode":"on","end":"01:00","start":"00:00"},{"position":1,"start":"06:00","mode":"on","end":"24:00"}],"fri":[{"position":0,"end":"01:00","mode":"on","start":"00:00"},{"end":"24:00","mode":"on","start":"06:00","position":1}],"thu":[{"end":"01:00","mode":"on","start":"00:00","position":0},{"end":"24:00","mode":"on","start":"06:00","position":1}],"mon":[{"end":"02:00","mode":"on","start":"00:00","position":0},{"start":"06:00","mode":"on","end":"24:00","position":1}],"tue":[{"start":"00:00","mode":"on","end":"01:00","position":0},{"position":1,"start":"06:00","end":"24:00","mode":"on"}]}}
2026.05.01 14:59:38 3: VitoCal250AH,vitoconnect_action: set name:VitoCal250AH opt:heating.dhw.schedule.entries text:[{"mon":{"mode":"on","start":"00:00","end":"02:00","position":0}},{"mon":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"tue":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"tue":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"wed":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"wed":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"thu":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"thu":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"fri":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"fri":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"sat":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"sat":{"mode":"on","start":"06:00","end":"24:00","position":1}},{"sun":{"mode":"on","start":"00:00","end":"01:00","position":0}},{"sun":{"mode":"on","start":"06:00","end":"24:00","position":1}}],
korrekt ausgefuehrt

Ich konnte es also direkt bearbeiten und wieder wegschicken.
Also is meine Vermutung korrekt mit der Umformatierung.

Dann würde ich dich bitten das Angehängte pm file mal zu testen.
Wenn es bei dir geht dann baue ich so um.

Danke und 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

Felix_86

Hallo Stefan,

ich hatte HIER ein List meines Vitoconnect Device gepostet. Wenn das nicht reicht musst du mir bitte mitteilen, wie ich feststellen kann, ob ich RAW Readings oder Standard Mapping nutze.

Das Log beim Setzen sieht bei mir so aus.

2026.05.01 18:58:48 3: Vitoconnect, vitoconnect_action url=https://api.viessmann-climatesolutions.com/iot/v2/features/installations/12345/gateways/757123456789207/devices/0/features/heating.dhw.pumps.circulation.schedule/commands/setSchedule
2026.05.01 18:58:48 3: Vitoconnect, vitoconnect_action data={"newSchedule":{"fri":[{"start":"19:30","end":"19:40","mode":"on","position":0}]}}
2026.05.01 18:58:49 3: Vitoconnect,vitoconnect_action: set name:Vitoconnect opt:WW-Zirkulationspumpe_Zeitplan text:{"fri":[{"start":"19:30","end":"19:40","mode":"on","position":0}]}, korrekt ausgefuehrt
Grüße von Felix

Pi3, Raspbian 13, FHEM 6.4, ca 330 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

stefanru

Hi Felix, sorry das list hatte ich nicht gesehen.
Dann ist alles wie erwartet hatte, du benutzt keine RAW Readings.
Ist das Log von der Version die ich angehängt hatte?
Die sollte gehen.
Ich schau es mir nächste Woche nochmal genau an und Stelle dann eine neue Version ins SVN.

Gruß und Danke,
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

Felix_86

Hallo Stefan,
nein, das Log stammt noch von der ursprünglich verwendeten Version (FVERSION 98_vitoconnect.pm:v1.0.5-s30764/2026-01-21).

Ich habe die aktuell von mir verwendete Version (FVERSION 98_vitoconnect.pm:v1.0.5-s30764/2026-01-21) mit der Datei vom 01 Mai 2026, 13:02:46 verglichen und Unterschiede festgestellt.

v1.0.5-s30764/2026-01-2101 Mai 2026, 13:02:46
256 KB310 KB
5221 Zeilen5796 Zeilen

Scheinbar beziehen sich die meisten Änderungen auf SVG und Darstellungen. Bei einem der letzten Updates hatte ich anschließend massive Probleme und konnte die Heizung nicht mehr steuern. Daher bin ich hier vorsichtig.

Ich habe die Datei vom Datei vom 01 Mai 2026, 13:02:46 nun mal versucht zu laden. Im FHEM Frontend erhalte ich nach einem "reload 98_vitoconnect.pm" die Ausgabe.

Global symbol "$otherData" requires explicit package name (did you forget to declare "my $otherData"?) at ./FHEM/98_vitoconnect.pm line 2380.
Global symbol "$otherData" requires explicit package name (did you forget to declare "my $otherData"?) at ./FHEM/98_vitoconnect.pm line 2382.
Global symbol "$otherData" requires explicit package name (did you forget to declare "my $otherData"?) at ./FHEM/98_vitoconnect.pm line 2385.
Global symbol "$name" requires explicit package name (did you forget to declare "my $name"?) at ./FHEM/98_vitoconnect.pm line 2404.
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at ./FHEM/98_vitoconnect.pm line 2404.
Global symbol "$name" requires explicit package name (did you forget to declare "my $name"?) at ./FHEM/98_vitoconnect.pm line 2405.
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at ./FHEM/98_vitoconnect.pm line 2407.
Unmatched right curly bracket at ./FHEM/98_vitoconnect.pm line 2408, at end of line
syntax error at ./FHEM/98_vitoconnect.pm line 2408, near "}"
Execution of ./FHEM/98_vitoconnect.pm aborted due to compilation errors.

Das FHEM Log zeigt folgendes:

2026.05.03 11:46:39 1: PERL WARNING: Subroutine vitoconnect_Initialize redefined at ./FHEM/98_vitoconnect.pm line 1961.
2026.05.03 11:46:39 1: PERL WARNING: Subroutine vitoconnect_Define redefined at ./FHEM/98_vitoconnect.pm line 1996.
2026.05.03 11:46:39 1: PERL WARNING: Subroutine vitoconnect_Undef redefined at ./FHEM/98_vitoconnect.pm line 2049.
2026.05.03 11:46:39 1: PERL WARNING: Subroutine vitoconnect_Get redefined at ./FHEM/98_vitoconnect.pm line 2059.
2026.05.03 11:46:39 1: PERL WARNING: Subroutine vitoconnect_Set redefined at ./FHEM/98_vitoconnect.pm line 2100.

Ich habe nun die vorherige Version (FVERSION 98_vitoconnect.pm:v1.0.5-s30764/2026-01-21) wieder geladen.
Grüße von Felix

Pi3, Raspbian 13, FHEM 6.4, ca 330 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS, Nina, MQTT2

stefanru

Ok, sorry.
Hatte gehofft es geht auf Anhieb.
Schaue ich mir an und melde mich.

Danke und 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