ich nutze OH mittlerweile seit ca. 3 Jahren. Bisher habe ich in den unterschiedlichen Foren immer eine Lösung und Skript Beispiele für meine Vorhaben gefunden. Jetzt stoße ich leider an meine Grenzen. Je mehr ich lese, desto weniger weiss ich eigentlich, wie dies umzusetzen ist in OH4.
Auf meiner eigentlichen LXC Maschine läuft aktuell OH 3.4 und Java 11. Hier gibt es aktuell keine Probleme. Die Things verbinde ich über das UI und alles andere realisiere ich über Skript Dateien (items, rules, sitemap, transform).
Als Vorbereitung auf das Update habe ich die "units" für die Items ergänzt.
Auf einer LXC Testmaschine habe ich das Update für Openhab 4 inkl. Java 17 und JS Scripting aufgespielt. Mein aktuelles Hauptproblem ist die Verbrauchsberechnung (Strom - Shelly3EM) pro Tag, Woche, Monat und Jahr. Diese funktioniert nicht mehr. Wenn ich es richtig verstehe, dann hat sich die Abfrage der Items hierfür geändert und vermutlich tragen die Einheiten der Items ebenfalls dazu bei. Ist nur eine Vermutung! Das Skript hierfür habe ich aus einem der Foren (vielleicht dieses hier) und es hat gut funktioniert, bis zum Update.
Code: Alles auswählen
//Verbrauchergruppen
Group:Number:SUM Verbrauch_gesamt "Stromverbrauch gesamt [%.2f kWh]" <energy>
//smartMeter
Number:Energy Shelly3EMDeviceAccumulatedWTotal "Energy consumption total [%.1f kWh]" <energy> (Verbrauch_gesamt) {channel="shelly:shellyem3:Shelly3EM:device#accumulatedWTotal", unit="kWh"}
//Berechnungen Verbrauch
Number Verbrauch_gesamt_Tag "Today [%.1f kWh]" <energy>
Number Verbrauch_gesamt_gestern "Yesterday [%.1f kWh]" <energy>
Number Verbrauch_gesamt_Woche "Week [%.1f kWh]" <energy>
Number Verbrauch_letzte_Woche "Last week [%.1f kWh]" <energy>
Number Verbrauch_gesamt_Monat "Month [%.1f kWh]" <energy>
Number Verbrauch_letzten_Monat "Last month [%.1f kWh]" <energy>
Number Verbrauch_gesamt_Jahr "Year [%.1f kWh]" <energy>
Code: Alles auswählen
rule "Verbrauchsberechnungen Zeitraeume"
when
Item Verbrauch_gesamt changed
then
val ZonedDateTime zdt = ZonedDateTime.now()
var ZonedDateTime start_of_day = zdt.toLocalDate().atStartOfDay(zdt.getZone())
var ZonedDateTime start_of_week = zdt.with(DayOfWeek.MONDAY).toLocalDate().atStartOfDay(zdt.getZone())
var ZonedDateTime start_of_month = zdt.withDayOfMonth(1).toLocalDate().atStartOfDay(zdt.getZone())
var ZonedDateTime start_of_year = zdt.withDayOfYear(1).toLocalDate().atStartOfDay(zdt.getZone())
var heute = Verbrauch_gesamt.deltaSince(start_of_day) as Number
var woche = Verbrauch_gesamt.deltaSince(start_of_week) as Number
var monat = Verbrauch_gesamt.deltaSince(start_of_month) as Number
var jahr = Verbrauch_gesamt.deltaSince(start_of_year) as Number
Verbrauch_gesamt_Tag.postUpdate(heute)
Verbrauch_gesamt_Woche.postUpdate(woche)
Verbrauch_gesamt_Monat.postUpdate(monat)
Verbrauch_gesamt_Jahr.postUpdate(jahr)
end
Danke für eventuelle Vorschläge!!!