openHAB 4.2.0 : Rechnen für Leistung in kWh

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

openHAB 4.2.0 : Rechnen für Leistung in kWh

Beitrag von int5749 »

Hallo zusammen,

nach etwas Abstinenz (never change a running System und vel Stress im Job) wollte ich dann doch mal von openHAB 4.1.3 auf 4.2.0 stable updaten.

Hierbei bin ich auf 2 Fehler in meinen Rules gestoßen, so das ich erst einmal ein zurückspielen des Snapshot bevorzugt habe

Problem 1
The method historicState(Item, ZonedDateTime, String) from the type PersistenceExtensions is deprecated(org.eclipse.xtext.xbase.validation.IssueCodes.deprecated_member_reference)
Dieser stammt aus dem Code Sniplet

Code: Alles auswählen

gLights_auto.members.filter[ f | f.state.toString !== f.historicState(past,"jdbc").state.toString ].forEach[ m |
 ...
Hier habe ich einen Artikel gefunden und werde die Funktion
Retrieves the historic item for a given item at a certain point in time through a PersistenceService identified by the serviceId. This method has been deprecated and persistedState(Item, ZonedDateTime, String) should be used instead.
probieren.

Das offene Problem 2

Code: Alles auswählen

rule "Stromzaehler Ertrag Tag"
when
	Item House_EnergyIn received update or
	Item House_EnergyOut received update or
	Item SMA40_power_daily_wh received update
then
	House_Energy_Import_Day.postUpdate((House_EnergyIn.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT), "jdbc") *1000))

end
Fehlermeldung
* cannot be resolved.(org.eclipse.xtext.diagnostics.Diagnostic.Linking)
Hierzu konnte ich leider nichts finden :/ Wie kann ich den Wert denn sonst noch multiplizieren???

Viele Grüße
int5749
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
udo1toni
Beiträge: 15240
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: openHAB 4.2.0 : Rechnen für Leistung in kWh

Beitrag von udo1toni »

Mein Tipp an einer solchen Stelle ist immer, die Rule zunächst mal so aufzulösen, dass man eine Chance hat, den eigentlichen Fehler einzugrenzen:

Code: Alles auswählen

rule "Stromzaehler Ertrag Tag"
when
    Item House_EnergyIn changed or
    Item House_EnergyOut changed or
    Item SMA40_power_daily_wh changed
then
    val dtMidnight = ZonedDateTime.now().with(LocalTime.MIDNIGHT)
    val nDelta     = House_EnergyIn.deltaSince(dtMidnight, "jdbc") 
    House_Energy_Import_Day.postUpdate(nDelta * 1000)
end
Bemerke auch die anderen Trigger. Ich sehe nicht, warum Du einen unveränderten Wert übernehmen willst. Allenfalls könnte ich mir noch vorstellen, ein Time is "00:00:00" bzw. Time cron "0 0 0 * * ?" als Trigger zu ergänzen, um sekundengenau die Tagessumme zu ändern.
Aber vor allem: die Multiplikation ist losgelöst vom ermittelten Wert.
Nun kannst Du einfach per logInfo() ermitteln, welchen exakten Wert nDelta enthält.

Code: Alles auswählen

    val nDelta     = House_EnergyIn.deltaSince(dtMidnight, "jdbc") 
    logInfo("zaehler","nDelta = {}",nDelta)
    House_Energy_Import_Day.postUpdate(nDelta * 1000)
Abhängig vom Output kann man dann weiter schauen, was zu tun ist.

Für die Ausführung der Rule hat die Änderung keine nennenswerten Auswirkungen.
Falls die Rule weitere (ähnliche) Befehle enthält, hat die lokale Konstante dtMidnight sogar den Vorteil, dass der Wert nur einmalig berechnet wird, statt erneut in jedem weiteren Aufruf eines .deltaSince() den immer identischen Zeitpunkt zu berechnen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: openHAB 4.2.0 : Rechnen für Leistung in kWh

Beitrag von int5749 »

Hallo Udo,

Danke für die Antwort, habe ich so eingebaut und => Wert immer noch 0 :(

Aber: Die besten Fehler sind die, die man selber einbaut.
Wenn man JDBC abfragt, aber das Item aus der Persistierung genommen hat, braucht man sich nicht wundern, warum NULL *1000 in einen Fehler läuft.

Manchmal braucht es einen Schubs um den Baum im Wald zu sehen :)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Antworten