Одно из самых простых и необходимых устройств, делающее любой дом умным — это управляемая розетка. В большинстве случаев это устройство дешевле купить, но если нужно очень быстро и есть особые требования, то добро пожаловать в мир DIY.
Моя цель — это снизить затраты на обогрев одной комнаты масляным электрическим радиатором с пиковой мощностью 3 кВ. В дешевых умных розетках нагрузкой управляют реле на 10А, что маловато в моем случае.
А у меня в наличии есть твердотельное реле на 40А. И хотя от него больше проблем чем реальной необходмости для этого проекта применить его было самым быстрым решением, т.к. у него уже есть готовые клемники для подключения мощной нагрузки. Минус этого реле — это внутреннее сопротивление его тиристора которое вызывает сильный нагрев и эксплуатация без радиатора невозможна. Поэтому пришлось прикрутить его на кусок гипсокартонного профиля который стал безобразным корпусом всего устройства. Решение временное пока не приедет zigbee розетка на обычном реле. Кстати, если требования к мощности не более 5А, то проще купить реле из набора для arduino, там уже будет управляющий транзистор, но колодки для подключения силовых проводов там не выглядят на 10А.
Управляющий сигнал подается с ESP32, в моем случае это Heltec Wireless Lite, но естественно подойдет любая дешёвая dev board, причем для WiFi варианта подойдет самая дешёвая ESP8266. Опять же если не нужен большой ток, то проще купить почти готовый вариант реле+ESP8266. Выходные токи у ESP маловаты для прямого управления, поэтому взял простой n-p-n биполяный транзистор в схеме ключа. На схеме управления R1 и U2 — это часть внутри реле. Соответственно всё что нужно это Q1 и R2. Накидал всё навесным монтажом.
Уже описывал принцип применения платформы ESPHome в статье про BLE хаб, поэтому тут просто выложу свой конфиг.
esphome:
name: heater
esp32:
board: heltec_wireless_stick_lite
framework:
type: arduino
logger:
api:
ota:
password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Heater1 Fallback Hotspot"
password: "xxxxxxxxxxx"
captive_portal:
switch:
- platform: gpio
name: "Heater 1"
pin: 4
После прошивки в Home Assistant (HA) появится новое устройство и объект, в моем случае switch.heater_1_2
Чтобы управлять температурой в комнате нужно в HA добавить базовый компонент generic_thermostat . Для этого в /config/configuration.yaml добавим
- platform: generic_thermostat
name: Heater Room 1
heater: switch.heater_1_2
target_sensor: sensor.0x00158d00045c2e93_temperature
away_temp: 16
comfort_temp: 21
home_temp: 19.5
sleep_temp: 18
min_temp: 16
max_temp: 26
cold_tolerance: 0.2
hot_tolerance: 0.2
precision: 0.1
initial_hvac_mode: "heat"
min_cycle_duration:
minutes: 5
Где target_sensor определяет датчик температуры относительно которого будет работать этот электронный термостат. Термостат появится в HA на вкладке Обзор. По центру температура target_sensor, ниже уставка, которую можно изменять круговым бегунком. При снижении температуры sensor.0x00158d00045c2e93_temperature ниже уставки на 0,2 градуса HA отдаст команду на включение switch.heater_1_2 и соответственно при превышении на 0,2 градуса выключит его, но не раньше чем через 5 мин после последнего переключения.
Две простейших автоматизации регулировки температуры от времени суток записываем в /config/automations.yaml.
- id: '1647248933226'
alias: Heating room 1 night
description: ''
trigger:
- platform: time
at: '23:00:00'
condition: []
action:
- service: climate.set_preset_mode
data:
preset_mode: sleep
target:
entity_id: climate.heater_room_1
mode: single
- id: '1647249000657'
alias: Heating room 1 morning
description: ''
trigger:
- platform: time
at: 07:00:00
condition: []
action:
- service: climate.set_preset_mode
data:
preset_mode: home
target:
entity_id: climate.heater_room_1
mode: single
Первая установливает на термостате ночную температуру в 23-00, а вторая в 7-00 возвращает дневную. Естественно есть и другие сценарии управляющие отоплением, например, в случае если дома никого нет, но это уже другая история. На графиках ниже то — как работает
Последнее обновление 18.03.2022 в 17:07