Creiamo una IP Cam DIY con ESP32-Cam ed integriamola in Home Assistant tramite ESPHome

La flessibilità di ESP32 e la programmabilità di Home Assistant permettono a qualsiasi utente di creare molteplici dispositivi DIY o IoT da gestire nella domotica. Una di queste applicazioni la andiamo a vedere in questo articolo; vedremo come realizzare una IP Cam in Home Assistant utilizzando una economica ESP32-Cam.

ESP32-Cam

La ESP32-Cam che andiamo ad adoperare adopera una ESP32-S con MPU a 32bit e 240MHz, coadiuvata da 520KB di RAM e 4MB di memoria Flash. Come ogni ESP32 supporta pienamente la Wi-Fi a 2,4GHz, essendo così compatibile con ogni rete Wi-Fi sia domestica che aziendale e la tecnologia Bluetooth LE.

Questa scheda ha una tensione di lavoro di 3,3V, ma possiamo alimentarla con i 5V. Tale alimentazione possiamo fornirla tramite l’omonimo pin o tramite il modulo ESP32-CAM-MB, venduto anche separatamente alla scheda, utilissimo per caricare il codice che tra poco vedremo e dotato di porta Micro-USB.

La ESP32-Cam supporta fotocamere OV2640 e OV7670 e possiede un led integrato al pin GPIO4 come illuminazione. Troviamo anche un lettore TF Card integrato per salvare i dati su una MicroSD.

Tra le interfacce supporta abbiamo UART, SPI, I2C, PWM, ADC, DAC.

Potete acquistare la ESP32-Cam:



ESPHome

Andiamo ora a predisporre Home Assistant in modo da interagire con la ESP32-Cam e poterla programmare. Per renderlo possibile dobbiamo andare ad installare ESPHome, un add-on che ci permette di programmare, integrare e gestire device con ESP8266 e ESP32. Per integrarla muoviamoci dalla Plancia su Impostazioni e poi su Componenti aggiuntivi.

Una volta entrati, clicchiamo sul pulsante RACCOLTA DI COMPONENTI AGGIUNTIVI, posizionato in basso a destra.

Una volta aperta la pagina, nella casella di ricerca digitate ESPHome ed installate il componente come appare nell’immagine sottostante.



Ricordatevi di flaggare tutte le voci come in figura.

Codice

Aperto ESPHome, aggiungiamo un nuovo dispositivo cliccando su NEW DEVICE.

Avendo installato ESPHome per la prima volta sarà necessario andare a inserire le credenziali di accesso alla rete Wi-Fi di casa. Diamo anche un nome al dispositivo.

 

Ci viene chiesto di collegare la scheda al PC, ma per il momento clicchiamo su Skip this step. Collegheremo più avanti la scheda.

La procedura guidata ci chiederà di scegliere il tipo di dev-board che dobbiamo programmare: scegliamo ESP32.

Verrà creato il dispositivo ESPCam Studio (il nome che abbiamo dato noi al device). Se viene chiesta anche la creazione di una API Key procedete ad installarla o a skipparla.

Clicchiamo su EDIT e passiamo ora al codice vero e proprio [LINK] per far funzionare la nostra ESP32-Cam. Di seguito riportiamo il codice scritto per la nostra ESP32-Cam che andrà installata nello Studio (da qui il nome). Voi dovete personalizzare solo alcune parti:

esphome:
  name: espcam-studio
  friendly_name: ESPCam Studio

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

web_server:
  port: 80

ota:
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Espcam-Studio Fallback Hotspot"
    password: "xxxxxxxxxxxx"

captive_portal:

# Example configuration entry
esp32_camera:
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO26
    scl: GPIO27
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  power_down_pin: GPIO32

# Image settings
  name: ESPCam Studio

# Flashlight
output:
  - platform: gpio
    pin: GPIO4
    id: gpio_4

# GPIO_4 is the flash light pin
light:
  - platform: binary
    output: gpio_4
    name: flashlight

Come vedete, le dichiarazioni riguardanti i diversi GPIO sono adoperabili solo per la ESP32-S che stiamo adoperando per questa integrazione. I parametri adoperati saranno diversi se sceglierete un modello differente. I parametri relativi alla API Key, password OTA e le credenziale dell’AP sono forniti automaticamente da ESPHome nella prima fase di programmazione, vista sopra: non modificateli. Potete personalizzare liberamente i parametri del name e del friendly_name.



Verifichiamo se il codice è stato compilato correttamente, premendo i tre puntini in basso a destra e poi clicchiamo su Validate.

Attendiamo la fine della compilazione e se tutto è stato fatto in maniera corretta otterremo una schermata simile a questa.

Ora passiamo ad installare tutto sulla nostra ESP32-Cam, andando sui tre puntini in basso a destra e poi clicchiamo su Install.

Selezioniamo Plug into this computer, collegando la dev-board al PC con il cavo USB e selezioniamo la porta (COM3 nel nostro caso). Attendiamo che il processo di installazione termini con successo.

Terminato il processo, risulterà online ed integrabile sulla Plancia di Home Assistant. Muovendoci su Home Assistant, andando dalla plancia a Impostazioni -> Dispositivi e servizi noteremo che il device è stato rilevato. Clicchiamo su Configura e poi Invia.

A configurazione terminata troveremo il nostro dispositivo, gestendo sia la cam che il led integrato.

 

Andiamo sulla plancia, aggiungiamo una nuova scheda e cerchiamo per entità il device appena creato.



Selezioniamo le voci che ci interessano e aggiungiamo tutto. Il risultato sarà il seguente. Ora potete avviare la vostra ESP32-Cam da remoto, controllare in live ciò che avviene, attivare e disattivare il led integrato per illuminare meglio l’ambiente.