defmod di_energy_card_min DOIF {}
attr di_energy_card_min room ecoflow,test->ecard
attr di_energy_card_min uiTable {\
$ATTRIBUTESFIRST = 1;;\
\
## Energy_card kann über das Attribut zoom skalliert werden\
\
$TABLE = 'zoom: 1;; width: 212px;; height: 195px;; text-align: left;; vertical-align: top;; border-radius:0%;; position:relative;; background: linear-gradient(to bottom, rgb(40,40,40), rgb(60, 60, 60));; ';;\
\
package ui_Table;;\
\
sub move {\
my ($left, $top, $content) = @_;;\
my $value;;\
if (ref($content) eq "ARRAY") {\
$value = $content->[0];;\
} else {\
$value =$content;;\
}\
\
my $out = '<div style="position:absolute;; left:'\
. $left . 'px;; top:'\
. $top . 'px;;">'\
. $value .\
'</div>';;\
\
if (ref($content) eq "ARRAY") {\
return ([$out,$content->[1]]);;\
} else {\
return ($out);;\
}\
}## end of move\
\
sub flow {\
\
my ($d,$item,$power,$max,$leftright)=@_;;\
my $dur;;\
if ($power == 0) {\
$dur=0;;\
} else {\
$power=$max if ($power>$max);;\
$dur=int((6-abs(5*$power/$max))*10)/10;;\
}\
\
\
my $from;;\
my $to;;\
my $x1;;\
my $x2;;\
\
\
if ($leftright) {\
$from="-1 -1";;\
$to="1 1";;\
$x1=0;;\
$x2=100;;\
} else {\
$from="1 1";;\
$to="-1 -1";;\
$x1=100;;\
$x2=0;;\
}\
\
my $out='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 35" width="40" height="35" style="width:40px;; height:35px;;">';;\
\
$out .= '<defs>\
<linearGradient id="flowGradient_'.$item.'" \
x1="'.$x1.'%" y1="0%" \
x2="'.$x2.'%" y2="0%" \
>\
<stop offset="0%" stop-color="white" stop-opacity="0.2"/>\
<stop offset="95%" stop-color="white" stop-opacity="1"/>\
<stop offset="100%" stop-color="white" stop-opacity="0.2"/>\
<animateTransform \
id="flowAnim_'.$item.'" \
attributeName="gradientTransform" \
type="translate" \
from="'.$from.'" \
to="'.$to.'" \
dur="'.$dur.'s" \
repeatCount="indefinite" \
calcMode="linear"/>\
</linearGradient>\
</defs>\
<path d="'.$d.'" fill="none" stroke="url(#flowGradient_'.$item.')" stroke-width="5" />';;\
\
##$out .= '<defs> <linearGradient id="flowGradient_'.$item.'" x1="'.$x1.'%" y1="0%" x2="'.$x2.'%" y2="0%"> <stop offset="0%" stop-color="gray" stop-opacity="0.2"/> <stop offset="100%" stop-color="white" stop-opacity="1"/> <stop offset="0%" stop-color="gray" stop-opacity="0.2"/></defs><path d="'.$d.'" fill="none" stroke="gray" stroke-opacity="0.2" stroke-width="3"/><path d="'.$d.'" fill="none" stroke="url(#flowGradient_'.$item.')" stroke-width="2" stroke-dasharray="3 9"><animate id="flowAnim_'.$item.'" attributeName="stroke-dashoffset" from="'.$from.'" to="'.$to.'" dur="'.$dur.'s" repeatCount="indefinite"/></path>';;\
\
return ([$out,'var e=document.getElementById("flowAnim_'.$item.'");;if (e) {e.setAttribute("dur","'.$dur.'s");;e.setAttribute("from","'.$from.'");;e.setAttribute("to","'.$to.'");;};; var e=document.getElementById("flowGradient_'.$item.'");;if (e) {e.setAttribute("x1","'.$x1.'%");;e.setAttribute("x2","'.$x2.'%");;}'])\
} ## end of flow\
\
sub grid_power {\
my ($power,$max)=@_;;\
return (move(30,64,flow("M 5 0 A 30 30 0 0 0 35 30","grid",$power,$max,($power > 0 ? 0 : 1))));;\
} \
\
sub solar_power {\
my ($power,$max)=@_;;\
return move(138,64,flow("M 35 0 A 30 30 0 0 1 5 30 L 5 30","solar",$power,$max,0));;\
} \
\
sub home_power {\
my ($power,$max)=@_;; \
return move(30,94,flow("M 5 35 A 30 30 0 0 1 35 5","home",$power,$max,0));;\
}\
\
sub battery_power {\
my ($power,$max)=@_;;\
return move(138,94,flow("M 35 35 A 30 30 0 0 0 5 5 ","battery",$power,$max,($power < 0 ? 0:1)));;\
}\
\
sub grid {\
my ($power,$feed,$consum)=@_;;\
move(2,2,icon_ring2("scene_power_grid\@silver",$power,-5,5,0,90,"kW",110,undef,"3",$feed-$consum,-20,20,0,90,"kWh",undef,"1",undef,"nogradient,,innerring,nopointer,negzeropos"));;\
}\
\
sub self {\
my ($autark,$EVG)=@_;;\
move(65,60,ring2($autark,0,100,undef,undef,"Autarkie",130,[(33.3,40,66.6,65,100,85)],"0,,fill:silver, %",$EVG,0,100,190,170,"EVQ",undef,"0,,fill:silver, %",undef,undef,"nogradient,,innerring,nopointer")) # [(33.3,40,66.6,65,100,85)]\
}\
\
sub solar {\
my ($power,$energy)=@_;;\
move(140,2,icon_ring2("solar_icon\@silver",$power,0,3.6,30,90,"kW",110,undef,"3",$energy,0,30,30,90,"kWh",undef,"1",undef,"nogradient,,innerring,nopointer"));;\
}\
\
sub home {\
my ($power,$consum)=@_;;\
move(2,130,icon_ring2("fa_home\@silver",$power,0,3,60,10,"kW",110,undef,"3",$consum,0,20,60,10,"kWh",undef,"1",undef,"nogradient,,innerring,nopointer"));;\
}\
\
sub battery {\
my ($power,$cap)=@_;;\
move(140,130,icon_ring2("battery_100\@silver",$power/1000,-1,1,60,10,"kW",110,[(-0.3,30,-0.01,40,0.3,190,1,170)],"3",$cap,0,100,0,90,"%",undef,"1",undef,"nogradient,,innerring,nopointer"));;\
}\
\
} ## end of perl area\
\
## Tabellendefinition\
## Hier eigene Readings anpassen\
\
grid([MQTT2_DVES_C58DCB:power_fc],[di_counter_new:MQTT2_DVES_C58DCB.total_f.day],[di_counter_new:MQTT2_DVES_C58DCB.total_c_positiv.day]).\
solar([MQTT2_DVES_C58DCB:power_pv],[di_counter_new:MQTT2_DVES_C58DCB.total_pv.day]).\
home ([MQTT2_DVES_C58DCB:power_home_c],[di_counter_new:MQTT2_DVES_C58DCB.total_home_c.day]).\
battery([ecoflowStreamACpro:quota_powGetBpCms],[ecoflowStreamACpro:quota_soc]).\
self(([di_counter_new:MQTT2_DVES_C58DCB.total_pv.day]-[di_counter_new:MQTT2_DVES_C58DCB.total_f.day])/[di_counter_new:MQTT2_DVES_C58DCB.total_consum.day]*100,(1-[di_counter_new:MQTT2_DVES_C58DCB.total_f.day]/[di_counter_new:MQTT2_DVES_C58DCB.total_pv.day])*100).\
grid_power([MQTT2_DVES_C58DCB:power_fc],3.6).\
solar_power([MQTT2_DVES_C58DCB:power_pv],3.6).\
battery_power([ecoflowStreamACpro:quota_powGetBpCms],1050).\
home_power([MQTT2_DVES_C58DCB:power_home_c],3.6)[attach id=188766 width=300]Screenshot 2026-04-19 133239.png[/attach]ZitatEVSE fault code register value is the decimal equivalent of binary fault codes. Each bit defines 1 fault.
For example, binary equivalent of register value 16 is 10000. This means 4th bit is set and the fault is PP
error.
Bit Fault
0 Contactor Welded Error
1 Contactor Response Error
2 Interlock Lock Error
3 Interlock Unlock Error
4 PP Error
5 CP Diode Error
6 CP Short Error
7 Overvoltage Phase1
8 Overvoltage Phase2
usw
Name EVSE Fault Code* | Register 1006 | länge 2 | read/write R | datentypp unit32 | Beschreibung 0: No fault Other: Fault code |
defmod Wallbox ModbusAttr 1 30 <IP_DER_WALLBOX>.23:502 TCP
attr Wallbox DbLogExclude .*
attr Wallbox DbLogInclude Charge_Active_Power:600
attr Wallbox alias Wallbox
attr Wallbox event-on-update-reading .*
attr Wallbox icon wallbox
attr Wallbox obj-h2000-max 16
attr Wallbox obj-h2000-min 0
attr Wallbox obj-h2000-poll 1
attr Wallbox obj-h2000-polldelay 600
attr Wallbox obj-h2000-reading Fail_Safe_Current
attr Wallbox obj-h2000-set 1
attr Wallbox obj-h2000-type unsigned short big
attr Wallbox obj-h2002-poll 1
attr Wallbox obj-h2002-polldelay x199
attr Wallbox obj-h2002-reading Fail_Safe_Timeout
attr Wallbox obj-h2002-set 1
attr Wallbox obj-h2002-type unsigned short big
attr Wallbox obj-h5000-poll 0
attr Wallbox obj-h5000-reading Charge_Power_Set
attr Wallbox obj-h5000-set 1
attr Wallbox obj-h5000-type unsigned long big
attr Wallbox obj-h5004-max 16
attr Wallbox obj-h5004-min 0
attr Wallbox obj-h5004-poll 0
attr Wallbox obj-h5004-reading Charge_Current_Set
attr Wallbox obj-h5004-set 1
attr Wallbox obj-h5004-type signed short big
attr Wallbox obj-h5006-hint 0,1,2
attr Wallbox obj-h5006-max 2
attr Wallbox obj-h5006-min 0
attr Wallbox obj-h5006-poll 0
attr Wallbox obj-h5006-reading Start_Cancel
attr Wallbox obj-h5006-set 1
attr Wallbox obj-h5006-type unsigned short big
attr Wallbox obj-h6000-poll 1
attr Wallbox obj-h6000-reading Life_Bit
attr Wallbox obj-h6000-set 1
attr Wallbox obj-h6000-type unsigned short big
attr Wallbox obj-i1000-map 0:available, 1:preparing, 2:charging, 3:Suspended EVSE, 4:Suspended EV, 5:Finishing, 6:Reserved, 7:Unavailable, 8:Faulted
attr Wallbox obj-i1000-poll 1
attr Wallbox obj-i1000-reading Charge_Point_State
attr Wallbox obj-i1000-type unsigned short big
attr Wallbox obj-i1001-poll 1
attr Wallbox obj-i1001-reading Charge_State
attr Wallbox obj-i1001-type unsigned short big
attr Wallbox obj-i1002-map 0:initializing, 1:running, 2:fault, 3:disabled
attr Wallbox obj-i1002-poll 1
attr Wallbox obj-i1002-reading Equipment_State
attr Wallbox obj-i1002-type unsigned short big
attr Wallbox obj-i1004-map 0:Cable not connected, 1:Cable connected - vehicle not connected, 2:Cable connected - vehicle connected, 3:Cable connected - vehicle connected - cable locked
attr Wallbox obj-i1004-poll 1
attr Wallbox obj-i1004-reading Cable_State
attr Wallbox obj-i1004-type unsigned short big
attr Wallbox obj-i1006-map 0:no_fault
attr Wallbox obj-i1006-poll 1
attr Wallbox obj-i1006-reading Error_Code
attr Wallbox obj-i1006-type unsigned short big
attr Wallbox obj-i1008-expr $val/1000
attr Wallbox obj-i1008-poll 1
attr Wallbox obj-i1008-reading Charge_Active_Current_L1
attr Wallbox obj-i1008-type unsigned short big
attr Wallbox obj-i1010-expr $val/1000
attr Wallbox obj-i1010-poll 1
attr Wallbox obj-i1010-reading Charge_Active_Current_L2
attr Wallbox obj-i1010-type unsigned short big
attr Wallbox obj-i1012-expr $val/1000
attr Wallbox obj-i1012-poll 1
attr Wallbox obj-i1012-reading Charge_Active_Current_L3
attr Wallbox obj-i1012-type unsigned short big
attr Wallbox obj-i1020-poll 1
attr Wallbox obj-i1020-reading Charge_Active_Power_Total
attr Wallbox obj-i1020-type unsigned long big
attr Wallbox obj-i1024-poll 1
attr Wallbox obj-i1024-reading Charge_Active_Power_L1
attr Wallbox obj-i1024-type unsigned long big
attr Wallbox obj-i1028-poll 1
attr Wallbox obj-i1028-reading Charge_Active_Power_L2
attr Wallbox obj-i1028-type unsigned long big
attr Wallbox obj-i1032-poll 1
attr Wallbox obj-i1032-reading Charge_Active_Power_L3
attr Wallbox obj-i1032-type unsigned long big
attr Wallbox obj-i1036-expr $val/1000
attr Wallbox obj-i1036-poll 1
attr Wallbox obj-i1036-reading Energy_Meter
attr Wallbox obj-i1036-type unsigned long big
attr Wallbox obj-i1100-poll 1
attr Wallbox obj-i1100-reading Session_Max_Current
attr Wallbox obj-i1100-type unsigned short big
attr Wallbox obj-i1102-poll 1
attr Wallbox obj-i1102-reading EVSE_Min_Current
attr Wallbox obj-i1102-type unsigned short big
attr Wallbox obj-i1104-poll 1
attr Wallbox obj-i1104-reading EVSE_Max_Current
attr Wallbox obj-i1104-type unsigned short big
attr Wallbox obj-i1106-poll 1
attr Wallbox obj-i1106-reading Cable_Max_Current
attr Wallbox obj-i1106-type unsigned short big
attr Wallbox obj-i1108-poll 1
attr Wallbox obj-i1108-reading EV_Max_Current
attr Wallbox obj-i1108-type unsigned short big
attr Wallbox obj-i130-poll 1
attr Wallbox obj-i130-reading charge point_ID
attr Wallbox obj-i130-type unsigned short big
attr Wallbox obj-i1502-expr $val/1000
attr Wallbox obj-i1502-poll 1
attr Wallbox obj-i1502-reading Charged_Energy
attr Wallbox obj-i1502-type unsigned short big
attr Wallbox obj-i1504-poll 1
attr Wallbox obj-i1504-reading Charging_Start_Time
attr Wallbox obj-i1504-type unsigned long big
attr Wallbox obj-i1508-poll 1
attr Wallbox obj-i1508-reading Charging_Time
attr Wallbox obj-i1508-type unsigned long big
attr Wallbox obj-i1512-poll 1
attr Wallbox obj-i1512-reading Charging_End_Time
attr Wallbox obj-i1512-type unsigned long big
attr Wallbox obj-i1620-poll 1
attr Wallbox obj-i1620-reading Smart_Vehicle_Detected
attr Wallbox obj-i1620-type unsigned short big
attr Wallbox obj-i400-poll 1
attr Wallbox obj-i400-reading Chargepoint_Power
attr Wallbox obj-i400-type unsigned short big
attr Wallbox obj-i404-map 0:1_phase, 1:3_phase
attr Wallbox obj-i404-poll 1
attr Wallbox obj-i404-reading number_of_phases
attr Wallbox obj-i404-type unsigned short big
attr Wallbox oldreadings Cable_State