Victron Energie Items Wiederherstellen
Verfasst: 15. Mär 2024 21:56
Hallo zusammen und Udo.
Von meinem Victron Multiplus Laderegler kommen zwei Items die leider nach einem Reboot des Victron wieder auf 0 gesetzt werden.
(Gleiches Verhalten wie bei den Shellys)
Nun möchte ich aber die Werte auch über einen Reboot des Victron hinaus retten.
Für die Shellys hattest Du Udo mal folgende Rule vorgeschlagen die mit den Shellys seither einwandfrei Funktioniert.
Könnte man diese Rule auch auf die Victron Items Anwenden ?
Was ich schon gesehen habe ist das die Umrechnung von Wh in kWh entfallen kann da die Items vom Victron schon als kWh vorliegen.
Gruß Peter
Von meinem Victron Multiplus Laderegler kommen zwei Items die leider nach einem Reboot des Victron wieder auf 0 gesetzt werden.
(Gleiches Verhalten wie bei den Shellys)
Code: Alles auswählen
Number mp2_ac_in1_to_inverter "AC to Inverter [%.2f kWh]" <energy> (Victron) {channel="mqtt:topic:VictronBroker:victron:mp2_ac_in1_to_inverter"}
Number mp2_inverter_to_ac_in1 "Inverter to AC [%.2f kWh]" <energy> (Victron) {channel="mqtt:topic:VictronBroker:victron:mp2_inverter_to_ac_in1"}
Für die Shellys hattest Du Udo mal folgende Rule vorgeschlagen die mit den Shellys seither einwandfrei Funktioniert.
Könnte man diese Rule auch auf die Victron Items Anwenden ?
Code: Alles auswählen
rule "Shellies25 kWh aggregation" // Berechne den Shelly-kWh-Verbrauch basierend auf den kWh-Werten der Shelly
when
Member of gShellyConsumption changed // Gruppe mit Consumption Member
then
logInfo("ShellykWh", "Es gibt {} Member in der Consumption Gruppe.", gShellyConsumption.members.size)
val iSink = gShellykWh.members.filter[i|i.name.split("_").get(1) == triggeringItem.name.split("_").get(1)].head
val Number nDelta = (triggeringItem.deltaSince(now.minusMinutes(15)).floatValue) / 60000
logInfo("ShellykWh", "Quelle: {}, Ziel: {}, Delta: {}, before update: {}", triggeringItem.name, iSink.name, nDelta, iSink.state)
if(nDelta <= 0) // falls nDelta kleiner oder gleich 0
return; // Abbruch der Rule
if(!(iSink.state instanceof Number)) // Falls keine Zahl geliefert wird
iSink.postUpdate(nDelta) // nDelta als Wert setzen
else // ansonsten
iSink.postUpdate((iSink.state as Number) + nDelta) // nDelta zum aktuellen Wert addieren
end
Gruß Peter