Инструменты пользователя

Инструменты сайта


прошивка_для_sonoff

Гибкость настроек LightHub позволяет настраивать сложные системы регуляции температуры, влажности, CO2 (столько каналов на одном устройстве, сколько уместятся в его памяти). Но для примера проще показать принцип работы LH на чем-то очень простом

В качестве примера, перешьем самую простую 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 - в зависимости от значения на входе от 0 до 255 (relayhum/set) включает реле (pin 12) на время 0-1200 секунд в интервале 1200 секунд
  • собственно, сенсор DHT22, передающий значения температуры и влажности в топики mqtt, значение влажности в PID регулятор (топик reghum/val)
  • кнопка на корпусе, включающая-выключающая 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 В Внутри розетки сенсор нагревается от реле и сильно занижает значение влажности. Лучше выводить наружу

Профит

прошивка_для_sonoff.txt · Последнее изменение: 2022/12/16 18:41 — admin