Creare un sensore di livello del pellet per una stufa e integrarlo su Home Assistant

Nel precendete articolo ho raccontato come sono riuscito a domotizzare una stufa a pellet Thermorossi Mon Amour integrandola con Home Assistant. Quelle che però ancora mancava era la possibilità di conoscere il livello di pellet in tempo reale. Ho così deciso di realizzare un sensore in modo da poter mostare la percentuale di pellet presente nella stufa e inviare questa informazione ad Home Assitant.

Ho utilizzato un esp8266 D1 Mini Tasmotizzato, dove ho collegato un sensore VL53L0X che grazie ad un modulo laser riesce a misurare la distanza che si frappone tra lui e il primo ostacolo. Ho aggiunto anche un display oled SSD1306 su cui visualizzare la percentuale di pellet ancora rimanente. Il tutto alimentato da un covertitore 220VAC-5VDC HLK-PM01.

ESP 8266 D1 Mini

 

VL53L0X

 

SSD1306

 

HLK-PM01

 

Una volta assemblato il tutto, ho posizionato il sensore VL53L0X sulla griglia posta sopra il serbatoio del pellet, rivolgendolo verso il basso, in modo da misurare la distanza che lo separa dal pellet. Più la distanza sarà breve e più il serbatoio sarà considerato pieno. Contrariamente, più sarà lunga la distanza e più il serbatoio sarà considerato vuoto.

Il sensore VL53L0X e il display SSD1306 utilizzano entrambi il bus I2C per comunicare con il D1 Mini per cui vanno collegati in parallelo ai pin D1 e D2 del D1 Mini, utilizzando i pin relativi ai segnali SCL e SDA (come riportato sullo schema in alto).

Tasmotizzare il D1 Mini

Come dicevo prima, sul D1 Mini ho installato il custom firmware Tasmota v9.2.0. Ho compilato manualmente firmware aggiungendo il supporto per il display SSD1306 e per il sensore VL53L0X. Per fare questo basta aggiungere le seguente righe nel file user_config_override.h:

#define USE_DISPLAY
#define USE_DISPLAY_SSD1306
#define USE_VL53L0X

Caricarto il firmware sul D1 Mini, l’ho configurato come modulo generico andando ad assegnare ai pin D1 e D2 rispettivamente le funzioni I2C SDA e I2C SDL.

Dal menù “Impostazioni / MQTT” ho inoltre impostato il topic che deve essere utilizzato per trasmettere le informazioni via mqtt: tasmota_pellet

A questo punto se tutto è collegato nel modo giusto, possiamo verificare che il D1 Mini veda correttamente sia il display SSD1306 e sensore VL53L0X. Per fare questo, dall’intefaccia web di Tasmota ci posizioniamo sulla funzione di Console e impariamo il comando I2CSCAN. In questo modo dovrebbero comparire a video gli indirizzi (0x29 e 0x3c) dei due componenti presenti sul bus I2C:

stat/tasmota_pellet/RESULT = {"I2CScan":"Device(s) found at 0x29 0x3c"}

Verificato che i due componenti sono riconosciuti correttamente passo a inizializzare il display con seguenti comandi sempre da Console:

DisplayAddress 0x3c
DisplayModel 2
DisplayDimmer 100
DisplayMode 0

Imposto a 10 secondi il periodo di invio dati relativi alla telemetria e imposto a zero il numero di decimali che dovranno essere gestiti nelle operazioni matematiche.

TelePeriod 10
CalcRes 0

Adesso definisco le variabili MEM1 e MEM2 che andranno ad indicare rispetivamente la distanza minima e massima misurabile dal sensore per considerare il serbatoio pieno e vuoto:

  • MEM1: distanza misuarata dal sensore per considerare il livello del pellet al 100% (nel mio caso ho impostato 50 millimetri)
  • MEM2: distanza misuarata dal sensore per considerare il livello del pellet allo 0% (nel mio caso ho impostato 300 millimetri)
Mem1 50
Mem2 300

Adesso definisco ed attivo la Rule1 per convertire la distanza misurata dal sensore nella percentuale di capienza e la pubblico via mqtt sul topic tele/tasmota_pellet/PERCENT in modo che Home Assistant possa raccogliere il valore:

Rule1
  ON tele-VL53L0X#distance DO Backlog var1 %value%; event checklimit=%value%; event senddistance; ENDON
  ON event#checklimit>%mem2% DO var1 %mem2% ENDON
  ON event#checklimit<%mem1% DO var1 %mem1% ENDON
  ON event#senddistance DO SCALE1 %var1%, %mem1%, %mem2%, 100, 0 ENDON
  ON event#senddistance DO event pubdata=%var1% ENDON
  ON event#senddistance DO event dispgr=%var1% ENDON
  ON event#pubdata DO publish tele/tasmota_pellet/PERCENT %var1% ENDON
 
Rule1 1

Come ultima cosa definisco la seconda rule che si occupa di mostrare sul display il livello di pellet:

Rule2
  ON event#pubdata=%var2% DO BREAK
  ON event#pubdata DO var2 %value% ENDON
  ON event#pubdata DO DisplayText [zx1y1u127:63:5] ENDON
  ON event#pubdata DO Backlog DisplayText [c5l2f0s2p-3]%var1%; DisplayText[c5l3f0s2p-3]% ENDON
  ON event#dispgr=%var3% DO BREAK
  ON event#dispgr DO var3 %value% ENDON
  ON event#dispgr>90 DO DisplayText [x1y1U127:63:5] BREAK
  ON event#dispgr>80 DO DisplayText [x1y1U114:63:5] BREAK
  ON event#dispgr>70 DO DisplayText [x1y1U101:63:5] BREAK
  ON event#dispgr>60 DO DisplayText [x1y1U89:63:5] BREAK
  ON event#dispgr>50 DO DisplayText [x1y1U76:63:5] BREAK
  ON event#dispgr>40 DO DisplayText [x1y1U63:63:5] BREAK
  ON event#dispgr>30 DO DisplayText [x1y1U50:63:5] BREAK
  ON event#dispgr>20 DO DisplayText [x1y1U37:63:5] BREAK
  ON event#dispgr>10 DO DisplayText [x1y1U24:63:5] BREAK
  ON event#dispgr>5 DO DisplayText [x1y1U12:63:5] BREAK
  ON event#dispgr=0 DO DisplayText [x1y1u127:63:5] BREAK
 
Rule2 1

A questo punto se tutto è stato fatto nel modo corretto dovremmo poter visualizzare sul display il livello di pellet presente nel serbatoio della stufa.

Configuriamo Home Assistant

Per far si che Home Assistant possa mostraci il livello di pellet della stufa, dobbiano andare a definire manulmente nel file configuration.yaml un’entità di tipo sensore:

sensor:
  - platform: mqtt
    name: pellet_percentuale
    state_topic: "tele/tasmota_pellet/PERCENT"
    unit_of_measurement: "%"
    availability_topic: "tele/tasmota_pellet/LWT"
    payload_available: "Online"
    payload_not_available: "Offline"

Definito il sensore possiamo riavviare Home Assistant in modo che si accorga della modifica eseguita sul file di configurazione.

A questo punto sarà possibile definire una scheda sull’interfiaccia Lovelace di Home Assistant che ci permetterà di mostrare il livello di pellet presente nella stufa.

 

 

 

 

 

Un pensiero su “Creare un sensore di livello del pellet per una stufa e integrarlo su Home Assistant

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.