Интеграция счетчика тепла в Home Assistant

от автора

Изначально застройщиком в квартире был установлен счетчик тепла Пульс СТК-15-М с интерфейсом Meter-Bus (M-bus). Поиски в Интернете не дали простого ответа как удаленно считывать показания.

Примерно через 3,5 года эксплуатации на счетчике закончилась батарейка (наверное я слишком часто нажимал кнопку активации экрана/перебора параметров) и также подходил срок поверки. Стоимость поверки с демонтажом/монтажом, заменой батарейки и пломбировкой не сильно отличается от стоимости нового счетчика, поэтому было принято решение о покупке нового счетчика Пульс СТК-15-И с интерфейсом типа токовая петля по ГОСТ IEC 61107-2011.

С этим счетчиком все гораздо проще: он выдает один импульс на 1 кВт*ч потребленной тепловой энергии (0,001 Гкал, хотя строго говоря должно быть 1 Гкал = 1163 кВт·ч https://ru.wikipedia.org/wiki/Калория). Недостаток этого варианта счетчика — не передаются дополнительные параметры: температуры теплоносителя, скорость потока и т.д. Для получения температуры теплоносителя дополнительно используются 2 датчики температуры DS18B20.

Железо:

  • Плата ESP8266 NodeMCU V3

  • Датчики температуры DS18B20 2шт.

  • Резистор номиналом от 4 до 10 кОм

Схема соединения элементов

Схема соединения элементов

Красный провод счетчика подключен к пину RX платы ESP8266, черный к GND. Датчики температуры прикреплены к входящему/исходящему трубопроводам рядом со счетчиком.

Прошивка — ESPHome.

JAML конфигурация:

substitutions:   plug_name: shw   dlspin: GPIO13 #D7   ledpin: GPIO2 #D4   htcpin: GPIO3 #RX    esphome:   name: uc-shw  esp8266:   board: nodemcuv2  # Enable logging logger:   level: WARN  # Enable Home Assistant API api:  ota:   password: "******************************"  wifi:   ssid: !secret wifi_ssid2   password: !secret wifi_password2    # Enable fallback hotspot (captive portal) in case wifi connection fails   ap:     ssid: "UC-Shw Fallback Hotspot"     password: "************"  captive_portal:  web_server:   port: 80  dallas:   - pin: $dlspin      update_interval: 10s    sensor:   - platform: uptime     name: ${plug_name}_uptime    - platform: wifi_signal     name: ${plug_name}_wifi_signal     update_interval: 10s        - platform: dallas     address: 0xe53c01e07693fa28     name: ${plug_name}_heat_temp_in    - platform: dallas     address: 0xba3c01e0769c4b28     name: ${plug_name}_heat_temp_out      - platform: pulse_counter     pin:        number: $htcpin       inverted: true       mode:         input: true         pullup: true     name: ${plug_name}_pulses_heat     accuracy_decimals: 0     id: pulse_heat                 - platform: integration     name: ${plug_name}_pulses_heat_integr     sensor: pulse_heat     time_unit: min     id: pulses_heat     accuracy_decimals: 0     unit_of_measurement: kWh     restore: true      text_sensor:   - platform: wifi_info     ip_address:       name: ${plug_name}_ip     ssid:       name: ${plug_name}_ssid     mac_address:       name: ${plug_name}_mac   - platform: version     name: ${plug_name}_version      status_led:   pin: $ledpin

В Home Assistant в configuration.yaml создадим utility_meter для накопления информации о потребленной тепловой энергии за день, неделю, месяц, год:

    utility_meter:       daily_heating:         source: sensor.shw_pulses_heat_integr         cycle: daily                weekly_heating:         source: sensor.shw_pulses_heat_integr         cycle: weekly                monthly_heating:         source: sensor.shw_pulses_heat_integr         cycle: monthly                yearly_heating:         source: sensor.shw_pulses_heat_integr         cycle: yearly

Также создадим Template сенсор для пересчета собранных импульсов в реальные показания счетчика, т.к. изначально были уже не нулевые показания. В моем случае это выглядит так:

sensor:   - platform: template        heat_real:               friendly_name: "Показание счетчика тепла"               unit_of_measurement: 'GCal'               value_template: >                 {{(states('sensor.yearly_heating')|float*0.001 + 0.384) | round(3)}}

В итоге в Home Assistant видим следующую информацию:

Отображение показаний счетчика в Home Assistant

Отображение показаний счетчика в Home Assistant

Кроме того, к данному микроконтроллеру подключены датчик температуры горячей воды на DS18B20, датчик движения на HC-SR501, датчик температуры/влажности на AHT10, считаются импульсы с выхода счетчика воды Пульс 15УИ-80 и планируется управление подсветкой зеркала. Но это уже другая история.


ссылка на оригинал статьи https://habr.com/ru/articles/799957/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *