Last active
March 28, 2026 04:16
-
-
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_inverter_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_plant_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_plant_grid_import_power') | | |
| round(1) %} {% set export = | |
| states('sensor.sigen_plant_grid_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_plant_grid_import_power') | | |
| round(1) %} {% set export = | |
| states('sensor.sigen_plant_grid_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_plant_battery_state_of_charge') %} {% | |
| set soc_power = states('sensor.sigen_plant_battery_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_plant_battery_state_of_charge') %} {% | |
| set soc_power = states('sensor.sigen_plant_battery_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_plant_battery_state_of_charge') %} {% | |
| set soc_power = states('sensor.sigen_plant_battery_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.sigen_2024052302935_smart_home_1_power') | | |
| float %} {% if power > 0 %} | |
| {{ power | round(2) }}kW | |
| {% else %} | |
| {% endif %} | |
| secondary: > | |
| {% set power = states('sensor.sigen_2024052302935_smart_home_1_power') | | |
| float %} {% if power > 0 %} | |
| 🛁 Heating | |
| {% 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_ac_charger_system_state').split('-')[0] %} {% set | |
| amps = states('number.sigen_ac_charger_charger_output_current') %} | |
| {% if acrunstatus == 'Charging' %} | |
| {{ states('sensor.sigen_ac_charger_charging_power') }} kW ({{ amps | float | round(0) | int }}A) | |
| {% else %} | |
| {{ acrunstatus }} | |
| {% 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 |
I'm going to push an update soon.
You should use this integration for sigenergy modbus integration: https://my.home-assistant.io/redirect/hacs_repository/?owner=TypQxQ&repository=Sigenergy-Local-Modbus&category=Integration
Furthermore, you can change entitites and additioanl functions in the Settings view (the wheel button top left, second button).
Why is your House image card white? The integration uses the black one as far as I know.
Please update to Version 2.5.0 and restart HA.
Most of your issues should be fixed.
You may want to remove Genergy completely, re-add to HACS and fresh install.
https://github.com/SpengeSec/Genergy-Dashboard?tab=readme-ov-file#changelog
Moved to: SpengeSec/Genergy-Dashboard#1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Which integration are you using for querying Sigenergy modbus registers? I actually installed it upon a fresh HA with the MQTT based integration, but none sensors where found/mapped using the 'auto detect' function. Instead I've disabled this, wiped the sensors from HA and installed the modbus integration, following which your integration was able to auto detect most of the sensors.
Main obvious issue atm is that no matter is power sensors are set to use unit of measurement is W or kW, the inverter / inverter details shows it as W (i.e. 2kW shows as 2W) and the flow directions are back to front. For instance Battery currently discharging -2.15kW (kW showing correctly on the house image) but the flow animation is showing it Charging.
As above, wondering re the SoC per battery module, Grid Voltage, Battery Current and the 'Battery # Details' card, as there's currently no modbus registers for this to be queried? Or are you somehow getting them another way?