Seite 2 von 2

Re: Wechselrichter per MQTT

Verfasst: 1. Apr 2024 22:18
von udo1toni
Ich finde es auch auffällig, dass der Zahlenwert sowohl im aktuellen Item als auch in den aus der Persistence errechneten Werten 453 lautet, was dann darauf hin deuten würde, dass am Tagesbeginn 0 in der Variablen steht, die Persistence liefert also offensichtlich keinerlei Daten.

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 15:47
von Snatsch
Ich habe mir gestern eine AVM Steckdose gekauft wie ich schon 3 Stück habe für Trockner, Waschmaschine u.s.w. Dann habe ich die Rule wie sie für die Waschmaschine schon lange läuft auf die vom Balkonkraftwerk geändert. Die Items die ich angelegt hatte habe ich übernommen.

Code: Alles auswählen

Group Solarertrag
String Solarertrag_Heute "SolarHeute" <solarplant> (Solarertrag)
String Solarertrag_Woche "SolarWoche"<solarplant> (Solarertrag)
String Solarertrag_Monat "SolarMonat"<solarplant> (Solarertrag)
String Solarertrag_Jahr "SolarJahr"<solarplant> (Solarertrag)
die Rule habe ich so geändert.

Code: Alles auswählen

rule "Solarertrag Tag Woche Monat Jahr"
when
    Item Solarertrag_Gesamt changed // changed reicht.
then
    val Preis = 0.481 
    val start_of_day   = now.with(LocalTime.MIDNIGHT)                                   // heute, Mitternacht
    val start_of_week  = start_of_day.minusDays(start_of_day.getDayOfWeek.getValue - 1) // Montag
    val start_of_month = start_of_day.withDayOfMonth(1)                                 // Erster Tag des Monats (1)
    val start_of_year  = start_of_day.withDayOfYear(94)                                 // Beginn am 03.04.2024


    val Solar_Heute = (Solarertrag_Gesamt.deltaSince(start_of_day) as Number).floatValue // kWh Delta holen
    val Solar_Woche = (Solarertrag_Gesamt.deltaSince(start_of_week) as Number).floatValue
    val Solar_Monat = (Solarertrag_Gesamt.deltaSince(start_of_month) as Number).floatValue
    val Solar_Jahr = (Solarertrag_Gesamt.deltaSince(start_of_year) as Number).floatValue
    
    val Euro_Heute = String::format("%.2f €",(Solar_Heute * Preis)) // Summe in Euro berechnen
    val Euro_Woche = String::format("%.2f €",(Solar_Woche * Preis))
    val Euro_Monat = String::format("%.2f €",(Solar_Monat * Preis))
    val Euro_Jahr = String::format("%.2f €",(Solar_Jahr * Preis))
    
    Solarertrag_Heute.postUpdate(Solar_Heute.toString + " kWh/" +  Euro_Heute)
    Solarertrag_Woche.postUpdate(Solar_Woche.toString + " kWh/" +  Euro_Woche)
    Solarertrag_Monat.postUpdate(Solar_Monat.toString + " kWh/" +  Euro_Monat)
    Solarertrag_Jahr.postUpdate(Solar_Jahr.toString + " kWh/" +  Euro_Jahr)

end   
leider wird die Rule mit der Fehlermeldung

Code: Alles auswählen

2024-04-04 15:44:26.699 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Solarerzeugung-1' failed: cannot invoke method public abstract float java.lang.Number.floatValue() on null in Solarerzeugung
abgebrochen. Hat jemand einen Tipp für mich was ich falsch gemacht habe ?

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 17:01
von udo1toni
Und wo ist Dein Item Solarertrag_Gesamt?

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 17:38
von Snatsch
Das kommt vom der Steckdose.
Screenshot (61).png

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 22:41
von udo1toni
Und das Item wird persistiert?

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 22:48
von Snatsch
ja ich denke schon
Screenshot (62).png

Re: Wechselrichter per MQTT

Verfasst: 4. Apr 2024 23:10
von udo1toni
Aber Daten erst ab 16 Uhr, wie soll dann ein Wert für den Tagesbeginn geliefert werden?

Re: Wechselrichter per MQTT

Verfasst: 5. Apr 2024 14:52
von Snatsch
Hab openhab heute mal neu gestartet aber die Rule wird immer noch mit dem Fehler

Code: Alles auswählen

2024-04-05 14:50:01.288 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Solarerzeugung-1' failed: cannot invoke method public abstract float java.lang.Number.floatValue() on null in Solarerzeugung
abgebrochen :(