Wie ich erläutert habe in:
Ich steuere meine Heizung über zwei Zonen mit Pilotdrähten. Im Rahmen der Umstellung von Jeedom auf Home Assistant muss ich diese Relais daher mit Home Assistant steuern können.
Derzeit wird der Sonoff 4CH Pro von ESP Easy gesteuert, ich werde ihn bald auf ESP Home umstellen, aber derzeit ermöglicht ESP Easy die Schnittstelle mit Jeedom UND Home Assistant über MQTT.
Für die Konfiguration beziehe ich mich auf diesen Retex:
Ich steuere Relais über MQTT
Wie in der Retex oben, Es ist notwendig, die Entitäten zu konfigurieren, die es ermöglichen, Relais in Home Assistant wiederherzustellen, dies geschieht in der Datei mqtt.yaml
- name: "Relais 1 Heizung" einzigartig_id: switch.heizung.relais1 command_topic: "Heizung/gpio/12" state_topic: "Heizung/Relais1/Relais1" payload_on: "1" payload_off: "0" retain: true device_class: outlet device: name: "Heizung" Identifikatoren: "Heizung" - name: "Relais 2 Heizung" einzigartig_id: switch.heizung.relais2 command_topic: "Heizung/gpio/5" state_topic: "Heizung/Relais2/Relais2" payload_on: "1" payload_off: "0" retain: true device_class: outlet device: name: "Heizung" Identifikatoren: "Heizung" - name: "Relais 3 Heizung" einzigartig_id: switch.heizung.relais3 command_topic: "Heizung/gpio/4" state_topic: "Heizung/Relais3/Relais3" payload_on: "1" payload_off: "0" retain: true device_class: outlet device: name: "Heizung" Identifikatoren: "Heizung" - name: "Relais 4 Heizung" einzigartig_id: switch.heizung.relais4 command_topic: "Heizung/gpio/15" state_topic: "Heizung/Relais4/Relais4" payload_on: "1" payload_off: "0" retain: true device_class: outlet device: name: "Heizung" Identifikatoren: "Heizung"
In HA werden diese 4 Entitäten leicht wiederhergestellt
Ich erstelle input_select
In der Datei configuration.yaml deklariere ich die beiden Entitäten der Zonen und erlaube ihnen, vier mögliche Zustände zu haben.
input_select: Heizung_etage_mode: name: Heizung Bereich Etage - Optionsmodus: - "Komfort" - "Eco" - "Ohne Gel" - "Off" Icon: mdi:help-circle-outline Heizung_rdc_mode: name: Heizung Bereich Erdgeschoss - Optionsmodus: - "Komfort" - "Eco" - "Ohne Gel" - "Off" Icon: mdi:help-circle-outline
Dies fügt mir die beiden Einheiten hinzu:
- input_select.Heizung_rdc_mode
- input_select.Heizung_etage_mode
Ich personalisiere input_select
Ich versuche immer, die Dasboard-Fliesen optisch ansprechend zu gestalten, dafür scheint es unerlässlich, Farbe und schöne Icons zu setzen, die den Zuständen entsprechen.
Die Personalisierung erfolgt durch Hinzufügen dieser Zeilen in customize.yaml
input_select.Heizung_etage_mode: Templates: Icon: > if (state == 'Komfort') return 'mdi:fire'; if (state == 'Eco') return 'mdi:leaf'; if (state == 'Ohne Gel') return 'mdi:snowflake-thermometer'; if (state == 'Off') return 'mdi:power'; return 'mdi:help-circle-outline'; icon_color: > if (state == 'Komfort') return 'yellow'; if (state == 'Eco') return 'green'; if (state == 'Ohne Gel') return '#2196f3'; if (state == 'Off') return 'red'; input_select.Heizung_rdc_mode: Templates: Icon: > if (state == 'Komfort') return 'mdi:fire'; if (state == 'Eco') return 'mdi:leaf'; if (state == 'Ohne Gel') return 'mdi:snowflake-thermometer'; if (state == 'Off') return 'mdi:power'; return 'mdi:help-circle-outline'; icon_color: > if (state == 'Komfort') return 'yellow'; if (state == 'Eco') return 'green'; if (state == 'Ohne Gel') return '#2196f3'; if (state == 'Off') return 'red';
Ich steuere die Relais von den input_select
Die Zuordnung der Zonen (Etage und Chaussee) muss im Home Assistant erfolgen, die Auswahl der Relais zur Steuerung des Zonenmodus muss für den Nutzer transparent sein.
Zu diesem Zweck wird eine Automatisierung durch eine Statusänderung von input_select.chauffage_rdc_mode und eine weitere durch input_select.chauffage_etage_mode ausgelöst.
Durch diese Automatisierung wird der Status der Relais geändert, um die Reihenfolge zu senden, die der Kodierung des Pilotfadens entspricht. Dies wird erklärt hier.
Automatisierung Steuerung Heizung Fahrwerk
alias: Steuerung Heizung Fahrwerk Beschreibung: "" Trigger: - platform: state entity_id: - input_select.Heizung_rdc_mode Bedingung: [] Maßnahme: - if: - Bedingung: state entity_id: input_select.heizung_rdc_mode state: Komfort Then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_3_heizung - switch.heizung_relais_4_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_rdc_mode state: Eco then: - Dienststelle: switch.turn_on data: {} entity_id: - switch.heizung_relais_3_heizung - switch.heizung_relais_4_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_rdc_mode state: Außer Gel then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_4_heizung - service: switch.turn_on data: {} entity_id: - switch.heizung_relais_3_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_rdc_mode state: "Off" then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_3_heizung - service: switch.turn_on data: {} entity_id: - switch.heizung_relais_4_heizung - stop: "" Modus: Single
Automatisierung Steuerung Heizung Etage
alias: Steuerung Heizung Etage Beschreibung: "" Trigger: - platform: state entity_id: - input_select.Heizung_etage_mode Bedingung: [] Maßnahme: - if: - Bedingung: state entity_id: input_select.heizung_etage_mode state: Komfort Then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_2_heizung - switch.heizung_relais_1_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_etage_mode state: Eco then: - Dienststelle: switch.turn_on data: {} entity_id: - switch.heizung_relais_2_heizung - switch.heizung_relais_1_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_etage_mode state: Außer Gel then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_2_heizung - service: switch.turn_on data: {} entity_id: - switch.heizung_relais_1_heizung - stop: "" - if: - Bedingung: state entity_id: input_select.heizung_etage_mode state: "Off" then: - Dienststelle: switch.turn_off data: {} entity_id: - switch.heizung_relais_1_heizung - service: switch.turn_on data: {} entity_id: - switch.heizung_relais_2_heizung - stop: "" Modus: Single
Ich mache eine schöne Karte für das Dashboard
Hier ist das Ergebnis dessen, was ich mir als Karte wünsche:
An diesem Punkt weiß ich nicht, ob ich die Dropdown-Liste oder die Schaltflächen / Selektoren halten werde, beide funktionieren.
Kartencode für den Bereich Erdgeschoss
Typ: custom:stack-in-card mode: vertikale Karten: - Typ: custom:auto-entities show_empty: false card: Typ: custom:mushroom-chips-card view_layout: grid-area: Chips Alignment: center card_param: chips filter: Template: > {% set ns = namespace(select=[],entity="input_select.chauffage_rdc_mode") %} {% for opt in state_attr(ns.entity, 'options') %} {% set icon = iif(opt== 'Komfort', 'mdi:fire', icon) %} {% set icon_color_select = iif(opt== 'Komfort', 'yellow', icon_color_select) %} {% set icon = iif(opt== 'Off', 'mdi:power', icon) %} {% set icon_color_select = iif(opt== 'Off', 'red', icon_color_select) %} {% set icon = iif(opt== 'Eco', 'mdi:leaf', icon) %} {% set icon_color_select = iif(opt== 'Eco', 'green', icon_color_select) %} {% set icon = iif(opt== 'Ohne Gel', 'mdi:snowflake-thermometer', icon) %} {% set icon_color_select = iif(opt== 'Ohne Gel', 'blue', icon_color_select) %} {% set ns.select = ns.select + [ { "Typ": "template", "icon": icon, "entity": ns.entity, "icon_color": '{{ iif(is_state("' ~ ns.entity ~ '", "' ~ opt ~ '"), "' ~ icon_color_select ~ '", "disabled") }}', "tap_action": { "Aktion": "Call-Service", "Service": "input_select.select_option", "service_data": { "entity_id": ns.entity, "Option": opt } }, "card_mod": { "Stil": 'ha-card { {% if is_state( "' ~ ns.entity ~ '" , "' ~ opt ~ '" ) %} --chip-background: rgba(var(--rgb-grey), 0.1); {% else %} --chip-background: rgba(var(--mush-rgb-state-entity), 0.3); {% endif %} }' } } ] %} {% endfor %} {{ ns.select }} - Typ: entities entities: - entity: input_select.Heizung_rdc_mode
Kartencode für die Zone „Etage“
Typ: custom:stack-in-card mode: vertikale Karten: - Typ: custom:auto-entities show_empty: false card: Typ: custom:mushroom-chips-card view_layout: grid-area: Chips Alignment: center card_param: chips filter: Template: > {% set ns = namespace(select=[],entity="input_select.chauffage_etage_mode") %} {% for opt in state_attr(ns.entity, 'options') %} {% set icon = iif(opt== 'Komfort', 'mdi:fire', icon) %} {% set icon_color_select = iif(opt== 'Komfort', 'yellow', icon_color_select) %} {% set icon = iif(opt== 'Off', 'mdi:power', icon) %} {% set icon_color_select = iif(opt== 'Off', 'red', icon_color_select) %} {% set icon = iif(opt== 'Eco', 'mdi:leaf', icon) %} {% set icon_color_select = iif(opt== 'Eco', 'green', icon_color_select) %} {% set icon = iif(opt== 'Ohne Gel', 'mdi:snowflake-thermometer', icon) %} {% set icon_color_select = iif(opt== 'Ohne Gel', 'blue', icon_color_select) %} {% set ns.select = ns.select + [ { "Typ": "template", "icon": icon, "entity": ns.entity, "icon_color": '{{ iif(is_state("' ~ ns.entity ~ '", "' ~ opt ~ '"), "' ~ icon_color_select ~ '", "disabled") }}', "tap_action": { "Aktion": "Call-Service", "Service": "input_select.select_option", "service_data": { "entity_id": ns.entity, "Option": opt } }, "card_mod": { "Stil": 'ha-card { {% if is_state( "' ~ ns.entity ~ '" , "' ~ opt ~ '" ) %} --chip-background: rgba(var(--rgb-grey), 0.1); {% else %} --chip-background: rgba(var(--mush-rgb-state-entity), 0.3); {% endif %} }' } } ] %} {% endfor %} {{ ns.select }} - Typ: entities entities: - entity: input_select.Heizung_etage_mode
Schlussfolgerung
Hier schließe ich einen wichtigen Schritt bei der Integration meiner Heizung in den Home Assistant ab. Ich werde mich nun mit der Steuerung dieser Heizung auf der Grundlage der anwesenden oder nicht anwesenden Personen, der Stunden, Tage und Abwesenheitszeiten (…-Ferien) befassen.





