Сервопривод освещения ESP32 ESPHome / HomeAssitant........
Умный переключатель своими руками, управляемый ESP32. Пример кода для ESPHome и Home Assistant
Если вы еще не использовали ESPHome с домашним помощником, посетите страницу начала работы для получения дополнительной информации: https://esphome.io/guides/getting_started_hassio.html
Выключателем света можно управлять вручную, пока скользящая часть отпечатка остается в положении, показанном на изображениях. Прилагаемый код перевернет пере��лючатель вверх, а затем вернется в центральное положение или перевернет переключатель вниз и вернется в центральное положение, чтобы переключатель света можно было использовать вручную/обычно.
В крышке есть место для модуля микроволнового радарного датчика LD2410, но мне так и не удалось добиться его надежной работы, поэтому у меня нет для него примера кода.
Винтов, входящих в комплект большинства сервоприводов, должно хватить для крепления сервопривода к шестерне. Крышка крепится винтом 3 мм х 5-15 мм.
Части
1 плата разработчика ESP32. Любой должен работать. Я использовал тип USB-C.
1 сервопривод стандартного размера. Я использовал эту модель.
1-2 винта 3 x 5-15 мм для крепления крышки. Еще можно заклеить крышку.
(Опция) Модуль микроволнового радарного датчика LD2410 — для использования датчика движения. Я бы поискал его в другом месте, так как его можно найти для пользователя за 5 долларов во многих местах.
Подключение вещей
Сервопривод необходимо подключить к источнику питания 5 В и заземлению на ESP32. Распиновка будет зависеть от используемой вами платы ESP32. В приведенном ниже примере кода вывод ШИМ сервопривода подключен к GPIO25. При необходимости его можно изменить. Питание ESP32 и сервопривода поступает от USB-порта ESP32 (в версии, которую я построил). Пока на ESP32 подается напряжение 5 В, все должно работать. Сервопривод потребляет немало энергии (при движении), поэтому вам необходимо использовать источник питания от 1,5 до 2 А, 5 В.
Пример кода ESPHome
Вам нужно будет обновить и изменить приведенное ниже по мере необходимости.
Положение сервопривода для включения и выключения может потребоваться отрегулировать на -50 и 50. Или перевернуть. При использовании приведенного ниже кода в информации об устройстве в Home Assistant отображается ручное управление сервоприводом. Это можно использовать для определения положений, в которых должен находиться сервопривод, чтобы выключатель света был выключен и включен, а затем значения можно отредак��ировать в файле ESPHome yaml, чтобы переключатель включения/выключения в Home Assistant работал правильно.
эсфоме:
имя: серво-выключатель света
Friendly_name: Сервовыключатель света
esp32:
плата: nodemcu-32s
структура:
тип: ардуино
# Включить ведение журнала
регистратор:
# Включить API Home Assistant
API:
шифрование:
key: "{ ДОБАВИТЬ СОБСТВЕННОГО ЗДЕСЬ }"
ота:
— платформа: эсфом
пароль: "{ ДОБАВЬТЕ СОБСТВЕННОГО ЗДЕСЬ }"
Wi-Fi:
ssid: !secret wifi_ssid
пароль: !secret wifi_password
# Включить резервную точку доступа (портал авторизации) на случай сбоя Wi-Fi-соединения.
ап:
ssid: «Серво-переключатель света»
пароль: "{ ДОБАВЬТЕ СОБСТВЕННОГО ЗДЕСЬ }"
captive_portal:
# Настройка сервопривода для использования pwm_output, определенного ниже
сервопривод:
— идентификатор: my_servo
вывод: pwm_output
вывод:
— платформа: у LEDC #ESP32 нет опции сервопривода ШИМ, поэтому вместо нее используется LEDC
идентификатор: pwm_output
контакт: GPIO25 #Pin, к которому подключен сервопривод
частота: 50 Гц
— id: onboard_led #Встроенный светодиод на плате разработчиков
платформа: gpio
контакт: GPIO2
номер:
— платформа: шаблон
имя: Сервоуправление
мин_значение: -100
начальное_значение: 0
максимальное_значение: 100
шаг: 1
оптимистично: правда
set_action:
тогда:
— серво. напишите:
идентификатор: my_servo
уровень: !lambda 'return x/100.0;'
свет:
— платформа: бинарная
id: «servo_light_switch» #Измените имя на то, что вы хотите н��звать выключателем света
name: «Servo Light Switch» #Измените название переключателя света на то, что вы хотите назвать.
вывод: onboard_led
режим восстановления: RESTORE_DEFAULT_OFF
on_turn_on:
— серво. напишите:
идентификатор: my_servo
уровень: !lambda 'return 50/100.0;' # При необходимости отредактируйте положение сервопривода, необходимое для включения освещения.
— задержка: 250 мс
— серво. напишите:
идентификатор: my_servo
уровень: !lambda 'возврат 0/100.0;'
вкл_выкл_выкл:
— серво. напишите:
идентификатор: my_servo





























