В данной статье описан модуль самостоятельного изготовления устройства для управления освещением на кухне с часами и датчиками движения, температуры и влажности в корпусе от старого спутникового тюнера.
Дисплей отображает текущее время (берется с Home Assistant, а оно свое время синхронизировано со временем в интернете) 51 секунду и текущую температуру 9 секунд. Потом все повторяется.
Со времени захода солнца и до полуночи если выключен основной свет в кухне, то при наличии движения свет в софитах включается и через 30 секунд после прекращения движения выключается.
Комплектующие:
Спутниковый тюнер (корпус, дисплей, светодиоды, сетевой шнур)
Блок питания 12В 5А Aliexpress
DC-DC преобразователь Aliexpress
N-Мосфет CEP6060 Aliexpress
Реле SRA 12VDC – Aliexpress
Монтажная плата 70х90 Aliexpress
Модуль Wemos D1 mini Aliexpress
Датчик движения AM312 Aliexpress
Датчик температуры и влажности DHT22 Aliexpress
Оптопары PC817 – 2шт Aliexress
Транзистор S8050 Aliexpress
Резисторы 180 Ом – 2шт
300 Ом – 1шт
10 кОм – 3шт
1.2кОм – 1шт
22к – 1шт
Диоды 1N4148 – 2шт
Также в офлайне были приобретены плафоны (3шт.) и лампочки MR16 (3шт.)
Основой для данного устройства послужил старый спутниковый тюнер, купленный на olx.ua за 50грв (чуть менее 2$).
Из него я позаимствовал корпус, сетевой шнур и плату с дисплеем:
Плата представляет собой кнопки (я их не использовал), светодиоды (для подключения были выпаяны резисторы R1 и R2) и индикатор с микросхемой Winrise HBS588:
В крайнем случае данную плату вполне можно заменить двумя светодиодами и модулем tm1637 с Aliexpress:
Схема устройства:
Канал Out2 собранный на реле резервный, в автоматизации не задействован.
О замене деталей:
1) Как я писал ранее дисплей можно заменить на модуль tm1637
2) DHT22 можно заменить на DHT11, AM2302, RHT03
3) Мосфет любой N-канальный, например CEP6060L, IRLZ44N, IRF530N и т.д.
Собран на макетной плате 70х90мм. Расположение деталей:
Скачать lay можно тут
Устройство в собранном виде:
Используемые выводы Wemos D1:
Профиль ESPHome:
esphome: name: kitchen platform: ESP8266 board: d1_mini wifi: ssid: "******" password: "********" # Static IP manual_ip: static_ip: 192.168.1.136 gateway: 192.168.1.1 subnet: 255.255.255.0 # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Kitchen Fallback Hotspot" password: "********" captive_portal: # Enable logging logger: # Enable Home Assistant API api: password: "********" ota: password: "********" web_server: port: 80 time: - platform: homeassistant id: homeassistant_time # Текущие координаты населенного пункта для вычисления времени захода и восхода Солнца sun: latitude: 47.901661 longitude: 33.451202 text_sensor: # Version Text Sensor # Датчик отображающий версию прошивки - platform: version name: "Kitchen ESPHome Version" # Датчики времени восхода и захода Солнца - platform: sun name: Sun Next Sunrise type: sunrise - platform: sun name: Sun Next Sunset type: sunset display: platform: tm1637 id: tm1637_display clk_pin: GPIO12 # D6 dio_pin: GPIO13 # D7 update_interval: 500ms # Каждую минуту 9 секунд показывать температуру, а в останое время - текущее время lambda: |- if (id(homeassistant_time).now().second > 50) { it.printf(0, "%.1f", id(temp_dht22).state); it.print(3,"~"); } else { static int i = 0; i++; if ((i % 2) == 0) it.strftime("%H.%M", id(homeassistant_time).now()); else it.strftime("%H%M", id(homeassistant_time).now()); } output: # Светодиод индикаторный, красный - platform: esp8266_pwm id: kichen_red_led pin: number: GPIO5 # D1 - platform: esp8266_pwm id: kichen_led_pwd pin: number: GPIO14 # D5 switch: - platform: gpio name: "Relay" pin: GPIO4 # D2 id: relay light: - platform: monochromatic name: "Red kichen LED" output: kichen_red_led id: red_l - platform: monochromatic name: "Kichen LED Out" output: kichen_led_pwd id: Light_1 binary_sensor: - platform: gpio pin: GPIO16 # D0 name: "kitchen_motion" device_class: motion id: kichen_motion on_press: - if: condition: - sun.is_below_horizon: - binary_sensor.is_off: light_on - lambda: |- return id(homeassistant_time).now().hour > 14; then: - light.turn_on: Light_1 # По сигналу с PIR датчика включаем и выкоючаем красный светодиод - light.turn_on: red_l on_release: - light.turn_off: red_l - platform: template name: temp_motion lambda: 'return id(kichen_motion).state;' filters: - delayed_off: 30s # или, например 1min on_release: - if: condition: - light.is_on: Light_1 then: - light.turn_off: Light_1 - platform: homeassistant name: "Light From Home Assistant" entity_id: binary_sensor.kichen_light id: light_on sensor: - platform: dht pin: GPIO2 # D4 temperature: name: "Living Room Temperature" id: temp_dht22 humidity: name: "Living Room Humidity" update_interval: 10s # WiFi Signal Sensor # Датчик отображающий уровень сигнала Wifi - platform: wifi_signal name: "kitchen WiFi Signal" update_interval: 60s # Uptime Sensor # Датчик отображающий время работы - platform: uptime name: "kitchen WiFi Signal"
Отображение в Home Assistant:
Для определения времени захода солнца используются координаты Вашего дома. Прописываются они в строке:
sun: latitude: 47.901661 longitude: 33.451202
Координаты можно узнать, указав место дома на
google карте:
Время, в течение которых свет включен после срабатывания датчика движения задается в строке:
- delayed_off: 30s # или, например 1min
Для того, чтоб свет автоматически включался только тогда, когда выключен общий свет на кухне с home assistant считывается binary_sensor.kichen_light (on – когда общий свет в кухне включен, off – когда выключен)
Для его создания из выключателя (switch) в home Assistant нужно создать виртуальный выключатель, который запрещает одновременное включение основного света и софитов:
input_boolean: kichen_or: name: kichen OR icon: mdi:food-variant
Добавляем его в ui-lovelace.yaml:
cards:
- type: entities
show_header_toggle: false
entities:
- entity: input_boolean.kichen_or
name: Кухня - свет или софиты
secondary_info: last-changed
icon: 'mdi:floor-lamp-dual'
И далее создаем binary_sensor.kichen_light
binary_sensor: # Датчик включения света в кухне - platform: template sensors: kichen_light: value_template: >- {{ is_state('switch.sonoff_t0eu3c_relay_3', 'on') and is_state('input_boolean.kichen_or', 'on') }}
Вот как все это выглядит на кухне:
На все адекватные вопросы постараюсь ответить в комментариях.
а почему бы не сделать инфо часы на max7219 https://aliexpress.ru/item/4001131640516.html
ОтветитьУдалитьбудет заметнее часы и можно выводить разную инфу из НА, например температуры в комнатах.
Можно конечно. Просто в моем случае я использовал корпус от тюнера, а в нем был уже встроенный дисплей. Поэтому я решил его задействовать. Основная цель была управление освещением, а дисплей это вторично.
УдалитьДдя max7219 нужен другой корпус, в тюнер он просто не влезет.