Seite 2 von 3
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 19. Apr 2024 16:47
von Optimus#1978#
Mir ist schon bewusst, dass ich nicht einfach irgendetwas etwas schreiben kann, sondern die Syntax-Regeln von OpenHAB beachten muss (ich habe mich – in anderem Zusammenhang - mit EXCEL VBA-Makros beschäftigt und kenne die Auswirkungen von fehlenden oder fehlerhaften Zeichen).
Ich will mich zunächst einmal darum kümmern, dass in Visual Studio Code keine Fehlermeldungen mehr auftreten.
Die Fehlermeldungen haben nichts mit den veränderten Items zu tun. Du hast das openHAB Plugin in Visual Studio Code falsch konfiguriert, das ist alles.
Da ich openHAB auf meinen cMatic-Automatisierungssystem (= Raspberry Pi 4) installiert habe, habe ich den openHAB-conf Ordner als Netzwerklaufwerk in meinem System angelegt. In Visual Studio Code kann ich über den Befehl "File / Open File" direkt auf den openHAB-conf Ordner zugreifen und dort die "home.items" öffnen. Die Einträge aus openHAB-conf werden dann in Visual Studio Code angezeigt.
Was muss ich sonst noch machen, damit Änderungen, die in Visual Studio Code erfasst werden, im openHAB-conf Ordner ankommen?
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 19. Apr 2024 18:09
von Optimus#1978#
Ich habe eine Anleitung gefunden
https://digitalewelt.at/openhab-2-visua ... anleitung/
Das Problem mit der fehlerhaften Konfiguration ist behoben. Im OpenHAB webinterface werden die Werte der items wieder angezeigt.
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 19. Apr 2024 18:34
von Optimus#1978#
Nachdem das Problem der fehlerhaften Konfiguration von Visual Studio Code behoben ist, kann ich mich wieder mit meiner eigentlichen Fragestellung beschäftigen.
Die Einträge der items für „Energiebezug“ und „Energieeinspeisung“ wurden nun wie folgt geändert:
Code: Alles auswählen
Number:Energy Energyin "Energiebezug" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_1-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
Number:Energy Energyout "Energieeinspeisung" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_2-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
In der Übersicht der Items werden nun der Energiebezug und Energieeinspeisung korrekt angezeigt, allerdings werden die Werte in „Wh“ angegeben. Ich würde die Anzeige gerne in „KWh“ ändern. Wo kann ich das einstellen?
Klickt man die Item-Werte für Energiebezug bzw. Energieeinspeisung an, wird auf der jeweiligen Folgemaske der Wert in der korrekten gewünschten Dimension „KWh“ mit einer Nachkommastelle angezeigt. Zwar wird für die Nachkommastelle eine „0“ ausgewiesen. Doch ich vermute, dass dies an meinem Zweirichtungsstromzähler liegt. Auch nach der Umstellung des Zählers auf „In On“ gibt es im Display des Zählers dort keine Nachkommastellen.
Beim Drücken auf „Analyze“ und der Auswahl eines Zeitraums ein oder zwei Monaten werden nun für Energiebezug und Energieeinspeisung Kurvendiagramme angezeigt. Hier erscheinen wieder die Werte in Wh. Auch hier würde ich gerne die Dimension auf KWh ändern. Wie mache ich das?
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 19. Apr 2024 21:47
von udo1toni
Die Itemübersicht ist in dieser Hinsicht nicht konfigurierbar. Sie ist auch nicht dazu gedacht, dass man dort ständig Dinge nachschaut, sie ist Teil der Konfigurationsoberfläche.
Du könntest natürlich den Parameter unit direkt auf kWh setzen (nicht KWh), allerdings wirst Du damit ein breaking Change des Items verursachen, Du musst dann alle Persistence Daten dieses Items löschen, um hier keine fehlerhaften Daten zu erhalten.
Da die Itemübersicht nur für die Konfiguration gedacht ist, wäre mein Ratschlag, das sein zu lassen und damit zu leben, dass Du an dieser Stelle die Werte in Wh siehst. In der eigentlichen UI werden die Werte ja mit kWh angezeigt, und der eigentliche Wert ist ebenfalls korrekt, Du kannst also mit diesem Wert ohne weiteres rechnen oder Vergleiche anstellen, falls Du das tun möchtest.
EDIT: Ach so, vergessen... Die Einheit für die Charts kann man leider (noch?) nicht frei setzen, es wird hier immer die Einheit verwendet, welche als unit im Item festgelegt ist. Ich habe keine Ahnung, ob es schon Bestrebungen gibt, das konfigurierbar zu machen (der Wunsch ist naheliegend...)
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 21. Apr 2024 17:00
von Optimus#1978#
Okay, verstanden. Dann werde ich mich mit der Item-Übersicht nicht weiter abmühen.
Derzeit werden bei mir im OpenHAB-Webinterface folgende Einträge angezeigt:
Code: Alles auswählen
Bezeichnung in Item-Übersicht Itemübersicht Itemübers. Detail Einheit
Wert Einheit Wert Einheit
1. Energiebezug kumuliert (kWh) 3065000 Wh 3065,0 kWh
2. Energieeinspeisung kumliert (kWh) 3575000 Wh 3575,0 kWh
3. Energiebezug/Monat (kWh) 57000 57000 kWh
4. Energiebezug/Tag (kWh) 5000 kWh 5000 kWh
5. Ernergiebezug/Woche (kWh) 2400 24000 kWh
6. Energieeinspeisung/Monat (kWh) 286000 286000 kWh
7. Energieeinspeisung/Tag (kWh) 9000 kWh 9000 kWh
8. Energieeinspeisung/Woche (kWh) 70000 70000 kWh
Die ersten beiden Einträge sind okay. Hier stimmt die Größendimension. Bei den Einträge 3.) bis 8.) sind die Werte um den Faktor 1.000 zu hoch. Bei den Items 3.) , 5.), 6.) und 8.) fehlt in der Übersicht zudem die Einheitenangabe.
Ich habe versucht, in Visual Studio Code die fehlerhaften Einträge anzupassen. Nach dem Group-Element "Number" habe ich - wie bei den beiden korrekten Einträgen - einen Doppelpunkt sowie den Begriff "Energy" eingefügt. Das bringt aber nicht gewünschten Effekt. Im Gegenteil, die zuvor angezeigten Werte sind nicht mehr vorhanden. Es wird "NULL" angezeigt.
Nachfolgend meine bisherigen Einträge:
Code: Alles auswählen
Number:Energy Energyin "Energiebezug kumuliert (kWh)" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_1-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
Number:Energy Energyout "Energieeinspeisung kumuliert (kWh)" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_2-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
Number EnergyinMonth "Energiebezug / Monat (kWh) [%.0f kWh]" <gauge> (EnergyMonth)
Number Energyinday "Energiebezug / Tag (kWh) [%.0f kWh]" <gauge> (EnergyDay)
Number EnergyinWeek "Energiebezug / Woche (kWh) [%.0f kWh]" <gauge> (EnergyWeek)
Number EnergyoutMonth "Energieeinspeisung / Monat (kWh)[%.0f kWh]" <solarplant> (EnergyMonth)
Number Energyoutday "Energieeinspeisung / Tag (kWh)[%.0f kWh]" <solarplant> (EnergyDay)
Number EnergyoutWeek "Energieeinspeisung / Woche (kWh)[%.0f kWh]" <solarplant> (EnergyWeek)[/code
Welche Änderungen muss ich vornehmen?
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 21. Apr 2024 17:00
von Optimus#1978#
Okay, verstanden. Dann werde ich mich mit der Item-Übersicht nicht weiter abmühen.
Derzeit werden bei mir im OpenHAB-Webinterface folgende Einträge angezeigt:
Code: Alles auswählen
Bezeichnung in Item-Übersicht Itemübersicht Itemübers. Detail Einheit
Wert Einheit Wert Einheit
1. Energiebezug kumuliert (kWh) 3065000 Wh 3065,0 kWh
2. Energieeinspeisung kumliert (kWh) 3575000 Wh 3575,0 kWh
3. Energiebezug/Monat (kWh) 57000 57000 kWh
4. Energiebezug/Tag (kWh) 5000 kWh 5000 kWh
5. Ernergiebezug/Woche (kWh) 2400 24000 kWh
6. Energieeinspeisung/Monat (kWh) 286000 286000 kWh
7. Energieeinspeisung/Tag (kWh) 9000 kWh 9000 kWh
8. Energieeinspeisung/Woche (kWh) 70000 70000 kWh
Die ersten beiden Einträge sind okay. Hier stimmt die Größendimension. Bei den Einträge 3.) bis 8.) sind die Werte um den Faktor 1.000 zu hoch. Bei den Items 3.) , 5.), 6.) und 8.) fehlt in der Übersicht zudem die Einheitenangabe.
Ich habe versucht, in Visual Studio Code die fehlerhaften Einträge anzupassen. Nach dem Group-Element "Number" habe ich - wie bei den beiden korrekten Einträgen - einen Doppelpunkt sowie den Begriff "Energy" eingefügt. Das bringt aber nicht gewünschten Effekt. Im Gegenteil, die zuvor angezeigten Werte sind nicht mehr vorhanden. Es wird "NULL" angezeigt.
Nachfolgend meine bisherigen Einträge:
Code: Alles auswählen
Number:Energy Energyin "Energiebezug kumuliert (kWh)" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_1-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
Number:Energy Energyout "Energieeinspeisung kumuliert (kWh)" <energy> (Energy) ["Measurement","Energy"] { channel="smartmeter:meter:hausanschluss:1-0_2-8-0", unit="Wh", stateDescription=""[pattern="%.1f kWh"] }
Number EnergyinMonth "Energiebezug / Monat (kWh) [%.0f kWh]" <gauge> (EnergyMonth)
Number Energyinday "Energiebezug / Tag (kWh) [%.0f kWh]" <gauge> (EnergyDay)
Number EnergyinWeek "Energiebezug / Woche (kWh) [%.0f kWh]" <gauge> (EnergyWeek)
Number EnergyoutMonth "Energieeinspeisung / Monat (kWh)[%.0f kWh]" <solarplant> (EnergyMonth)
Number Energyoutday "Energieeinspeisung / Tag (kWh)[%.0f kWh]" <solarplant> (EnergyDay)
Number EnergyoutWeek "Energieeinspeisung / Woche (kWh)[%.0f kWh]" <solarplant> (EnergyWeek)[/code
Welche Änderungen muss ich vornehmen?
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 21. Apr 2024 18:20
von udo1toni
Die Items sind ja per Rule gefüllt, da musst Du dann schon in der Rule dafür sorgend, dass der Wert korrekt (mit Einheit) übergeben wird, damit die Angabe einer Einheit auch korrekt funktioniert.
Warum schreibst Du ins Label vorne die Einheit dazu? unnötige Redundanz...
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 22. Apr 2024 08:40
von Optimus#1978#
Hallo,
der Ordner home.rules enthält bei mir nur zeitliche Informationen und Angaben darüber, wie häufig die Informationen abgerufen werden.
Ich habe keine weitere rule-Datei gefunden. Wo erfasse ich die Einheiten?
Code: Alles auswählen
then
val ZonedDateTime zdt = ZonedDateTime.now() // jetzt
val ZonedDateTime start_of_day = zdt.with(LocalTime.MIDNIGHT) // heute, Mitternacht
val ZonedDateTime start_of_week = start_of_day.minusDays(start_of_day.getDayOfWeek.getValue - 1) // Montag
//val ZonedDateTime start_of_month = start_of_day.withDayOfMonth(1) // Erster Tag des Monats (1)
val ZonedDateTime start_of_year = start_of_day.withDayOfYear(1) // Erster Tag des Jahres
// Energie pro Tag (kWh)
Energyinday.postUpdate(Energyin.deltaSince(now.withHour(0).withMinute(0).withSecond(0)) as Number)
Energyoutday.postUpdate(Energyout.deltaSince(now.withHour(0).withMinute(0).withSecond(0)) as Number)
EnergyDay1.postUpdate(Energy1.deltaSince(now.withHour(0).withMinute(0).withSecond(0)) as Number)
EnergyDay2.postUpdate(Energy2.deltaSince(now.withHour(0).withMinute(0).withSecond(0)) as Number)
EnergyDay3.postUpdate(Energy3.deltaSince(now.withHour(0).withMinute(0).withSecond(0)) as Number)
// Energie pro Woche (kWh)
EnergyinWeek.postUpdate(Energyin.deltaSince(start_of_week) as Number)
EnergyoutWeek.postUpdate(Energyout.deltaSince(start_of_week) as Number)
EnergyWeek1.postUpdate(Energy1.deltaSince(start_of_week) as Number)
EnergyWeek2.postUpdate(Energy2.deltaSince(start_of_week) as Number)
EnergyWeek3.postUpdate(Energy3.deltaSince(start_of_week) as Number)[/code
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 22. Apr 2024 11:09
von udo1toni
Das, was Du da zeigst, ist keine vollständige Rule.
Es geht um die Items
Code: Alles auswählen
EnergyinMonth
Energyinday
EnergyinWeek
EnergyoutMonth
Energyoutday
EnergyoutWeek
welche in dem von Dir gezeigten Coderumpf keine Rolle spielen. Woher bekommen die Items ihren Wert?
Re: Anzeige der Stromzählerwert um den Faktor 1.000 zu hoch
Verfasst: 27. Apr 2024 08:13
von Optimus#1978#
Mittlerweile werden bei mir die folgende Werte in der richtigen Dimension angezeigt:
1. Energiebezug kumuliert (kWh)
2. Energiebezug/Monat (kWh)
3. Energiebezug/Woche (kWh)
4. Energiebezug/Tag (kWh)
5. Energieeinspeisung kumuliert (kWh)
6. Energieeinspeisung/Monat (kWh)
7. Energieeinspeisung/Tag (kWh)
8. Energieeinspeisung/Woche (kWh)
Die Werte 1. und 2. werden über die optische Schnittstelle aus dem Smart Meter (digitalen Zweirichtungsstromzähler) ausgelesen.
Die übrigen Werte 3. bis 8. werden in den home.rules aus den vorliegenden kumulierten Energiebezugs- bzw. Einspeisewerten (bzw. den vorhandenen Tagesendwerten) abgeleitet bzw. berechnet.
Nachfolgend die Befehle für Energiebezug/Monat bzw. Energieeinspeisung/Monat:
Code: Alles auswählen
EnergyinMonth.postUpdate(0.001 * Energyin.deltaSince(start_of_month) as Number)
EnergyoutMonth.postUpdate(0.001 * Energyout.deltaSince(start_of_month) as Number)
Bei der Ermittlung der Werte Energiebezug/Jahr bzw. Energieeinspeisung /Jahr funktioniert die Berechnung dagegen nicht. Dort wird als Ergebnis „Null“ (nicht 0) ausgewiesen.
Ich vermute, dass dies daran liegt, dass meine Zeitreihe erst am 07.02.2024 beginnt (dem Tag, an dem der optische Lesekopf für den Stromzähler installiert wurde).
Die Berechnung müsste m.E. funktionierten, wenn in OpenHAB die Energiewerte für den Stichtag 01.01.2024 vorhanden wären. Kann ich die Number items Energiebezug und Energieeinspeisung für den 01.01.2024 dort nachträglich manuell erfassen? Wenn ja, wo?