Files
home-assistant-config/.storage/lovelace.dashboard_spa
T
2026-05-21 11:12:07 +02:00

341 lines
14 KiB
Plaintext

{
"version": 1,
"minor_version": 1,
"key": "lovelace.dashboard_spa",
"data": {
"config": {
"views": [
{
"title": "Whirlpool",
"type": "sections",
"max_columns": 2,
"path": "whirlpool",
"icon": "mdi:hot-tub",
"sections": [
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Status & Steuerung"
},
{
"type": "custom:mushroom-chips-card",
"chips": [
{
"type": "template",
"icon": "mdi:ph",
"content": "{{ states('sensor.whirlpool_ph') | float | round(1) }}",
"icon_color": "blue"
},
{
"type": "template",
"icon": "mdi:water-percent",
"content": "{{ states('sensor.whirlpool_oxydo_reduktionspotenzial') | int }} mV",
"icon_color": "purple"
},
{
"type": "template",
"icon": "mdi:flash",
"content": "{{ states('sensor.whirlpool_leistung') | int(0) }} W",
"icon_color": "amber"
},
{
"type": "entity",
"entity": "binary_sensor.isonline_2",
"icon": "mdi:wifi"
}
],
"alignment": "center"
},
{
"type": "custom:mushroom-template-card",
"primary": "{% set ph = states('sensor.whirlpool_ph') | float(0) %} {% set orp = states('sensor.whirlpool_oxydo_reduktionspotenzial') | float(0) %} {% set online = is_state('binary_sensor.isonline_2', 'on') %} {% if not online %} Offline ⚠️ {% elif ph >= 7.0 and ph <= 7.6 and orp >= 550 and orp < 650 %} Badespaß bereit! 🛁 {% else %} Wasser prüfen! ⚠️ {% endif %}",
"secondary": "{% set temp = states('sensor.spa_current_temperature') | float | round(1) %} {% set ziel = states('sensor.spa_desired_temperature') | float | round(1) %} {% set rate = states('sensor.whirlpool_heizrate') | float(0) | round(2) %} {{ temp }}°C → Ziel {{ ziel }}°C {%- if rate > 0 %} ↑ {{ rate }} °C/min {%- elif rate < 0 %} ↓ {{ rate | abs }} °C/min {%- endif %}",
"icon": "mdi:hot-tub",
"icon_color": "{% set ph = states('sensor.whirlpool_ph') | float(0) %} {% set orp = states('sensor.whirlpool_oxydo_reduktionspotenzial') | float(0) %} {% if not is_state('binary_sensor.isonline_2', 'on') %} grey {% elif ph >= 7.0 and ph <= 7.6 and orp <= 650 %} green {% elif (ph < 6.8 or ph > 7.9) or orp < 550 %} red {% else %} orange {% endif %}",
"vertical": true,
"grid_options": {
"columns": 12,
"rows": 2
}
},
{
"type": "custom:mushroom-climate-card",
"entity": "climate.spa_thermostat",
"name": "Temperatur",
"show_temperature_control": true,
"fill_container": false,
"tap_action": {
"action": "more-info"
},
"layout": "horizontal"
},
{
"type": "horizontal-stack",
"cards": [
{
"type": "custom:mushroom-entity-card",
"entity": "switch.spa_pump",
"name": "Düsen",
"icon": "mdi:pump"
},
{
"type": "custom:mushroom-entity-card",
"entity": "switch.spa_light",
"name": "Licht",
"icon": "mdi:lightbulb-on"
}
]
},
{
"type": "horizontal-stack",
"cards": [
{
"type": "custom:mushroom-entity-card",
"entity": "sensor.spa_filter_1",
"name": "Filter 1"
},
{
"type": "custom:mushroom-entity-card",
"entity": "sensor.spa_ozone",
"name": "UVC/Ozon"
},
{
"type": "custom:mushroom-entity-card",
"entity": "sensor.spa_circulation_pump",
"name": "Zirkulation"
}
]
},
{
"type": "heading",
"heading": "Zeitpläne & Wartung"
},
{
"type": "custom:scheduler-card",
"include": [
"climate.spa_thermostat",
"switch.spa_pump"
],
"title": "Whirlpool Automatik"
},
{
"type": "heading",
"heading": "Ambiente"
},
{
"type": "custom:mushroom-light-card",
"entity": "light.ruheplatz_lichterkette",
"name": "Lichterkette",
"show_brightness_control": true
},
{
"type": "custom:mushroom-light-card",
"entity": "light.ruheplatz_wegbeleuchtung",
"name": "Wegbeleuchtung",
"show_brightness_control": true
},
{
"type": "markdown",
"content": "ICO Kalibrierung: 08.05.2026"
}
]
},
{
"type": "grid",
"cards": [
{
"type": "heading",
"heading": "Wasseranalyse & Trends"
},
{
"type": "custom:apexcharts-card",
"graph_span": "24h",
"header": {
"show": true,
"show_states": true,
"colorize_states": true
},
"yaxis": [
{
"id": "ph",
"min": 6.5,
"max": 8.5,
"decimals": 1,
"apex_config": {
"tickAmount": 3
},
"align_to": 1
},
{
"id": "orp",
"min": 400,
"max": 700,
"opposite": true,
"decimals": 0,
"apex_config": {
"tickAmount": 3
},
"align_to": 100
}
],
"series": [
{
"entity": "sensor.whirlpool_ph",
"name": "pH",
"yaxis_id": "ph",
"color": "#2196f3"
},
{
"entity": "sensor.whirlpool_oxydo_reduktionspotenzial",
"name": "ORP",
"yaxis_id": "orp",
"color": "#9c27b0"
}
],
"apex_config": {
"stroke": {
"curve": "smooth"
},
"annotations": {
"yaxis": [
{
"y": 7,
"y2": 7.6,
"borderColor": "#2196f3",
"fillColor": "#2196f3",
"opacity": 0.12,
"label": {
"text": "pH",
"style": {
"background": "#2196f3",
"color": "#fff"
}
}
},
{
"y": 650,
"y2": 550,
"yAxisIndex": 1,
"borderColor": "#9c27b0",
"fillColor": "#9c27b0",
"opacity": 0.12,
"label": {
"text": "ORP",
"style": {
"background": "#9c27b0",
"color": "#fff"
}
}
}
]
}
}
},
{
"type": "heading",
"heading": "Pflege-Protokoll"
},
{
"type": "custom:mushroom-template-card",
"primary": "{% set last = states('input_datetime.whirlpool_letzte_wasserpflege') %} {% if last in ['unknown', ''] %} Datum setzen {% else %} Letzte Pflege: vor {{ ((now().date() - strptime(last[:10], '%Y-%m-%d').date()).days) }} Tagen {% endif %}",
"secondary": "{% set ph = states('sensor.whirlpool_ph') | float(7.2) %} {% set orp = states('sensor.whirlpool_oxydo_reduktionspotenzial') | float(700) %} 🧪 pH: {{ '✓' if 7.0 <= ph <= 7.6 else '⚠️ ' ~ ph | round(1) }} 💊 Brom: {{ '✓' if orp < 650 and orp >= 550 else '⚠️ ' ~ orp | round(0) ~ ' mV' }}",
"icon": "mdi:water-check",
"multiline_secondary": true,
"icon_color": "{% set ph = states('sensor.whirlpool_ph') | float(7.2) %} {% if 7.0 <= ph <= 7.6 %} green {% else %} orange {% endif %}",
"fill_container": true,
"grid_options": {
"columns": 12,
"rows": 2
}
},
{
"type": "horizontal-stack",
"cards": [
{
"type": "custom:mushroom-entity-card",
"entity": "input_datetime.whirlpool_letzte_wasserpflege",
"name": "Pflege erledigt",
"icon": "mdi:calendar-check"
}
]
},
{
"type": "heading",
"heading": "Dosierung (1.000L)"
},
{
"type": "custom:mushroom-template-card",
"primary": "Aktueller Dosiervorschlag",
"secondary": "{% set ph = states('sensor.whirlpool_ph') | float(7.2) %} {% if ph > 7.6 %}\n 🧪 pH: {{ ((ph - 7.4) / 0.1 * 10) | round(0) }}g pH-Minus\n{% elif ph < 7.0 %}\n 🧪 pH: {{ ((7.2 - ph) / 0.1 * 10) | round(0) }}g pH-Plus\n{% else %}\n 🧪 pH: OK ✓\n{% endif %}\n💊 Brom: {{ '3-4 Tabs nachlegen' if states('sensor.whirlpool_oxydo_reduktionspotenzial')|float < 600 else 'OK ✓' }}",
"icon": "mdi:flask-plus",
"icon_color": "orange",
"multiline_secondary": true,
"fill_container": true,
"grid_options": {
"columns": 12,
"rows": 2
}
},
{
"type": "custom:mushroom-template-card",
"primary": "Samstag Vormittag: Routine",
"secondary": "① 1 Beutel Wasserrein (Granulat)\n② 10ml Kristall-Klar (Flüssig)\n③ Brom-Tabletten prüfen (3-4 Stk)\n④ TA-Wert prüfen (Alka-Plus?)\n",
"icon": "mdi:calendar-star",
"icon_color": "teal",
"multiline_secondary": true,
"fill_container": true,
"grid_options": {
"columns": 12,
"rows": 3
}
},
{
"type": "custom:mushroom-template-card",
"primary": "Neu-Befüllung / Erstbefüllung",
"secondary": "① 25ml Kalkex (Flüssig)\n② pH auf 7,2 einstellen\n③ 1 Beutel Wasserrein (Schock)\n④ 4 Brom-Tabletten (Schwimmer)\n",
"icon": "mdi:waves",
"icon_color": "blue",
"multiline_secondary": true,
"fill_container": true,
"grid_options": {
"columns": 12,
"rows": 2
}
},
{
"type": "horizontal-stack",
"cards": [
{
"type": "custom:mushroom-entity-card",
"entity": "input_datetime.whirlpool_letzter_kartuschenwechsel",
"name": "Filterwechsel",
"icon": "mdi:filter-cog"
}
]
},
{
"type": "horizontal-stack",
"cards": [
{
"type": "custom:mushroom-entity-card",
"entity": "input_datetime.whirlpool_letzter_wasserwechsel",
"name": "Wasserwechsel",
"icon": "mdi:water-sync"
}
]
}
]
},
{
"type": "grid",
"cards": []
}
],
"cards": []
}
]
}
}
}