Seite 2 von 3

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 17. Jun 2023 17:23
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"

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 19. Jun 2023 07:35
von klaus1
Vielen Dank! super logisch erklärt.

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 6. Aug 2023 18:03
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,

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 6. Aug 2023 22:55
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.

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 31. Dez 2023 15:07
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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 31. Dez 2023 17:27
von udo1toni
Das Item sollte eigentlich automatisch persistiert werden. Der Zeitstempel ist dabei Teil des Datensatzes.

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 15. Jan 2024 08:39
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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 15. Jan 2024 12:32
von udo1toni
Welche Rule exakt?

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 15. Jan 2024 12:50
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

Re: item Wert persistieren und automatisch laden beim Openhab3 Start

Verfasst: 15. Jan 2024 13:52
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.