2 fast gleiche rules.. eine geht die andere nicht...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

2 fast gleiche rules.. eine geht die andere nicht...

Beitrag von goerdi »

Hi !

Ich hab folgende items

Code: Alles auswählen

Number Solar_Power_ac "Einspeiseleistung [ %.0f W]" <solarplant> (gSV,gSVp) { channel="mqtt:topic:home:solarview:solar_power_ac" }
Number Solar_Power_max "Einspeiseleistung Max Heute [ %.0f W]" <solarplant> (gSV,gSVp)
Number Solar_Power_max_max "Einspeiseleistung Max Max [ %.0f W]" <solarplant> (gSV,gSVp)

Number Solar_bkw_ac   "Einspeiseleistung [ %.0f W]" <solarplant> (gSV,gSVp) { channel="mqtt:topic:home:solarview_bkw:solar_bkw_ac" }
Number Solar_bkw_max "Einspeiseleistung Max Heute [ %.0f W]" <solarplant> (gSV,gSVp)
Number Solar_bkw_max_max "Einspeiseleistung Max Max [ %.0f W]" <solarplant> (gSV,gSVp)
Dazu die passende rule

Code: Alles auswählen

ule "save PV max"
when
    Item Solar_Power_ac changed
then
   if  (Solar_Power_ac.state > Solar_Power_max.state)
       Solar_Power_max.postUpdate(Solar_Power_ac.state as Number)
   else if  (Solar_Power_ac.state > Solar_Power_max_max.state)
       Solar_Power_max_max.postUpdate(Solar_Power_ac.state as Number)
end

rule "save BKW max"
when
    Item Solar_bkw_ac changed
then
   if  (Solar_bkw_ac.state > Solar_bkw_max.state)
       Solar_bkw_max.postUpdate(Solar_bkw_ac.state as Number)
   else if  (Solar_bkw_ac.state > Solar_bkw_max_max.state)
       Solar_bkw_max_max.postUpdate(Solar_bkw_ac.state as Number)
end
die erste Rule funktioniert bei der zweiten krieg ich ne Fehlermeldung

Code: Alles auswählen

2023-04-21 13:30:16.856 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'solarview-6' failed: An error occurred during the script execution: Could not invoke method: org.openhab.core.model.script.lib.NumberExtensions.operator_greaterThan(org.openhab.core.types.Type,java.lang.Number) on instance: null in solarview
die max und max_max items werden sonst nirgends beschrieben oder sonst was...

Gruss Gerd

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: 2 fast gleiche rules.. eine geht die andere nicht...

Beitrag von KellerK1nd »

Ich arbeite mittlerweile viel über Variablen. Hier mal mein Vorschlag für deine erste Regel, die kannst du analog auf die zweite Regel anwenden, du musst nur die Variablen bearbeiten und die Zielitems.

Code: Alles auswählen

rule "save PV max"
when
    Item Solar_Power_ac changed
then
    if(!(Solar_Power_ac.state instanceof Number)){                                                                                  //Prüfen ob Solar_Power_ac eine gültige Zahl ist, allenfals wird die Regel abgebrochen
        logWarn("rule save PV max", "Item liefert keinen gültigen Zahlenwert (Rückgabewert: {}).", Solar_Power_ac.state)
        return;
    }

    var Number PowerAktuell = Solar_Power_ac.state as Number                                                                        //Aktuelle Leistung
    var Number PowerMaxDay = if(Solar_Power_max.state instanceof Number) (Solar_Power_max.state as Number).floatValue else 0        //Tagesmax Leistung, Item wird auf 0 gesetzt falls uninitialisiert ist oder keinen gültigen Zahlenwert besitzt
    var Number PowerMax = if(Solar_Power_max_max.state instanceof Number) (Solar_Power_max_max.state as Number).floatValue else 0    //Alltime Maxleistung, Item wird auf 0 gesetzt falls uninitialisiert ist oder keinen gültigen Zahlenwert besitzt

   if (PowerAktuell > PowerMaxDay) Solar_Power_max.postUpdate(PowerAktuell)
   if (PowerAktuell > PowerMax) Solar_Power_max_max.postUpdate(PowerAktuell)
end
Ich gehe davon aus, dass das Item Number Solar_Power_max täglich genullt wird?
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: 2 fast gleiche rules.. eine geht die andere nicht...

Beitrag von goerdi »

Ja die werden taeglich genullt

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: 2 fast gleiche rules.. eine geht die andere nicht...

Beitrag von PeterA »

OH Yeah!

Dafür liebe ich dieses Forum!!!

Für solche Dinge habe ich bisher immer mit der rrd4j Persistenz gearbeitet:

Code: Alles auswählen

rule "Update Gesamtleistung values"
when
    Item OpenDTU1_inv1_pow
    Time cron "0 0 0 * * ?"
    //System started
then
    postUpdate(OpenDTU1_inv1_pow_Max, OpenDTU1_inv1_pow.maximumSince(now.withTimeAtStartOfDay).state)
end
Funktioniert auch.
Bis auf den aktuellen Leistungswert.
Der schwankt ja sehr stark und dann bekomme ich nicht immer genau den passenden Wert aus der DB zurück.
Jetzt habt ihr mir eine andere Lösung aufgezeigt!

MERCI!

Gruß
Peter
- OpenHab 2.4
#PWRUP

Antworten