So - ich hab in den letzten Tagen wirklich viel probiert und auch hinbekommen - ich bin von Openhab echt begeistert. Es geht wirklich viel. Da ich zu einigen Themen wenig gefunden habe, will ich hier die eine oder andere Lösung präsentieren, um Gleichgesinnten die Experimente zu ersparen.
Hier meine jetzige, bereits funktionale Konfiguration:
Youless Energiezähler über Json abgefragt. dazu folgende Dateien im Bereich der Translation angelegt:
getAktLeistung.js mit dem Inhalt
und getZaehlerStrom.js mit dem Inhalte
Durch das replace wird Komme durch Punkt ersetzt und lässt sich damit auch in die Datenbank schreiben. In der Items Datei steht Folgendes:
und in der Sitemap steht das:
Jetzt müssen noch die Verbräuche pro Stunde, Tag etc. berechnet werden. Dafür habe ich folgende Rule angelegt:
Jetzt habe ich das Ganze in eine MySQL Datenbank zur Langzeiterfassung plaziert:
Mit diesen Codeschnipseln habe ich einen Grafen gebastelt, der mir die aktuelle Leistung zeigt, darunter die Verräuche der jüngeren Vergangeheit berechnet und zeigt und den Zählerstand wiedergibt. Damit gibt es schon mal einen ganz guten Überblick. Was ich mir jetzt noch wünschen würde wäre ein weiteres Chart, in dem jeweils der Verbrauch eines Kalendermonats gezeigt wird. Man müsste also nochmal eine Regel basteln die jeweils vom Monatsletzten bis Monatsersten die Differenz berechnet, und diese in den Wert in MySQL hinterlegt und darauf dann ein Chart loslassen.
Das fummel ich mir aber auch noch zusammen und werde hier berichten. Hier erstma vielen Dank für die helfenden Tipps.
VG - Fossi
Hier meine jetzige, bereits funktionale Konfiguration:
Youless Energiezähler über Json abgefragt. dazu folgende Dateien im Bereich der Translation angelegt:
getAktLeistung.js mit dem Inhalt
Code:
JSON.parse(input).pwr;[COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
und getZaehlerStrom.js mit dem Inhalte
Code:
JSON.parse(input).cnt.replace(",", ".");[COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
Durch das replace wird Komme durch Punkt ersetzt und lässt sich damit auch in die Datenbank schreiben. In der Items Datei steht Folgendes:
Code:
Number aktLeistung "Leistung aktuell [%.0f Watt]" <energy> { http="<[http://192.168.100.210/a?f=j:10000:JS(getAktLeistung.js)]" } Number ZaehlerStrom "Stromzaehler [%.1f kWh]" <energy> { http="<[http://192.168.100.210/a?f=j:10000:JS(getZaehlerStrom.js)]" } Number Strom_Ausw_Zeitr "Auswertung" Number Verb_Stunde "Verbrauch letzte Stunde [%.1f kWh]" Number Verb_Tag "Verbrauch letzter Tag [%.1f kWh]" Number Verb_Woche "Verbrauch letzter Woche [%.1f kWh]"[COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
und in der Sitemap steht das:
Code:
Frame label="Verbrauch" { Text item=aktLeistung { Frame { Switch item=Strom_Ausw_Zeitr label="Zeitraum" mappings=[0="Stunde", 1="Tag", 2="Woche", 3="Monat"] Chart item=aktLeistung period=h refresh=30000 service="mysql" visibility=[Strom_Ausw_Zeitr==0, Strom_Ausw_Zeitr=="Uninitialized"] Chart item=aktLeistung period=D refresh=30000 service="mysql" visibility=[Strom_Ausw_Zeitr==1] Chart item=aktLeistung period=W refresh=30000 service="mysql" visibility=[Strom_Ausw_Zeitr==2] Chart item=aktLeistung period=M refresh=30000 service="mysql" visibility=[Strom_Ausw_Zeitr==3] } Frame { Text item=Verb_Stunde Text item=Verb_Tag Text item=Verb_Woche Text item=ZaehlerStrom } } }[COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
Jetzt müssen noch die Verbräuche pro Stunde, Tag etc. berechnet werden. Dafür habe ich folgende Rule angelegt:
Code:
import org.openhab.core.library.types.* import org.openhab.core.persistence.* import org.openhab.model.script.actions.* import org.joda.time.DateTime rule "Verb_Stunde berechnen" when Time cron "0 0/15 * * * ?" // jede viertel Stunde then { Verb_Stunde.postUpdate(ZaehlerStrom.state as DecimalType - ZaehlerStrom.historicState(now.minusHours(1)).state as DecimalType) } end rule "Verb_Tag berechnen" when Time cron "0 0/15 * * * ?" // jede viertel Stunde then { Verb_Tag.postUpdate(ZaehlerStrom.state as DecimalType - ZaehlerStrom.historicState(now.minusHours(24)).state as DecimalType) } end rule "Verb_Woche berechnen" when Time cron "0 0/15 * * * ?" // jede viertel Stunde then { Verb_Woche.postUpdate(ZaehlerStrom.state as DecimalType - ZaehlerStrom.historicState(now.minusDays(7)).state as DecimalType) } end[COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
Jetzt habe ich das Ganze in eine MySQL Datenbank zur Langzeiterfassung plaziert:
Code:
Strategies { everyHour : "0 0 * * * ?" everyDay : "0 0 0 * * ?" everyMinute : "0 * * * * ?" every5Minute : "0 0/5 * * * ?" every10Minute : "0 0/10 * * * ?" every15Minute : "0 0/15 * * * ?" default = everyChange } Items { aktLeistung : strategy = everyMinute, restoreOnStartup ZaehlerStrom : strategy = every5Minute, restoreOnStartup [COLOR=#111111][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR]
Mit diesen Codeschnipseln habe ich einen Grafen gebastelt, der mir die aktuelle Leistung zeigt, darunter die Verräuche der jüngeren Vergangeheit berechnet und zeigt und den Zählerstand wiedergibt. Damit gibt es schon mal einen ganz guten Überblick. Was ich mir jetzt noch wünschen würde wäre ein weiteres Chart, in dem jeweils der Verbrauch eines Kalendermonats gezeigt wird. Man müsste also nochmal eine Regel basteln die jeweils vom Monatsletzten bis Monatsersten die Differenz berechnet, und diese in den Wert in MySQL hinterlegt und darauf dann ein Chart loslassen.
Das fummel ich mir aber auch noch zusammen und werde hier berichten. Hier erstma vielen Dank für die helfenden Tipps.
VG - Fossi
Kommentar