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

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


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

Это старая версия документа!


В качестве примера, перешьем самую простую 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 В Внутри розетки сенсор нагревается от реле и сильно занижает значение влажности. Лучше выводить наружу

Профит

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