Last active
July 20, 2025 13:17
-
-
Save fbradyirl/08fef90bd11d7bdddf588a56e668d879 to your computer and use it in GitHub Desktop.
Recreate Sigenergy UI (using modbus sensors) as Home Assistant Card
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type: custom:button-card | |
show_state: true | |
tap_action: none | |
custom_fields: | |
home_image: | |
card: | |
type: picture | |
image: local/Sigenergy/home_has_solar_has_car.png | |
card_mod: | |
style: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
sigenstor_home_image: | |
card: | |
type: picture | |
image: local/Sigenergy/sigenstor_home.png | |
card_mod: | |
style: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ammeter_home_image: | |
card: | |
type: picture | |
image: local/Sigenergy/ammeter_home.png | |
card_mod: | |
style: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ac_charger_bg_image: | |
card: | |
type: picture | |
image: local/Sigenergy/ac_charger_bg.png | |
card_mod: | |
style: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
pv_power: | |
card: | |
type: custom:mushroom-template-card | |
primary: "{{states('sensor.sigen_pv_power') | round(1) }}kW" | |
secondary: SOLAR | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
load_power: | |
card: | |
type: custom:mushroom-template-card | |
primary: "{{states('sensor.sigen_consumed_power') | round(1) }}kW" | |
secondary: HOME | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
grid_power: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set import = states('sensor.sigen_grid_sensor_import_power') | | |
round(1) %} {% set export = | |
states('sensor.sigen_grid_sensor_export_power') | round(1) %} {% if | |
import > 0 %} | |
{{ import }}kW | |
{% elif export > 0 %} | |
{{ -export }}kW | |
{% else %} | |
0 | |
{% endif %} | |
secondary: | | |
GRID | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
grid_flow_label: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set import = states('sensor.sigen_grid_sensor_import_power') | | |
round(1) %} {% set export = | |
states('sensor.sigen_grid_sensor_export_power') | round(1) | |
%} {% if import > 0 %} | |
Importing | |
{% elif export > 0 %} | |
Exporting | |
{% else %} {% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 12px !important; | |
font-weight: bold !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
color: lightgray !important; | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
battery_soc: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set soc = states('sensor.sigen_energy_storage_system_soc') %} {% set | |
soc_power = states('sensor.sigen_ess_charge_discharge_power') | | |
round(1) %} | |
{% if soc_power != 0 %} | |
{{ soc_power | abs }}kW · {{ soc }}% | |
{% else %} | |
{{ soc }}% | |
{% endif %} | |
secondary: SigenStor | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
overflow: visible !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
battery_discharge_label: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set soc = states('sensor.sigen_energy_storage_system_soc') %} {% set | |
soc_power = states('sensor.sigen_ess_charge_discharge_power') | | |
round(1) %} | |
{% if soc_power < 0 %} | |
Discharging | |
{% else %} | |
{% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 12px !important; | |
font-weight: bold !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
color: lightgreen !important; | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
battery_charge_label: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set soc = states('sensor.sigen_energy_storage_system_soc') %} {% set | |
soc_power = states('sensor.sigen_ess_charge_discharge_power') | | |
round(1) %} | |
{% if soc_power == 0 %} | |
{% else %} | |
{% if soc_power > 0 %} | |
Charging | |
{% endif %} | |
{% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 12px !important; | |
font-weight: bold !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
color: red !important; | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ev_soc: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set power = states('sensor.buzz_lightgear_charger_power') | float %} | |
{% set soc = states('sensor.buzz_lightgear_battery') %} {% set range = | |
states('sensor.buzz_lightgear_range') | round(0) %} {% if power > 0 %} | |
{{ power }}kW - {{ soc }}% ({{ range }}km) | |
{% else %} | |
{{ soc }}% ({{ range }}km) | |
{% endif %} | |
secondary: > | |
{% set soc = states('sensor.buzz_lightgear_battery') %} {% if soc == | |
'unknown' %} | |
Car Asleep | |
{% else %} | |
Buzz Lightgear | |
{% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
water_diverter_power: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set power = states('sensor.myenergi_eddi_power_charging') | float %} | |
{% if power > 0 %} | |
{{ (power / 1000) | round(2) }}kW | |
{% else %} | |
{% endif %} | |
secondary: > | |
{% set power = states('sensor.myenergi_eddi_power_charging') | float %} | |
{% if power > 0 %} | |
🛁 {{states('sensor.myenergi_eddi_23546415_status')}} | |
{% else %} | |
{% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ev_ac_power: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set acrunstatus = states('sensor.sigen_2024052302935_acrunstatus') | | |
float %} | |
{% if acrunstatus == 2 %} | |
Charging | |
{% elif acrunstatus == 3 %} | |
Charging (Scheduled) | |
{% elif acrunstatus == 5 %} | |
Reserving | |
{% else %} | |
Available | |
{% endif %} | |
secondary: AC CHARGER | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 14px !important; | |
font-weight: bold !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.secondary { | |
font-size: 12px !important; | |
color: gray !important; | |
position: relative; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ev_charging_label: | |
card: | |
type: custom:mushroom-template-card | |
primary: > | |
{% set soc_power = states('sensor.buzz_lightgear_charger_power') | float | |
%} | |
{% if soc_power > 0 %} | |
Charging | |
{% else %} | |
{% endif %} | |
multiline_secondary: false | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 12px !important; | |
font-weight: bold !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
color: red !important; | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
ev_charging_icon: | |
card: | |
type: custom:mushroom-template-card | |
icon: >- | |
{% set soc_power = states('sensor.buzz_lightgear_charger_power') | float | |
%} | |
{% if soc_power > 0 %} | |
mdi:lightning-bolt | |
{% endif %} | |
icon_color: >- | |
{% set soc_power = states('sensor.buzz_lightgear_charger_power') | float | |
%} | |
{% if soc_power > 0 %} | |
red | |
{% endif %} | |
fill_container: false | |
card_mod: | |
style: | |
mushroom-state-info$: | | |
.primary { | |
font-size: 12px !important; | |
font-weight: bold !important; | |
letter-spacing: -0.1px !important; /* Reduce letter spacing */ | |
color: lightgreen !important; | |
position: relative; | |
overflow: visible !important; | |
text-align: left; | |
} | |
.: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
} | |
vertical_line: | |
card: | |
type: custom:button-card | |
card_mod: | |
style: | | |
ha-card { | |
background-color: transparent; | |
border: none; | |
position: relative; | |
width: 1px; | |
height: 110px; /* Adjust height as needed */ | |
background-color: gray; /* Light gray background */ | |
overflow: hidden; | |
animation: rotation 2s linear infinite; | |
} | |
.line { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
background: linear-gradient(0deg, green 50%, transparent 50%); | |
background-size: 100% 200%; | |
} | |
@keyframes rotation { | |
0% { | |
transform: rotate(0deg); | |
} | |
100% { | |
transform: rotate(00deg); | |
} | |
} | |
styles: | |
card: | |
- align-self: start | |
- height: > | |
[[[ return states['input_number.sigen_home_card_height'].state + 'px'; | |
]]] | |
- opacity: 1 | |
- background-color: transparent | |
- border: none | |
custom_fields: | |
home_image: | |
- position: absolute | |
- top: 5px | |
- left: 10px | |
- width: 395px | |
sigenstor_home_image: | |
- position: absolute | |
- top: 5px | |
- left: 10px | |
- width: 395px | |
ammeter_home_image: | |
- position: absolute | |
- top: 5px | |
- left: 10px | |
- width: 395px | |
ac_charger_bg_image: | |
- position: absolute | |
- top: 5px | |
- left: 10px | |
- width: 395px | |
pv_power: | |
- position: absolute | |
- top: 15px | |
- left: 210px | |
- width: 100px | |
load_power: | |
- position: absolute | |
- top: 15px | |
- left: 300px | |
- width: 100px | |
water_diverter_power: | |
- position: absolute | |
- top: 110px | |
- left: 130px | |
- width: 100px | |
grid_power: | |
- position: absolute | |
- top: 300px | |
- left: 300px | |
- width: 100px | |
grid_flow_label: | |
- position: absolute | |
- top: 335px | |
- left: 300px | |
- width: 100px | |
battery_soc: | |
- position: absolute | |
- top: 300px | |
- left: 175px | |
- width: 100px | |
battery_discharge_label: | |
- position: absolute | |
- top: 335px | |
- left: 175px | |
- width: 100px | |
battery_charge_label: | |
- position: absolute | |
- top: 335px | |
- left: 175px | |
- width: 100px | |
ev_soc: | |
- position: absolute | |
- top: 300px | |
- left: 20px | |
- width: 100px | |
ev_ac_power: | |
- position: absolute | |
- top: 15px | |
- left: 20px | |
- width: 100px | |
ev_charging_label: | |
- position: absolute | |
- top: 335px | |
- left: 20px | |
- width: 100px | |
ev_charging_icon: | |
- position: absolute | |
- top: 245px | |
- left: 10px | |
- width: 100px | |
vertical_line: | |
- position: absolute | |
- top: 47px | |
- left: 305px | |
- width: 1px | |
- height: 100px |
Excellent integration, but I've connected an sigen EV charger to the system, but the data isn't coming in. When I try to add a second one with ID2 (the EV charger), it doesn't find anything. Do you have a solution for this? The EV charger is connected via the second UTP on the SigenStore.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Downgrade to 1.0.8. Goto Hacs, find your sig integration, click the 3 dots, then click redownload and select the previous version. It broke in the latest