#ESP 8266 01 - Web + Led
ESP 8266 01 - Загрузка программы. Управление цифровыми пинами. Мигающии светодиод!
DIY часы со статистикой игрока в "Мире танков"
Всем добра! Сосед у меня заядлый танкист. Близился у него юбилей, придумал чем порадовать человека.
Из ESP8266, светодиодной матрицы, кнопки и гнезда получились вот такие часы. Матрица была 8*32, мне показалась маловата. К ней прицепил еще одну 8*8. Корпус из пластика, обклеен плёнкой. С декоративными уголками пришлось повозиться, подгонять углы. Дисплей - бутерброд из прозрачного пластика, плёнки для тонировки авто и бумажной кальки чтоб рассеивать немного точки светодиодов.
Шрифт и стрелки сам рисовал в каком-то редакторе, найденном на просторах интернета. Главная для меня заморочка была с JSON, так как никогда до этого с ним не сталкивался. Немного помог сын программист.
Алгоритм работы такой: 1. подключаемся к Wi-Fi. 2. Тянем время с NTP сервера. 3. Через API танкового сервера берём статистику, если она отличается от сохранённой, перезаписываем. 4. Выводим текущее время. 5. Раз в 15 минут или по нажатию кнопки выводим бегущую строку со статой.
Я не волшебник, я только учусь)))))))
Делаем аромадиффузор Xiaomi Youpin HL "умным"
Необходимость в удаленном управлении аромадиффузором конечно специфическая... Но может быть кому-то захочется повторить :) В моем случае, мне хотелось, чтобы он включался автоматически на короткий промежуток времени, дабы реже заниматься его наполнением. Ну и было интересно поразбираться.
Сам аромадиффузор выглядит так:
По сути, это маленький ультразвуковой увлажнитель с подсветкой и одной кнопкой для включения/переключения цветов подсветки коротким нажатием и выключения длительным нажатием. Питается от USB. При подаче питания автоматически не включается, обязательно нужно нажать кнопку.
В результате доработки появляется возможность получать статус устройства и эмулировать нажатия на кнопку с помощью MQTT.
Для доработки нам понадобятся:
D1 Mini. Маленькая плата с питанием от USB, с WiFi и разными входами-выходами для подключения внешних компонентов. Можно использовать и что-нибудь другое, но именно D1 Mini по габаритам идеально вписывается в корпус этого аромадиффузора, располагаясь под основной платой.
Два резистора на 470 Ом
Резистор на 10 кОм
Две оптопары PC817.
Как сделать:
Скачать скетч из репозитория, открыть его в Arduino IDE, вбить данные для Wi-Fi роутера и MQTT-брокера. Залить скетч в D1 Mini.
Разобрать аромадиффузор. Для этого снимаем резинку снизу и выкручиваем четыре самореза. После этого корпус достаточно легко разделяется на две части.
Соединить пины D6 и GND через резистор на 10 кОм.
Светодиод первой оптопары присоединяем через резистор на 470 Ом параллельно контактам вентилятора. Фототранзистор - к пинам D6 и 3.3v. Это позволит нам узнавать статус устройства. Замечу, что у этого аромадиффузора есть особенность: если в бачке нет воды, то вентилятор включается на очень короткий промежуток времени. Что я и использовал для определения наличия воды. Наверное можно было иначе, но так проще и меньше деталей.
Светодиод второй оптопары присоединяем через резистор на 470 Ом к пинам D7 и GND. Фототранзистор параллельно кнопке. Это позволит нам эмулировать нажатия.
После этого можно собирать аромадиффузор.
В MQTT можно использовать два топика:
state - для получения статуса устройства. Может принимать значения on, off или error (если нет воды).
command - для управления кнопкой. Соответственно, press - для включения и переключения цветов, а press_long для выключения устройства.
В таком виде устройство работает уже более года без нареканий. Фото не прикладываю, ибо сам спаял все на коленке и как пособие такие фотографии не годятся. Замечания, советы, коммиты в репозиторий приветствуются: сам переделывать вряд ли буду, но может кому-то будет полезно.
Новинка! ESP Block 2.0 - Скачать и установить на ПК + ESP32 ESP8266
Умная кухонная подсветка для Home Assistant
Доброго дня. Был у меня проект: подсветка на Arduino. rgbw лента, включалась по датчику движения и через определенное время переходила в режим смены цветов. Работало отлично, нареканий не было. Но захотелось больше свободы в управлении. К тому времени уже был настроен home assistant на raspberry pi. Было решено интегрировать подсветку в HA.
EspHome подходит для этих задач идеально. Нативная интеграция с HA. Обновление прошивки по воздуху. Редактор прямо из панели HA. Лучше не придумаешь. Останавливал только yaml. Я почему-то был уверен, что это язык только для конфигов. Однако, я сильно заблуждался.
Оказалось, yaml умеет и условия и циклы и переменные. Но в моем случае основа это датчик движения. Весь код лучше посмотреть тут.
binary_sensor:
- platform: gpio
pin: D0
name: "motion_kitchen"
device_class: motion
id: motion_kitchen
on_state:
then:
- if:
condition:
and:
- binary_sensor.is_on: "motion_kitchen"
- binary_sensor.is_off: "led_strip_off_allways"
then:
switch.turn_on: light_white_on
- if:
condition:
and:
- binary_sensor.is_off: "motion_kitchen"
- binary_sensor.is_off: bin_light_on
- binary_sensor.is_off: "led_strip_off_allways"
then:
- switch.turn_off: light_white_on
- switch.turn_off: super_light
- delay: 5 min
- if:
condition:
binary_sensor.is_off: "motion_kitchen"
then:
light.turn_off: kitchen_led_line
При обнаружении движения, проверяются бинарные сенсоры, по факту переключатели, которые описаны ниже и в зависимости от их положений лента включается или не включается ну или не выключается.
-delay: 5 min - Это продолжительность эффекта смены цветов.
А так описана сама лента:
light:
- platform: rgbw
id: kitchen_led_line
name: "kitchen_led_line"
red: red_led
green: green_led
blue: blue_led
white: white_led
effects:
- random:
name: Fade
transition_length: 10s
update_interval: 10s
output:
- id: white_led
platform: esp8266_pwm
pin: D1
inverted: true
max_power: 1
- id: blue_led
platform: esp8266_pwm
pin: D2
inverted: true
- id: red_led
platform: esp8266_pwm
pin: D4
inverted: true
transition_length: 10s - за какое время должен изменится цвет
update_interval: 10s - через какое время переключить на другой цвет
Таким образом получаем плавный эффект перехода от цвета к цвету без задержки на каком-либо. Продолжительность белого цвета регулируется самим датчиком движения. На нем есть механическая регулировка чувствительности и продолжительности.
Отдельно стоит коснуться включения белых диодов и цветных диодов в режиме белого цвета. Light white и Super light.
#Виртуальный выключатель, включает только белый свет.
- platform: template
name: "light white on"
id: light_white_on
optimistic: yes
turn_on_action:
- light.turn_on:
id: kitchen_led_line
brightness: 100%
color_brightness: 0%
effect: none
white: 100%
red: 0%
blue: 0%
green: 0%
turn_off_action:
- light.turn_on:
id: kitchen_led_line
brightness: 80%
effect: Fade
white: 0%
#Виртуальный выключатель, включает белый свет вместе с цветными диодами.
- platform: template
name: "super light"
id: super_light
optimistic: yes
turn_on_action:
- light.turn_on:
id: kitchen_led_line
color_mode: RGB_white
brightness: 100%
white: 100%
red: 100%
green: 75%
blue: 50%
turn_off_action:
- if:
condition:
binary_sensor.is_on: "motion_kitchen"
then:
- light.turn_on:
id: kitchen_led_line
brightness: 100%
color_brightness: 0%
effect: none
white: 100%
red: 0%
blue: 0%
green: 0%
В итоге в HA лента выглядит так:
Отмечу еще один момент. На шести метровую кухню хватило одного датчика движения, расположенного ближе к мойке, на границе первой трети от входа.
Поиграем в бизнесменов?
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.