Zitat von: BKutte am 24 April 2026, 21:33:56Nur für BattDischargeDay_kWh oder auch für BattChargeDay_kWh?Du kannst es für beides machen.
ACPower_log {
my $last_age = ReadingsAge("MarstekVenus01", "ACPower_log", 9999);;
my $last_val = ReadingsNum("MarstekVenus01", "ACPower_log", 0);;
my $current = ReadingsNum("MarstekVenus01", "ACPower", 0);;
return ($last_age >= 900 || abs($current - $last_val) >= 100) ? $current : undef;;
},
SoC_log {
my $last = ReadingsAge("MarstekVenus01", "SoC_log", 9999);;
return $last >= 900 ? ReadingsNum("MarstekVenus01", "SoC", 0) : undef;;
},
BattChargeDay_kWh {
my $power = ReadingsNum("MarstekVenus01","BattPower",0);;
return undef if $power <= 0;;
my $last_ts = ReadingsVal("MarstekVenus01","BattEnergyDay_lastTS","0");;
my $now = time();;
my $age = $now - $last_ts;;
return undef if $age <= 0 || $age > 60;;
my $prev = ReadingsNum("MarstekVenus01","BattChargeDay_kWh",0);;
return sprintf("%.5f", $prev + ($power * $age / 3600000));;
},
BattDischargeDay_kWh {
my $power = ReadingsNum("MarstekVenus01","BattPower",0);;
return undef if $power >= 0;;
my $last_ts = ReadingsVal("MarstekVenus01","BattEnergyDay_lastTS","0");;
my $now = time();;
my $age = $now - $last_ts;;
return undef if $age <= 0 || $age > 60;;
my $prev = ReadingsNum("MarstekVenus01","BattDischargeDay_kWh",0);;
return sprintf("%.5f", $prev + (abs($power) * $age / 3600000));;
},
BattEnergyDay_lastTS {
return time();;
}
<ftui-grid-tile row="4" col="15" height="7" width="5" shape="round" align-items="center">
<header>Batteriespeicher aktuell</header>
<div style="height: 10px"></div>
<ftui-row>
<ftui-column style="align-items: flex-end; text-align: right;" width="80px" height="170px">
<ftui-icon path="fa-svg/solid" name="toggle-on" size="0" color="light"></ftui-icon>
<ftui-icon name="info" size="0" color="light"></ftui-icon>
<ftui-icon name="thermometer1" size="0" color="light"></ftui-icon>
<ftui-icon name="bolt" size="0" color="yellow"></ftui-icon>
<ftui-icon name="sign-in" size="0" color="green"></ftui-icon>
<ftui-icon name="sign-out" size="0" color="danger"></ftui-icon>
</ftui-column>
<ftui-column>
<ftui-label [text]="MarstekVenus01:Betriebsmodus" class="size-2"></ftui-label>
<ftui-label [text]="MarstekVenus01:InverterState" class="size-2"
[color]="MarstekVenus01:InverterState | map('Standby:grey, Entladen:orange, Laden: green')"></ftui-label>
<ftui-label [text]="MarstekVenus01:TempInternal | fix(0)" class="size-2"><span class="size--2" slot="unit">°C</span></ftui-label>
<ftui-label [text]="MarstekVenus01:BattVoltage | fix(1)" class="size-2"><span class="size--2" slot="unit">V</span></ftui-label>
<ftui-label [text]="MarstekVenus01:BattChargeDay_kWh | fix(1)" class="size-2"><span class="size--2" slot="unit">kWh</span></ftui-label>
<ftui-label [text]="MarstekVenus01:BattDischargeDay_kWh | fix(1)" class="size-2"><span class="size--2" slot="unit">kWh</span></ftui-label>
</ftui-column>
<ftui-column width="100px" height="90px">
<ftui-label [text]="MarstekVenus01:SoC" bold class="size-2" [color]="MarstekVenus01:InverterState | map('Standby:grey, Entladen:orange, Laden: green')">
<span class="size--2" slot="unit">%</span></ftui-label>
<ftui-icon size="5" [name]="MarstekVenus01:SoC | step('0:battery-0, 20: battery-1, 50:battery-2, 75: battery-3, 90: battery')"
[color]="MarstekVenus01:InverterState | map('Standby:grey, Bereit:grey, Entladen:orange, Laden: green')"></ftui-icon>
<ftui-label [text]="MarstekVenus01:ACPower" class="size-1" [color]="MarstekVenus01:InverterState | map('Standby:grey, Entladen:orange, Laden: green')">
<span class="size--2" slot="unit">W</span></ftui-label>
</ftui-column>
</ftui-row>
<div style="height: 20px"></div>
<ftui-chart height="100%" width="100%" y-label="Leistung [W]" y1-label="Ladestand [%]" y-label="Leistung [W]" y-min="-2600" y-max="1000" y1-min="0" y1-max="100">
<ftui-chart-data file="CURRENT" log="Log_Marstek" spec="4:MarstekVenus01.ACPower_log" label="ACPower" [update]="MarstekVenus01:ACPower_log:time"
fill background-color="#1c86ee50" color="#1c86ee" point-radius="0"></ftui-chart-data>
<ftui-chart-data file="CURRENT" log="Log_Marstek" spec="4:MarstekVenus01.SoC_log" label="Ladestand" unit="%" [update]="MarstekVenus01:SoC_log:time"
fill background-color="#ffcc0070" color="#ffcc00" point-radius="0" y-axis-id="y1"></ftui-chart-data>
</ftui-chart>
</ftui-grid-tile>
Zitat von: DerD am 24 April 2026, 19:03:03Was wäre denn der nächste Schritt um das Device U218 "richtig" einzubinden? Sprich, dass es zB wie ein Funkschalter dargestellt wird. Also mit den Werten "Identnummer des Senders", Status, Zähler und CRC.Es fehlt noch die Bedeutung vom Status Nibble. Hast Du geschaut ob dies immer die gleichen Werte sind oder ob da noch was anderers drin stecken könnte?
<ftui-row height="5em" color="dark">
<ftui-icon name="thermometer-3" color="info" size="2"></ftui-icon>
<ftui-label size="1">CPU Temp</ftui-label>
<ftui-meter value="36" min="10" max="50" color="ok-warning-alert" height="3em" width="40em"></ftui-meter>
<ftui-label text="36.0" unit="°C" size="1" width="3em" text-align="right"></ftui-label>
</ftui-row>
<ftui-row height="5em" color="dark">
<ftui-icon name="sellsy" color="info" size="2"></ftui-icon>
<ftui-label size="1">CPU Load</ftui-label>
<ftui-meter value="4" min="0" max="100" color="ok-warning-alert" height="3em" width="40em"></ftui-meter>
<ftui-label text="4" unit="%" size="1" width="3em" text-align="right"></ftui-label>
</ftui-row>
<ftui-row height="5em" color="dark">
<ftui-icon name="microchip" color="info" size="2"></ftui-icon>
<ftui-label size="1">RAM Load</ftui-label>
<ftui-meter value="28.5" min="0" max="100" color="ok-warning-alert" height="3em" width="40em"></ftui-meter>
<ftui-label text="28.5" unit="%" size="1" width="3em" text-align="right"></ftui-label>
</ftui-row> width="3em"
ZitatWenn ich per Ha Gerät ein Topic sende kommt das auch wie erwartet im MQTT Explorer an, aber irgendwas ist mit der Struktur nicht richtig.