Anfängerfragen

Hier bitte alles rein was Off-topic ist.

Moderatoren: Cyrelian, seppy

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

Re: Anfängerfragen

Beitrag von udo1toni »

harasch hat geschrieben: 10. Apr 2024 14:53 Hast Du eine Idee?
Ja, Tippfehler...

Code: Alles auswählen

val nEURkwh = 0.128          //€/Kwh
vs.

Code: Alles auswählen

val nFaktor = nEnergie * nEURKwh
Und die Meldung ist da auch eindeutig:

Code: Alles auswählen

 The method or field nEURKwh is undefined; line 7, column 237, length 7
nEURKwh ist nicht definiert. nEURkwh ist hingegen definiert. Jeder Buchstabe muss exakt so geschrieben werden, wie er in der Definition geschrieben wurde.
harasch hat geschrieben: 10. Apr 2024 09:15 Ich habe eine jdbc Persistence, die funktioniert auch. Nur wie teile ich der Rule den Pfad mit.
Warum Pfad? Was für ein Pfad? Du nutzt die Persistence. Man kann pro Persistence Addon immer nur eine Persistence betreiben, somit kennt openHAB alle notwendigen Daten (IP des Datenbank-Servers, User, Passwort, Datenbank und - am wichtigsten - die Zuordnung der Items zu den Datenbanktabellen). Falls Du mehrere Persistences verwendest, und die jdbc Datenbank nicht die default Datenbank ist, schreibst Du jeweils noch die Persistence mit dazu:

Code: Alles auswählen

val dtMitternacht = now.with(LocalTime.MIDNIGHT)
val dtWochenstart = dtMitternacht.minusDays(dtMitternacht.getDayOfWeek.getValue - 1) // Montag = 1, Sonntag = 7
val dtMonatsanfang = dtMitternacht.withDayOfMonth(1)

val nVerbrauchHeute = Gaszaehler_Stand.deltaSince(dtMitternacht, "jdbc")
val nVerbrauchWoche = Gaszaehler_Stand.deltaSince(dtWochenstart, "jdbc")
val nVerbrauchMonat = Gaszaehler_Stand.deltaSince(dtMonatsanfang, "jdbc")
harasch hat geschrieben: 10. Apr 2024 09:15 Ich hatte das auch schon mal mit der guten Methode versucht. Es gelang mir aber nicht die Rule zum laufen zu bringen.
Wenn Du das korrekte Äquivalent verwendest, funktioniert es auch:

Code: Alles auswählen

Gaszaehler_Gestern.postUpdate(Gaszaehler_Heute.state.toString)
Gaszaehler_Heute.postUpdate(0)
 
Gaskosten_Gestern.postUpdate(Gaskosten_Heute.state.toString)
Gaskosten_Heute.postUpdate(0)
  
Gas_Gestern.postUpdate(Gas_Heute.state.toString)
Gas_Heute.postUpdate(0)
.toString erzwingt die Ausgabe als String (das wird von openHAB bei der Action automatisch ergänzt). Aber besser wäre es natürlich, mit den echten Zahlen zu arbeiten.
Wie gesagt wäre mein Tipp, die Werte sauber auszurechnen und jeweils für die Anzeige bereitzustellen, statt die berechneten Werte einzeln aufzuaddieren. Der einzige Wert, den Du aufaddierst, ist der Zählerstand (aufgrund des Impulses, den der Kontakt am Zähler liefert). Alle anderen Werte ergeben sich aus dem Zählerstand und einem historischen Zählerstand, den Du aus der Persistence auslesen kannst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten