Hallo ich Würde gerne die Werte Von meinen Stromzähler ( Watt und Ampere ) Fablich im State ändern.
Bei Positiven werten sollen sie Rot sein
bei Negativen Werten Grün.
Hintergrund wenn die Solaranlage mehr einspeist als verbraucht wird sollen die Werte halt Grün dahrgestellt werden.
Habe zwar schon ein zwei andere konstellationen bei verschiedenen Zuständen gesehen aber halt nichts wenn sich nur das vorzeichen auf"-" ändert.
Hier das ist das Device
define Zaehler ModbusSDM120 2 30
attr Zaehler fp_Grundriss 344,621,1,Zaehler,
attr Zaehler room Strom,Modbus,Thomas
attr Zaehler stateFormat Strom Current_Factor A \
<br> Watt Power__W\
<br> Bezug Energy_export__kWh\
<br> Einspeisung Energy_import__kWh
attr Zaehler userReadings Current_Factor {ReadingsNum("Zaehler","Current__A",0) * ReadingsNum ("Zaehler","PowerFactor",0)}
attr Zaehler verbose 0
# DEF 2 30
# FUUID 64a484c9-f33f-b458-fc4d-1a4497504ec41a52
# IODev ModBusLine
# Interval 30
# MODBUSID 2
# MODE master
# MODULEVERSION Modbus 4.5.5 - 9.5.2023
# NAME Zaehler
# NOTIFYDEV global
# NR 125
# NTFY_ORDER 50-Zaehler
# PROTOCOL RTU
# STATE Strom -1.01 A
#<br> Watt -222 W
#<br> Bezug 174.466 kWh
#<br> Einspeisung 407.849 kWh
# TYPE ModbusSDM120
# eventCount 7941
# DICACHE:
# 3:
# UNPACK
# EXPRS:
# EXTRAS:
# FNAMES:
# 4:
# UNPACK
# EXPRS:
# EXTRAS:
# FNAMES:
# FRAME:
# PICACHE:
# h12:
# bswapRegs
# decode
# encode
# expr
# format %.f ms
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# h18:
# bswapRegs
# decode
# encode
# expr
# format
# ignoreExpr
# map 0:1stop.bit_no.parity, 1:1stop.bit_even.parity, 2:1stop.bit_odd.parity, 3:2stop.bits_no.parity
# mapDefault
# revRegs
# rmapDefault
# h2:
# bswapRegs
# decode
# encode
# expr
# format %.f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# h20:
# bswapRegs
# decode
# encode
# expr
# format
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# h28:
# bswapRegs
# decode
# encode
# expr
# format
# ignoreExpr
# map 0:2400, 1:4800, 2:9600, 5:1200
# mapDefault
# revRegs
# rmapDefault
# h63744:
# bswapRegs
# decode
# encode
# expr
# format %s sec
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# h63760:
# bswapRegs
# decode
# encode
# expr
# format %s
# ignoreExpr
# map 0:0.001kWh/imp, 1:0.01kWh/imp, 2:0.1kWh/imp, 3:1kWh/imp
# mapDefault
# revRegs
# rmapDefault
# h63776:
# bswapRegs
# decode
# encode
# expr
# format %s
# ignoreExpr
# map 00010000:import, 00020000:import+export, 00030000:import-export
# mapDefault
# revRegs
# rmapDefault
# i0:
# bswapRegs
# decode
# encode
# expr
# format %.1f V
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i12:
# bswapRegs
# decode
# encode
# expr
# format %.f W
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i18:
# bswapRegs
# decode
# encode
# expr
# format %.1f VA
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i24:
# bswapRegs
# decode
# encode
# expr
# format %.1f VAr
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i258:
# bswapRegs
# decode
# encode
# expr
# format %.2f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i264:
# bswapRegs
# decode
# encode
# expr
# format %.2f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i30:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i342:
# bswapRegs
# decode
# encode
# expr
# format %.3f kWh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i344:
# bswapRegs
# decode
# encode
# expr
# format %.3f kVArh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i6:
# bswapRegs
# decode
# encode
# expr
# format %.2f A
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i70:
# bswapRegs
# decode
# encode
# expr
# format %.2f Hz
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i72:
# bswapRegs
# decode
# encode
# expr
# format %.3f kWh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i74:
# bswapRegs
# decode
# encode
# expr
# format %.3f kWh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i76:
# bswapRegs
# decode
# encode
# expr
# format %.3f kVArh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i78:
# bswapRegs
# decode
# encode
# expr
# format %.3f kVArh
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i84:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i86:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i88:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i90:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i92:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# i94:
# bswapRegs
# decode
# encode
# expr
# format %.1f
# ignoreExpr
# map
# mapDefault
# revRegs
# rmapDefault
# READ:
# READINGS:
# 2023-09-09 15:21:33 Current_Factor -1.01
# 2023-09-09 15:20:33 Current_Max_demand__A 15.44
# 2023-09-09 15:21:31 Current__A 1.01 A
# 2023-09-09 15:20:33 Current_demand__A 1.26
# 2023-09-08 13:12:51 Demand_Period__minutes 60
# 2023-09-09 15:21:32 Energy_export__kVArh 18.451 kVArh
# 2023-09-09 15:21:32 Energy_export__kWh 174.466 kWh
# 2023-09-09 15:21:32 Energy_import__kVArh 88.587 kVArh
# 2023-09-09 15:21:32 Energy_import__kWh 407.849 kWh
# 2023-09-09 15:21:33 Energy_total__kVArh 107.038 kVArh
# 2023-09-09 15:21:33 Energy_total__kWh 582.315 kWh
# 2023-09-09 15:21:32 Frequency__Hz 50.00 Hz
# 2023-09-08 13:12:31 Modbus_Node_adr 2
# 2023-09-08 13:12:31 Modbus_Parity_Stop 1stop.bit_no.parity
# 2023-09-08 13:12:32 Modbus_Speed__baud 9600
# 2023-08-31 23:59:59 Monats_Anfang_ex 160.566 kWh
# 2023-08-31 23:59:59 Monats_Anfang_im 366.603 kWh
# 2023-09-09 15:19:31 PowerFactor -1.0
# 2023-09-09 15:18:32 Power_Export_demand__W 290.1
# 2023-09-09 15:18:32 Power_Import_demand__W 0.7
# 2023-09-09 15:18:32 Power_Max_Export_demand__W 513.7
# 2023-09-09 15:18:32 Power_Max_Import_demand__W 3255.6
# 2023-09-09 15:18:32 Power_Max_demand__W 3255.6
# 2023-09-09 15:21:32 Power_Sum_demand__W 285.6
# 2023-09-09 15:21:31 Power__VA 231.5 VA
# 2023-09-09 15:21:31 Power__VAr 56.9 VAr
# 2023-09-09 15:21:31 Power__W -222 W
# 2023-09-08 13:12:34 System_Measurement_mode import+export
# 2023-09-08 13:12:31 System_Pulse_Width__ms 60 ms
# 2023-09-08 13:12:33 System_Pulse_constant 0.001kWh/imp
# 2023-09-08 13:12:33 TimeOfScrollDisplay 0 sec
# 2023-09-09 15:20:31 Voltage__V 233.7 V
# 2023-08-31 23:59:50 Vormonat_bezug 45.732
# 2023-08-31 23:59:50 Vormonat_einspeisung 70.198
# 2023-09-08 13:12:17 state opened
# REMEMBER:
# lrecv 1694265693.32714
# lsend 1694265693.28842
# UPDATECACHE:
# i342:
# adr 342
# combine i342 len 2 Energy_total__kWh with i344 len 2 Energy_total__kVArh
# len 2
# objCombi i342
# reading Energy_total__kWh
# span 4
# type i
# i6:
# adr 6
# combine i6 len 2 Current__A with i12 len 2 Power__W and i18 len 2 Power__VA and i24 len 2 Power__VAr
# len 2
# objCombi i6
# reading Current__A
# span 20
# type i
# i70:
# adr 70
# combine i70 len 2 Frequency__Hz with i72 len 2 Energy_import__kWh and i74 len 2 Energy_export__kWh and i84 len 2 Power_Sum_demand__W
# len 2
# objCombi i70
# reading Frequency__Hz
# span 16
# type i
# gotReadings:
# Energy_total__kVArh 107.038 kVArh
# Energy_total__kWh 582.315 kWh
# lastRead:
# h12 1694171551.71779
# h18 1694171551.72066
# h2 1694171571.36786
# h20 1694171551.72255
# h28 1694171552.45505
# h63744 1694171553.22106
# h63760 1694171553.97003
# h63776 1694171554.75555
# i0 1694265631.80856
# i12 1694265691.79166
# i18 1694265691.79323
# i24 1694265691.79476
# i258 1694265633.36928
# i264 1694265633.3711
# i30 1694265571.72141
# i342 1694265693.33249
# i344 1694265693.33448
# i6 1694265691.78997
# i70 1694265692.5841
# i72 1694265692.58564
# i74 1694265692.58723
# i76 1694265692.58875
# i78 1694265692.5903
# i84 1694265692.5918
# i86 1694265512.52936
# i88 1694265512.53099
# i90 1694265512.53255
# i92 1694265512.53414
# i94 1694265512.53565
#
setstate Zaehler Strom -1.01 A \
<br> Watt -222 W\
<br> Bezug 174.466 kWh\
<br> Einspeisung 407.849 kWh
setstate Zaehler 2023-09-09 15:21:33 Current_Factor -1.01
setstate Zaehler 2023-09-09 15:20:33 Current_Max_demand__A 15.44
setstate Zaehler 2023-09-09 15:21:31 Current__A 1.01 A
setstate Zaehler 2023-09-09 15:20:33 Current_demand__A 1.26
setstate Zaehler 2023-09-08 13:12:51 Demand_Period__minutes 60
setstate Zaehler 2023-09-09 15:21:32 Energy_export__kVArh 18.451 kVArh
setstate Zaehler 2023-09-09 15:21:32 Energy_export__kWh 174.466 kWh
setstate Zaehler 2023-09-09 15:21:32 Energy_import__kVArh 88.587 kVArh
setstate Zaehler 2023-09-09 15:21:32 Energy_import__kWh 407.849 kWh
setstate Zaehler 2023-09-09 15:21:33 Energy_total__kVArh 107.038 kVArh
setstate Zaehler 2023-09-09 15:21:33 Energy_total__kWh 582.315 kWh
setstate Zaehler 2023-09-09 15:21:32 Frequency__Hz 50.00 Hz
setstate Zaehler 2023-09-08 13:12:31 Modbus_Node_adr 2
setstate Zaehler 2023-09-08 13:12:31 Modbus_Parity_Stop 1stop.bit_no.parity
setstate Zaehler 2023-09-08 13:12:32 Modbus_Speed__baud 9600
setstate Zaehler 2023-08-31 23:59:59 Monats_Anfang_ex 160.566 kWh
setstate Zaehler 2023-08-31 23:59:59 Monats_Anfang_im 366.603 kWh
setstate Zaehler 2023-09-09 15:19:31 PowerFactor -1.0
setstate Zaehler 2023-09-09 15:18:32 Power_Export_demand__W 290.1
setstate Zaehler 2023-09-09 15:18:32 Power_Import_demand__W 0.7
setstate Zaehler 2023-09-09 15:18:32 Power_Max_Export_demand__W 513.7
setstate Zaehler 2023-09-09 15:18:32 Power_Max_Import_demand__W 3255.6
setstate Zaehler 2023-09-09 15:18:32 Power_Max_demand__W 3255.6
setstate Zaehler 2023-09-09 15:21:32 Power_Sum_demand__W 285.6
setstate Zaehler 2023-09-09 15:21:31 Power__VA 231.5 VA
setstate Zaehler 2023-09-09 15:21:31 Power__VAr 56.9 VAr
setstate Zaehler 2023-09-09 15:21:31 Power__W -222 W
setstate Zaehler 2023-09-08 13:12:34 System_Measurement_mode import+export
setstate Zaehler 2023-09-08 13:12:31 System_Pulse_Width__ms 60 ms
setstate Zaehler 2023-09-08 13:12:33 System_Pulse_constant 0.001kWh/imp
setstate Zaehler 2023-09-08 13:12:33 TimeOfScrollDisplay 0 sec
setstate Zaehler 2023-09-09 15:20:31 Voltage__V 233.7 V
setstate Zaehler 2023-08-31 23:59:50 Vormonat_bezug 45.732
setstate Zaehler 2023-08-31 23:59:50 Vormonat_einspeisung 70.198
setstate Zaehler 2023-09-08 13:12:17 state opened
denke mal es ist trivial.
Lg Holger
im stateFormat:
if (ReadingsNum("$NAME","Current_Factor",0) >= 0 {...Rot...} else {...Grün...}
cheers mi.ke
was Du auch machen kasst ist die Formatierung in Attribute und/oder Readings zu schreiben
und dann in stateFormat die Readings aufrufen:
LINK
F1 preis € Fz (preisKG € / kg) <br>
F2 Anzahl Stk Fz in ort
LINKe
F1 wäre der <font..> Start
Fz ist das Ende </font>
Zitat von: mi.ke am 09 September 2023, 16:14:43im stateFormat:
if (ReadingsNum("$NAME","Current_Factor",0) >= 0 {...Rot...} else {...Grün...}
cheers mi.ke
Einfach zusätzlich in das StateFormat?
Klappt nicht, sorry wenn ich mich was dumm anstelle.
Also powerFactor ist halt entweder -1 oder 1
LG holger
Hatte nach dem ganzen lesen im Forum so etwas gedacht, aber das funktioniert vorne und hinten nicht.
{
if (ReadingsNum("$name","Current_Factor",0) >= 0 {
return '<font color="red">'.ReadingsNum("$name", "Power__W", "") .'</b>';
}else {
return '<font color="green">'. ReadingsVal("$name", "Power__W", "")
}
}
Es klappt wohl nicht wegen meiner stateFormat Definition
Strom Current_Factor A
<br> Watt Power__W
<br> Bezug Energy_export__kWh
<br> Einspeisung Energy_import__kWhf
also in dem Perl Teil sind mehrere Fehler drin.
Kammer fehlt und wenn Du $name verwendest geht das nur ohne Anführungszeichen, ansonsten musst Du "$NAME". verwenden.
und wenn Du Perl als Syntax wählst, musst Du auch dabei bleiben.
Probier mal so (ungetestet)...
{
if (ReadingsNum("$NAME","Current_Factor",0) >= 0) {
'Strom '.ReadingsNum("$NAME","Current_Factor","0").'A <br> Watt
<font color="red">'.ReadingsNum("$NAME","Power__W","0").'</font> W <br>
Bezug '.ReadingsNum("$NAME","Energy_export__kWh","0").' kWh <br>
Einspeisung'.ReadingsNum("$NAME","Energy_import__kWhf","0").'kWhf';}
else
'Strom '.ReadingsNum("$NAME","Current_Factor","0").'A <br> Watt
<font color="green">'.ReadingsNum("$NAME","Power__W","0").'</font> W <br>
Bezug '.ReadingsNum("$NAME","Energy_export__kWh","0").' kWh <br>
Einspeisung'.ReadingsNum("$NAME","Energy_import__kWhf","0").'kWhf';}
}
Ähnliche Variante wie gerade vorgeschlagen, die ich in devstateicon eintragen würde, damit bleibt STATE sauber.
Im ersten Beitrag war gewünscht das Watt und Ampere eingefärbt werden.
defmod Battery dummy
attr Battery devStateIcon {my $color = ReadingsNum("$name","Current_Factor",0) >= 0 ? 'green' : 'red';;\
"<span style='color: ".$color."'>Strom ".ReadingsNum($name,'Current_Factor',0)." A</span><br>\
<span style='color: ".$color."'>Watt ".ReadingsNum($name,'Power__W',0)."</span><br>\
<span>Bezug ".ReadingsNum($name,'Energy_export__kWh',0)."</span><br>\
<span>Einspeisung ".ReadingsNum($name,'Energy_import__kWh',0)."</span>"\
}
attr Battery readingList Current_Factor Power__W Energy_export__kWh Energy_import__kWh
attr Battery setList Current_Factor Power__W Energy_export__kWh Energy_import__kWh
setstate Battery 2023-09-10 14:53:54 Current_Factor -45
setstate Battery 2023-09-10 14:54:02 Energy_export__kWh 5776
setstate Battery 2023-09-10 14:32:06 Energy_import__kWh 52552
setstate Battery 2023-09-10 14:39:53 Power__W 9999
Hier der Code aus devstateicon wie du ihn direkt bei dir zum Test in das Attribut eintragen kannst (falls nicht klar ist wie man den Raw-Code übernimmt):
{my $color = ReadingsNum("$name","Current_Factor",0) >= 0 ? 'green' : 'red';
"<span style='color: ".$color."'>Strom ".ReadingsNum($name,'Current_Factor',0)." A</span><br>
<span style='color: ".$color."'>Watt ".ReadingsNum($name,'Power__W',0)."</span><br>
<span>Bezug ".ReadingsNum($name,'Energy_export__kWh',0)."</span><br>
<span>Einspeisung ".ReadingsNum($name,'Energy_import__kWh',0)."</span>"
}
Vielen lieben dank, habe nur noch Rot und grün getauscht da Positive werte heißen Strom wird verbraucht und Negative Werte das Strom eingespeist wird.
Da passt das dann besser Bit den Farben.
Vielen vielen lieben dank nochmal
LG HolgerScreenshot_20230910_230513_Chrome.jpg
Ahh mir ist da doch noch was aufgefallen
Zitat{my $color = ReadingsNum("$name","Current_Factor",0) >= 0 ? 'green' : 'red';
"<span style='color: ".$color."'>Strom ".ReadingsNum($name,'Current_Factor',0)." A</span><br>
<span style='color: ".$color."'>Watt ".ReadingsNum($name,'Power__W',0)."</span><br>
<span>Bezug ".ReadingsNum($name,'Energy_export__kWh',0)."</span><br>
<span>Einspeisung ".ReadingsNum($name,'Energy_import__kWh',0)."</span>"
}
Da sollte doch eigentlich
PowerFactor stehen da dieser ja quasi die Farbe umschaltet oder??
P.s. konnte leider nicht in Code Tags farblich makieren
LG Holger
ZitatP.s. konnte leider nicht in Code Tags farblich makieren
Das geht nur in quote-Tags.
Ahh okay, umgesetzt
Hallo, darf ich deses Thema nochmal aufgreifen?!
Wollte das ganze jetzt aufbohren auf 3 Phasen, wobei Jeweils der Gesamt aus auch die 3 Phasen unabhängig die Farbe ändern sollen wenn der Wert negativ ist bzw Positiv.
Hier werden alle 4 Werte gemeinsam durch den Gesamtwert geschaltet.
{my $color = ReadingsNum("$name","power",0) >= 0 ? 'red' : 'green';
"<span style='color: ".$color."'>Watt ".ReadingsNum($name,'power',0)." W</span><br>
<span style='color: ".$color."'>PH1 ".ReadingsNum($name,'power_ph1',0)." W</span><br>
<span style='color: ".$color."'>PH2 ".ReadingsNum($name,'power_ph2',0)." W</span><br>
<span style='color: ".$color."'>PH_3 ".ReadingsNum($name,'power_ph3',0)." W</span><br>
<span>Zählerstand ".ReadingsNum($name,'stand',0)." kWh</span><br>
<span>Abnahme ".ReadingsNum($name,'Verbrauch',0)." kWh</span><br>
<span>Kosten ".ReadingsNum($name,'kosten',0)." Euro</span><br>
<span>Kosten Vormonat ".ReadingsNum($name,'KostenVormonat',0)." Euro</span>"
}
hier mein versuch der aber kläglich scheitert
{my $color1 = ReadingsNum("$name","power",0) >= 0 ? 'red' : 'green';
"<span style='color: ".$color."'>Watt ".ReadingsNum($name,'power_ph1',0)."</span><br>"}
{my $color2 = ReadingsNum("$name","power_ph1",0) >= 0 ? 'red' : 'green';
"<span style='color: ".$color2."'>Watt ".ReadingsNum($name,'power_ph2',0)."</span><br>"}
{my $color3 = ReadingsNum("$name","power_ph2",0) >= 0 ? 'red' : 'green';
"<span style='color: ".$color3."'>Watt ".ReadingsNum($name,'power',0)."</span><br>"}
{my $color4 = ReadingsNum("$name","power_ph3",0) >= 0 ? 'red' : 'green';
"<span style='color: ".$color4."'>Watt ".ReadingsNum($name,'power_ph3',0)."</span><br>
<span>Zählerstand ".ReadingsNum($name,'stand',0)." kWh</span><br>
<span>Abnahme ".ReadingsNum($name,'Verbrauch',0)." kWh</span><br>
<span>Kosten ".ReadingsNum($name,'kosten',0)." Euro</span><br>
<span>Kosten Vormonat ".ReadingsNum($name,'KostenVerbrauch',0)." Euro</span>"
Ich dachte ich muss den einzelnen colors nummern geben um sie unterscheiden zu können.