  IOT    esphome
 


    IoT-   ESPHome    YAML     .  20     (ESP8266, ESP32    C3/C6),  ,  ,   Wi-Fi  Ethernet, , , , ,  I?C/SPI/UART,   , Bluetooth, deep sleep   ,   .      Home Assistant, OTA-    :    .      ,   ,      .     C++  ,    DIY-    .    ,       .





 

  IOT    esphome





 1.   IoT  ESPHome




1.1.   Internet of Things (IoT)



Internet of Things ( )     , 

,  ,    .

      ,    

    .



  :

  : , , , 

 :  ,  

  :  , , 

 :  ,   

  :  , ,  



   IoT-:

  (    )

  (   )

  (   )

   (   )

      



1.2.   ESPHome



ESPHome  open-source ,    ESP8266,

ESP32 (   )    .  

  C++      YAML-. ESPHome

         .



 ESPHome:

    C++  95%  

    Home Assistant    

     (OTA)   

   : , , , , 

  :       

  ,  ,  

  Arduino  ESP-IDF framework

   lambda ( C++)  



  :

 Tasmota   YAML/-,      /

 ESPEasy  ,    

  Arduino / ESP-IDF   ,     

 PlatformIO +    ,    HA  



ESPHome  ,      ( ) Home Assistant.



1.3.    



 :



1.  YAML- ( wizard, Device Builder  )

2. ESPHome      (PlatformIO  )

3.    :

    USB (UART)

    OTA (Wi-Fi)

4.    Wi-Fi,  Native API

5. Home Assistant     

6.    HA    ESPHome



 :

 Home Assistant Add-on (  )

 ESPHome Device Builder (-UI,   Docker)

  : esphome run / compile / upload / logs

 CI/CD (   git)



1.4.      



     :

  15   (, , YAML, )

  611   (, , , )

  1216     

  1718    

  1920   , , 






 2.  : ESP8266  ESP32




2.1.  ESP



 Espressif Systems   DIY IoT :

  

  Wi-Fi ( Bluetooth   ESP32)

   GPIO  

     



ESPHome   ESP8266, ESP32   .



2.2. ESP8266



 ():

  Tensilica L106, 80/160 

 ~80  RAM,  

 Flash:  14 

 Wi-Fi 802.11 b/g/n

  Bluetooth

    GPIO



 :

 NodeMCU v2 / v3

 Wemos D1 Mini

 ESP-01 / ESP-01S (  )

 Sonoff Basic (   ESP8266)



 ESPHome:      ESP32-C3

( ,  RAM  flash, BLE). ESP8266 

,    .



  ESP8266 (  ):

GPIO0, GPIO2, GPIO15     

GPIO1, GPIO3  UART0 (TX/RX)

GPIO611    flash



2.3. ESP32  



 ESP32:

  Xtensa LX6,  240 

 ~320  RAM,  4  flash (+PSRAM   )

 Wi-Fi + Bluetooth Classic/BLE

   (ADC, DAC, touch, hall, CAN  ..)

        



:



ESP32-S2

Wi-Fi,  BLE, USB OTG,     USB



ESP32-S3

, Wi-Fi + BLE 5,  AI/,   PSRAM



ESP32-C3

 RISC-V, Wi-Fi + BLE 5,    ESP8266

 GPIO,  ,     



ESP32-C6

RISC-V, Wi-Fi 6 + BLE + Thread/Zigbee (OpenThread  ESPHome)

      Mesh/Thread



ESP32-H2

BLE + Thread/Zigbee,  Wi-Fi    Thread-



ESP32-P4

 RISC-V,    (, UI)



 ESPHome ():

   : ESP32 ()

 / : ESP32-C3

     Thread: ESP32-C6

     : ESP8266



2.4.   



  :

    flash/PSRAM

  USB-UART (CP2102, CH340,  USB  C3/S2/S3)

     (DevKit vs )

 Ethernet (Olimex ESP32-POE, WT32-ETH01)

    (LilyGO T-Display, M5Stack)

 : 5  USB, 3.3 , Li-ion



 board ID  ESPHome (PlatformIO):

esp32dev            ESP32

nodemcuv2          NodeMCU ESP8266

esp32-c3-devkitm-1

esp32-s3-devkitc-1

mhetesp32devkit

lolin_s2_mini



          generic:

esp32dev / esp01_1m / esp32-c3-devkitm-1



2.5.   



  3.3  (  3.0    Wi-Fi)

 Condensators 100 nF + 10100 F   

        ,  

     

 Brownout detector  ESP32     






 3.     




3.1.  



1) Home Assistant Add-on

  .  HA: Settings ? Add-ons ? Add-on Store ? ESPHome.

   - Dashboard.



2) Docker

docker run -d --name esphome -v /path/to/config:/config \

-v /etc/localtime:/etc/localtime:ro --network host \

ghcr.io/esphome/esphome



3) pip ( )

python3 -m venv esphome-venv

source esphome-venv/bin/activate   # Windows: esphome-venv\Scripts\activate

pip install esphome

esphome version



4) ESPHome Device Builder (standalone -UI)

     ,    HA.



3.2.    wizard



esphome wizard my_device.yaml



 :

   (hostname, ,  )

  (ESP32 / ESP8266)

  (board)

 SSID   Wi-Fi



   YAML.     :



esphome run my_device.yaml



 ,    (USB / OTA)  

 .



3.3.   



 :



esphome-configs/

??? secrets.yaml

??? packages/

?   ??? base_wifi.yaml

?   ??? base_api.yaml

?   ??? sensors_common.yaml

??? livingroom.yaml

??? bedroom_switch.yaml

??? weather_station.yaml



secrets.yaml (     ):



wifi_ssid: "MyHomeWiFi"

wifi_password: "supersecret"

api_encryption_key: "__base64"

ota_password: "ota_secret"



   API:

openssl rand -base64 32



3.4.   CLI



esphome config device.yaml     #   

esphome compile device.yaml    #   

esphome upload device.yaml     #  

esphome logs device.yaml       #  (USB  API)

esphome run device.yaml        # compile + upload + logs

esphome clean device.yaml      #   

esphome wizard new.yaml        #   



3.5.    USB



1.   USB- (data-,  charge-only)

2.   ESP32:  BOOT,  RESET,  RESET,  BOOT

3.     esphome run

4.   

5.       Wi-Fi




  .


   .

   ,     (https://www.litres.ru/book/uchitel-nachalnoy/kurs-sozdaniia-iot-ustroistv-s-pomoshch-iu-esphome-74541424/)  .

      Visa, MasterCard, Maestro,    ,   ,     ,  PayPal, WebMoney, ., QIWI ,       .


