ESPHome

Volgens Wikipedia: De ESP is een low-cost Wi-Fi chip met microcontroller ontworpen door Espressif Systems in China. Populair geworden vanuit de UK via de eerste ESP-01 modules waarmee TCP/IP connecties gemaakt kunnen worden over een Wi-Fi netwerk.

Er zijn twee ESP-chips die het meest gebruikt worden, de ESP32 en de ESP8266 waarbij de ESP32 de verbeterde opvolger is van de initiële ESP8266.

ESPHome is een systeem om de ESP8266/ESP32 te beheren aan de hand van configuratie-bestanden en kan gebruikt worden in o.a. Home Assistant.

Voor het programmeren en/of communicatie met de ESP-modules is een USB naar serieel adapter nodig, bijvoorbeeld deze. Daarnaast heb je dan ook nog een USB naar USB-micro en een paar jumper-wires nodig.

Bijvoorbeeld:

Deze ESP-01 is een WiFi connector en heeft de volgende pin-bezetting:

  1. GND, Ground (0 V)
  2. GPIO 2, General-purpose input/output No. 2
  3. GPIO 0, General-purpose input/output No. 0
  4. RX, Receive data in, also GPIO3
  5. VCC, Voltage (+3.3 V; can handle up to 3.6 V)
  6. RST, Reset
  7. CH_PD, Chip power-down
  8. TX, Transmit data out, also GPIO1

De functionaliteit van de chip wordt gemaakt door deze te flashen met de configuratie waarna de ESP via WiFi benaderd kan worden. Op de GPIO-poort(en) kunnen dan diverse sensors aangesloten worden, zoals temperatuur, vochtigheid, beweging, lichtsterkte, etc…

Om het flashen van de ESP’s eenvoudiger te maken is er de ESPHome integratie binnen Home Assistant. De site voor ESPHome vind je hier.

ESPHome kan gevonden worden via de Add-on’s optie

en eenmaal geïnstalleerd verschijnt de ESPHome optie in het menu van Home Assistant.

../_images/dashboard_empty.png

Een nieuw device kan toegevoegd worden met Home Assistant indien deze via https gebruikt wordt, zoniet, dan volgt een melding en kan ESPHOME Web gebruikt worden.

Eenmaal op de ESPHome web pagina, verschijnt de volgende melding:

Met CONNECT verschijnen de poorten die gebruikt kunnen worden, in dit geval de onderste seriële poort via mijn MacBook waarop de USB-to-Serial adapter is aangesloten.

Eenmaal in status ‘CONNECTED‘ kan de optie ‘PREPARE FOR ADOPTION‘ gebruikt worden

Kies vervolgens voor ‘MAKE ADOPTABLE

Indien de adoption niet lukt verbind dan GPIO0 met GND en maak met RST kortstondig verbinding met GND tijdens ‘Connecting’. Hierna zal het wel lukken om de ESP te flashen.

Hierna kan de Wi-Fi connectie ingesteld worden via de 3 puntjes -> Configure Wi-Fi:

Sluit de huidige ESPHome pagina om terug te keren naar Home Assistant.
ESPHome zal dan de ESP-chip detecteren

Kies vervolgens voor ADOPT en geef het device een naam.

De ESP zal dan voorzien worden van de firmware

In de Home Assistant ESPHome pagina is het device dan gereed:

Kies voor EDIT om de configuratie te bekijken en eventueel te wijzigen. De standaard ziet er ongeveer zo uit:

esphome:
  name: esphome-web-2a5be1

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-2A5Be1"
    password: "hjahdge6BIz"

captive_portal:
    

Vanaf hier kunnen devices toegevoegd worden aan de ESP chip. Bijvoorbeeld sensoren:

BME280 Temperatuur, Vochtigheid en luchtdruk sensor

../../_images/bme280-full.jpg

De BME280 wordt aangesloten aan 5V, GND en de SDA (data) en SCL (clock). De SDA wordt verbonden met GPIO0 en de SCL met GPIO2 van de ESP8266 WiFi module.

Zie ook de pagina op ESPHome: https://esphome.io/components/sensor/bme280.html

Kies voor EDIT in de ESPHome optie van Home Assistant:

Voeg de volgende regels toe aan de configuratie, onder het ‘esp8266 deel om de I2C functie toe te voegen aan de configuratie:

i2c:
  sda: 0
  scl: 2
  scan: true

Vervolgens kunnen onderaan de configuratie de sensoren toegevoegd worden:

sensor:
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BME280 Pressure"
    humidity:
      name: "BME280 Humidity"
    address: 0x76
    update_interval: 60s 

Belangrijk hierbij is het address, dit kan 0x76 of 0x77 zijn. Het totale script ziet er dan alsvolgt uit:

esphome:
  name: esphome-web-2a5be1

esp8266:
  board: esp01_1m

i2c:
  sda: 0
  scl: 2
  scan: true

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-2A5Be1"
    password: "S7EJg23536aaCAr"

captive_portal:

sensor:
  - platform: bme280
    temperature:
      name: "BME280 Temperature"
      oversampling: 16x
    pressure:
      name: "BME280 Pressure"
    humidity:
      name: "BME280 Humidity"
    address: 0x76
    update_interval: 60s

Kies rechtsboven voor SAVE en INSTALL. De installatie kan nu Over The Air, (OTA) dus kies voor ‘Wirelessly

Nadat OTA succesvol is afgesloten kan de log bekeken worden en hierin is te zien dat het device gevonden is en elke minuut worden de waardes doorgegeven.

In de Home Assistant Integraties zal de ESPHome automatisch gedetecteerd worden.

Kies voor CONFIGUREER

OPSLAAN

eventueel ruimte kiezen en VOLTOOIEN

ESPHome zal dan een device tonen:

kies voor ‘1 apparaat’

en ziedaar, de sensors zijn toegevoegd aan Home Assistant!