{"id":43736742,"url":"https://github.com/slipx06/sunsynk-home-assistant-dash","last_synced_at":"2026-02-05T11:04:46.151Z","repository":{"id":142503627,"uuid":"610927959","full_name":"slipx06/Sunsynk-Home-Assistant-Dash","owner":"slipx06","description":"Home Assistant Dashboard to display Inverter information. ESPHome configuration to collect inverter sensor data via modbus","archived":false,"fork":false,"pushed_at":"2025-07-10T22:37:46.000Z","size":1155,"stargazers_count":162,"open_issues_count":14,"forks_count":43,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-07-11T04:32:47.770Z","etag":null,"topics":["dashboard","energy","esp32","esphome-config","home-assistant","inverter","modbus","solar","sunsynk"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slipx06.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-07T19:05:55.000Z","updated_at":"2025-07-10T22:37:50.000Z","dependencies_parsed_at":"2023-05-11T20:00:38.248Z","dependency_job_id":"6e0256c4-f730-441b-b6f4-1effc9bc6020","html_url":"https://github.com/slipx06/Sunsynk-Home-Assistant-Dash","commit_stats":{"total_commits":111,"total_committers":3,"mean_commits":37.0,"dds":"0.027027027027026973","last_synced_commit":"1bf671914dc868261cdae8001d1f7f5ee2cd8046"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/slipx06/Sunsynk-Home-Assistant-Dash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slipx06%2FSunsynk-Home-Assistant-Dash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slipx06%2FSunsynk-Home-Assistant-Dash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slipx06%2FSunsynk-Home-Assistant-Dash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slipx06%2FSunsynk-Home-Assistant-Dash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slipx06","download_url":"https://codeload.github.com/slipx06/Sunsynk-Home-Assistant-Dash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slipx06%2FSunsynk-Home-Assistant-Dash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29120483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T10:47:47.471Z","status":"ssl_error","status_checked_at":"2026-02-05T10:45:08.119Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dashboard","energy","esp32","esphome-config","home-assistant","inverter","modbus","solar","sunsynk"],"created_at":"2026-02-05T11:04:16.206Z","updated_at":"2026-02-05T11:04:46.144Z","avatar_url":"https://github.com/slipx06.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Inverter Home Assistant Dashboard\nHome Assistant Dashboard to display Inverter data and Energy Usage.\n\nRequires the following: \n\nCards:\n\n - Flexible Horseshoe Card (https://github.com/AmoebeLabs/flex-horseshoe-card). If this does not load see https://github.com/AmoebeLabs/flex-horseshoe-card/issues/88#issuecomment-2145334978\n - Sunsynk Power Flow Card (https://github.com/slipx06/Sunsynk-Home-Assistant-Power-Flow-Card)\n - Layout Card (https://github.com/thomasloven/lovelace-layout-card)\n - Plotly Graph Card (https://github.com/dbuezas/lovelace-plotly-graph-card)\n\nIntegrations:\n\n - Load Shedding (https://github.com/wernerhp/ha.integration.load_shedding)\n - HA Open-Meteo Solar Forecast Integration ([https://github.com/oziee/ha-solcast-solar](https://github.com/rany2/ha-open-meteo-solar-forecast))\n\n## Screenshots\n\n\n![image](https://github.com/user-attachments/assets/49c5b645-4472-440e-aeb9-4a99f3158974)\n![image](https://github.com/user-attachments/assets/a3ed68f1-3a4d-4dd8-9c04-0dd1a604eb11)\n![image](https://github.com/user-attachments/assets/fc85912b-46c4-4f8c-a17d-a5119e9cf619)\n![image](https://github.com/user-attachments/assets/bc98f175-a63c-4287-b395-f2df76c6df9a)\n\n\n## Installation\nData can be collected from the inverter using the RS485 port. There are a number of different ways to do this but I'm using an ESP32 chip running ESPHome. See **Hardware and Wiring Guide** below and [ESPHome-1P-Sunsynk-Deye.yaml](https://github.com/slipx06/Sunsynk-Home-Assistant-Dash/blob/main/ESPHome-1P-Sunsynk-Deye.yaml)\n\nCreate a new view on your current Dashboard and set the view type to Panel (1 card) as shown below:\n\n![image](https://user-images.githubusercontent.com/7227275/223527428-b4508e6c-cf2d-473a-b63c-ffad11d2630d.png)\n\n\nYou can then edit the Dashboard (using the code editor) and paste the contents of the Dashboard.\nYou'll need to adjust all the sensor names to match yours and install the necessary custom components. \n\n## Demo\n\n![layout_card](https://github.com/user-attachments/assets/f44a7c36-72dc-47ae-bf40-84419f4b3dfc)\n\n## Hardware and Wiring Guide\n\n\u003e Disclaimer: Proceed with caution. Working with electrical equipment carries inherent risks. If you are unsure about any step, consult a qualified professional. The author is not responsible for any damage to equipment or injury. ALWAYS consult your specific inverter's manual and VERIFY ALL voltages and polarities with a multimeter before making connections.\n\n### Required Components \u0026 Tools:\n\n - ESP-based board (e.g., [AtomS3 Lite M5 Stack](https://shop.m5stack.com/products/atoms3-lite-esp32s3-dev-kit))\n - RS485 to TTL Converter (e.g., [M5Stack Tail485](https://shop.m5stack.com/products/atom-tail485), which accepts 12V)\n - Standard Ethernet Patch Cable (Cat5e or Cat6)\n - Tools: Wire strippers, wire cutters, small screwdriver (for terminal blocks), multimeter (essential for voltage/polarity checks).\n\n### Powering Your ESP Board \u0026 RS485 Converter:\n\n - The M5Stack AtomS3 Lite with Tail485 converter example accepts 12V input.\n - Many inverters provide an onboard 12V DC power source.\n - Consult your inverter's manual to locate a suitable 12V DC output and its Ground (GND) terminal. BEFORE CONNECTING ANYTHING: Use a multimeter to verify the output is indeed 12V DC (or the voltage your converter expects). Confirm the correct polarity of the 12V (+) and GND (-) terminals. Incorrect voltage or polarity can permanently damage your components.\n\n### Preparing the Ethernet Cable for RS485 Data:\n\n - Connect one end of the Ethernet cable to your inverter's RS485 port (this might be labeled RS485, BMS, Meter, etc. – check your manual).\n - Consult your inverter's manual to identify which pins on its port correspond to RS485 A+, RS485 B- as well as the pins for +12V (or other voltage) and GND. Note these down.\n - Carefully cut off the connector from the other end of the Ethernet cable.\n - Strip back about 1-2 inches (2-5 cm) of the outer jacket to expose the 4 twisted pairs of wires.\n - Using a standard Ethernet cable pinout diagram (e.g., T568B, easily found online) and the pin information from your inverter's manual, identify the colored wires that correspond to your inverter's RS485 A+, RS485 B- signals.\n\n### Connecting to the RS485 Converter (e.g., Tail485):\n - Connect the wire you identified as RS485 A+ (from the Ethernet cable) to the 'A' (or 'A+') terminal on your RS485 converter.\n - Connect the wire you identified as RS485 B- (from the Ethernet cable) to the 'B' (or 'B-') terminal on your RS485 converter.\n - Connect dedicated wires from the inverter's verified 12V and GND terminals to the VIN and GND of the RS485 converter.\n\n### Example Wiring: Solark 15K Inverter\n\nPinout\n\n![image](https://github.com/user-attachments/assets/539d831b-27da-40ab-a908-aa70a9f9d1f1)\n\n![image](https://github.com/user-attachments/assets/579cb6e6-b261-4e1f-99ed-fc28e4fc7737)\n\nFrom the above picture, port 15 goes to the 12V port on the tail485, while port 16 goes to the Gnd.\n\n![InverterWiringDiagram](https://github.com/user-attachments/assets/44aa39ba-df9d-460b-af20-b9518f267d64)\n\n## Additional Info\nAdded remaining battery time. You will need to add the following template sensor\n\n```\n- platform: template\n  sensors:\n    battery_cap:\n      friendly_name: \"Battery Capacity\"\n      value_template: \u003e\n        {% set grid_online = states('binary_sensor.sunsynk_grid_connected_status') %}\n        {% if grid_online  == 'off'%}\n          {{ states('sensor.sunsynk_battery_capacity_shutdown') | int }}\n        {% else %}\n          {% set now = strptime(as_timestamp(now()) | timestamp_custom('%H:%M'), '%H:%M') %}\n          {% set sellTime1 = strptime(states('sensor.sunsynk_time_slot_1'), '%H:%M') %}\n          {% set sellTime2 = strptime(states('sensor.sunsynk_time_slot_2'), '%H:%M') %}\n          {% set sellTime3 = strptime(states('sensor.sunsynk_time_slot_3'), '%H:%M') %}\n          {% set sellTime4 = strptime(states('sensor.sunsynk_time_slot_4'), '%H:%M') %}\n          {% set sellTime5 = strptime(states('sensor.sunsynk_time_slot_5'), '%H:%M') %}\n          {% set sellTime6 = strptime(states('sensor.sunsynk_time_slot_6'), '%H:%M') %}\n          {% if now \u003e= sellTime1 and now \u003c sellTime2 %}\n            {{ states('number.sunsynk_prog1_capacity') | int }}\n          {% elif now \u003e= sellTime2 and now \u003c sellTime3 %}\n            {{ states('number.sunsynk_prog2_capacity') | int }}\n          {% elif now \u003e= sellTime3 and now \u003c sellTime4 %}\n            {{ states('number.sunsynk_prog3_capacity') | int }}\n          {% elif now \u003e= sellTime4 and now \u003c sellTime5 %}\n            {{ states('number.sunsynk_prog4_capacity') | int }}\n          {% elif now \u003e= sellTime5 and now \u003c sellTime6 %}\n            {{ states('number.sunsynk_prog5_capacity') | int }}\n          {% elif now \u003e= sellTime6 or now \u003c sellTime1 %}\n            {{ states('number.sunsynk_prog6_capacity') | int }}\n          {% else %}\n            {{ states('sensor.sunsynk_battery_capacity_shutdown') | int }}\n          {% endif %}\n        {% endif %}\n    soc_battery_time_left:\n      friendly_name: \"Battery Depletion Seconds\"\n      unit_of_measurement: Seconds\n      value_template: \u003e\n        {% set state = states('sensor.sunsynk_battery_power') | int %}\n        {% set cap = states('sensor.battery_cap') | float %}\n        {% if state == 0 -%}\n        {{ ((((states('sensor.sunsynk_battery_soc') | float - cap) /100) * 15960) / (1) * 60 * 60 ) | timestamp_custom('%s', 0) }}\n        {%- else -%}\n        {{ ((((states('sensor.sunsynk_battery_soc') | float - cap) /100) * 15960) / (states('sensor.sunsynk_battery_power') | float) * 60 * 60 ) | timestamp_custom('%s', 0) }}\n        {%- endif %}\n    soc_battery_time_left_friendly:\n      friendly_name: \"Battery Depletion Time\"\n      value_template: \u003e\n        {% set state = states('sensor.sunsynk_battery_power') | int %}\n        {% if state \u003e 0 -%}\n        {%- set time = states('sensor.soc_battery_time_left') | int %}\n        {%- set minutes = ((time % 3600) // 60) %}\n        {%- set minutes = '{} minutes'.format(minutes) if minutes \u003e 0 else '' %}\n        {%- set hours = ((time % 86400) // 3600) %}\n        {%- set hours = '{} hours, '.format(hours) if hours \u003e 0 else '' %}\n        {%- set days = (time // 86400) %}\n        {%- set days = '{} day, '.format(days) if days \u003e 0 else '' %}\n        {{ 'Less than 1 minute' if time \u003c 60 else days + hours + minutes }}\n        {%- else -%}\n        {{ 'Charging' }}\n        {%- endif %}\n    battery_charging_time_left:\n      friendly_name: \"Battery Charging Time Left\"\n      unit_of_measurement: Seconds\n      value_template: \u003e\n        {% set power = states('sensor.sunsynk_battery_power') | float %}\n        {% set soc = states('sensor.sunsynk_battery_soc') | float %}\n        {% set cap = states('sensor.battery_cap') | float %}\n        {% if power \u003c 0 %}\n          {% if soc \u003c cap %}\n            {{ ((((cap - soc) / 100) * 15960) / (-power) * 60 * 60) | int }}\n          {% else %}\n            {{ ((((100 - soc) / 100) * 15960) / (-power) * 60 * 60) | int }}\n          {% endif %}\n        {% else %}\n          0\n        {% endif %}\n    battery_charging_time_left_friendly:\n      friendly_name: \"Battery Charging Time\"\n      value_template: \u003e\n        {% set state = states('sensor.sunsynk_battery_power') | int %}\n        {% if state \u003c 0 -%}\n          {%- set time = states('sensor.battery_charging_time_left') | int %}\n          {%- set minutes = ((time % 3600) // 60) %}\n          {%- set minutes = '{} min'.format(minutes) if minutes \u003e 0 else '' %}\n          {%- set hours = ((time % 86400) // 3600) %}\n          {%- set hours = '{} hrs, '.format(hours) if hours \u003e 0 else '' %}\n          {%- set days = (time // 86400) %}\n          {%- set days = '{} day, '.format(days) if days \u003e 0 else '' %}\n          {{ 'Floating' if time \u003c 60 else days + hours + minutes }}\n        {%- else -%}\n          {{ 'Discharging' }}\n        {%- endif %}\n    markdown_battery_charge_time_left:\n      friendly_name: \"Markdown Battery Charging Time\"\n      value_template: \u003e\n        {% if states('sensor.sunsynk_battery_soc') | float \u003c states('sensor.battery_cap') | float %}\n          {{ states('sensor.battery_cap') | float | round(0) }}\n        {% else %}\n          100\n          {% endif %}\n    markdown_discharge_time:\n      friendly_name: \"Markdown Discharge Time\"\n      value_template: \u003e\n        {% set now = as_timestamp(now()) %}\n        {% set add = states('sensor.soc_battery_time_left') | int %}\n        {% set future_time = now + add %}\n          {{ future_time | timestamp_custom('%H:%M') }}\n    markdown_charge_time:\n      friendly_name: \"Markdown Charging Time\"\n      value_template: \u003e\n        {% set now = as_timestamp(now()) %}\n        {% set add = states('sensor.battery_charging_time_left') | int %}\n        {% set future_time = now + add %}\n          {{ future_time | timestamp_custom('%H:%M') }}\n```\n15960 is battery size in Wh. You will need to adjust for your system\n\n20 is the minimum battery SOC before shutdown\n\n## Change Inverter Settings\nThese following example cards can be used to set system timer settings\n\n### Example 1\n\n![image](https://github.com/slipx06/Sunsynk-Home-Assistant-Dash/assets/7227275/2c665082-1d12-4a26-ba19-def6ffdd7780)\n\n```\ntype: vertical-stack\ncards:\n  - type: tile\n    entity: switch.sunsynk_toggle_system_timer\n    icon: mdi:timer-outline\n    vertical: true\n  - type: horizontal-stack\n    cards:\n      - type: entities\n        entities:\n          - entity: select.sunsynk_energy_pattern\n            name: Energy Pattern\n        state_color: true\n      - type: entities\n        entities:\n          - entity: select.sunsynk_work_mode\n            name: Work Mode\n        state_color: true\n  - type: entities\n    entities:\n      - entity: switch.sunsynk_prog1_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 1\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_1\n            name: From\n          - entity: sensor.sunsynk_time_slot_2\n            name: To\n          - entity: number.sunsynk_prog1_capacity\n            name: SOC\n            format: precision0\n      - entity: switch.sunsynk_prog2_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 2\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_2\n            name: From\n          - entity: sensor.sunsynk_time_slot_3\n            name: To\n          - entity: number.sunsynk_prog2_capacity\n            name: SOC\n            format: precision0\n      - entity: switch.sunsynk_prog3_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 3\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_3\n            name: From\n          - entity: sensor.sunsynk_time_slot_4\n            name: To\n          - entity: number.sunsynk_prog3_capacity\n            name: SOC\n            format: precision0\n      - entity: switch.sunsynk_prog4_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 4\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_4\n            name: From\n          - entity: sensor.sunsynk_time_slot_5\n            name: To\n          - entity: number.sunsynk_prog4_capacity\n            name: SOC\n            format: precision0\n      - entity: switch.sunsynk_prog5_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 5\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_5\n            name: From\n          - entity: sensor.sunsynk_time_slot_6\n            name: To\n          - entity: number.sunsynk_prog5_capacity\n            name: SOC\n            format: precision0\n      - entity: switch.sunsynk_prog6_grid_charge\n        type: custom:multiple-entity-row\n        name: Program 6\n        toggle: true\n        state_header: Charge\n        state_color: true\n        icon: mdi:timer\n        entities:\n          - entity: sensor.sunsynk_time_slot_6\n            name: From\n          - entity: sensor.sunsynk_time_slot_1\n            name: To\n          - entity: number.sunsynk_prog6_capacity\n            name: SOC\n            format: precision0\n    state_color: true\nview_layout:\n  grid-area: a\n```\n### Example 2\n![image](https://github.com/slipx06/Sunsynk-Home-Assistant-Dash/assets/7227275/ff40ea09-0aa3-4987-abb4-69fd195f5286)\n\n\n```\ntype: custom:layout-card\nlayout_type: custom:grid-layout\ncards:\n  - type: custom:mushroom-title-card\n    title: Sunsynk System Mode\n    alignment: center\n    view_layout:\n      grid-area: header\n  - type: horizontal-stack\n    cards:\n      - type: entities\n        entities:\n          - entity: switch.sunsynk_toggle_system_timer\n            name: System Timer\n        state_color: true\n      - type: entities\n        entities:\n          - entity: select.sunsynk_energy_pattern\n            name: Energy Pattern\n        state_color: true\n      - type: entities\n        entities:\n          - entity: select.sunsynk_work_mode\n            name: Work Mode\n        state_color: true\n    view_layout:\n      grid-area: system\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 1\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_1\") }} - {{\n              states(\"sensor.sunsynk_time_slot_2\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog1_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog1_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog1_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog1\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 2\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_2\") }} - {{\n              states(\"sensor.sunsynk_time_slot_3\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog2_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog2_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog2_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog2\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 3\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_3\") }} - {{\n              states(\"sensor.sunsynk_time_slot_4\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog3_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog3_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog3_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog3\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 4\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_4\") }} - {{\n              states(\"sensor.sunsynk_time_slot_5\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog4_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog4_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog4_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog4\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 5\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_5\") }} - {{\n              states(\"sensor.sunsynk_time_slot_6\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog5_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog5_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog5_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog5\n  - type: vertical-stack\n    cards:\n      - type: horizontal-stack\n        cards:\n          - type: custom:mushroom-template-card\n            primary: Program 6\n            secondary: \u003e-\n              {{ states(\"sensor.sunsynk_time_slot_6\") }} - {{\n              states(\"sensor.sunsynk_time_slot_1\") }}\n            icon: mdi:timer\n            multiline_secondary: false\n            badge_icon: mdi:lightning-bolt\n            icon_color: blue\n            badge_color: green\n            fill_container: true\n          - type: entities\n            entities:\n              - entity: select.sunsynk_prog6_charge_option\n                name: Option\n            state_color: true\n      - type: entities\n        entities:\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog6_capacity\n            name: Battery SOC\n            hide_state: false\n            grow: true\n          - type: custom:slider-entity-row\n            entity: number.sunsynk_prog6_power\n            name: Power\n            hide_state: false\n            grow: true\n    view_layout:\n      grid-area: prog6\nlayout:\n  grid-template-columns: 2fr 2fr 2fr 2fr\n  grid-template-rows: auto\n  grid-template-areas: |\n    \". header header .\"\n    \". system system .\"\n    \". prog1 prog2 .\"\n    \". prog3 prog4 .\"\n    \". prog5 prog6 .\"\n  mediaquery:\n    '(max-width: 800px)':\n      grid-template-columns: auto\n      grid-template-areas: |\n        \"header\"\n        \"system\"\n        \"priority\"\n        \"prog1\"\n        \"prog2\"\n        \"prog3\"\n        \"prog4\"\n        \"prog5\"\n        \"prog6\"\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslipx06%2Fsunsynk-home-assistant-dash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslipx06%2Fsunsynk-home-assistant-dash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslipx06%2Fsunsynk-home-assistant-dash/lists"}