341 lines
14 KiB
Plaintext
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": []
|
|
}
|
|
]
|
|
}
|
|
}
|
|
} |