Integriamo il sensore DS18B20 in Home Assistant, programmandolo con ESPHome, per monitorare la temperatura
Nel mondo dell’elettronica e dell’Internet of Things (IoT), i sensori di temperatura rivestono un ruolo fondamentale nel monitoraggio ambientale, nel controllo dei processi industriali e nella gestione dei dispositivi domotici. Tra i sensori digitali più apprezzati per la loro semplicità e precisione spicca il DS18B20, un sensore di temperatura digitale prodotto da Maxim Integrated. Questo sensore è spesso venduto integrato in moduli pronti all’uso, come il KY-001, molto diffuso in ambito hobbistico e didattico, ma è anche disponibile in una versione a sonda impermeabile, per misurare la temperatura di liquidi.
Acquistalo su Aliexpress:
- KY-001: https://s.click.aliexpress.com/e/_omGxyC3
- Sensore sonda impermeabile: https://s.click.aliexpress.com/e/_on3nKQJ
Specifiche tecniche
Il cuore del modulo KY-001 è il DS18B20, un sensore di temperatura digitale con interfaccia 1-Wire, una tecnologia che consente la comunicazione tra dispositivi tramite un singolo filo dati (oltre a massa e alimentazione). Questa caratteristica è particolarmente utile nei progetti che richiedono la connessione di più sensori lungo la stessa linea di comunicazione.
Il sensore DS18B20 è progettato per operare in un ampio intervallo di temperatura, che va da -55°C fino a +125°C, rendendolo adatto sia per applicazioni domestiche che industriali. All’interno del range compreso tra -10°C e +85°C, offre una precisione tipica di ±0.5°C, garantendo misurazioni affidabili per la maggior parte degli utilizzi comuni.
Per quanto riguarda l’alimentazione, il DS18B20 è molto flessibile: può funzionare correttamente con una tensione compresa tra 3.0V e 5.5V, il che lo rende compatibile con la maggior parte dei microcontrollori e dei sistemi embedded attualmente in uso.
Infine, ogni sensore DS18B20 è dotato di un codice seriale univoco a 64 bit. Questa peculiarità consente di collegare più sensori sulla stessa linea dati, mantenendo la possibilità di identificarli e gestirli singolarmente. È una funzionalità particolarmente utile nei sistemi di monitoraggio multi-punto o nei progetti che richiedono una rete di sensori distribuiti.
Collegamenti
Il collegamento del modulo KY-001 a una ESP32 è estremamente semplice, uno dei motivi principali della sua popolarità tra i principianti e gli hobbisti. Il modulo richiede solo tre connessioni: il + ai 3,3V, il – al GND e il pin S ad uno dei GPIO digitali della ESP32 (nel nostro esempio al GPIO4).
Codice
Andiamo a creare un nuovo device su ESPHome e chiamiamolo DS18B20. Saltiamo 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 DS18B20 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 (“ds18b20 ”) che quello più leggibile per Home Assistant (“DS18B20”).
esphome:
name: ds18b20
friendly_name: DS18B20
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: "eiIiwh81rOZaKOZ0UChYsdL7zU/q1388+brMTNAgjSA="
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.
captive_portal:
ota:
- platform: esphome
password: "0812af05da2a22eef7e79978fb26f429"
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 (“Ds18b20 Fallback Hotspot”) con una password predefinita, in modo che sia possibile riconfigurarlo.
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Ds18B20 Fallback Hotspot"
password: "hHc8OgjsGjCY"
Il sensore è collegato al pin GPIO4 dell’ESP32, pertanto dichiariamo tale connessione e poi indichiamo che misura la temperatura in gradi Celsius ogni 2 secondi.
one_wire:
- platform: gpio
pin: GPIO4
sensor:
- platform: dallas_temp
name: "Temperatura"
update_interval: 2s
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 DS18B20 da integrare.
Autorizzate la configurazione ed otterrete quanto segue.