Это старая версия документа!
В качестве примера, перешьем самую простую WiFi розетку Sonoff-S26
В Интернете масса руководств, как перешить такую розетку под Tasmota или ESPEASY. Тут не буду описывать, как подключить или подпаять к Sonoff TTL-UART - это сделано сотни раз. Просто посмотрите - точно так же зашивается прошивка LightHub.
У нас более интересная задача - сделать гидростат с PID регулятором влажности, поддерживающий влажность в помещении при помощи парового увлажнителя (который многим хорош, но способен сделать из помещения баню, если его не контролировать)
(Точно также можно сделать на базе такой розетки и калорифера очень точный термостат)
Устройство должно регулировать влажность абсолютно автономно, но дополнительно, хочется управлять этим из привычного HomeAssistant
Прошивка LightHub позволяет это сделать «в розетке» ровно так же, как и на любом другом совместимом железе. С одним лишь ограничением - розетка ограничена по ресурсам и очень мало пинов выведено с платы контроллера.
Мой Sonoff содержит контроллер ESP8266EX и всего 1МБ флэш памяти. Для того, чтобы не разбирая устройство, можно было обновлять прошивку по воздуху, нам надо уместиться в 50% флеш памяти, доступной для кода. Ну и оставить что-то под хранение небольшого файла конфигурации.
Скомпилированную прошивку берем отсюда: https://github.com/anklimov/lighthub/blob/master/compiled/esp8266-wifi/firmware.bin (она уже собрана с опциями, приведенными ниже)
Для тех, кто хочет компилировать самостоятельно при помощи PlatformIO - надо создать дополнительный файл в директории проекта: lighthub\custom-build-flags\build_flags_esp8266-wifi
со следующим содержимым:
#Disabling debug log and move I2C to 1-3 pins -DnoSerial -D TWI_SCL=1 -D TWI_SDA=3 #Slimming firmware to fit 50% of 1m flash -DDMX_DISABLE -DMODBUS_DISABLE -DMBUS_DISABLE -DOWIRE_DISABLE -DCOUNTER_DISABLE -DNO_HOMIE -DAC_DISABLE -DSYSLOG_ENABLE -DOTA -DMOTOR_DISABLE -DMULTIVENT_DISABLE -DHSV_DISABLE -UMCP23017 -UARTNET_ENABLE -D BEARSSL_SSL_BASIC
После чего, надо пересобрать проект, выбрав environment esp8266-wifi
Данные настройки отключают то, что заведомо не требуется розетке. И убирают debug логгирование c Serial порта, выведенного на ноги 1 и 3 процессора. Теперь эти ноги, которые я ранее вывел на разьем, для того, чтобы была возможность заливать прошивку на ESP можно использовать для чего-то более полезного, пока не заливается эта самая прошивка
Например, I2C. (И настроить прошивку на работу с сенсорами ccs811+hdc1080) Или как в примере настройки ниже, для подключения сенсора температуры и влажности DHT22 к ноге 3 (RX)
После заливки прошивки, как обычно, подключаемся к появившейся точке доступа и настраиваем подключение к WiFi (если после подключения к точке, не открылась страница в браузере, заходим на http://192.168.4.1)
После перезапуска, прошивка будет пытаться загрузить конфиг с макадресом контроллера с портала. Проще всего создать его там.
Либо можно поискать новое устройство в сети при помощи любого браузера MDNS (Bonjour search, MDNS discovery, плагин для браузера) и отредактировать конфиг непосредственно на устройстве (скорректировав адрес MQTT брокера на свой)
{ "syslog":["95.31.43.9"], "items": { "ledhum":[6,-13], "reghum": [13, [ [50, 10, 0, 60, 250, 200], [{"item": "relayhum"}, {"item":"ledhum"}] ], 30, 12], "relayhum": [16, [12, 1200], 255, 2] }, "in":{ "0":{"T":0, "click":{ "item":"reghum","icmd":"TOGGLE"}, "dclick":{ "emit":"myhome/light-d2/light","ecmd":"TOGGLE"} }, "3":{"T":4, "temp":{"emit":"plugtemp"}, "hum":{"item":"reghum/val","emit":"plughum"} } }, "mqtt":["plug00","192.168.88.2"] }
Основные объекты, которые мы настроили: * PID регулятор reghum. Он получает настройки влажности через топик reghum/set, а текущие показания с сенсора через топик reghum/val, его выход заведен на канал ШИМ реле (relayhum) и LED синего цвета (ledhum). В настройке заданы параметры P,I,D,dT,время перехода регулятора в режим аварии при отсутствии измерения влажности (250 сек) и значение, которое выдаст регулятор на свой выход (200) в режиме аварии * ШИМ реле relayhum - в зависимости от значения на входе (relayhum/set) включает реле (pin 12) на время 0-1200 секунд в интервале 1200 секунд * собственно, сенсор DHT22, передающий значения температуры и влажности в топики mqtt, значение влажности в PID регулятор * кнопка на корпусе, включающая-выключающая PID регулятор. (для фана, двойной клик на эту кнопку включает-выключает свет в доме)
Теперь как это настроить в HomeAssistant (configuration.yaml)
humidifier: - platform: mqtt name: "Увлажнитель пар" command_topic: "myhome/plug00/reghum/cmd" state_topic: "myhome/s_out/reghum/cmd" target_humidity_command_topic: "myhome/plug00/reghum/set" target_humidity_state_topic: "myhome/s_out/reghum/set" max_humidity: 60 min_humidity: 20 sensor: - platform: mqtt name: "Влажность пар" icon: "mdi:water-percent" expire_after: 600 state_topic: "myhome/s_out/plughum" unit_of_measurement: '%' - platform: mqtt name: "Температура пар" icon: "mdi:thermometer" expire_after: 600 state_topic: "myhome/s_out/plugtemp" unit_of_measurement: '°C'
После чего, увлажнитель и сенсоры добавляются в панель управления
Осталось только разместить сенсор и подключить его к PIN3, земле и питанию 3.3 В Внутри розетки сенсор нагревается от реле и сильно занижает значение влажности. Лучше выводить наружу
Профит