SHOW:
|
|
- or go back to the newest paste.
| 1 | Config.yaml: | |
| 2 | climate: | |
| 3 | # | |
| 4 | - platform: mqtt | |
| 5 | modes: | |
| 6 | - "off" | |
| 7 | - "heat" | |
| 8 | name: Dormitor HVAC | |
| 9 | current_temperature_topic: "HVAC/dormitor/ct" | |
| 10 | mode_command_topic: "HVAC/dormitor/mode/set" | |
| 11 | temperature_command_topic: "HVAC/dormitor/st" | |
| 12 | min_temp: 12 | |
| 13 | max_temp: 26 | |
| 14 | value_template: "{{ value }}"
| |
| 15 | temp_step: 0.5 | |
| 16 | # | |
| 17 | - platform: mqtt | |
| 18 | modes: | |
| 19 | - "off" | |
| 20 | - "heat" | |
| 21 | name: Copii HVAC | |
| 22 | current_temperature_topic: "HVAC/copii/ct" | |
| 23 | mode_command_topic: "HVAC/copii/mode/set" | |
| 24 | temperature_command_topic: "HVAC/copii/st" | |
| 25 | min_temp: 12 | |
| 26 | max_temp: 26 | |
| 27 | value_template: "{{ value }}"
| |
| 28 | temp_step: 0.5 | |
| 29 | # | |
| 30 | - platform: mqtt | |
| 31 | modes: | |
| 32 | - "off" | |
| 33 | - "heat" | |
| 34 | name: Sufragerie HVAC | |
| 35 | current_temperature_topic: "HVAC/sufragerie/ct" | |
| 36 | mode_command_topic: "HVAC/dormitor/sufragerie/set" | |
| 37 | temperature_command_topic: "HVAC/sufragerie/st" | |
| 38 | min_temp: 12 | |
| 39 | max_temp: 26 | |
| 40 | value_template: "{{ value }}"
| |
| 41 | temp_step: 0.5 | |
| 42 | # | |
| 43 | binary_sensor: | |
| 44 | # | |
| 45 | - platform: mqtt | |
| 46 | name: copii_geam | |
| 47 | state_topic: 'zigbee2mqtt/Copii_geam' | |
| 48 | value_template: "{{ value_json.contact }}"
| |
| 49 | payload_on: false | |
| 50 | payload_off: true | |
| 51 | qos: 0 | |
| 52 | retain: true | |
| 53 | # | |
| 54 | - platform: mqtt | |
| 55 | name: dormitor_geam | |
| 56 | state_topic: 'zigbee2mqtt/Dormitor_geam' | |
| 57 | value_template: "{{ value_json.contact }}"
| |
| 58 | payload_on: false | |
| 59 | payload_off: true | |
| 60 | qos: 0 | |
| 61 | retain: true | |
| 62 | # | |
| 63 | - platform: mqtt | |
| 64 | name: sufragerie_geam | |
| 65 | state_topic: 'zigbee2mqtt/Sufragerie_geam' | |
| 66 | value_template: "{{ value_json.contact }}"
| |
| 67 | payload_on: false | |
| 68 | payload_off: true | |
| 69 | qos: 0 | |
| 70 | retain: true | |
| 71 | # | |
| 72 | ||
| 73 | ||
| 74 | ||
| 75 | Automations: | |
| 76 | # | |
| 77 | - alias: temp_dormitor | |
| 78 | trigger: | |
| 79 | - platform: state | |
| 80 | entity_id: sensor.0x00158d000465809a_temperature | |
| 81 | action: | |
| 82 | service: mqtt.publish | |
| 83 | data: | |
| 84 | payload: "{{ states('sensor.0x00158d000465809a_temperature') }}"
| |
| 85 | topic: "HVAC/dormitor/ct" | |
| 86 | qos: 0 | |
| 87 | retain: true | |
| 88 | # | |
| 89 | - alias: temp_copii | |
| 90 | trigger: | |
| 91 | - platform: state | |
| 92 | entity_id: sensor.0x00158d000464b329_temperature | |
| 93 | action: | |
| 94 | service: mqtt.publish | |
| 95 | data: | |
| 96 | payload: "{{ states('sensor.0x00158d000464b329_temperature') }}"
| |
| 97 | topic: "HVAC/copii/ct" | |
| 98 | qos: 0 | |
| 99 | retain: true | |
| 100 | # | |
| 101 | - alias: temp_sufragerie | |
| 102 | trigger: | |
| 103 | - platform: state | |
| 104 | entity_id: sensor.0x00158d00045d01f4_temperature | |
| 105 | action: | |
| 106 | service: mqtt.publish | |
| 107 | data: | |
| 108 | payload: "{{ states('sensor.0x00158d00045d01f4_temperature') }}"
| |
| 109 | topic: "HVAC/sufragerie/ct" | |
| 110 | qos: 0 | |
| 111 | retain: true | |
| 112 | # | |
| 113 | - alias: trv_copii | |
| 114 | trigger: | |
| 115 | - platform: state | |
| 116 | entity_id: climate.copii_hvac, sensor.0x00158d000464b329_temperature, binary_sensor.copii_geam | |
| 117 | action: | |
| 118 | - service: mqtt.publish | |
| 119 | data: | |
| 120 | payload_template: >- | |
| 121 | {% set targetTemp = state_attr('climate.copii_hvac', 'temperature') %}
| |
| 122 | {% set currentTemp = states('sensor.0x00158d000464b329_temperature') %}
| |
| 123 | {% set window = states('binary_sensor.copii_geam') %}
| |
| 124 | {% if targetTemp == None or currentTemp == None or currentTemp == 'unknown' or window == None %}
| |
| 125 | {{ {"system_mode": "heat"} }}
| |
| 126 | {% else %}
| |
| 127 | {% if targetTemp|float > currentTemp|float and window == 'off' %}
| |
| 128 | {{ {"system_mode": "heat"} }}
| |
| 129 | {% else %}
| |
| 130 | {{ {"system_mode": "off"} }}
| |
| 131 | {% endif %}
| |
| 132 | {% endif %}
| |
| 133 | topic: "zigbee2mqtt/Copii/set" | |
| 134 | - event: FIRE_OT_RECALC_EVENT | |
| 135 | # | |
| 136 | - alias: trv_dormitor | |
| 137 | trigger: | |
| 138 | - platform: state | |
| 139 | entity_id: climate.dormitor_hvac, sensor.0x00158d000465809a_temperature, binary_sensor.dormitor_geam | |
| 140 | action: | |
| 141 | - service: mqtt.publish | |
| 142 | data: | |
| 143 | payload_template: >- | |
| 144 | {% set targetTemp = state_attr('climate.dormitor_hvac', 'temperature') %}
| |
| 145 | {% set currentTemp = states('sensor.0x00158d000465809a_temperature') %}
| |
| 146 | {% set window = states('binary_sensor.dormitor_geam') %}
| |
| 147 | {% if targetTemp == None or currentTemp == None or currentTemp == 'unknown' or window == None %}
| |
| 148 | {{ {"system_mode": "heat"} }}
| |
| 149 | {% else %}
| |
| 150 | {% if targetTemp|float > currentTemp|float and window == 'off' %}
| |
| 151 | {{ {"system_mode": "heat"} }}
| |
| 152 | {% else %}
| |
| 153 | {{ {"system_mode": "off"} }}
| |
| 154 | {% endif %}
| |
| 155 | {% endif %}
| |
| 156 | topic: "zigbee2mqtt/Dormitor/set" | |
| 157 | - event: FIRE_OT_RECALC_EVENT | |
| 158 | # | |
| 159 | - alias: trv_sufragerie | |
| 160 | trigger: | |
| 161 | - platform: state | |
| 162 | entity_id: climate.sufragerie_hvac, sensor.0x00158d00045d01f4_temperature, binary_sensor.sufragerie_geam | |
| 163 | action: | |
| 164 | - service: mqtt.publish | |
| 165 | data: | |
| 166 | payload_template: >- | |
| 167 | {% set targetTemp = state_attr('climate.sufragerie_hvac', 'temperature') %}
| |
| 168 | {% set currentTemp = states('sensor.0x00158d00045d01f4_temperature') %}
| |
| 169 | {% set window = states('binary_sensor.sufragerie_geam') %}
| |
| 170 | {% if targetTemp == None or currentTemp == None or currentTemp == 'unknown' or window == None %}
| |
| 171 | {{ {"system_mode": "heat"} }}
| |
| 172 | {% else %}
| |
| 173 | {% if targetTemp|float > currentTemp|float and window == 'off' %}
| |
| 174 | {{ {"system_mode": "heat"} }}
| |
| 175 | {% else %}
| |
| 176 | {{ {"system_mode": "off"} }}
| |
| 177 | {% endif %}
| |
| 178 | {% endif %}
| |
| 179 | topic: "zigbee2mqtt/Sufragerie/set" | |
| 180 | - event: FIRE_OT_RECALC_EVENT | |
| 181 | # | |
| 182 | - alias: OpenTherm Calculation | |
| 183 | trigger: | |
| 184 | - platform: event | |
| 185 | event_type: FIRE_OT_RECALC_EVENT | |
| 186 | action: | |
| 187 | - service: mqtt.publish | |
| 188 | data: | |
| 189 | payload_template: >- | |
| 190 | {% set targetTemp1 = state_attr('climate.dormitor_hvac', 'temperature') %}
| |
| 191 | {% set currentTemp1 = states('sensor.0x00158d000465809a_temperature') %}
| |
| 192 | {% set window1 = states('binary_sensor.dormitor_geam') %}
| |
| 193 | {% set targetTemp2 = state_attr('climate.copii_hvac', 'temperature') %}
| |
| 194 | {% set currentTemp2 = states('sensor.0x00158d000464b329_temperature') %}
| |
| 195 | {% set window2 = states('binary_sensor.copii_geam') %}
| |
| 196 | {% set targetTemp3 = state_attr('climate.sufragerie_hvac', 'temperature') %}
| |
| 197 | {% set currentTemp3 = states('sensor.0x00158d00045d01f4_temperature') %}
| |
| 198 | {% set window3 = states('binary_sensor.sufragerie_geam') %}
| |
| 199 | {% if targetTemp1|float > currentTemp1|float and window1 == 'off' %}
| |
| 200 | {% set result1 = targetTemp1 %}
| |
| 201 | {% else %}
| |
| 202 | {% set result1 = '30' %}
| |
| 203 | {% endif %}
| |
| 204 | {% if targetTemp2|float > currentTemp2|float and window2 == 'off' %}
| |
| 205 | {% set result2 = targetTemp2 %}
| |
| 206 | {% else %}
| |
| 207 | {% set result2 = '30' %}
| |
| 208 | {% endif %}
| |
| 209 | {% if targetTemp3|float > currentTemp3|float and window3 == 'off' %}
| |
| 210 | {% set result3 = targetTemp3 %}
| |
| 211 | {% else %}
| |
| 212 | {% set result3 = '30' %}
| |
| 213 | {% endif %}
| |
| 214 | {% if result1 == [result1|float, result2|float, result3|float]|min and result1 < 30 %}
| |
| 215 | {% set result = (targetTemp1,currentTemp1|float) %}
| |
| 216 | {% else %}
| |
| 217 | {% if result2 == [result1|float, result2|float, result3|float]|min and result2 < 30 %}
| |
| 218 | {% set result = (targetTemp2,currentTemp2|float) %}
| |
| 219 | {% else %}
| |
| 220 | {% if result3 == [result1|float, result2|float, result3|float]|min and result3 < 30 %}
| |
| 221 | {% set result = (targetTemp3,currentTemp3|float) %}
| |
| 222 | {% else %}
| |
| 223 | {% set result = (1.0,20.0) %}
| |
| 224 | {% endif%}
| |
| 225 | {% endif %}
| |
| 226 | {% endif %}
| |
| 227 | {{ result }}
| |
| 228 | topic: "HVAC/otresult" | |
| 229 | retain: true | |
| 230 | # | |
| 231 | - alias: OpenTherm Force Recalc | |
| 232 | trigger: | |
| 233 | - platform: time_pattern | |
| 234 | seconds: "/20" | |
| 235 | action: | |
| 236 | - event: FIRE_OT_RECALC_EVENT | |
| 237 | # | |
| 238 | - alias: OpenTherm Send | |
| 239 | trigger: | |
| 240 | - platform: mqtt | |
| 241 | topic: "HVAC/otresult" | |
| 242 | action: | |
| 243 | - service: mqtt.publish | |
| 244 | data: trigger.data.split(',')[0]
| |
| 245 | topic: "opentherm-thermostat/setpoint-temperature/set" | |
| 246 | retain: false | |
| 247 | qos: 0 | |
| 248 | - service: mqtt.publish | |
| 249 | data: trigger.data.split(',')[1]
| |
| 250 | topic: "opentherm-thermostat/current-temperature/set" | |
| 251 | retain: false | |
| 252 | qos: 0 |