Vitoconnect: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K (Modulowner (Maintainer) angepasst; {{Hinweis}} -> {{Randnotiz}}; ...) |
||
(14 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:vitoconnect}} | {{SEITENTITEL:vitoconnect}}{{Infobox Modul | ||
{{Infobox Modul | |||
|ModPurpose=Steuerung von Viessmann Heizungen | |ModPurpose=Steuerung von Viessmann Heizungen | ||
|ModCategory=Heizungssteuerung/Raumklima | |ModCategory=Heizungssteuerung/Raumklima | ||
|ModCmdRef=vitoconnect | |||
|ModType=d | |ModType=d | ||
|ModForumArea=Heizungssteuerung/Raumklima | |ModForumArea=Heizungssteuerung/Raumklima | ||
|ModTechName=98_vitoconnect.pm | |ModTechName=98_vitoconnect.pm | ||
|ModOwner= | |ModOwner=Marc ({{Link2FU|45364|Forum}}/[[Benutzer Diskussion:Mcp|Wiki]])}} | ||
[https://www.viessmann.de/de/viessmann-apps/vitoconnect.html Vitoconnect] ist die Schnittstelle zwischen Heizkessel und der App ViCare zum Bedienen von Viessmann Heizungsanlagen. | [https://www.viessmann.de/de/viessmann-apps/vitoconnect.html Vitoconnect] ist die Schnittstelle zwischen Heizkessel und der App ViCare zum Bedienen von Viessmann Heizungsanlagen. | ||
Zeile 17: | Zeile 16: | ||
Die Idee zu dem Modul enstand aus dem Thread {{Link2Forum|Topic=86073|LinkText="Viessmann VitoConnect API"}}. Es basiert auf dem PHP Modul von [https://github.com/thetrueavatar/Viessmann-Api thetrueavatar]. | Die Idee zu dem Modul enstand aus dem Thread {{Link2Forum|Topic=86073|LinkText="Viessmann VitoConnect API"}}. Es basiert auf dem PHP Modul von [https://github.com/thetrueavatar/Viessmann-Api thetrueavatar]. | ||
{{ | {{Randnotiz|RNTyp=y|RNText=Das Modul befindet sich derzeit noch in der Entwicklung. | ||
Das Modul wurde nach | Das Modul wurde nach bestem Wissen und Gewissen programmiert. Da Änderungen an der Heizung nur über die Viessmann API erfolgen, sollte die Nutzung risikoarm sein. Allerdings kann ich keine Garantie übernehmen, dass es nicht doch zu irgendwelchen unerwünschten Nebeneffekten kommt. Nutzung auf eigene Gefahr! | ||
Diskussionen über Fehler, Verbesserungen usw. finden im Forum im Thread {{Link2Forum|Topic=93664|LinkText="Neues Modul: vitoconnect"}} statt.}} | Diskussionen über Fehler, Verbesserungen usw. finden im Forum im Thread {{Link2Forum|Topic=93664|LinkText="Neues Modul: vitoconnect"}} statt.}} | ||
Zeile 29: | Zeile 28: | ||
* Internet-Schnittstelle Vitoconnect 100 (Typ OPTO1) | * Internet-Schnittstelle Vitoconnect 100 (Typ OPTO1) | ||
* Ein Viessmann ViCare Account, wie er im Rahmen der Nutzung der ViCare App erstellt wird. | * Ein Viessmann ViCare Account, wie er im Rahmen der Nutzung der ViCare App erstellt wird. | ||
* | * Seit 15. Juli 2021 auch einen persönlichen API Key (=Client-ID), diesen gibts hier: <nowiki>https://developer.viessmann.com</nowiki> | ||
* Das Modul benötigt mindestens folgende Perl Libraries: Path::Tiny, JSON und DateTime. Diese können mit sudo apt install libtypes-path-tiny-perl libjson-perl libdatetime-perl oder via cpan. Sollten Libraries fehlen erhält man folgende Fehlermeldung "cannot load module vitoconnect". Dann bitte ins Logfile schauen, welche Lib fehlt. | |||
=== Define des Devices === | === Define des Devices === | ||
Zeile 42: | Zeile 42: | ||
<code>define vitoconnect vitoconnect user@mail.xx fakePassword 60</code><br> | <code>define vitoconnect vitoconnect user@mail.xx fakePassword 60</code><br> | ||
<code>set vitoconnect password correctPassword 60</code> | <code>set vitoconnect password correctPassword 60</code> | ||
<br> | |||
<br> | |||
Nachträgliches Ändern des Intervalls:<br> | |||
Man kann einfach das DEF aufrufen und dort die Parameter korrigieren (z.B. von 60 Sek. auf 180 Sek.) - dies gilt natürlich ebenso für nachträgliches Ändern des Usernamens oder Passwortes. | |||
=== Betrieb === | |||
Der Zugriff auf die API von Viessmann ist aktuell auf 1450 pro Tag in der gratis Version beschränkt, daraus ergibt sich ein Maximum von ca. einer Abfrage pro Minute. Die Anzahl der Zugriffe ist im Entwicklerportal einsehbar: https://developer.viessmann.com/de/clients/history | |||
== Readings == | == Readings == | ||
Zeile 47: | Zeile 54: | ||
Die Readings werden so ausgegeben, wie sie von der API geliefert werden! Alle Reading für HK1 sind auch für HK2 und HK3 verfügbar sofern die Heizung solche Readings liefert. | Die Readings werden so ausgegeben, wie sie von der API geliefert werden! Alle Reading für HK1 sind auch für HK2 und HK3 verfügbar sofern die Heizung solche Readings liefert. | ||
{|class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Name !! Datentyp/<BR/>Wertebereich !! Bedeutung | ! Name !! Datentyp/<BR />Wertebereich !! Bedeutung | ||
|- | |- | ||
|Aktive_Heizkreise ||0,1,2 ||Liste der aktiven Heizkreise. 0 entspricht HK1 | |Aktive_Heizkreise ||0,1,2 ||Liste der aktiven Heizkreise. 0 entspricht HK1 | ||
Zeile 90: | Zeile 97: | ||
|- | |- | ||
|Gasverbrauch_Heizung/Jahr || 3293,0,0 ||Liste der jährlichen Gasverbräuche Heizung in kWH (aktuelles Jahr und die letzten beiden) '''(bis zum 09.12.2018 lieferte die API Werte, die noch durch 8 geteilt werden mussten, um auf kWh zu kommen!''' | |Gasverbrauch_Heizung/Jahr || 3293,0,0 ||Liste der jährlichen Gasverbräuche Heizung in kWH (aktuelles Jahr und die letzten beiden) '''(bis zum 09.12.2018 lieferte die API Werte, die noch durch 8 geteilt werden mussten, um auf kWh zu kommen!''' | ||
Außerdem liefert | Außerdem liefert Viessmann für manche Heizungstypen (noch) '''keine getrennten Werte für Heizung und WW'''. D.h. in den Reading für WW und Heizung steht der gleiche Wert (vermutlich der Gesamtverbrauch)! | ||
|- | |- | ||
|Gasverbrauch_Heizung/Monat || 1078,1384,590,241,0,0,0,0,0,0,0,0,0 ||Liste der monatlichen Gasverbräuche Heizung in kWH | |Gasverbrauch_Heizung/Monat || 1078,1384,590,241,0,0,0,0,0,0,0,0,0 ||Liste der monatlichen Gasverbräuche Heizung in kWH | ||
Zeile 294: | Zeile 301: | ||
Befehle für HK1 sind auch für HK2 und HK3 verfügbar. | Befehle für HK1 sind auch für HK2 und HK3 verfügbar. | ||
{|class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Name !! Datentyp/<BR/>Wertebereich !! Beschreibung | ! Name !! Datentyp/<BR />Wertebereich !! Beschreibung | ||
|- | |- | ||
|update|| ||löst ein Update der Reading zwischen manuell aus | |update|| ||löst ein Update der Reading zwischen manuell aus | ||
Zeile 304: | Zeile 311: | ||
|password <passwd>||String|| store password in key store | |password <passwd>||String|| store password in key store | ||
|- | |- | ||
|logResponseOnce|| || dumps the json response of | |logResponseOnce|| || dumps the json response of Viessmann server to entities.json, gw.json, actions.json in FHEM log directory | ||
|- | |- | ||
| || || | | || || | ||
Zeile 320: | Zeile 327: | ||
|HK1-Solltemperatur_eco_aktiv activate,deactivate || || activate/deactivate eco temperature | |HK1-Solltemperatur_eco_aktiv activate,deactivate || || activate/deactivate eco temperature | ||
|- | |- | ||
|HK1-Urlaub_Start <start>|| 2019-02-02T23:59:59.000Z|| set holiday start time | |HK1-Urlaub_Start <start>|| 2019-02-02 (früher war das Format mal 2019-02-02T23:59:59.000Z)|| set holiday start time | ||
|- | |- | ||
|HK1-Urlaub_Ende <end>||2019-02-16T00:00:00.000Z || set holiday end time | |HK1-Urlaub_Ende <end>||2019-02-16 (früher war das Format mal 2019-02-16T00:00:00.000Z)|| set holiday end time (geht nur, wenn schon eine Startzeit gesetzt ist) | ||
|- | |- | ||
|HK1-Urlaub_unschedule|| || remove holiday start and end time | |HK1-Urlaub_unschedule|| || remove holiday start and end time | ||
Zeile 347: | Zeile 354: | ||
Derzeit gibt es keine "get"-Kommandos. | Derzeit gibt es keine "get"-Kommandos. | ||
{|class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Name !! Beschreibung | ! Name !! Beschreibung | ||
Zeile 358: | Zeile 365: | ||
===Attribute === | ===Attribute === | ||
{|class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Name !! Datentyp/<BR/>Wertebereich !! Default-Wert !! Beschreibung | ! Name !! Datentyp/<BR />Wertebereich !! Default-Wert !! Beschreibung | ||
|- | |- | ||
|disable|| 0,1 || ||disable updates | |disable|| 0,1 || ||disable updates | ||
Zeile 373: | Zeile 380: | ||
== Hilfsmittel == | == Hilfsmittel == | ||
=== Attribut zum Speichern der wichtigsten Werte mittels DbLog === | === Attribut zum Speichern der wichtigsten Werte mittels DbLog === | ||
<syntaxhighlight>attr vitoconnect DbLogInclude Gasverbrauch_gestern,Gasverbrauch_Heizung/Jahr,Gasverbrauch_aktuelle_Woche,Gasverbrauch_aktueller_Monat,Gasverbrauch_heute,WW-aktiv, | <syntaxhighlight lang="Perl">attr vitoconnect DbLogInclude Gasverbrauch_gestern,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-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</syntaxhighlight> | HK1-Vorlauftemperatur,Kesseltemperatur,WW-Isttemperatur,WW-Solltemperatur</syntaxhighlight> | ||
=== Userreadings um Reading für Einzelwerte von Gasverbräuche zu erzeugen === | === Userreadings um Reading für Einzelwerte von Gasverbräuche zu erzeugen === | ||
<syntaxhighlight> | <syntaxhighlight lang="Perl"> | ||
attr vitoconnect userReadings | attr vitoconnect userReadings | ||
Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_Heizung/Tag",0))[0] }, | Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_Heizung/Tag",0))[0] }, | ||
Zeile 473: | Zeile 480: | ||
attr vitoconnect_rg cellStyle { | attr vitoconnect_rg cellStyle { | ||
"c:0"=>'style="text-align:left"', | "c:0"=>'style="text-align:left"', | ||
"c:1"=>'style="text-align: | "c:1"=>'style="text-align:left"', | ||
"r:2"=>'style="text-align:right;;;;font-weight:bold"' | "r:2"=>'style="text-align:right;;;;font-weight:bold"' | ||
} | } | ||
Zeile 560: | Zeile 567: | ||
=== ReadingsGroup für eine kompakte Darstellung der Verbräuche === | === ReadingsGroup für eine kompakte Darstellung der Verbräuche === | ||
<syntaxhighlight style="width: | <syntaxhighlight lang="Perl" style="width:100%;"> | ||
defmod Heizung_Verbrauch readingsGroup <>,<Periode>,<Heizung>,<Wasser>,<Strom> | defmod Heizung_Verbrauch readingsGroup <>,<Periode>,<Heizung>,<Wasser>,<Strom> | ||
vitoconnect:,<heute>,Gasverbrauch_heute,Gasverbrauch_WW_heute,Stromverbrauch_heute | vitoconnect:,<heute>,Gasverbrauch_heute,Gasverbrauch_WW_heute,Stromverbrauch_heute | ||
vitoconnect:,<gestern>,Gasverbrauch_gestern,Gasverbrauch_WW_gestern,Stromverbrauch_gestern | vitoconnect:,<gestern>,Gasverbrauch_gestern,Gasverbrauch_WW_gestern,Stromverbrauch_gestern | ||
vitoconnect:,<Woche>,Gasverbrauch_aktuelle_Woche,Gasverbrauch_WW_aktuelle_Woche,Stromverbrauch_aktuelle_Woche | vitoconnect:,<Woche>,Gasverbrauch_aktuelle_Woche,Gasverbrauch_WW_aktuelle_Woche,Stromverbrauch_aktuelle_Woche | ||
vitoconnect:,<letzte>,Gasverbrauch_letzte_Woche,Gasverbrauch_WW_letzte_Woche,Stromverbrauch_letzte_Woche | vitoconnect:,<letzte>,Gasverbrauch_letzte_Woche,Gasverbrauch_WW_letzte_Woche,Stromverbrauch_letzte_Woche | ||
vitoconnect:,<Monat>,Gasverbrauch_aktueller_Monat,Gasverbrauch_WW_aktueller_Monat,Stromverbrauch_aktueller_Monat | vitoconnect:,<Monat>,Gasverbrauch_aktueller_Monat,Gasverbrauch_WW_aktueller_Monat,Stromverbrauch_aktueller_Monat | ||
vitoconnect:,<letzter>,Gasverbrauch_letzter_Monat,Gasverbrauch_WW_letzter_Monat,Stromverbrauch_letzter_Monat | vitoconnect:,<letzter>,Gasverbrauch_letzter_Monat,Gasverbrauch_WW_letzter_Monat,Stromverbrauch_letzter_Monat | ||
vitoconnect:,<Jahr>,Gasverbrauch_aktuelles_Jahr,Gasverbrauch_WW_aktuelles_Jahr,Stromverbrauch_aktuelles_Jahr | vitoconnect:,<Jahr>,Gasverbrauch_aktuelles_Jahr,Gasverbrauch_WW_aktuelles_Jahr,Stromverbrauch_aktuelles_Jahr | ||
vitoconnect:,<letztes>,Gasverbrauch_letztes_Jahr,Gasverbrauch_WW_letztes_Jahr,Stromverbrauch_letztes_Jahr | vitoconnect:,<letztes>,Gasverbrauch_letztes_Jahr,Gasverbrauch_WW_letztes_Jahr,Stromverbrauch_letztes_Jahr | ||
attr Heizung_Verbrauch cellStyle { | attr Heizung_Verbrauch cellStyle { | ||
"r:1"=>'style="text-align:left;;;;font-weight:bold"', | "r:1"=>'style="text-align:left;;;;font-weight:bold"', | ||
"c:1"=>'style="text-align:right;;;;font-weight:bold"' | "c:1"=>'style="text-align:right;;;;font-weight:bold"' | ||
} | } | ||
attr Heizung_Verbrauch mapping ; | attr Heizung_Verbrauch mapping ; | ||
Zeile 579: | Zeile 586: | ||
attr Heizung_Verbrauch room Heizung | attr Heizung_Verbrauch room Heizung | ||
attr Heizung_Verbrauch style style="text-align:right;;;;font-size:18px" | attr Heizung_Verbrauch style style="text-align:right;;;;font-size:18px" | ||
attr Heizung_Verbrauch valueFormat { | attr Heizung_Verbrauch valueFormat { | ||
Gasverbrauch_heute => "%.0f kWh", | Gasverbrauch_heute => "%.0f kWh", | ||
Gasverbrauch_WW_heute => "%.0f kWh", | Gasverbrauch_WW_heute => "%.0f kWh", | ||
Stromverbrauch_heute => "%.0f kWh", | Stromverbrauch_heute => "%.0f kWh", | ||
Gasverbrauch_gestern => "%.0f kWh", | Gasverbrauch_gestern => "%.0f kWh", | ||
Gasverbrauch_WW_gestern => "%.0f kWh", | Gasverbrauch_WW_gestern => "%.0f kWh", | ||
Stromverbrauch_gestern => "%.0f kWh", | Stromverbrauch_gestern => "%.0f kWh", | ||
Gasverbrauch_aktuelle_Woche => "%.0f kWh", | Gasverbrauch_aktuelle_Woche => "%.0f kWh", | ||
Gasverbrauch_WW_aktuelle_Woche => "%.0f kWh", | Gasverbrauch_WW_aktuelle_Woche => "%.0f kWh", | ||
Stromverbrauch_aktuelle_Woche => "%.0f kWh", | Stromverbrauch_aktuelle_Woche => "%.0f kWh", | ||
Gasverbrauch_letzte_Woche => "%.0f kWh", | Gasverbrauch_letzte_Woche => "%.0f kWh", | ||
Gasverbrauch_WW_letzte_Woche => "%.0f kWh", | Gasverbrauch_WW_letzte_Woche => "%.0f kWh", | ||
Stromverbrauch_letzte_Woche => "%.0f kWh", | Stromverbrauch_letzte_Woche => "%.0f kWh", | ||
Gasverbrauch_aktueller_Monat => "%.0f kWh", | Gasverbrauch_aktueller_Monat => "%.0f kWh", | ||
Gasverbrauch_WW_aktueller_Monat => "%.0f kWh", | Gasverbrauch_WW_aktueller_Monat => "%.0f kWh", | ||
Stromverbrauch_aktueller_Monat => "%.0f kWh", | Stromverbrauch_aktueller_Monat => "%.0f kWh", | ||
Gasverbrauch_letzter_Monat => "%.0f kWh", | Gasverbrauch_letzter_Monat => "%.0f kWh", | ||
Gasverbrauch_WW_letzter_Monat => "%.0f kWh", | Gasverbrauch_WW_letzter_Monat => "%.0f kWh", | ||
Stromverbrauch_letzter_Monat => "%.0f kWh", | Stromverbrauch_letzter_Monat => "%.0f kWh", | ||
Gasverbrauch_aktuelles_Jahr => "%.0f kWh", | Gasverbrauch_aktuelles_Jahr => "%.0f kWh", | ||
Gasverbrauch_WW_aktuelles_Jahr => "%.0f kWh", | Gasverbrauch_WW_aktuelles_Jahr => "%.0f kWh", | ||
Stromverbrauch_aktuelles_Jahr => "%.0f kWh", | Stromverbrauch_aktuelles_Jahr => "%.0f kWh", | ||
Gasverbrauch_letztes_Jahr => "%.0f kWh", | Gasverbrauch_letztes_Jahr => "%.0f kWh", | ||
Gasverbrauch_WW_letztes_Jahr => "%.0f kWh", | Gasverbrauch_WW_letztes_Jahr => "%.0f kWh", | ||
Stromverbrauch_letztes_Jahr => "%.0f kWh" | Stromverbrauch_letztes_Jahr => "%.0f kWh" | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Datei:Readuingsgroup Verbräuche aus Vitoconnect 2.jpg|200px]] | [[Datei:Readuingsgroup Verbräuche aus Vitoconnect 2.jpg|200px]] | ||
=== SVG Graphen === | === SVG Graphen === | ||
Zeile 612: | Zeile 620: | ||
[[Datei:SVG Gasverbrauch für vitoconnect Modul.jpg|800px]] | [[Datei:SVG Gasverbrauch für vitoconnect Modul.jpg|800px]] | ||
[[Datei:Verbräuche aus Vitoconnect.jpg|800px]] | [[Datei:Verbräuche aus Vitoconnect.jpg|800px]] | ||
<br> | |||
==== weitere Graphen ==== | ==== weitere Graphen ==== | ||
[[Datei:Beispiel für Grafiken aus vitoconnect Daten.jpg|800px]] | [[Datei:Beispiel für Grafiken aus vitoconnect Daten.jpg|800px]] | ||
<br> | |||
<br> | |||
=== Speichern der wichtigsten Werte mittels FileLog und Erzeugung der entspr. SVG Plots === | |||
==== FileLog erstellen ==== | |||
Zunächst wird das FileLog mit ausgewählten Parametern erstellt. Dies ist die Voraussetzung für die SVG Plots. | |||
<syntaxhighlight lang="Perl"> | |||
define FileLog_VitoConnect FileLog ./log/VitoConnect-%Y-%m.log vitoconnect:Aussentemperatur|vitoconnect:Brenner_Modulation|vitoconnect:Brenner_aktiv|vitoconnect:Gasverbrauch_Heizung/Jahr|vitoconnect:Gasverbrauch_aktuelle_Woche|vitoconnect:Gasverbrauch_aktueller_Monat|vitoconnect:Gasverbrauch_gestern|vitoconnect:Gasverbrauch_heute|vitoconnect:HK1-Betriebsart|vitoconnect:HK1-Frostschutz_Status|vitoconnect:HK1-Programmstatus|vitoconnect:HK1-Solltemperatur_aktiv|vitoconnect:HK1-Solltemperatur_normal|vitoconnect:HK1-Solltemperatur_reduziert|vitoconnect:HK1-Solltemperatur_reduziert_aktiv|vitoconnect:HK1-Vorlauftemperatur|vitoconnect:HK1-WW_aktiv|vitoconnect:HK1-WW_und_Heizen_aktiv|vitoconnect:HK1-Zirkulationspumpe|vitoconnect:Kessel_Common_Supply_Temperatur|vitoconnect:Kesseltemperatur_exact|vitoconnect:WW-Isttemperatur|vitoconnect:WW-Sensoren_Auslauf_Wert|vitoconnect:WW-Solltemperatur|vitoconnect:WW-Zirkulationspumpe_Status|vitoconnect:WW-zeitgesteuert_aktiv | |||
attr FileLog_VitoConnect room Log | |||
</syntaxhighlight> | |||
==== SVG Graphen aus FileLog erstellen ==== | |||
Nachdem das FileLog erstellt wurde, kann aus dem Log nun der Plot von ausgewählten Werten erstellt werden.<br> | |||
===== SVG Plot für Heizkreis1 ===== | |||
Im folgenden Beispiel werden hier verschiedene Graphen für Heizkreis1 (HK1) genommen. | |||
Einige der Logwerte speichern "on"- oder "off"-Werte, diese müssten beispielsweise mit der Formel <syntaxhighlight lang="Perl">$fld[3]=~"on"?1.5:0</syntaxhighlight> erst in Werte (on=1.5, off=0) gewandelt werden. | |||
<br> | |||
<br> | |||
SVG Plot mit Plot Editor:<br> | |||
[[Datei:SVG FileLog VitoConnect 1 HK1 Temps.png|800px]] | |||
<br> | |||
<br> | |||
… mit dem entsprechenden <b>Code</b>:<br> | |||
<syntaxhighlight lang="Perl"> | |||
defmod SVG_FileLog_VitoConnect_1 SVG FileLog_VitoConnect:SVG_FileLog_VitoConnect_1:CURRENT | |||
attr SVG_FileLog_VitoConnect_1 room Heizung | |||
setstate SVG_FileLog_VitoConnect_1 initialized | |||
</syntaxhighlight> | |||
<b>SVG_FileLog_VitoConnect_1.gplot</b>: | |||
<syntaxhighlight lang="Perl"> | |||
# Created by FHEM/98_SVG.pm, 2019-11-04 20:35:38 | |||
set terminal png transparent size <SIZE> crop | |||
set output '<OUT>.png' | |||
set xdata time | |||
set timefmt "%Y-%m-%d_%H:%M:%S" | |||
set xlabel " " | |||
set title 'HK1 Temps' | |||
set ytics | |||
set y2tics | |||
set grid | |||
set ylabel "°C" | |||
set y2label "boolean" | |||
set y2range [0:4] | |||
#FileLog_VitoConnect 4:vitoconnect.Aussentemperatur\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_normal\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_reduziert\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_aktiv\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_reduziert_aktiv\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Vorlauftemperatur\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.Kesseltemperatur_exact\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.HK1-Zirkulationspumpe\x3a::$fld[3]=~"on"?1.5:0 | |||
plot "<IN>" using 1:2 axes x1y1 title 'Außentemperatur' ls l7 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'Soll normal' ls l0 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'Soll reduziert' ls l1 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y2 title 'normal-prg' ls l0fill lw 2 with lines,\ | |||
"<IN>" using 1:2 axes x1y2 title 'reduziert-prg' ls l1fill lw 2 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'Vorlauf' ls l2 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'Kesseltemp.' ls l5 lw 1 with lines | |||
"<IN>" using 1:2 axes x1y2 title 'Zirk.pumpe' ls l8fill lw 2 with lines,\ | |||
</syntaxhighlight> | |||
===== SVG Plot für Warmwasser ===== | |||
Im folgenden Beispiel werden hier verschiedene Graphen für Warmwasser (WW) genommen. | |||
Einige der Logwerte speichern "on"- oder "off"-Werte, diese müssten beispielsweise mit der Formel <syntaxhighlight lang="Perl">$fld[3]=~"on"?1.5:0</syntaxhighlight> erst in Werte (on=1.5, off=0) gewandelt werden. | |||
<br> | |||
<br> | |||
SVG Plot mit Plot Editor:<br> | |||
[[Datei:SVG FileLog VitoConnect 2 WW Temps.png|800px]] | |||
<br> | |||
<br> | |||
… mit dem entsprechenden <b>Code</b>:<br> | |||
<syntaxhighlight lang="Perl"> | |||
defmod SVG_FileLog_VitoConnect_2 SVG FileLog_VitoConnect:SVG_FileLog_VitoConnect_2:CURRENT | |||
attr SVG_FileLog_VitoConnect_2 room Heizung | |||
setstate SVG_FileLog_VitoConnect_2 initialized | |||
</syntaxhighlight> | |||
<b>SVG_FileLog_VitoConnect_1.gplot</b>: | |||
<syntaxhighlight lang="Perl"> | |||
# Created by FHEM/98_SVG.pm, 2019-11-04 21:08:37 | |||
set terminal png transparent size <SIZE> crop | |||
set output '<OUT>.png' | |||
set xdata time | |||
set timefmt "%Y-%m-%d_%H:%M:%S" | |||
set xlabel " " | |||
set title 'WW Temps' | |||
set ytics | |||
set y2tics | |||
set grid | |||
set ylabel "°C" | |||
set y2label "boolean" | |||
set y2range [0:4] | |||
#FileLog_VitoConnect 4:vitoconnect.Brenner_aktiv\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.WW-Solltemperatur\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.WW-Isttemperatur\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.WW-Sensoren_Auslauf_Wert\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.Kesseltemperatur\x3a:: | |||
#FileLog_VitoConnect 4:vitoconnect.WW-Zirkulationspumpe_Status\x3a::$fld[3]=~"on"?1.5:0 | |||
plot "<IN>" using 1:2 axes x1y2 title 'Brenner' ls l0fill lw 2 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'WW soll' ls l1 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'WW ist' ls l2 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'WW Auslaufwert' ls l3 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y1 title 'Kesseltemp.' ls l4 lw 1 with lines,\ | |||
"<IN>" using 1:2 axes x1y2 title 'Zirk.pumpe' ls l8fill lw 2 with lines,\ | |||
</syntaxhighlight> | |||
== Weblinks == | == Weblinks == |
Aktuelle Version vom 10. November 2022, 08:11 Uhr
vitoconnect | |
---|---|
Zweck / Funktion | |
Steuerung von Viessmann Heizungen | |
Allgemein | |
Typ | Gerätemodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Heizungssteuerung/Raumklima |
Modulname | 98_vitoconnect.pm |
Ersteller | Marc (Forum /Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Vitoconnect ist die Schnittstelle zwischen Heizkessel und der App ViCare zum Bedienen von Viessmann Heizungsanlagen.
Mit dem FHEM Modul vitoconnect können die Daten, die über die Internetschnittstelle an den Herstellerserver gemeldet und von diesem über eine API zur Verfügung gestellt werden, in FHEM in Form von Readings angezeigt werden. Auch eine Steuerung der Heizung ist mit diesem Modul möglich.
Wen stört, dass die Daten in der Herstellercloud liegen, sei das Modul Vitotronic 200 (Viessmann Heizungssteuerung) empfohlen.
Die Idee zu dem Modul enstand aus dem Thread "Viessmann VitoConnect API". Es basiert auf dem PHP Modul von thetrueavatar.
Das Modul wurde nach bestem Wissen und Gewissen programmiert. Da Änderungen an der Heizung nur über die Viessmann API erfolgen, sollte die Nutzung risikoarm sein. Allerdings kann ich keine Garantie übernehmen, dass es nicht doch zu irgendwelchen unerwünschten Nebeneffekten kommt. Nutzung auf eigene Gefahr!
Diskussionen über Fehler, Verbesserungen usw. finden im Forum im Thread "Neues Modul: vitoconnect" statt.
Einrichtung
Vorbereitung
Zur Nutzung des Moduls muss vorhanden sein:
- Eine aktuelle FHEM Installation
- Internet-Schnittstelle Vitoconnect 100 (Typ OPTO1)
- Ein Viessmann ViCare Account, wie er im Rahmen der Nutzung der ViCare App erstellt wird.
- Seit 15. Juli 2021 auch einen persönlichen API Key (=Client-ID), diesen gibts hier: https://developer.viessmann.com
- Das Modul benötigt mindestens folgende Perl Libraries: Path::Tiny, JSON und DateTime. Diese können mit sudo apt install libtypes-path-tiny-perl libjson-perl libdatetime-perl oder via cpan. Sollten Libraries fehlen erhält man folgende Fehlermeldung "cannot load module vitoconnect". Dann bitte ins Logfile schauen, welche Lib fehlt.
Define des Devices
Dann kann das Gerät angelegt werden: define <name> vitoconnect <user> <password> <interval>
Z.B. : define vitoconnect vitoconnect user@mail.xx geheim 60
User und Passwort sind das gleiche wie in der ViCare App.
Da die Parameter, die beim Definieren des Devices angelegt werden im Klartext in der Detailansicht lesbar sind, kann man beim Definieren einfach ein falsches Passwort eingeben und das richtige später mit einem "set"-Kommando setzen. Also zum Beispiel:
define vitoconnect vitoconnect user@mail.xx fakePassword 60
set vitoconnect password correctPassword 60
Nachträgliches Ändern des Intervalls:
Man kann einfach das DEF aufrufen und dort die Parameter korrigieren (z.B. von 60 Sek. auf 180 Sek.) - dies gilt natürlich ebenso für nachträgliches Ändern des Usernamens oder Passwortes.
Betrieb
Der Zugriff auf die API von Viessmann ist aktuell auf 1450 pro Tag in der gratis Version beschränkt, daraus ergibt sich ein Maximum von ca. einer Abfrage pro Minute. Die Anzahl der Zugriffe ist im Entwicklerportal einsehbar: https://developer.viessmann.com/de/clients/history
Readings
Readings
Die Readings werden so ausgegeben, wie sie von der API geliefert werden! Alle Reading für HK1 sind auch für HK2 und HK3 verfügbar sofern die Heizung solche Readings liefert.
Name | Datentyp/ Wertebereich |
Bedeutung |
---|---|---|
Aktive_Heizkreise | 0,1,2 | Liste der aktiven Heizkreise. 0 entspricht HK1 |
Aussen_Status | connected/notConnected | Ist ein Außensensor angeschlossen? |
Aussen_StatusWired | connected/notConnected | Ist ein Außensensor per Kabel angeschlossen? (wird seit 16.12.18 nicht mehr geliefert?) |
Aussen_StatusWireless | connected/notConnected | Ist ein kabelloser Außensensor angeschlossen? (wird seit 16.12.18 nicht mehr geliefert?) |
Aussentemperatur | 2.4 | Außentemperatur in °C |
Brenner_Betriebsstunden | 934.336944444444 | Brenner Betriebsstunden |
Brenner_Fehlercode | 0 | Brenner Fehlercode |
Brenner_Modulation | 11 | Brenner Modulation in % |
Brenner_Starts | 2717 | Brenner Starts |
Brenner_Status | ok | Brenner Status |
Brenner_aktiv | 0,1 | Brenneraktiv |
Controller_Seriennummer | 1234567890123456 | Controller Seriennummer |
Device_Time_Offset | 61 | ??? |
Fehlereinträge_Historie | ErrorListChanges | ??? (noch nicht implementiert) |
Fehlereinträge_aktive | ErrorListChanges | ??? (noch nicht implementiert) |
Gasverbrauch_Heizung/Jahr | 3293,0,0 | Liste der jährlichen Gasverbräuche Heizung in kWH (aktuelles Jahr und die letzten beiden) (bis zum 09.12.2018 lieferte die API Werte, die noch durch 8 geteilt werden mussten, um auf kWh zu kommen!
Außerdem liefert Viessmann für manche Heizungstypen (noch) keine getrennten Werte für Heizung und WW. D.h. in den Reading für WW und Heizung steht der gleiche Wert (vermutlich der Gesamtverbrauch)! |
Gasverbrauch_Heizung/Monat | 1078,1384,590,241,0,0,0,0,0,0,0,0,0 | Liste der monatlichen Gasverbräuche Heizung in kWH |
Gasverbrauch_Heizung/Tag | 76,104,113,99,76,65,60,70 | Liste der täglichen Gasverbräuche Heizung in kWH (aktueller und die letzten 7 Tage) |
Gasverbrauch_Heizung/Woche | 555,409,416,472,289,196,254,209,24,46,
183,192,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
Liste der wöchentlichen Gasverbräuche Heizung in kWH |
Gasverbrauch_WW/Jahr | 235,705,0 | Liste der jährlichen Gasverbräuche Warmwasser in kWH |
Gasverbrauch_WW/Monat | 27,208,213,193,215,84,0,0,0,0,0,0,0 | Liste der monatlichen Gasverbräuche Warmwasser in kWH |
Gasverbrauch_WW/Tag | 2,6,0,0,0,2,9,0 | Liste der täglichen Gasverbräuche Warmwasser in kWH |
Gasverbrauch_WW/Woche | 17,0,37,43,51,50,41,53,52,47,41,52,44,49,41,45,52,47,45,49,51,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | Liste der wöchentlichen Gasverbräuche Warmwasser in kWH |
HK1-Betriebsart | standby, dwh, dhwAndHeating, forcedReduced, forcedNormal | Aus, Nur Warmwasser aktiv , Heizung und Warmwasser aktiv, Dauernd Reduziert, Dauernd Tagbetrieb |
HK1-External_Temperatur | 0 | Temperatur Raumsensor? |
HK1-External_aktiv | 0 | Raumsensor aktiv? |
HK1-Frostschutz_Status | on, off | Frostschutz Status |
HK1-Heizkurve-Niveau | 0 | Heizkurve-Niveau |
HK1-Heizkurve-Steigung | 1.4 | Heizkurve-Steigung |
HK1-Programmstatus | standby, reduced, normal, forcedReduced, forcedNormal | Programmstatus |
HK1-Raum_Status | error | Raumsensor? |
HK1-Raum_Temperatur | 20 | Temperatur Raumsensor? Nur vorhanden, wenn HK1-Raum_Status "ok" |
HK1-Reduzierte_Temperatur_erzwungen | 0,1 | xxx |
HK1-Solltemperatur_aktiv | 0,1 | Solltemperatur aktiv |
HK1-Solltemperatur_comfort | 22 | Comfort Solltemeratur |
HK1-Solltemperatur_comfort_aktiv | 0,1 | Comfort aktiv |
HK1-Solltemperatur_eco | 24 | Eco Solltemperatur |
HK1-Solltemperatur_eco_aktiv | 0,1 | Eco aktiv |
HK1-Solltemperatur_erzwungen | 0,1 | Solltemperatur erzwungen |
HK1-Solltemperatur_normal | 24 | Solltemperatur normal |
HK1-Solltemperatur_reduziert | 16 | Solltemperatur reduziert |
HK1-Solltemperatur_reduziert_aktiv | 0,1 | Reduziert aktiv |
HK1-Standby_aktiv | 0,1 | Standby aktiv |
HK1-Urlaub_Ende | 2019-02-16T00:00:00.000Z | Urlaubsabsenkung Ende |
HK1-Urlaub_Start | 2019-02-02T23:59:59.000Z | Urlaubsabsenkung Start |
HK1-Urlaub_aktiv | 0,1 | Urlaubsabsenkung aktiv |
HK1-Vorlauftemperatur | 81 | Vorlauftemperatir |
HK1-Vorlauftemperatur_aktiv | connected | Vorlauftemperatursensor verbunden |
HK1-WW_aktiv | 0,1 | Modus WW (dhw) aktiv |
HK1-WW_und_Heizen_aktiv | 0,1 | Modus WW und Heizen (dhwAndHeating) aktiv |
HK1-Zeitsteuerung_Heizung |
wed start:05:00 mode:normal end:08:00 position:0, mode:normal end:23:00 position:1 start:16:00, sat position:0 end:23:00 mode:normal start:06:00, thu position:0 mode:normal end:08:00 start:05:00, start:16:00 end:23:00 mode:normal position:1, sun start:06:00 position:0 end:23:00 mode:normal, mon start:05:00 position:0 end:08:00 mode:normal, start:16:00 position:1 mode:normal end:23:00, fri start:05:00 position:0 end:08:00 mode:normal, position:1 mode:normal end:23:00 start:16:00, tue position:0 mode:normal end:08:00 start:05:00, mode:normal end:23:00 position:1 start:16:00, |
Zeitplan für Heizung |
HK1-Zeitsteuerung_Heizung_aktiv | 0,1 | Zeitplan Heizung aktiv |
HK1-Zeitsteuerung_Zirkulation | 0,1 | Zeitplan für Zirkulationspumpe. Ist irgendwann nach WW gewandert? |
HK1-Zeitsteuerung_Zirkulation_aktiv | 0,1 | Zirkulationspumpe zeitgesteuert |
HK1-Zirkulationspumpe | on,off | Zirkulationspumpe aktiv (neu seit 16.12.18?) |
HK1-aktiv | 1 | HK1 aktiv |
Kessel_Common_Supply | error | ??? (neu seit 16.12.18?) |
Kessel_Status | connected | xxx |
Kesseltemperatur | 53 | xxx |
Kesseltemperatur_exact | 53 | ??? (neu seit 16.12.18?) |
Mehrfamilienhaus_aktiv | 0,1 | xxx |
Service_Betriebsstunden_seit_letzten | 0 | (wird seit 16.12.18 nicht mehr geliefert?) |
Service_Intervall_Betriebsstunden | 0 | (wird seit 16.12.18 nicht mehr geliefert?) |
Service_Intervall_Monate | 0 | ??? |
Service_Letzter | 1970-01-01T00:00:00.000Z | ??? |
Service_Letzter_brennerbasiert | 1970-01-01T00:00:00.000Z | (wird seit 16.12.18 nicht mehr geliefert?) |
Service_Monate_aktiv_seit_letzten_Service | 0 | ??? |
Service_fällig | 0,1 | Service fällig? |
Service_fällig_brennerbasiert | (wird seit 16.12.18 nicht mehr geliefert?) | |
Stromverbrauch/Jahr | 35573,66052,0 | Stromverbrauch im Jahr in Wh(?) (analog Gasverbrauch) (neu seit 15.02.19?) |
Stromverbrauch/Monat | 11860,23713,22851,19264,17924,6013,0,0,0,0,0,0,0 | Stromverbrauch im Monat(analog Gasverbrauch) (neu seit 15.02.19?) |
Stromverbrauch/Tag | 409,828,720,733,731,727,708,682 | Stromverbrauch im Tag (analog Gasverbrauch) (neu seit 15.02.19?) |
Stromverbrauch/Woche | 4418,5058,5514,5802,5249,5109,5156,5702,5179,5547,4286,4710,5087,4236,
4075,4633,4307,3675,3721,4148,4594,1419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
Stromverbrauch im Woche (analog Gasverbrauch) (neu seit 15.02.19?) |
WW-Aufladung | 0,1 | WW Vorrat wird erhitzt (neu seit 16.12.18?) |
WW-Haupttemperatur | 54 | ?? (neu seit 16.12.18?) |
WW-Isttemperatur | 56 | WW Ist-Temperatur |
WW-Sensoren_Auslauf_Status | error | ??? (neu seit 16.12.18?) |
WW-Solltemperatur | 53 | WW Solltemperatur |
WW-Temperatur_aktiv | connected | WW aktiv |
WW-Zeitplan |
fri position:0 mode:on end:22:30 start:06:30, mon start:06:30 mode:on end:22:30 position:0, sat start:06:30 position:0 mode:on end:22:30, wed end:22:30 mode:on position:0 start:06:30, thu start:06:30 position:0 mode:on end:22:30, tue position:0 mode:on end:22:30 start:06:30, sun mode:on end:22:30 position:0 start:06:30, |
WW Zeitplan |
WW-Zirkulationspumpe_Zeitsteuerung_aktiv | 0,1 | Zeitsteuerung Zirkulationspumpe aktiv(neu seit 16.12.18?) |
WW-Zirkulationspumpe_Status | on | Status Zirkulationspumpe(neu seit 16.12.18?) |
WW-Zirkulationspumpe_Zeitplan |
wed start:04:30 mode:on end:22:30 position:0, mon start:04:30 position:0 end:22:30 mode:on, sun start:04:30 position:0 mode:on end:22:30, sat start:04:30 position:0 end:22:30 mode:on, thu start:04:30 end:22:30 mode:on position:0, tue start:04:30 mode:on end:22:30 position:0, fri position:0 end:22:30 mode:on start:04:30, |
Zeitplan für die Zirkulationspumpe (neu seit 16.12.18?) |
WW-Zirkulationspumpe_primaer | off | (neu seit 16.12.18?) |
WW-aktiv | 0,1 | WW aktiv |
WW-onTimeCharge_aktiv | 0,1 | einmaliges WW Aufladen aktiv |
WW-zeitgesteuert_aktiv | 0,1 | WW zeitgesteuert |
state | ok, Login failure | Status |
Settings
Set Befehle
Benutzung der Set-Befehle auf eigenes Risiko!
Das Modul prüft nicht, ob ein Befehl oder die Parameter für die Heizung sinnvoll und möglich sind. Die API scheint dies mit einem Fehler quittieren.
Befehle für HK1 sind auch für HK2 und HK3 verfügbar.
Name | Datentyp/ Wertebereich |
Beschreibung |
---|---|---|
update | löst ein Update der Reading zwischen manuell aus | |
clearReadings | clear all readings immeadiatlely | |
password <passwd> | String | store password in key store |
logResponseOnce | dumps the json response of Viessmann server to entities.json, gw.json, actions.json in FHEM log directory | |
HK1-Heizkurve-Niveau <shift> | -13 bis 40 | set shift of heating curve |
HK1-Heizkurve-Steigung <slope> | 0.2 bis 3.5 | set slope of heating curve |
HK1-Betriebsart <mode> | standby,dhw,dhwAndHeating,forcedReduced or forcedNormal | set HK1-Betriebsart |
HK1-Solltemperatur_comfort_aktiv <activate,deactivate> | activate/deactivate comfort temperature | |
HK1-Solltemperatur_comfort <targetTemperature> | set comfort target temperatur | |
HK1-Solltemperatur_eco_aktiv activate,deactivate | activate/deactivate eco temperature | |
HK1-Urlaub_Start <start> | 2019-02-02 (früher war das Format mal 2019-02-02T23:59:59.000Z) | set holiday start time |
HK1-Urlaub_Ende <end> | 2019-02-16 (früher war das Format mal 2019-02-16T00:00:00.000Z) | set holiday end time (geht nur, wenn schon eine Startzeit gesetzt ist) |
HK1-Urlaub_unschedule | remove holiday start and end time | |
HK1-Solltemperatur_normal <targetTemperature> | 3 and 37 | sets the normale target temperature |
HK1-Solltemperatur_reduziert <targetTemperature> | 3 and 37 | sets the reduced target temperature |
WW-einmaliges_Aufladen activate,deactivate | activate or deactivate one time charge for hot water | |
WW-Zirkulationspumpe_Zeitplan <schedule> | not implemented | |
WW-Zeitplan <schedule> | not implemented | |
WW-Haupttemperatur <targetTemperature> | 10 and 60 | sets hot water main temperature to targetTemperature |
WW-Solltemperatur <targetTemperature> | 10 and 60 | sets hot water temperature to targetTemperature |
Get
Derzeit gibt es keine "get"-Kommandos.
Name | Beschreibung |
---|---|
Attribute
Attribute
Name | Datentyp/ Wertebereich |
Default-Wert | Beschreibung |
---|---|---|---|
disable | 0,1 | disable updates | |
verbose | 0,1,2,3,4,5 | Loglevel | |
vitoconnect_raw_readings | 0,1 | lege Reading mit dem JSON Namen wie 'heating.circuits.0.heating.curve.slope' statt der Deutschen Bezeichnungen an | |
vitoconnect_actions_active | 0,1 | erzeuge Readings for Befehle wie 'heating.circuits.0.heating.curve.setCurve' |
Hilfsmittel
Attribut zum Speichern der wichtigsten Werte mittels DbLog
attr vitoconnect DbLogInclude Gasverbrauch_gestern,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
Userreadings um Reading für Einzelwerte von Gasverbräuche zu erzeugen
attr vitoconnect userReadings
Gasverbrauch_heute:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_Heizung/Tag",0))[0] },
Gasverbrauch_gestern:Gasverbrauch_Heizung/Tag.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Tag",0))[1] },
Gasverbrauch_aktuelle_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Woche",0))[0] },
Gasverbrauch_letzte_Woche:Gasverbrauch_Heizung/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Woche",0))[1] },
Gasverbrauch_aktueller_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Monat",0))[0] },
Gasverbrauch_letzter_Monat:Gasverbrauch_Heizung/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Monat",0))[1] },
Gasverbrauch_aktuelles_Jahr:Gasverbrauch_Heizung/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Jahr",0))[0] },
Gasverbrauch_letztes_Jahr:Gasverbrauch_Heizung/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_Heizung/Jahr",0))[1] },
Gasverbrauch_WW_heute:Gasverbrauch_WW/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_WW/Tag",0))[0] },
Gasverbrauch_WW_gestern:Gasverbrauch_WW/Tag.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Tag",0))[1] },
Gasverbrauch_WW_aktuelle_Woche:Gasverbrauch_WW/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Woche",0))[0] },
Gasverbrauch_WW_letzte_Woche:Gasverbrauch_WW/Woche.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Woche",0))[1] },
Gasverbrauch_WW_aktueller_Monat:Gasverbrauch_WW/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Monat",0))[0] },
Gasverbrauch_WW_letzter_Monat:Gasverbrauch_WW/Monat.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Monat",0))[1] },
Gasverbrauch_WW_aktuelles_Jahr:Gasverbrauch_WW/Jahr.* { (split /,/, ReadingsVal("vitoconnect","Gasverbrauch_WW/Jahr",0))[0] },
Gasverbrauch_WW_letztes_Jahr:Gasverbrauch_WW/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Gasverbrauch_WW/Jahr",0))[1] },
Stromverbrauch_heute:Stromverbrauch/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Tag",0))[0] },
Stromverbrauch_gestern:Stromverbrauch/Tag.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Tag",0))[1] },
Stromverbrauch_aktuelle_Woche:Stromverbrauch/Woche.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Woche",0))[0] },
Stromverbrauch_letzte_Woche:Stromverbrauch/Woche.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Woche",0))[1] },
Stromverbrauch_aktueller_Monat:Stromverbrauch/Monat.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Monat",0))[0] },
Stromverbrauch_letzter_Monat:Stromverbrauch/Monat.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Monat",0))[1] },
Stromverbrauch_aktuelles_Jahr:Stromverbrauch/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Jahr",0))[0] },
Stromverbrauch_letztes_Jahr:Stromverbrauch/Jahr.* { (split /,/, ReadingsVal("vitoconnect", "Stromverbrauch/Jahr",0))[1] }
ReadingsGroup für eine kompakte Darstellung
defmod vitoconnect_rg readingsGroup
vitoconnect:Aussentemperatur
<Brenner>
vitoconnect:Brenner_Betriebsstunden
vitoconnect:Brenner_Fehlercode
vitoconnect:Brenner_Modulation
vitoconnect:Brenner_Starts
vitoconnect:Brenner_Status
vitoconnect:Brenner_aktiv
<HK1>
vitoconnect:HK1-aktiv
vitoconnect:HK1-Betriebsart
vitoconnect:HK1-Frostschutz_Status
vitoconnect:HK1-Heizkurve-Niveau
vitoconnect:HK1-Heizkurve-Steigung
vitoconnect:HK1-Programmstatus
vitoconnect:HK1-Raum_Status
vitoconnect:HK1-Reduzierte_Temperatur_erzwungen
vitoconnect:HK1-Solltemperatur_aktiv
vitoconnect:HK1-Solltemperatur_erzwungen
vitoconnect:HK1-Solltemperatur_normal
vitoconnect:HK1-Solltemperatur_reduziert
vitoconnect:HK1-Solltemperatur_reduziert_aktiv
vitoconnect:HK1-Standby_aktiv
vitoconnect:HK1-Urlaub_Ende
vitoconnect:HK1-Urlaub_Start
vitoconnect:HK1-Urlaub_aktiv
vitoconnect:HK1-Vorlauftemperatur
vitoconnect:HK1-WW_aktiv
vitoconnect:HK1-WW_und_Heizen_aktiv
vitoconnect:HK1-Zeitsteuerung_Heizung_aktiv
vitoconnect:HK1-Zeitsteuerung_Zirkulation_aktiv
vitoconnect:HK1-Zirkulationspumpe
<Kessel>
vitoconnect:Kesseltemperatur
vitoconnect:Kesseltemperatur_exact
<WW>
vitoconnect:WW-Aufladung
vitoconnect:WW-Haupttemperatur
vitoconnect:WW-Isttemperatur
vitoconnect:WW-Solltemperatur
vitoconnect:WW-Zirklationspumpe_Zeitsteuerung_aktiv
vitoconnect:WW-Zirkulationspumpe_Status
vitoconnect:WW-Zirkulationspumpe_primaer
vitoconnect:WW-aktiv
vitoconnect:WW-onTimeCharge_aktiv
vitoconnect:WW-zeitgesteuert_aktiv
attr vitoconnect_rg alias Heizung
attr vitoconnect_rg cellStyle {
"c:0"=>'style="text-align:left"',
"c:1"=>'style="text-align:left"',
"r:2"=>'style="text-align:right;;;;font-weight:bold"'
}
attr vitoconnect_rg mapping {
"Aussentemperatur" => "Aussentemperatur",
"Brenner_Betriebsstunden" => "Betriebsstunden",
"Brenner_Fehlercode" => "Fehlercode",
"Brenner_Modulation" => "Modulation",
"Brenner_Starts" => "Starts",
"Brenner_Status" => "Status",
"Brenner_aktiv" => "aktiv",
"HK1-aktiv" => "aktiv",
"HK1-Betriebsart" => "Betriebsart",
"HK1-Frostschutz_Status" => "Frostschutz_Status",
"HK1-Heizkurve-Niveau" => "Heizkurve-Niveau",
"HK1-Heizkurve-Steigung" => "Heizkurve-Steigung",
"HK1-Programmstatus" => "Programmstatus",
"HK1-Raum_Status" => "Raum Status",
"HK1-Reduzierte_Temperatur_erzwungen" => "Reduzierte Temperatur erzwungen",
"HK1-Solltemperatur_aktiv" => "Solltemperatur aktiv",
"HK1-Solltemperatur_erzwungen" => "Solltemperatur erzwungen",
"HK1-Solltemperatur_normal" => "Solltemperatur normal",
"HK1-Solltemperatur_reduziert" => "Solltemperatur reduziert",
"HK1-Solltemperatur_reduziert_aktiv" => "Solltemperatur reduziert_aktiv",
"HK1-Standby_aktiv" => "Standby aktiv",
"HK1-Urlaub_Ende" => "Urlaub Ende",
"HK1-Urlaub_Start" => "Urlaub Start",
"HK1-Urlaub_aktiv" => "Urlaub aktiv",
"HK1-Vorlauftemperatur" => "Vorlauftemperatur",
"HK1-WW_aktiv" => "WW aktiv",
"HK1-WW_und_Heizen_aktiv" => "WW und Heizen aktiv",
"HK1-Zeitsteuerung_Heizung_aktiv" => "Zeitsteuerung Heizung aktiv",
"HK1-Zirkulationspumpe" => "Zirkulationspumpe",
"Kesseltemperatur" => "Kesseltemperatur",
"Kesseltemperatur_exact" => "Kesseltemperatur exact",
"WW-Aufladung" => "Aufladung",
"WW-Haupttemperatur" => "Haupttemperatur",
"WW-Isttemperatur" => "Isttemperatur",
"WW-Solltemperatur" => "Solltemperatur",
"WW-Zirklationspumpe_Zeitsteuerung_aktiv" => "Zirkulationspumpe Zeitsteuerung aktiv",
"WW-Zirkulationspumpe_Status" => "Zirkulationspumpe Status",
"WW-Zirkulationspumpe_primaer" => "Zirkulationspumpe primaer",
"WW-aktiv" => "aktiv",
"WW-onTimeCharge_aktiv" => "onTimeCharge aktiv",
"WW-zeitgesteuert_aktiv" => "zeitgesteuert aktiv"
}
attr vitoconnect_rg nostate 1
attr vitoconnect_rg notime 1
attr vitoconnect_rg room Heizung
attr vitoconnect_rg sortby 1
attr vitoconnect_rg valueFormat { "Brenner_Betriebsstunden" => "%2d" }
attr vitoconnect_rg valueIcon {'Brenner_aktiv.0' => '1px-spacer',
'Brenner_aktiv.1' => 'icoHEIZUNG',
'HK1-Solltemperatur_reduziert_aktiv.0' => '10px-kreis-rot',
'HK1-Solltemperatur_reduziert_aktiv.1' => '10px-kreis-gruen'
}
attr vitoconnect_rg valueSuffix {
Aussentemperatur => "°C",
Brenner_Betriebsstunden => "h",
Brenner_Modulation => "%",
'HK1-Solltemperatur_normal' => "°C",
'HK1-Solltemperatur_reduziert' => "°C",
'HK1-Vorlauftemperatur' => " °C",
Kesseltemperatur => "°C",
Kesseltemperatur_exact => "°C",
'WW-Solltemperatur' => " °C",
'WW-Isttemperatur' => " °C",
'WW-Solltemperatur' => "°C"
}
ReadingsGroup für eine kompakte Darstellung der Verbräuche
defmod Heizung_Verbrauch readingsGroup <>,<Periode>,<Heizung>,<Wasser>,<Strom>
vitoconnect:,<heute>,Gasverbrauch_heute,Gasverbrauch_WW_heute,Stromverbrauch_heute
vitoconnect:,<gestern>,Gasverbrauch_gestern,Gasverbrauch_WW_gestern,Stromverbrauch_gestern
vitoconnect:,<Woche>,Gasverbrauch_aktuelle_Woche,Gasverbrauch_WW_aktuelle_Woche,Stromverbrauch_aktuelle_Woche
vitoconnect:,<letzte>,Gasverbrauch_letzte_Woche,Gasverbrauch_WW_letzte_Woche,Stromverbrauch_letzte_Woche
vitoconnect:,<Monat>,Gasverbrauch_aktueller_Monat,Gasverbrauch_WW_aktueller_Monat,Stromverbrauch_aktueller_Monat
vitoconnect:,<letzter>,Gasverbrauch_letzter_Monat,Gasverbrauch_WW_letzter_Monat,Stromverbrauch_letzter_Monat
vitoconnect:,<Jahr>,Gasverbrauch_aktuelles_Jahr,Gasverbrauch_WW_aktuelles_Jahr,Stromverbrauch_aktuelles_Jahr
vitoconnect:,<letztes>,Gasverbrauch_letztes_Jahr,Gasverbrauch_WW_letztes_Jahr,Stromverbrauch_letztes_Jahr
attr Heizung_Verbrauch cellStyle {
"r:1"=>'style="text-align:left;;;;font-weight:bold"',
"c:1"=>'style="text-align:right;;;;font-weight:bold"'
}
attr Heizung_Verbrauch mapping ;
attr Heizung_Verbrauch nostate 1
attr Heizung_Verbrauch room Heizung
attr Heizung_Verbrauch style style="text-align:right;;;;font-size:18px"
attr Heizung_Verbrauch valueFormat {
Gasverbrauch_heute => "%.0f kWh",
Gasverbrauch_WW_heute => "%.0f kWh",
Stromverbrauch_heute => "%.0f kWh",
Gasverbrauch_gestern => "%.0f kWh",
Gasverbrauch_WW_gestern => "%.0f kWh",
Stromverbrauch_gestern => "%.0f kWh",
Gasverbrauch_aktuelle_Woche => "%.0f kWh",
Gasverbrauch_WW_aktuelle_Woche => "%.0f kWh",
Stromverbrauch_aktuelle_Woche => "%.0f kWh",
Gasverbrauch_letzte_Woche => "%.0f kWh",
Gasverbrauch_WW_letzte_Woche => "%.0f kWh",
Stromverbrauch_letzte_Woche => "%.0f kWh",
Gasverbrauch_aktueller_Monat => "%.0f kWh",
Gasverbrauch_WW_aktueller_Monat => "%.0f kWh",
Stromverbrauch_aktueller_Monat => "%.0f kWh",
Gasverbrauch_letzter_Monat => "%.0f kWh",
Gasverbrauch_WW_letzter_Monat => "%.0f kWh",
Stromverbrauch_letzter_Monat => "%.0f kWh",
Gasverbrauch_aktuelles_Jahr => "%.0f kWh",
Gasverbrauch_WW_aktuelles_Jahr => "%.0f kWh",
Stromverbrauch_aktuelles_Jahr => "%.0f kWh",
Gasverbrauch_letztes_Jahr => "%.0f kWh",
Gasverbrauch_WW_letztes_Jahr => "%.0f kWh",
Stromverbrauch_letztes_Jahr => "%.0f kWh"
}
SVG Graphen
Gas- und Stromverbrauch
weitere Graphen
Speichern der wichtigsten Werte mittels FileLog und Erzeugung der entspr. SVG Plots
FileLog erstellen
Zunächst wird das FileLog mit ausgewählten Parametern erstellt. Dies ist die Voraussetzung für die SVG Plots.
define FileLog_VitoConnect FileLog ./log/VitoConnect-%Y-%m.log vitoconnect:Aussentemperatur|vitoconnect:Brenner_Modulation|vitoconnect:Brenner_aktiv|vitoconnect:Gasverbrauch_Heizung/Jahr|vitoconnect:Gasverbrauch_aktuelle_Woche|vitoconnect:Gasverbrauch_aktueller_Monat|vitoconnect:Gasverbrauch_gestern|vitoconnect:Gasverbrauch_heute|vitoconnect:HK1-Betriebsart|vitoconnect:HK1-Frostschutz_Status|vitoconnect:HK1-Programmstatus|vitoconnect:HK1-Solltemperatur_aktiv|vitoconnect:HK1-Solltemperatur_normal|vitoconnect:HK1-Solltemperatur_reduziert|vitoconnect:HK1-Solltemperatur_reduziert_aktiv|vitoconnect:HK1-Vorlauftemperatur|vitoconnect:HK1-WW_aktiv|vitoconnect:HK1-WW_und_Heizen_aktiv|vitoconnect:HK1-Zirkulationspumpe|vitoconnect:Kessel_Common_Supply_Temperatur|vitoconnect:Kesseltemperatur_exact|vitoconnect:WW-Isttemperatur|vitoconnect:WW-Sensoren_Auslauf_Wert|vitoconnect:WW-Solltemperatur|vitoconnect:WW-Zirkulationspumpe_Status|vitoconnect:WW-zeitgesteuert_aktiv
attr FileLog_VitoConnect room Log
SVG Graphen aus FileLog erstellen
Nachdem das FileLog erstellt wurde, kann aus dem Log nun der Plot von ausgewählten Werten erstellt werden.
SVG Plot für Heizkreis1
Im folgenden Beispiel werden hier verschiedene Graphen für Heizkreis1 (HK1) genommen.
Einige der Logwerte speichern "on"- oder "off"-Werte, diese müssten beispielsweise mit der Formel
$fld[3]=~"on"?1.5:0
erst in Werte (on=1.5, off=0) gewandelt werden.
SVG Plot mit Plot Editor:
… mit dem entsprechenden Code:
defmod SVG_FileLog_VitoConnect_1 SVG FileLog_VitoConnect:SVG_FileLog_VitoConnect_1:CURRENT
attr SVG_FileLog_VitoConnect_1 room Heizung
setstate SVG_FileLog_VitoConnect_1 initialized
SVG_FileLog_VitoConnect_1.gplot:
# Created by FHEM/98_SVG.pm, 2019-11-04 20:35:38
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'HK1 Temps'
set ytics
set y2tics
set grid
set ylabel "°C"
set y2label "boolean"
set y2range [0:4]
#FileLog_VitoConnect 4:vitoconnect.Aussentemperatur\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_normal\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_reduziert\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_aktiv\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Solltemperatur_reduziert_aktiv\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Vorlauftemperatur\x3a::
#FileLog_VitoConnect 4:vitoconnect.Kesseltemperatur_exact\x3a::
#FileLog_VitoConnect 4:vitoconnect.HK1-Zirkulationspumpe\x3a::$fld[3]=~"on"?1.5:0
plot "<IN>" using 1:2 axes x1y1 title 'Außentemperatur' ls l7 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Soll normal' ls l0 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Soll reduziert' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'normal-prg' ls l0fill lw 2 with lines,\
"<IN>" using 1:2 axes x1y2 title 'reduziert-prg' ls l1fill lw 2 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Vorlauf' ls l2 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Kesseltemp.' ls l5 lw 1 with lines
"<IN>" using 1:2 axes x1y2 title 'Zirk.pumpe' ls l8fill lw 2 with lines,\
SVG Plot für Warmwasser
Im folgenden Beispiel werden hier verschiedene Graphen für Warmwasser (WW) genommen.
Einige der Logwerte speichern "on"- oder "off"-Werte, diese müssten beispielsweise mit der Formel
$fld[3]=~"on"?1.5:0
erst in Werte (on=1.5, off=0) gewandelt werden.
SVG Plot mit Plot Editor:
… mit dem entsprechenden Code:
defmod SVG_FileLog_VitoConnect_2 SVG FileLog_VitoConnect:SVG_FileLog_VitoConnect_2:CURRENT
attr SVG_FileLog_VitoConnect_2 room Heizung
setstate SVG_FileLog_VitoConnect_2 initialized
SVG_FileLog_VitoConnect_1.gplot:
# Created by FHEM/98_SVG.pm, 2019-11-04 21:08:37
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'WW Temps'
set ytics
set y2tics
set grid
set ylabel "°C"
set y2label "boolean"
set y2range [0:4]
#FileLog_VitoConnect 4:vitoconnect.Brenner_aktiv\x3a::
#FileLog_VitoConnect 4:vitoconnect.WW-Solltemperatur\x3a::
#FileLog_VitoConnect 4:vitoconnect.WW-Isttemperatur\x3a::
#FileLog_VitoConnect 4:vitoconnect.WW-Sensoren_Auslauf_Wert\x3a::
#FileLog_VitoConnect 4:vitoconnect.Kesseltemperatur\x3a::
#FileLog_VitoConnect 4:vitoconnect.WW-Zirkulationspumpe_Status\x3a::$fld[3]=~"on"?1.5:0
plot "<IN>" using 1:2 axes x1y2 title 'Brenner' ls l0fill lw 2 with lines,\
"<IN>" using 1:2 axes x1y1 title 'WW soll' ls l1 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'WW ist' ls l2 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'WW Auslaufwert' ls l3 lw 1 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Kesseltemp.' ls l4 lw 1 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Zirk.pumpe' ls l8fill lw 2 with lines,\