feat(dashboard-zuhause): add Whirlpool tab (extended)
Volle Whirlpool-Steuerung im Tab — bewusst doppelt zum dashboard_spa, für schnellen Zugriff vom Tablet. 5 Sections: - Klima & Status: climate.spa_thermostat + Heater/Pumpe/Filter/Ozon/Heizrate - Wasserchemie (Ondilo ICO): · Chips pH/ORP/Temp/Akku mit Color-Coding · pH 24h Chart mit Annotation 7.0-7.6 (Ideal grün) · ORP 24h Chart mit Annotation 600-800 mV (Ideal grün) - Steuerung: Master/Düsen/Licht-Switches, Heizmodus/Temp-Range, 2× Filterzeit/-dauer - Energie: Leistung-Chip, Energie kumuliert, Heater-kWh, 24h Apex - Pflege & Wartung: 3× input_datetime mit 'vor X Tagen' Template, Color: rot wenn überfällig (Wasserpflege >7d, Kartusche >30d, Wasserwechsel >90d) + conditional Störungsmeldung-Card Aktuelle Werte: pH 6.22 (zu niedrig!), ORP 157 mV (zu niedrig!) — Wasserwerte brauchen Anpassung.
This commit is contained in:
@@ -1301,6 +1301,430 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Whirlpool",
|
||||
"path": "whirlpool",
|
||||
"icon": "mdi:hot-tub",
|
||||
"type": "sections",
|
||||
"max_columns": 2,
|
||||
"sections": [
|
||||
{
|
||||
"type": "grid",
|
||||
"title": "Klima & Status",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-climate-card",
|
||||
"entity": "climate.spa_thermostat",
|
||||
"show_temperature_control": true,
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-chips-card",
|
||||
"alignment": "justify",
|
||||
"chips": [
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:fire",
|
||||
"icon_color": "{% if is_state('sensor.spa_heater','ON') %}red{% else %}grey{% endif %}",
|
||||
"content": "Heater {{ states('sensor.spa_heater') }}"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:pump",
|
||||
"icon_color": "{% if is_state('sensor.spa_circulation_pump','HIGH') %}blue{% elif is_state('sensor.spa_circulation_pump','LOW') %}cyan{% else %}grey{% endif %}",
|
||||
"content": "Umwälz {{ states('sensor.spa_circulation_pump') }}"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:filter",
|
||||
"icon_color": "{% if is_state('sensor.spa_filter_1','ON') %}green{% else %}grey{% endif %}",
|
||||
"content": "Filter1 {{ states('sensor.spa_filter_1') }}"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:filter-outline",
|
||||
"icon_color": "{% if is_state('sensor.spa_filter_2','ON') %}green{% else %}grey{% endif %}",
|
||||
"content": "Filter2 {{ states('sensor.spa_filter_2') }}"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:flash",
|
||||
"icon_color": "{% if is_state('sensor.spa_ozone','ON') %}cyan{% else %}grey{% endif %}",
|
||||
"content": "Ozon"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:trending-up",
|
||||
"icon_color": "amber",
|
||||
"content": "{{ states('sensor.whirlpool_heizrate') | float(0) | round(2) }} °C/h"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "grid",
|
||||
"title": "Wasserchemie (Ondilo ICO)",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-chips-card",
|
||||
"alignment": "justify",
|
||||
"chips": [
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:ph",
|
||||
"icon_color": "{% set v = states('sensor.whirlpool_ph') | float(0) %}{% if v < 6.8 or v > 7.8 %}red{% elif v < 7.0 or v > 7.6 %}orange{% else %}green{% endif %}",
|
||||
"content": "pH {{ states('sensor.whirlpool_ph') }}"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:flash-triangle",
|
||||
"icon_color": "{% set v = states('sensor.whirlpool_oxydo_reduktionspotenzial') | float(0) %}{% if v < 500 %}red{% elif v < 600 %}orange{% elif v <= 800 %}green{% else %}orange{% endif %}",
|
||||
"content": "ORP {{ states('sensor.whirlpool_oxydo_reduktionspotenzial') }} mV"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:thermometer-water",
|
||||
"icon_color": "blue",
|
||||
"content": "{{ states('sensor.whirlpool_temperatur') }} °C"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:battery",
|
||||
"icon_color": "{% set v = states('sensor.whirlpool_batterie') | float(0) %}{% if v < 20 %}red{% elif v < 40 %}orange{% else %}green{% endif %}",
|
||||
"content": "{{ states('sensor.whirlpool_batterie') }}%"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom:apexcharts-card",
|
||||
"header": {
|
||||
"show": true,
|
||||
"title": "pH (Ideal: 7.0–7.6)",
|
||||
"show_states": true
|
||||
},
|
||||
"graph_span": "24h",
|
||||
"yaxis": [
|
||||
{
|
||||
"min": 6,
|
||||
"max": 8,
|
||||
"decimals": 2,
|
||||
"apex_config": {
|
||||
"tickAmount": 4
|
||||
}
|
||||
}
|
||||
],
|
||||
"apex_config": {
|
||||
"annotations": {
|
||||
"yaxis": [
|
||||
{
|
||||
"y": 7.0,
|
||||
"y2": 7.6,
|
||||
"borderColor": "#00e396",
|
||||
"fillColor": "#00e396",
|
||||
"opacity": 0.15,
|
||||
"label": {
|
||||
"text": "Ideal",
|
||||
"style": {
|
||||
"color": "#fff",
|
||||
"background": "#00e396"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"series": [
|
||||
{
|
||||
"entity": "sensor.whirlpool_ph",
|
||||
"type": "line",
|
||||
"stroke_width": 2,
|
||||
"group_by": {
|
||||
"func": "avg",
|
||||
"duration": "10m"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom:apexcharts-card",
|
||||
"header": {
|
||||
"show": true,
|
||||
"title": "ORP (Ideal: 600–800 mV)",
|
||||
"show_states": true
|
||||
},
|
||||
"graph_span": "24h",
|
||||
"yaxis": [
|
||||
{
|
||||
"min": 0,
|
||||
"max": 1000,
|
||||
"decimals": 0,
|
||||
"apex_config": {
|
||||
"tickAmount": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"apex_config": {
|
||||
"annotations": {
|
||||
"yaxis": [
|
||||
{
|
||||
"y": 600,
|
||||
"y2": 800,
|
||||
"borderColor": "#00e396",
|
||||
"fillColor": "#00e396",
|
||||
"opacity": 0.15,
|
||||
"label": {
|
||||
"text": "Ideal",
|
||||
"style": {
|
||||
"color": "#fff",
|
||||
"background": "#00e396"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"series": [
|
||||
{
|
||||
"entity": "sensor.whirlpool_oxydo_reduktionspotenzial",
|
||||
"type": "line",
|
||||
"stroke_width": 2,
|
||||
"group_by": {
|
||||
"func": "avg",
|
||||
"duration": "10m"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "grid",
|
||||
"title": "Steuerung",
|
||||
"cards": [
|
||||
{
|
||||
"type": "horizontal-stack",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-entity-card",
|
||||
"entity": "switch.whirlpool",
|
||||
"name": "Master",
|
||||
"icon": "mdi:hot-tub",
|
||||
"icon_color": "{% if is_state('switch.whirlpool','on') %}cyan{% else %}grey{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "toggle"
|
||||
},
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-entity-card",
|
||||
"entity": "switch.spa_pump",
|
||||
"name": "Düsen",
|
||||
"icon": "mdi:fan",
|
||||
"icon_color": "{% if is_state('switch.spa_pump','on') %}blue{% else %}grey{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "toggle"
|
||||
},
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-entity-card",
|
||||
"entity": "switch.spa_light",
|
||||
"name": "Licht",
|
||||
"icon": "mdi:lightbulb",
|
||||
"icon_color": "{% if is_state('switch.spa_light','on') %}amber{% else %}grey{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "toggle"
|
||||
},
|
||||
"fill_container": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "horizontal-stack",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_heater_mode",
|
||||
"name": "Heizmodus",
|
||||
"icon": "mdi:fire",
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_temperature_range",
|
||||
"name": "Temp-Bereich",
|
||||
"icon": "mdi:thermometer-lines",
|
||||
"fill_container": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "horizontal-stack",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_filter_time_1",
|
||||
"name": "Filter 1 Start",
|
||||
"icon": "mdi:filter",
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_filter_duration_1",
|
||||
"name": "Filter 1 Dauer",
|
||||
"icon": "mdi:timer-sand",
|
||||
"fill_container": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "horizontal-stack",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_filter_time_2",
|
||||
"name": "Filter 2 Start",
|
||||
"icon": "mdi:filter-outline",
|
||||
"fill_container": true
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-select-card",
|
||||
"entity": "select.spa_filter_duration_2",
|
||||
"name": "Filter 2 Dauer",
|
||||
"icon": "mdi:timer-sand",
|
||||
"fill_container": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-entity-card",
|
||||
"entity": "switch.whirlpool_filterzyklus_2_aktivieren",
|
||||
"name": "Filterzyklus 2 aktiv?",
|
||||
"tap_action": {
|
||||
"action": "toggle"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "grid",
|
||||
"title": "Energie",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-chips-card",
|
||||
"alignment": "justify",
|
||||
"chips": [
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:flash",
|
||||
"icon_color": "amber",
|
||||
"content": "{{ states('sensor.whirlpool_leistung') | float(0) | round(0) }} W"
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:counter",
|
||||
"icon_color": "purple",
|
||||
"content": "{{ states('sensor.whirlpool_energie') | float(0) | round(0) }} kWh ges."
|
||||
},
|
||||
{
|
||||
"type": "template",
|
||||
"icon": "mdi:fire",
|
||||
"icon_color": "red",
|
||||
"content": "{{ states('sensor.spa_heater_energy') | float(0) | round(0) }} kWh Heizer"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "custom:apexcharts-card",
|
||||
"header": {
|
||||
"show": true,
|
||||
"title": "Leistung 24h",
|
||||
"show_states": true
|
||||
},
|
||||
"graph_span": "24h",
|
||||
"yaxis": [
|
||||
{
|
||||
"min": 0,
|
||||
"decimals": 0,
|
||||
"apex_config": {
|
||||
"tickAmount": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"series": [
|
||||
{
|
||||
"entity": "sensor.whirlpool_leistung",
|
||||
"type": "area",
|
||||
"stroke_width": 2,
|
||||
"group_by": {
|
||||
"func": "avg",
|
||||
"duration": "5m"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "grid",
|
||||
"title": "Pflege & Wartung",
|
||||
"cards": [
|
||||
{
|
||||
"type": "custom:mushroom-template-card",
|
||||
"primary": "Letzte Wasserpflege",
|
||||
"secondary": "{% set d = states('input_datetime.whirlpool_letzte_wasserpflege') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}vor {{ days }} Tagen ({{ d }})",
|
||||
"icon": "mdi:water-pump",
|
||||
"icon_color": "{% set d = states('input_datetime.whirlpool_letzte_wasserpflege') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}{% if days > 7 %}red{% elif days > 5 %}orange{% else %}green{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "more-info",
|
||||
"entity": "input_datetime.whirlpool_letzte_wasserpflege"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-template-card",
|
||||
"primary": "Letzter Kartuschenwechsel",
|
||||
"secondary": "{% set d = states('input_datetime.whirlpool_letzter_kartuschenwechsel') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}vor {{ days }} Tagen ({{ d }})",
|
||||
"icon": "mdi:filter",
|
||||
"icon_color": "{% set d = states('input_datetime.whirlpool_letzter_kartuschenwechsel') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}{% if days > 30 %}red{% elif days > 25 %}orange{% else %}green{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "more-info",
|
||||
"entity": "input_datetime.whirlpool_letzter_kartuschenwechsel"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "custom:mushroom-template-card",
|
||||
"primary": "Letzter Wasserwechsel",
|
||||
"secondary": "{% set d = states('input_datetime.whirlpool_letzter_wasserwechsel') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}vor {{ days }} Tagen ({{ d }})",
|
||||
"icon": "mdi:waves",
|
||||
"icon_color": "{% set d = states('input_datetime.whirlpool_letzter_wasserwechsel') %}{% set days = (now() - strptime(d,'%Y-%m-%d') | as_local).days %}{% if days > 90 %}red{% elif days > 75 %}orange{% else %}green{% endif %}",
|
||||
"tap_action": {
|
||||
"action": "more-info",
|
||||
"entity": "input_datetime.whirlpool_letzter_wasserwechsel"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "conditional",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "state",
|
||||
"entity": "sensor.spa_fault_message",
|
||||
"state_not": ""
|
||||
}
|
||||
],
|
||||
"card": {
|
||||
"type": "custom:mushroom-template-card",
|
||||
"primary": "⚠️ Störung",
|
||||
"secondary": "{{ states('sensor.spa_fault_message') }}",
|
||||
"icon": "mdi:alert",
|
||||
"icon_color": "red",
|
||||
"fill_container": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Home",
|
||||
"type": "sections",
|
||||
|
||||
Reference in New Issue
Block a user