Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- esphome:
- name: kalorimemetry_termostaty
- friendly_name: kalorimetry a termostaty
- platformio_options:
- board_build.f_cpu: 240000000L
- on_boot:
- priority: -100
- then:
- - delay: 5s
- - logger.log:
- level: INFO
- format: "Start ESP – kontroluji stav termostatů"
- - if:
- condition:
- binary_sensor.is_on: termostat1
- then:
- - lambda: |-
- id(pump1_start) = millis();
- ESP_LOGI("boot", "Termostat 1 je ON po startu – zapinam Rele 1");
- - switch.turn_on: rele1
- - if:
- condition:
- binary_sensor.is_on: termostat2
- then:
- - lambda: |-
- id(pump2_start) = millis();
- ESP_LOGI("boot", "Termostat 2 je ON po startu – zapinam Rele 2");
- - switch.turn_on: rele2
- - if:
- condition:
- binary_sensor.is_on: termostat3
- then:
- - lambda: |-
- id(pump3_start) = millis();
- ESP_LOGI("boot", "Termostat 3 je ON po startu – zapinam Rele 3");
- - switch.turn_on: rele3
- - if:
- condition:
- binary_sensor.is_on: termostat4
- then:
- - lambda: |-
- id(pump4_start) = millis();
- ESP_LOGI("boot", "Termostat 4 je ON po startu – zapinam Rele 4");
- - switch.turn_on: rele4
- esp32:
- board: esp32dev
- framework:
- type: arduino
- # Enable logging
- logger:
- # Enable Home Assistant API
- api:
- encryption:
- key: "j5UGcOWlC5gVcN/NDsiXmhhHjCzd8PlQ+6PthqYlR4M="
- ota:
- - platform: esphome
- password: "0dba985dda5f42046ab8b3f0e28c1aef"
- wifi:
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- # Enable fallback hotspot (captive portal) in case wifi connection fails
- ap:
- ssid: "Kalorimetry Fallback Hotspot"
- password: "iJLvGdCnHGOk"
- time:
- - platform: sntp
- id: time_sntp
- external_components:
- - source: github://SzczepanLeon/esphome-components@version_4
- #- source: /config/esphome/external_components/5c086c68/components
- refresh: 0s
- components: [ wmbus ]
- one_wire:
- - platform: gpio
- pin: GPIO4
- wmbus:
- mosi_pin: GPIO13
- miso_pin: GPIO5
- clk_pin: GPIO2
- cs_pin: GPIO14
- gdo0_pin: GPIO15
- gdo2_pin: GPIO16 # gelb
- led_pin: GPIO0
- led_blink_time: "1s"
- all_drivers: False
- #sync_mode: True
- log_all: True
- globals:
- - id: pump1_start
- type: unsigned long
- restore_value: no
- initial_value: '0'
- - id: pump2_start
- type: unsigned long
- restore_value: no
- initial_value: '0'
- - id: pump3_start
- type: unsigned long
- restore_value: no
- initial_value: '0'
- - id: pump4_start
- type: unsigned long
- restore_value: no
- initial_value: '0'
- # =========================================================
- # kalorimetry
- # =========================================================
- sensor:
- # Kalorimetr 1
- - platform: wmbus
- meter_id: 0x83077062
- type: kamheat
- key: "347AF74DA7B2EEE1DC4CBEE88D9XXXX"
- sensors:
- - name: "kalorimetr1_t1_temperature_inlet"
- field: "t1_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr1_t2_temperature_outlet"
- field: "t2_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr1_total_energy_consumption"
- field: "total_energy_consumption"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr1_total_volume"
- field: "total_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- - name: "kalorimetr1_aktuální průtok"
- field: "volume_flow"
- accuracy_decimals: 3
- unit_of_measurement: "m³/h"
- device_class: "volume_flow_rate"
- state_class: "measurement"
- icon: "mdi:water"
- - name: "kalorimetr1_target_energy"
- field: "target_energy"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr1_target_volume"
- field: "target_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- # Kalorimetr 2
- - platform: wmbus
- meter_id: 0x83077063
- type: kamheat
- key: "C2203DA23074525F2FEC8D1A2D2AXXXX"
- sensors:
- - name: "kalorimetr2_t1_temperature_inlet"
- field: "t1_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr2_t2_temperature_outlet"
- field: "t2_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr2_total_energy_consumption"
- field: "total_energy_consumption"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr2_total_volume"
- field: "total_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- - name: "kalorimetr2_aktuální průtok"
- field: "volume_flow"
- accuracy_decimals: 3
- unit_of_measurement: "m³/h"
- device_class: "volume_flow_rate"
- state_class: "measurement"
- icon: "mdi:water"
- - name: "kalorimetr2_target_energy"
- field: "target_energy"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr2_target_volume"
- field: "target_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- # Kalorimetr 3
- - platform: wmbus
- meter_id: 0x83077064
- type: kamheat
- key: "7BEF3209F2FB93E78F4F28229682XXXX"
- sensors:
- - name: "kalorimetr3_t1_temperature_inlet"
- field: "t1_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr3_t2_temperature_outlet"
- field: "t2_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr3_total_energy_consumption"
- field: "total_energy_consumption"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr3_total_volume"
- field: "total_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- - name: "kalorimetr3_aktuální průtok"
- field: "volume_flow"
- accuracy_decimals: 3
- unit_of_measurement: "m³/h"
- device_class: "volume_flow_rate"
- state_class: "measurement"
- icon: "mdi:water"
- - name: "kalorimetr3_target_energy"
- field: "target_energy"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr3_target_volume"
- field: "target_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- # Kalorimetr 4
- - platform: wmbus
- meter_id: 0x83077065
- type: kamheat
- key: "0437DA39091431870F793353686FXXXX"
- sensors:
- - name: "kalorimetr4_t1_temperature_inlet"
- field: "t1_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr4_t2_temperature_outlet"
- field: "t2_temperature"
- accuracy_decimals: 2
- unit_of_measurement: "°C"
- device_class: "temperature"
- state_class: "measurement"
- icon: "mdi:thermometer"
- - name: "kalorimetr4_total_energy_consumption"
- field: "total_energy_consumption"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr4_total_volume"
- field: "total_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- - name: "kalorimetr4_aktuální průtok"
- field: "volume_flow"
- accuracy_decimals: 3
- unit_of_measurement: "m³/h"
- device_class: "volume_flow_rate"
- state_class: "measurement"
- icon: "mdi:water"
- - name: "kalorimetr4_target_energy"
- field: "target_energy"
- accuracy_decimals: 0
- unit_of_measurement: "kWh"
- device_class: "energy"
- state_class: "total_increasing"
- icon: "mdi:heat-pump"
- - name: "kalorimetr4_target_volume"
- field: "target_volume"
- accuracy_decimals: 2
- unit_of_measurement: "m³"
- device_class: "volume"
- state_class: "total_increasing"
- icon: "mdi:water"
- # =========================================================
- # dallas
- # =========================================================
- - platform: dallas_temp
- address: 0x0000000000000000 # adresa čidla
- name: "Teplota 1"
- unit_of_measurement: "°C"
- accuracy_decimals: 1
- # =========================================================
- # RELÉ (čerpadla)
- # =========================================================
- switch:
- - platform: gpio
- pin: GPIO27
- id: rele1
- name: "Čerpadlo 1"
- restore_mode: ALWAYS_OFF
- inverted: true
- - platform: gpio
- pin: GPIO17
- id: rele2
- name: "Čerpadlo 2"
- restore_mode: ALWAYS_OFF
- inverted: true
- - platform: gpio
- pin: GPIO18
- id: rele3
- name: "Čerpadlo 3"
- restore_mode: ALWAYS_OFF
- inverted: true
- - platform: gpio
- pin: GPIO19
- id: rele4
- name: "Čerpadlo 4"
- restore_mode: ALWAYS_OFF
- inverted: true
- - platform: restart
- name: "restart esp"
- # =========================================================
- # TERMOSTATY (suchý kontakt)
- # =========================================================
- binary_sensor:
- # -------------------------
- # TERMOSTAT 1
- # -------------------------
- - platform: gpio
- pin:
- number: GPIO32
- mode: INPUT_PULLUP
- inverted: true
- name: "Termostat 1"
- id: termostat1
- filters:
- - delayed_on: 1000ms
- - delayed_off: 1000ms
- on_press:
- then:
- - lambda: |-
- id(pump1_start) = millis();
- ESP_LOGI("termostat", "Termostat 1 sepnul");
- - logger.log:
- level: INFO
- format: "Zapinam Rele 1"
- - switch.turn_on: rele1
- on_release:
- then:
- - logger.log:
- level: INFO
- format: "Termostat 1 rozepnul – cekam na minimalni dobu behu Rele 1"
- - script.execute: vypnuti1
- # -------------------------
- # TERMOSTAT 2
- # -------------------------
- - platform: gpio
- pin:
- number: GPIO33
- mode: INPUT_PULLUP
- inverted: true
- name: "Termostat 2"
- id: termostat2
- filters:
- - delayed_on: 1000ms
- - delayed_off: 1000ms
- on_press:
- then:
- - lambda: |-
- id(pump2_start) = millis();
- ESP_LOGI("termostat", "Termostat 2 sepnul");
- - logger.log:
- level: INFO
- format: "Zapinam Rele 2"
- - switch.turn_on: rele2
- on_release:
- then:
- - logger.log:
- level: INFO
- format: "Termostat 2 rozepnul – cekam na minimalni dobu behu Rele 2"
- - script.execute: vypnuti2
- # -------------------------
- # TERMOSTAT 3
- # -------------------------
- - platform: gpio
- pin:
- number: GPIO25
- mode: INPUT_PULLUP
- inverted: true
- name: "Termostat 3"
- id: termostat3
- filters:
- - delayed_on: 1000ms
- - delayed_off: 1000ms
- on_press:
- then:
- - lambda: |-
- id(pump3_start) = millis();
- ESP_LOGI("termostat", "Termostat 3 sepnul");
- - logger.log:
- level: INFO
- format: "Zapinam Rele 3"
- - switch.turn_on: rele3
- on_release:
- then:
- - logger.log:
- level: INFO
- format: "Termostat 3 rozepnul – cekam na minimalni dobu behu Rele 3"
- - script.execute: vypnuti3
- # -------------------------
- # TERMOSTAT 4
- # -------------------------
- - platform: gpio
- pin:
- number: GPIO26
- mode: INPUT_PULLUP
- inverted: true
- name: "Termostat 4"
- id: termostat4
- filters:
- - delayed_on: 1000ms
- - delayed_off: 1000ms
- on_press:
- then:
- - lambda: |-
- id(pump4_start) = millis();
- ESP_LOGI("termostat", "Termostat 4 sepnul");
- - logger.log:
- level: INFO
- format: "Zapinam Rele 4"
- - switch.turn_on: rele4
- on_release:
- then:
- - logger.log:
- level: INFO
- format: "Termostat 4 rozepnul – cekam na minimalni dobu behu Rele 4"
- - script.execute: vypnuti4
- # =========================================================
- # MINIMÁLNÍ DOBA BĚHU 2 MINUTY (120 000 ms)
- # =========================================================
- script:
- - id: vypnuti1
- mode: restart
- then:
- - lambda: |-
- unsigned long elapsed = millis() - id(pump1_start);
- unsigned long remaining = (elapsed < 120000) ? (120000 - elapsed) / 1000 : 0;
- ESP_LOGI("script", "Rele 1: uz bezi %lu s, cekam jeste %lu s", elapsed / 1000, remaining);
- - wait_until:
- condition:
- lambda: 'return (millis() - id(pump1_start)) >= 120000;'
- timeout: 200s
- - if:
- condition:
- binary_sensor.is_on: termostat1
- then:
- - logger.log:
- level: WARN
- format: "Rele 1 – termostat stale sepnuty, NEVYPINAM!"
- else:
- - logger.log:
- level: INFO
- format: "Vypinam Rele 1 – minimalni doba behu splnena"
- - switch.turn_off: rele1
- - id: vypnuti2
- mode: restart
- then:
- - lambda: |-
- unsigned long elapsed = millis() - id(pump2_start);
- unsigned long remaining = (elapsed < 120000) ? (120000 - elapsed) / 1000 : 0;
- ESP_LOGI("script", "Rele 2: uz bezi %lu s, cekam jeste %lu s", elapsed / 1000, remaining);
- - wait_until:
- condition:
- lambda: 'return (millis() - id(pump2_start)) >= 120000;'
- timeout: 200s
- - if:
- condition:
- binary_sensor.is_on: termostat2
- then:
- - logger.log:
- level: WARN
- format: "Rele 2 – termostat stale sepnuty, NEVYPINAM!"
- else:
- - logger.log:
- level: INFO
- format: "Vypinam Rele 2 – minimalni doba behu splnena"
- - switch.turn_off: rele2
- - id: vypnuti3
- mode: restart
- then:
- - lambda: |-
- unsigned long elapsed = millis() - id(pump3_start);
- unsigned long remaining = (elapsed < 120000) ? (120000 - elapsed) / 1000 : 0;
- ESP_LOGI("script", "Rele 3: uz bezi %lu s, cekam jeste %lu s", elapsed / 1000, remaining);
- - wait_until:
- condition:
- lambda: 'return (millis() - id(pump3_start)) >= 120000;'
- timeout: 200s
- - if:
- condition:
- binary_sensor.is_on: termostat3
- then:
- - logger.log:
- level: WARN
- format: "Rele 3 – termostat stale sepnuty, NEVYPINAM!"
- else:
- - logger.log:
- level: INFO
- format: "Vypinam Rele 3 – minimalni doba behu splnena"
- - switch.turn_off: rele3
- - id: vypnuti4
- mode: restart
- then:
- - lambda: |-
- unsigned long elapsed = millis() - id(pump4_start);
- unsigned long remaining = (elapsed < 120000) ? (120000 - elapsed) / 1000 : 0;
- ESP_LOGI("script", "Rele 4: uz bezi %lu s, cekam jeste %lu s", elapsed / 1000, remaining);
- - wait_until:
- condition:
- lambda: 'return (millis() - id(pump4_start)) >= 120000;'
- timeout: 200s
- - if:
- condition:
- binary_sensor.is_on: termostat4
- then:
- - logger.log:
- level: WARN
- format: "Rele 4 – termostat stale sepnuty, NEVYPINAM!"
- else:
- - logger.log:
- level: INFO
- format: "Vypinam Rele 4 – minimalni doba behu splnena"
- - switch.turn_off: rele4
- captive_portal:
Advertisement
Add Comment
Please, Sign In to add comment