Il sensore BME280 è uno dei più economici e completi sul mercato, ideale per realizzare un piccolo sistema di rilevamento ambientale smart con Home Assistant

Il BME280 è un sensore ambientale ad alta precisione sviluppato da Bosch, in grado di misurare temperatura, umidità e pressione atmosferica. Grazie alla sua affidabilità e al basso consumo energetico, è ampiamente utilizzato in progetti di domotica e monitoraggio ambientale. Questo articolo ti guiderà passo dopo passo nell’integrazione del sensore BME280 con ESPHome, in modo da poterlo utilizzare con Home Assistant.

Acquistali su Amazon:

Specifiche tecniche

Il BME280, dotato dell’omonimo chip Bosch, misura circa 13 mm x 10 mm e pesa circa 1g, inoltre è dotato di solo 4 pin, 2 dei quali per sfruttare l’interfaccia I2C. Il sensore sfrutta una tensione di lavoro di 3,3V, ma possiamo alimentarlo senza problemi con i 5V, consumando fino a 3,6 μA. Come detto sopra, il sensore BME280 è discretamente affidabile; abbiamo un’accuratezza dello 0,25% per la pressione con un range compreso tra i 300hPa e i 1100hPa, mentre la temperatura registrabile va da un minimo di -40°C a un massimo di 85°C. L’umidità relativa possiede invece una tolleranza del 3%.

Collegamenti

Il sensore BME280 è collegabile al nostro Arduino tramite interfaccia I2C, ma in alcune varianti è possibile collegarlo anche tramite SPI. Ad ogni modo, la versione in nostro possesso sfrutterà solo la prima interfaccia, adoperando solo 2 pin per la comunicazione e altri 2 per l’alimentazione. Il pin VIN va collegato ai 3,3V, il pin GND al GROUND, il pin SDA al pin 4, mentre il pin SCL al pin 0.

Codice

Andiamo a creare un nuovo device su ESPHome e chiamiamolo BME280Saltiamo per il momento la connessione e selezioniamo la scheda che dobbiamo programmare (ESP32)

Una volta creato, clicchiamo su EDIT per modificare il codice. 

Questo è il codice per configurare una ESP32 per leggere i dati da un sensore BME280 e inviarli a Home Assistant tramite ESPHome. Il dispositivo sarà accessibile in rete tramite Wi-Fi e potrà essere aggiornato via OTA (Over-The-Air) senza bisogno di connessione fisica. Potete scaricarlo a questo LINK.

All’inizio, il codice definisce il nome del dispositivo, sia quello tecnico (“bme280”) che quello più leggibile per Home Assistant (“BME280”).

esphome:
  name: bme280
  friendly_name: BME280

Poi si specifica che il microcontrollore utilizzato è un ESP32 e che il firmware verrà compilato usando il framework Arduino, che è più semplice e supportato rispetto ad altre alternative come ESP-IDF.

esp32:
  board: esp32dev
  framework:
    type: arduino

Il codice attiva il logger, che serve a registrare gli eventi e inviare messaggi di debug. Inoltre, viene attivata l’API di ESPHome, che permette a Home Assistant di comunicare con il dispositivo in modo sicuro grazie a una chiave di crittografia.

logger:

api:
  encryption:
    key: "RfxHFeEhZJlnkO21+paQV9KltSF32WDWjRXKJWwL544="

Per evitare di dover collegare il dispositivo fisicamente ogni volta che si vuole aggiornare il firmware, viene attivata la modalità OTA (Over-The-Air), con una password di sicurezza. Inoltre, è presente la funzione captive portal, che permette di riconfigurare il Wi-Fi direttamente da un browser in caso di problemi di connessione.

ota:
  - platform: esphome
    password: "3a1bc630c824bfdb94aa9b27f7d56810"

Per collegarsi alla rete, il codice usa le credenziali Wi-Fi salvate nei secrets di ESPHome (file separato non visibile nel codice). Se la connessione fallisce, il dispositivo crea un hotspot Wi-Fi di emergenza (“Bme280 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.

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

 
  ap:
    ssid: "Bme280 Fallback Hotspot"
    password: "YSkytPDu84IB"

Trattandosi di un sensore che lavora su interfaccia I2C, questa sezione configura la comunicazione I2C tra l’ESP32 ed il sensore BME280, impostando il pin GPIO4 dell’ESP32 come linea SDA ed il pin GPIO0 come linea SCL. La funziona scan abilita la scansione automatica dei dispositivi connessi al bus I2C, verificando quali dispositivi I2C sono collegati e il loro indirizzo.

i2c:
  sda: GPIO4
  scl: GPIO0
  scan: true

Il sensore viene integrato impostando la comunicazione con I2C, definendo poi le misurazione per Temperatura (in gradi Celsius), Umidità e Pressione (in hPa). L’oversampling è impostato a 16x per aumentarne la precisione nella lettura, riducendo il rumore nella misurazione. Impostiamo l’indirizzo di lettura come 0x76 e chiediamo al sensore di ripetere la lettura ogni 2 secondi.

sensor:
  - platform: bme280_i2c
    temperature:
      name: "Temperatura"
      oversampling: 16x
    pressure:
      name: "Pressione"
    humidity:
      name: "Umidità"
    address: 0x76  # 0x77 se il sensore ha un altro indirizzo
    update_interval: 60s

Salvate e verificate con Validate se il codice è stato scritto correttamente.

Collegate la ESP32 al computer tramite cavo USB, e cliccate su Install.

Conclusa l’installazione, integriamo il device su Home Assistant. Dovrebbe essere arrivata una notifica sulla plancia. In ogni caso, per integrarlo andate su Impostazioni -> Dispositivi e servizi e apparirà il dispositivo BME280 da integrare.

Autorizzate la configurazione ed otterrete quanto segue.