Seite 1 von 1

Aus 2 Items mach 1 ohne Rule

Verfasst: 30. Okt 2024 10:07
von HappyDexter
Hallo zusammen,

Ich würde gerne aus 2 getrennten Items ein einziges Item machen, ohne es in einer Rule im Minuten/Sekunden Takt zu berechnen.
Hintergrund, ich bekomme von meiner Photovoltaikanlage einen Wert zum Laden und ein zweiten zum Entladen der Batterie.

Code: Alles auswählen

Number:Power E3DC_BatteryDischarge "Battery Entladung [%.2f %unit%]" <battery> { channel="modbus:e3dc:E3DC:powerplant:power#battery-power-supply", unit="kW"  }
Number:Power E3DC_BatteryCharge    "Battery Laden [%.2f %unit%]"     <battery> { channel="modbus:e3dc:E3DC:powerplant:power#battery-power-consumption", unit="kW"  }
Kann ich aus beiden ein einziges Item herstellen, dass das Laden als positiven Wert und das Entladen als negativen Wert anzeigt?
Einzige Idee die ich bisher habe ist eine Rule, die eine Variable mit Charge-Discharge befüllt. Wenn ich die Rule an den Change der beiden Werte hänge wird diese Rule wahrscheinlich im kleinen Sekundenbereich immer wieder aufgerufen.

Gruß
Happy

Re: Aus 2 Items mach 1 ohne Rule

Verfasst: 30. Okt 2024 10:27
von rbeudel
Müsste eigentlich über ein Group item gehen. Ich habe so etwas für den Gesamtverbrauch über die drei Phasen:

Code: Alles auswählen

Group:Number:SUM        Gesamtverbrauch "Gesamtverbrauch [%.0f W]"  <energy>     (Victron)
 Number V_AC_V_L1      "Victron Verbrauch L1 [%.1f W]"                           (Victron, Gesamtverbrauch) ["Energy"]   { channel="mqtt:topic:victron:V_AC_V_L1" }
 Number V_AC_V_L2      "Victron Verbrauch L2 [%.1f W]"                           (Victron, Gesamtverbrauch) ["Energy"]   { channel="mqtt:topic:victron:V_AC_V_L2" }
 Number V_AC_V_L3      "Victron Verbrauch L3 [%.1f W]"                          (Victron, Gesamtverbrauch) ["Energy"]   { channel="mqtt:topic:victron:V_AC_V_L3" }
Das ist zwar ein Textfile, geht aber auch über die UI

Re: Aus 2 Items mach 1 ohne Rule

Verfasst: 30. Okt 2024 11:58
von udo1toni
Man könnte auch versuchen, es über ein Inline Script zu lösen und dabei auf das zweite Item komplett zu verzichten. :)

Code: Alles auswählen

Number:Power E3DC_Battery "Battery" <battery> { channel="modbus:e3dc:E3DC:powerplant:power#battery-power-supply"[profile="transform:JS",    toItemScript="|value = - Number.parseFloat(input); if(value < 0) {value + ' W'} else null"], 
                                                channel="modbus:e3dc:E3DC:powerplant:power#battery-power-consumption"[profile="transform:JS", toItemScript="|value = Number.parseFloat(input); if(value > 0) {value + ' W'} else null"], 
                                                unit="kW", stateDescription=""[pattern="%.2f %unit%"]  }
Das Item wird mit beiden Channels verlinkt. Das Script sorgt dafür, dass nur Werte ungleich 0 auch tatsächlich an das Item gesendet werden. Beim Supply-Channel wird das Vorzeichen gedreht, damit dieser Wert als Negativ-Wert dargestellt wird.
8-)

Re: Aus 2 Items mach 1 ohne Rule

Verfasst: 31. Okt 2024 08:21
von HappyDexter
Ich habe jetzt die Variante von udo1toni ausprobiert, sah auch erst gut aus, aber wenn weder entladen, noch geladen wird zeigt er mit -2.00 kW an?
Battery Laden: 0kW
Battery Entladen: 0kW
Battery : -2,004kW

Hat jemand eine Idee warum?

Re: Aus 2 Items mach 1 ohne Rule

Verfasst: 31. Okt 2024 12:55
von udo1toni
Ah, das muss dann der letzte Wert sein, der reingekommen ist. ungünstig... an den Fall hatte ich leider nicht gedacht... :oops:

Re: Aus 2 Items mach 1 ohne Rule

Verfasst: 31. Okt 2024 13:52
von udo1toni
Ein Workaround könnte sein, mittels Expiration Timer das Item nach x Sekunden auf 0 zu setzen. x muss dabei naturgemäß größer als der Interval zwischen zwei Messungen sein.