View difference between Paste ID: kkLx10ss and zGqsmzLL
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