Ви не увійшли.
Сторінки 1
И так пред история, увлекся собственным умным домом и в какой то момент понял, что невозможно поддерживать версии более 5 устройств, там улучшил там осталось, там протестировал, там нет,и бесконечный круг... И в итоге написал по моему мнению универсальную прошивку, которая покрыла все мой весь умный дом начиная от простых светильников и розеток и заканчивая погодными станциями и различными RF бриджами.
Ну и конечно же конек всего этого нативная интеграция в Apple Home Kit. Все устройства у меня интегрированы и управляются через Apple Home. Но так как не все используют Apple в прошивке есть возможность использовать MQTT для интеграции с другими системами. Благо практически все продвинутые уже их поддерживают
Вот хорошо описанные примеры
Лампа
https://www.instructables.com/id/Bed-Room-Lamp-Ws2812/
[MEDIA=youtube]Ja1Og2USEgE[/MEDIA]
Погодная станция
https://www.instructables.com/id/ESP32-Weather-Station-Solar-Powered/
еще одна лампа с термометром
https://www.instructables.com/id/Accu-Multicololred-LED-Lamp-With-Weather/
Как написано на главной странице прошивка поддерживает след. устройства (на момент написания)
- обычные свитчи/реле
- диммируемые модули ШИМ, для управления яркостью
- Датчики температуры влажности и давления (BME180, Dallas)
- Кнопки, энкодеры
- Oled и e-paper дисплеи
- RF приемники и передатчики
- Датчики движения
- Серво двигатели
- IR приемники и передатчики
- различные LDR
Ну и собственно вокруг этого всего:
Встроенный WEB сайт. Написанный на React JS
OTA
Интеграция с умным домом через протокол MQTT
Нативная интеграция с Apple Home Kit
Web сервиса
Итак в двух словах, имеем единую прошивку для всех устройств, разница в поведении определяеться конфигурационными файлами JSON, которые храняться в корне SPIFFS системы ESP, этим и определяя поведение.... Т.е. прошивку можно смело менять, файлы остаються и устройство продолжает работать как хотели
Итак центральный файл config.json
{"localhost":"LampFire","mqtt_host":"","mqtt_port":"1883","mqtt_user":"homekit","mqtt_pass":"031-45-154"}
Содержит имя хоста, и параметры подключение к MQTT, если собираетесь использовать
След центральный файл services.json, содержит список и характеристики подключенных устройств .
Это массив след. вида
[{"service":"TimeController","name":"Time","enabled":true,"interval":1000,"timeoffs":7200,"dayloffs":3600,"server":"pool.ntp.org"},
{"enabled":true,"interval":1,"pin":23,"numleds":256,"service":"RGBStripController","name":"RGBStrip","issmooth":false,"manualtime":6000,"ismatrix":true,"matrixwidth":16,"matrixtype":8},
{"enabled":true,"interval":1,"pin":"","service":"ButtonController","name":"Button","defstate":false,"pins":[16]}
]
- service: базовый элемент который собственно и определяет тип устройства
- name : Имя устройства, важно, так как мы можем подключить несколько однотипных устройств
- interval: частота срабатывания или опроса в миллисекундах. например для управления светильниками нужно небольшое значение, а для отсылки данных в интернет, конечно побольше. Собственно можно тюнить и не перегружать процессор
pin: номер пина к которому подключено устройство/датчик, для некоторых устройств их конечно несколько с разными именами,
ну и далее разные параметры специфичные для сервиса, сам сервис умеет выдавать параметры по умолчанию и Web сайт позволяет их редактировать, т.е. не надо смотреть в код
Опять же через Web сайт можно добавлять/удалять сервиса
Ну и следующий конфигурационный файл, triggers.json, это собственно взаимодействие между сервисами, т.е. когда что то в одном происходит, можно передать команду другому сервису
Как пример:
- нажали кнопку
- уровень освещенности достиг чего то
- сработал таймер (о нем более детально будет позже)
- RF приемник получил какой то конкретный сигнал
Вот пример триггера:
[{"type":"TimeToRGBStrip","source":"Time","destination":"RGBStrip","value":[{"isOn":false,"isLdr":false,"time":2300,"bg":1,"color":3432432,"fadetm":1000,"wxmode":-1}]},{"type":"ButtonToRgbStripMode","source":"Button","destination":"RGBStrip","modes":[0,56,58],"idx":0}]
- type: тип триггера из имеющихся
- source: От какого сервиса (имя)
- destination: какому сервису (имя)
- value: специфические значение и пороговые значения для данного типа триггера
В описанном примере мы определили тип триггера таймер, который управляет RGB лентой (WS2812)
при наступлении 23:00 лампа будет переведена в яркость "bg":10, статический режим "wxmode":-1, цвет "color":3432432
Конечно же через Web сайт это можно задать не углубляясь в название и список параметров
Ну отдельное упоминание "time":2300 , могут быть простые значение ЧЧММ, т.е. каждый день в заданное время что то происходит, а может быть cron expression, тут уж можно развернуться и по месяцам и по дням недели.
"fadetm":1000 плавность в миллисекундах перехода от текущего значения в заданное, т.е. например плавное повышение яркости
Ну и конечно, если вы используете нативный Apple Home Kit. он добавляет возможность определения сценариев с помощью внутренних средств, как пример из интересных плюшек включение по закату солнца....
Как пример выше, еще один триггер ButtonToRgbStripMode. Он реагирует на нажатии кнопки и переключает режимы лампы между
0,56,58. Собственно 0 выключено, 58 режим огня. Ну или определяйте сами
Итак все что остается сделать это собрать из кубиков готовое устройство
Шаги достаточно простые, после компиляции и залития прошивки (детально не описываю, все стандартно )
ESP запускается в известном режиме конфигурации соединения WiFi, все стандартно....
После подключения к сети , устройство само проверяет и докачивет файлы для встроенного Web сайта, беря последнюю версию с моей страницы Git Hub.
Далее запускаем встроенный файл менеджер (http:// ip address /browse) и можем залить config.json, triggers.json и services.json. Ну или использую сайт (корневой адрес) можем сконфигурировать через User Interface
Перегружаем и устройство работает
Через (http:// ip address /update) можем заливать новые версии прошивок
При сборке прошивки, собственно придется только один раз подправить config.h файл
а именно:
#define ENABLE_NATIVE_HAP
///#define ENABLE_HOMEBRIDGE
это выбрать режим интеграции с умным домом нативный Apple ENABLE_NATIVE_HAP или MQTT ENABLE_HOMEBRIDGE
Все вместе , не тестировал, по отдельности все прекрасно работает. Ну странно иметь MQTT и еще нативный Apple
В принципе все для ESP32, для ESP8266 есть нюансы, так как память ограничена не все сервиса "влазят" в одну прошивку, напомню если сервис и отключен его код есть в прошивке, соответственно надо будет подредактировать секцию ниже какие сервиса вы хотите оставить.
Теперь еще один пример об огненной лампе Gyver Lamp, она уже получила большое распространение и даже уже кажеться китайцы ее делают.
в примерах выше я привел конфигурационные файлы, ну можно смотреть здесь
По умолчанию сконфигурирована для нативной интеграции с Apple Home Kit. После подсоединения к сети вы сможете ее добавить в умный дом. Детали смотрите здесь
Ну и конечно описано все красиво, но в реалии есть баги, поэтому не судите, думаю идея понравилась
Ну а баги надо править и улучшать. надеюсь на понимание и поддержку
P.S. Если кому интересно могу на заказ доработать
Неактивний
Допустим у меня есть esp8266 node mcu. И мне надо фиксировать во времени геркон на двери и видеть эту историю через интернет. Сколько мне надо на это времени с закачкой json и т.д.
Допустим у меня есть esp8266 node mcu. И мне надо фиксировать во времени геркон на двери и видеть эту историю через интернет. Сколько мне надо на это времени с закачкой json и т.д.
Ну насколько я понял вопрос, при срабатывании геркон, нужно отправлять данные в облако. Например ThingSpeak ?
Пакет в ThingSpeak уходит за 50-100 мс. Дальше мы уже на зависим от esp и все данные смотрим в инете.
Либо не понял вопрос....
Неактивний
Сторінки 1