ESPHOME deepsleep + OTA - Elektronek.pl
Elektronika

ESPHOME deepsleep + OTA

ESPHOME deepsleep + OTA …. jak to ugryźć?

Opiszę to ma przykładzie mojego czujnika  BME/AHT wraz z zasilaniem z ogniwa LiION i ładowarką.

Mamy tu kod standardowego czujnika, który po wybudzeniu wykonuje odczyt i wysyła go do Home Assistant przez 10 sekund i idzie spać na 890 sekund, co w sumie daje nam 15 minut.

Skrypt YAML ESPHOME:


substitutions:
  device_name: Czujnik_AHT
esphome:
  name: czujnik-aht
  friendly_name: Czujnk_AHT
  on_boot:
    priority: -100.0
    then:
      - delay: 1s
      - script.execute: test_ota
esp8266:
  board: nodemcuv2
api:
  encryption:
    key: "NASZ KLUCZ API"
ota:
  password: "NASZ KLUCZ OTA"
  safe_mode: True
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:
    ssid: "Czujnik-AHT AP"
    password: "HASLO DO AP"
captive_portal:
logger:
i2c:
  sda: GPIO5
  scl: GPIO4
  scan: true
  id: i2c_bus
status_led:
  pin: GPIO2
binary_sensor:
  - platform: status
    name: Status
  - platform: homeassistant
    id: czujnik_aht_otamode
    entity_id: input_boolean.czujnik_aht_ota
text_sensor:
  - platform: wifi_info
    ip_address:
      name: IP
    ssid:
      name: SSID
    mac_address:
      name: MAC
sensor:
  - platform: aht10
    i2c_id: i2c_bus
    address: 0x38
    temperature:
      name: Temperatura
      accuracy_decimals: 1
    humidity:
      name: Wilgotnosc
      accuracy_decimals: 0
  - platform: wifi_signal
    name: RSSI
  - platform: adc
    name: LiION
    unit_of_measurement: 'V'
    accuracy_decimals: 2
    pin: GPIO17
    filters:
      - calibrate_linear:
        - 0.650 -> 2.625
        - 0.999 -> 4.155
script:
  - id: test_ota
    mode: queued
    then:
      - logger.log: "Checking OTA Mode"
      - if:
          condition:
            binary_sensor.is_on: Czujnik_aht_otamode
          then:
            - logger.log: 'OTA Mode ON'
            - deep_sleep.prevent: deep_sleep_handler
          else:
            - logger.log: 'OTA Mode OFF'
      - delay: 2s
      - script.execute: test_ota
deep_sleep:
  id: deep_sleep_handler
  run_duration: 10s
  sleep_duration: 890s
button:
  - platform: restart
    name: Restart

Dodatkowo można zauważyć wpis dotyczący OTA:


  on_boot:
    priority: -100.0
    then:
      - delay: 1s
      - script.execute: test_ota
binary_sensor:
  - platform: homeassistant
    id: garaz_aht_otamode
    entity_id: input_boolean.czujnik_aht_ota
script:
  - id: test_ota
    mode: queued
    then:
      - logger.log: "Checking OTA Mode"
      - if:
          condition:
            binary_sensor.is_on: czujnik_aht_otamode
          then:
            - logger.log: 'OTA Mode ON'
            - deep_sleep.prevent: deep_sleep_handler
          else:
            - logger.log: 'OTA Mode OFF'
      - delay: 2s
      - script.execute: test_ota
button:
  - platform: restart
    name: Restart

Widzimy 'script:’, który odpowiada za sprawdzenie czy w HA jest włączony przełącznik OTA, wykorzystuje on do tego 'binary_sensor:’ i ty musimy zapamiętać: entity_id: input_boolean.czujnik_aht_ota gdyż będzie nam potrzebne w HA do dodania Pomocnika. Jak widać skrypt jest sprawdzany przy każdym starcie ESP i gdy zobaczy aktywne OTA nie pozwala wejść w deepsleep. Dodatkowo mamy przycisk 'Restart’.

Co ważne przy pierwszej kompilacji i wgraniu programu do ESP ważne aby parametr ’deep_sleep:run_duration: 10s’ ustawić na powiedzmy 600s dzięki temu prawidłowo dodamy integrację w HA.

Po kolei….

  1. Piszemy nasz program wraz z wisami dotyczącymi OTA, pamiętamy o wydłużeniu czasu 'run_duration:’.
  2. Wgrywamy nasz program do ESP.
  3. Po uruchomieniu dodajemy Integrację w Home Assistant.
  4. Dodajemy 'Pomocnika’  w HA gdzie identyfikator encji będzie taki jak w naszym programie 'input_boolean.czujnik_aht_ota’.
  5. Uruchamiamy 'Pomocnika’ i czekamy aż nasze ESP będzie w trybie OTA
  6. Następnie modyfikuję 'run_duration:’ na właściwy i wgrywam program przez WiFi.
  7. Po wgraniu programu wyłączam 'Pomocnika’ i w integracji klikam przycisk Reset.
  8. I mamy działający ESP z deepsleep i OTA

Posiadam kilka PCB z nadwyżek do czujników. Gdyby ktoś potrzebował złożone lub samo PCB zapraszam do kontaktu.

Pozdrawiam Hymek

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *