Viessmann VitoConnect API

Begonnen von ritschi, 22 März 2018, 06:53:24

Vorheriges Thema - Nächstes Thema

andies

Zitat von: Frini am 10 Oktober 2018, 09:08:45
Es gibt einen Lösungsansatz wo man mit dem OptoLink-Kabel direkt an einen Raspberry geht. https://www.schlocke.de/viessmann-heizungswerte-mit-openv-auslesen-und-mit-volkszaehler-darstellen/
Allerdings kann man dann die Viconnect100 Verbindung nicht mehr nutzen und somit (in meinem Fall wichtig) entfällt ebenfalls die Garantieverlängerung und der ServiceBetrieb kann die Heizung nicht mehr auslesen bei Fehlermeldungen. Daher hatte ich dies noch nicht weiter verfolgt.
Bist du dir sicher? Diese Leute erzählen viel, wenn der Tag lang ist. Ich habe so eine selbst gebastelte optolink-Lösung am start (vitodens 100, glaube ich - bin gerade nicht vor Ort) und die funktioniert mit einem raspberry vor ort und in FHEM.
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

thetrueavatar

My guess is that it could be easier to intercept data going out from the Vitoconnect to the viessmann server. I have been trying to do so but would need to get access to the vitoconnect by telenet to be able to add a custom certificate. Then I would be able to configure a proxy that would intercept data to viessmann server, copy it and transfer it directly to my raspberry. Do you know if it's possible to access to the Vitoconnect os by any mean ?

andies

No, no idea. Have you seen https://github.com/openv/openv/wiki/Bauanleitung-USB_Duo-Sniffer That's in German but still this site contains a lot of information that might be helpful?
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Frini

Zitat von: andies am 22 Oktober 2018, 07:49:10
Bist du dir sicher? Diese Leute erzählen viel, wenn der Tag lang ist. Ich habe so eine selbst gebastelte optolink-Lösung am start (vitodens 100, glaube ich - bin gerade nicht vor Ort) und die funktioniert mit einem raspberry vor ort und in FHEM.

Hallo,
Ja das OptoLink Kabel wird in die Vitoconnect eingesteckt. Entweder oder. Ein parallelBetrieb (Vitoconnect und Raspi) ist nicht möglich.

andreas13

Hallo zusammen,

hier meine Lösung (zusammenkopiert aus verschiedenen Beiträgen hier im Thread und try and error):

1) angehängte Datei nach /opt/fhem kopieren
2) Dummy anlegen (ggf. anpassen, wenn ihr kein DBLog verwendet!):
defmod vitoconnect100 dummy
attr vitoconnect100 DbLogInclude Gasverbrauch_Heizung/Jahr,Gasverbrauch_aktuelle_Woche,Gasverbrauch_aktueller_Monat,Gasverbrauch_heute,WW-aktiv,HK1-Frostschutz_Status,HK1-WW_und_Heizen_aktiv,HK1-WW_aktiv,HK1-Betriebsart,HK1-Programmstatus,Aussentemperatur,HK1-Solltemperatur_normal,Brenner_aktiv,HK1-Vorlauftemperatur,Kesseltemperatur,WW-Isttemperatur,WW-Solltemperatur
attr vitoconnect100 room Keller
attr vitoconnect100 stateFormat Brenner_Status
attr vitoconnect100 userReadings Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Tag",0))[0] },\
Gasverbrauch_aktuelle_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Woche",0))[0] },\
Gasverbrauch_aktueller_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect100",\
"Gasverbrauch_Heizung/Monat",0))[0] }

3) "AT" anlegen um die Datei regelmäßig aufzurufen (Parameter
defmod vito_cron at +*00:01 "/opt/fhem/vissmann.php -user Mailadresse -passwd geheimesPassword"
attr vito_cron alignTime 00:00
attr vito_cron room Keller


Ich bin kein Programmierer. Bitte seit gnädig, was meinen Programmierstil angeht. Das Phar File habe ich nicht genutzt (mangels PHP Kenntnissen, kommt vielleicht noch).

Ich habe versucht, das Programm robust gegen Änderungen der REST-Api zu machen. Es werden alle Werte in den Dummy geschrieben, die übertragen werden. Auch neue Werte sollten automatisch gefunden werden. Die Interpretation der Daten ist dann eine andere Sache:

1) Bei mir sind die Werte für Werte für Gasverbrauch von Heizung und WW zB gleich (Vitodens 200). Wochen-, Monats- und Jahreswerte werden morgens um 4 Uhr aktualisiert.
2) Hat jemand die Rücklauftemperatur gefunden?

Bei Interesse stell ich mal meine Plot ein.

Nächstes Todo: Setzen von Werten :-)

Danke nochmal an die Vorarbeiten der Kollegen hier!

Andreas
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

dr_laplace

Hallo Skript funktioniert super. Danke.
Weiß aber jemand wie die Daten beim Gasverbrauch zu verstehen sind? kWh wie in der App sind es wohl kaum. Ebenso passt die Tendenz der Werte überhaupt nicht zu meinem Verbrauch. Mein Verbrauch von WW und Heizung sind ebenfalls identisch. Habe Vitodens 300W.

Frini

#126
Ich kriege Dein Skript nicht zum Laufen.
Muss in der PHP noch etwas anpassen? Die Viessmann Zugangsdaten werden in dem at angegeben?
Habe mir extra eine Datenbank angelegt. Hatte ich eh vorgehabt. Läuft das über Telnet oder werden die Daten direkt in die SQLlite Datenbank geschrieben. Ich habe diese mit einem Benutzernamen und Passwort eingerichtet. Wo trage ich die ein?

Das erhalte ich wenn ich in Putty

PHP Notice:  Undefined offset: 0 in /opt/fhem/vissmann.php on line 204
PHP Notice:  Undefined property: stdClass::$access_token in /opt/fhem/vissmann.php on line 238
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/vissmann.php on line 130


andreas13

Ich rätsel auch. Wo siehst du denn kWh ins der (ViCare?)-App?

Ich bin auch am Rätseln, wie die Werte zu interpretieren sind. Von der Größenordnung könnten es kWh sein, aber so richtig mit dem Brennerlaufzeiten korreliert es bei mir nicht.



Zitat von: dr_laplace am 24 Oktober 2018, 13:53:33
Hallo Skript funktioniert super. Danke.
Weiß aber jemand wie die Daten beim Gasverbrauch zu verstehen sind? kWh wie in der App sind es wohl kaum. Ebenso passt die Tendenz der Werte überhaupt nicht zu meinem Verbrauch. Mein Verbrauch von WW und Heizung sind ebenfalls identisch. Habe Vitodens 300W.
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

andreas13

Zitat von: Frini am 24 Oktober 2018, 14:45:07
Ich kriege Dein Skript nicht zum Laufen.
Muss in der PHP noch etwas anpassen? Die Viessmann Zugangsdaten werden in dem at angegeben?
Habe mir extra eine Datenbank angelegt. Hatte ich eh vorgehabt. Läuft das über Telnet oder werden die Daten direkt in die SQLlite Datenbank geschrieben. Ich habe diese mit einem Benutzernamen und Passwort eingerichtet. Wo trage ich die ein?

Das erhalte ich wenn ich in Putty

PHP Notice:  Undefined offset: 0 in /opt/fhem/vissmann.php on line 204
PHP Notice:  Undefined property: stdClass::$access_token in /opt/fhem/vissmann.php on line 238
PHP Warning:  Invalid argument supplied for foreach() in /opt/fhem/vissmann.php on line 130



Passwort und Username nicht gesetzt?

/opt/fhem/vissmann.php --dump -user meine@mailadre.sse -passwd meinPasswort

"--dump" sorgt dafür, dass die Readings nicht gesetzt werden, dafür aber eine Menge Debuginformationen ausgegeben werden.

Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

Frini

Fehler gefunden. Dummys werden gefüllt.
Muss bei mir das ganze so aufrufen:

php7.0 /opt/fhem/vissmann.php -user xxx -passwd xxx

Allerdings schreibt er mir folgenden Fehler:
PHP Notice:  Undefined index: heating.burner.current.power.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.circulation.schedule.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.circulation.schedule.entries in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.frostprotection.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.curve.shift in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.curve.slope in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.schedule.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.heating.schedule.entries in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.active.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.dhw.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.dhwAndHeating.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.forcedNormal.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.forcedReduced.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.modes.standby.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.active.value in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.comfort.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.comfort.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.eco.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.eco.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.external.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.external.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.start in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.holiday.end in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.normal.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.normal.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.reduced.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.reduced.temperature in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.operating.programs.standby.active in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.room.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.supply.status in /opt/fhem/vissmann.php on line 171
PHP Notice:  Undefined index: heating.circuits.1.sensors.temperature.supply.value in /opt/fhem/vissmann.php on line 171


Die Readings werden aber gefüllt.

seppe

Zitat von: andreas13 am 24 Oktober 2018, 17:53:06
Ich rätsel auch. Wo siehst du denn kWh ins der (ViCare?)-App?

Ich bin auch am Rätseln, wie die Werte zu interpretieren sind. Von der Größenordnung könnten es kWh sein, aber so richtig mit dem Brennerlaufzeiten korreliert es bei mir nicht.

Ich muss meine Werte durch 8 Teilen, dann habe ich meinen Verbrauch in kwH

Frini

Die kWh wird in der App noch nicht abgebildet.
Mir ist noch aufgefallen, dass die Brennerleistung fehlt
"heating.burner.current.power.value"                                                => "Brenner_Leistung",


Die Werte sind in kW angegeben. Habe es mit der Prozentangabe am Gerät verglichen. Kommt bis auf die Rundungsfehler hin.


andreas13

Hat die Datei Ausführungsrecht? Probier mal chmod a+x /opt/fhem/vissmann.php

In dem Array RequestList stehen nur die Readings, die meine Heizung (vitodens 200) mit einem Heizkreis liefert. Vermutlich hast Du zwei Heizkreise? Auch das Reading heating.burner.current.power.value liefert meine Anlage nicht. Hast du einen Ölbrenner?

Die neue Version der vissmann.php sollte auch für Werte, die nicht in der RequestList stehen, Readings in FHEM erzeugen (ohne Fehlermeldung). Die Werte für den 2. Heizkreis und den Brenner habe ich hinzugefügt. Bitte mal testen.

Weiß jemand was "Device_Time_Offset" bedeutet?
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT

Frini

Hallo,
die PHP läuft. Anwenderfehler.
Nein ich habe eine Vitodens 333f mit Erdgas.
Ich glaube DEvice_Time_Offset ist die Zeitspanne für die Berechnung der gemittelten Außentemperatur. Abhängig von dem Dämmgrad des Gebäudes.
Beim Schedule werde allerdings nur die ersten Zeitspannen dargestellt. Wird mit position:0 gekennzeichnet. Hier gibt es allerdings bis zu 4 Positionen (position:1....).
Dein Script es wirklich klasse.

andreas13

Kannst du mir die Debugausgabe schicken? Dann kann ich versuchen das einzubauen. Aber vorher Passwort entfernen [emoji12]


Gesendet von iPad mit Tapatalk Pro
Maintainer des Vitoconnect Moduls
In Betrieb: FritzBox 7590, Homematic
piko Wechelrichter (HTTPMOD). Sonos ....
noch: IT