item Wert persistieren und automatisch laden beim Openhab3 Start

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von udo1toni »

Weil die Rule exakt die gleichen Fehler enthält wie schon die andere.

as Number ist nachrangig gegenüber dem +, Du musst den Wert klammern.
Also statt

Code: Alles auswählen

PV_Current_all.postUpdate(PV_Current.state as Number + PV_Current_gen24.state as Number);
müsste es

Code: Alles auswählen

PV_Current_all.postUpdate((PV_Current.state as Number) + (PV_Current_gen24.state as Number));
heißen.
Das Fronius Binding liefert UoM an, also solltest Du bei Berechnungen die Einheit entfernen, z.B. mit .floatValue, also

Code: Alles auswählen

PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue);
Da gehört kein Semikolon hin, niemals. Also

Code: Alles auswählen

PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue)
Was macht Dich so sicher, dass beim Aufruf der Rule gültige Zahlenwerte vorliegen? Also vorher prüfen:

Code: Alles auswählen

if(!(PV_Current.state instanceof Number) || !(PV_Current_gen24.state instanceof Number))
    return; // dies ist die einzige Stelle, wo in der openHAB Rules DSL ein Semikolon gebraucht wird!
PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue)
Warum triggerst Du auf received update? Das ist unnötig! Einen Wert berechnet man lediglich dann neu, wenn sich Eingangswerte geändert haben
Also statt:

Code: Alles auswählen

Item PV_Current received update
lieber

Code: Alles auswählen

Item PV_Current changed
Zu guter Letzt (nur eine optische Sache) handelt es sich bei dem Namen der Rule um einen freien String, er muss lediglich eindeutig sein.
Also statt

Code: Alles auswählen

rule "current_all"
lieber

Code: Alles auswählen

rule "current all"
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

klaus1
Beiträge: 99
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von klaus1 »

Vielen Dank! super logisch erklärt.

klaus1
Beiträge: 99
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von klaus1 »

Darf ich nochmal nachfragen wie die unten stehende Rule auf Openhab4 zu migrieren ist? :shock:

Code: Alles auswählen

rule "gen24_DAY_ENERGY"
when
    Item PV_Current_gen24 changed
then
    val nTotal    = (PV_Total_gen24.state as Number).floatValue
    val nHistoric = (PV_Total_gen24.historicState(now.with(LocalTime.MIDNIGHT).minusHours(1)).state as Number).floatValue
    //logInfo("fronius","Total: {} Historisch: {} Tagesertrag: {}",nTotal,nHistoric,nTotal-nHistoric)
    PV_DaySum_gen24.postUpdate(nTotal * 1000 - nHistoric * 1000)
end
derzeit zeigts mir nicht ganz vernünftige Werte an (2972529,20 kWh): (sollten eher 2 Stellig mit Komma sein). ;-)

Code: Alles auswählen

    Text item=PV_DaySum_gen24 label="PV Leistung Tag: [%.2f kWh]" icon="none"
   
danke,

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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von udo1toni »

Wie sind die Items definiert? Fronius liefert UoM an, und in der Doku wird empfohlen, UoM Channels nicht mit Nicht-UoM Items zu verkoppeln.
Wichtig ist aber, dass die unit beim Item auch korrekt gesetzt wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

klaus1
Beiträge: 99
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von klaus1 »

Funktioniert super. wie kann ich mir die PV_DaySum_gen24 täglich 1x sichern mit timestamp um gegebenenfalls einen Graph anzeigen zu lassen wie hoch Täglich, Monatlich, Jährlich die Werte (=Erzeugung PV) sind ?
Danke

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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von udo1toni »

Das Item sollte eigentlich automatisch persistiert werden. Der Zeitstempel ist dabei Teil des Datensatzes.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

klaus1
Beiträge: 99
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von klaus1 »

bekomme jetzt für die rule den fehler:
Script execution of rule with UID 'heizung-3' failed: rrd4j does not allow querys without a begin date, unless order is descending and a single value is requested in heizung

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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von udo1toni »

Welche Rule exakt?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

klaus1
Beiträge: 99
Registriert: 11. Jan 2022 13:48
Answers: 0

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von klaus1 »

Code: Alles auswählen

rule "DAY_ENERGY_WAERMEPUMPE"
when
    Item Modbus_Energy_Waermepumpe changed
then
    if(Modbus_Energy_Waermepumpe.previousState(true) !== null) {
        val nTotal    = (Modbus_Energy_Waermepumpe.state as Number).floatValue
        val nHistoric = (Modbus_Energy_Waermepumpe.historicState(now.with(LocalTime.MIDNIGHT).minusHours(1)).state as Number).floatValue
       // logInfo("fronius","Total: {} Historisch: {} Tagesertrag: {}",nTotal,nHistoric,nTotal-nHistoric)
        Modbus_Energy_Waermepumpe_DAILY.postUpdate(nTotal - nHistoric)
    }
end

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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Beitrag von udo1toni »

Hmm... Sieht eigentlich alles gut aus...
Bist Du sicher, dass die Datenquelle durchgängig Daten enthält? Das heißt für rrd4j, das Item wird mindestens mit everyMinute, everyChange persistiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten