Domotizzare un contatore del gas tradizionale con Sonoff e Home Assistant

8 minuti di lettura
SCOPI DEL PROGETTO:
  • Domotizzare un contatore del gas tradizionale (o analoghi) su Home Assistant (o altri HUB personali)
  • Livello di difficoltà: alto
  • Costo: basso
CONCETTI AFFRONTATI:
  • Modifica fisica a un sensore
  • Trasmissione radio
  • Configurazione software
COMPONENTI SOFTWARE UTILIZZATE:
COMPONENTI FISICI UTILIZZATI:
PROGETTO MAGGIORMENTE INDICATO PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione progetto: 1.0

Abstract

Come abbiamo visto molte volte una delle sfide più difficili da vincere è spesso quella di riuscire a domotizzare qualcosa che, nativamente, non sarebbe nella maniera più assoluta domotico. Ne abbiamo parlato diffusamente in molte guide, come quelle dedicate alla domotizzazione di climatizzatori domotici, di sistemi di irrigazione per giardini, di sistemi di allarme e molto altro.

Gli utenti Home Assistant beneficiano della grande flessibilità offerta da questo HUB personale il quale si presta, spesse volte, alla domotizzazione dei più insospettabili impianti, sistemi ed altro. Per quanto riguarda i consumi elettrici, per esempio, ci siamo spesi con un progetto che illustra come dotarsi di contabilizzatori a partire dalla misurazione dell’assorbimento dell’impianto elettrico; nel presente progetto, invece, offriamo una possibile soluzione semplice e funzionale per la misurazione dei consumi del gas.

N.b. Concettualmente, il presente progetto è applicabile anche qualunque altro contatore (d’aqua, o altro tipo) che presenti le caratteristiche tecniche del contatore gas preso in esame (spiegate a seguire).

Approccio del progetto

Dato che molti contatori tradizionali del gas (quelli con il contatore numerico a numeri circolari, per capirci) dispongono, sulla rotellina che indica la cifra dei centesimi, di un piccolo magnete che gira assieme alla rotella, il quale compie un giro completo (quindi “un passaggio“) ogni 0,01 metri cubi di gas transitati per il contatore.

Tale magnete è presente quando il contatore, per quanto tradizionale, sia dotato di predisposizione per tele-lettura.

Contatore del gas con predisposizione per telelettura
un esempio di contatore con predisposizione.

Ciò che faremo quindi è… creare per l’appunto un sistema di tele-lettura che sfrutti questa predisposizione offerta dal contatore. Questo permette di non manomettere il contatore (una pratica totalmente illegale) e ottenere il risultato di contabilizzare i consumi sulla nostra domotica personale.

WARNING & DISCLAIMER: Prima di effettuare qualsiasi modifica al contatore, anche solo “estetica”, appurate con il vostro fornitore di poterla attuare liberamente – diversamente, potreste incappare nelle responsabilità previste dalla legge. inDomus non sollecita in alcun modo alcuna pratica illegale, si limita infatti alla sola illustrazione di temi didattici con applicazione puramente teorica: qualsiasi pratica messa in campo dall’utente e vietata dal fornitore e dalla legge sarà a pieno carico dell’utente.

Per “raccogliere” l’impulso magnetico ciclicamente prodotto dal contatore utilizzeremo un semplicissimo sensore, il Sonoff DW1, il quale sostanzialmente presenta un sensore reed, in grado di attivarsi quando gli si avvicina un magnete. Quando questo accade, la semplice elettronica del Sonoff DW1 invia  un segnale radio a 443 Mhz contenente uno specifico codice, il quale varia da esemplare ad esemplare. Solitamente il DW1 viene utilizzato come sensore di apertura varchi, ma in questo progetto lo smonteremo e lo utilizzeremo per rilevare il piccolo magnete del contatore: abbiamo scelto questo perché è a batteria, il che permette l’installazione accanto ai contatori dove, tipicamente, è assente l’alimentazione di rete (per ovvie questioni di sicurezza).

Ottenuto il risultato di “trasformare” ogni centesimo di metro cubo di gas consumato in un impulso radio, lo step successivo è quello di rilevare questo impulso e trasformarlo in un messaggio MQTT, così da renderlo comprensibile alla nostra domotica.

A tal scopo utilizzeremo un altro componente molto semplice, il Sonoff Basic RFR3. Si tratta di un interruttore intelligente Wi-Fi dotato, oltre alla sua principale funzione di interruttore 220 volt, anche di un ricevitore radiofrequenza 433 Mhz. Dato che, se riprogrammato nel firmware, il Sonoff Basic può inviare messaggi MQTT – anche partendo dalla ricezione di impulsi radio – quel che faremo è proprio utilizzare questa funzionalità, offrendo alla domotica personale un comodissimo messaggio MQTT da utilizzare per contabilizzare i consumi.

Catena di domotizzazione contatore del gas - Home Assistant

Assunti

Per realizzare questo progetto è necessario aver dimestichezza con:

In assenza di queste competenze, anche minime, è necessario prima acquisirle.


Al netto di quanto detto sopra, si assume che il Sonoff Basic RFR3 in questione sia già stato riprogrammato con il firmware Sonoff-Tasmota (via DIY o modalità classica), che sia stata configurata la sua funzione MQTT, che si sia installato sulla propria rete un broker MQTT (per esempio Mosquitto sul proprio computer/Raspberry oppure Mosquitto come add-on su HASSIO) e che, ovviamente, le funzionalità MQTT siano attive sul proprio Home Assistant (qui la guida per Raspbian, qui per HASSIO).

Si parte

Modifica del Sonoff DW1

Innanzitutto metteremo mano al Sonoff DW1: rimuoveremo, dissaldandolo (con molta delicatezza, è in vetro) il sensore reed dall’unità principale (quella secondaria – ovvero il magnete solitamente in uso quando il sensore viene utilizzato per la rilevazione di apertura varchi – non servirà per questo progetto) e lo dislocheremo esternamente tramite l’uso di un cavo elettrico bipolare.

Sonoff DW1 - Sensore reed

Una volta dissaldato il sensore reed, andremo a saldarlo ai poli presenti su uno di due capi del cavo elettrico che ci siamo procurati e lo incastoneremo dentro una sezione di canalina, come da immagine che segue. Per piegare i terminali del reed si deve usare una pinzetta molto piccola evitando assolutamente di fare forza sull’ampolla in vetro, la quale tende a rompersi con estrema facilità. In caso di danni, no panic: unità di ricambio di sono in vendita per pochi euro.

Sonoff DW1 - Sensore reed montato su canalina
dettaglio.
Sonoff DW1 - Sensore reed montato su canalina
il terminale finito.

L’elemento così realizzato sarà quello che verrà montato sul contatore. I due poli dell’altro capo del cavo elettrico andranno ovviamente saldati ai due poli presenti dentro l’unità DW1 sui quali precedentemente era attestato il sensore reed che abbiamo dissaldato.

Monteremo poi l’unità DW1 così modificata all’interno di una cassetta di derivazione tipo Gewiss 120×80 (GW44205) o analogo:

Sonoff DW1 - montato cassetta Gewiss

Arrivati a questo punto il sensore DW1 è pronto per essere installato.

Montaggio sul contatore

Con il Sonoff DW1 modificato in modo da fornirgli una “sonda esterna”, siamo pronti a montare quest’ultima sul contatore. Per farlo, utilizzeremo lo spazio naturalmente presente sulla mascherina del contatore, propriamente concepito per la predisposizione alla tele-lettura. Tale pratica consente quindi di non effettuare modifiche (non consentite) al contatore (nuovamente: attenzione a ciò che fate, i sistemi di misurazione non vanno, per nessuna ragione, manomessi):

Sonoff DW1 - Sensore reed montato su contatore
dettaglio.
Sonoff DW1 - Sensore reed montato su contatore
visto frontalmente.

Infine, la cassetta Gewiss potrà essere montata, stagna, nelle vicinanze del contatore (o quantomeno a tiro del cavo che collega il sensore reed).

Cassetta Gewiss
un esempio.

Terminata l’applicazione del sensore possiamo avanzare oltre per avventurarci sul tema dell’interfacciamento radio.

Sonoff Basic RFR3

Come abbondantemente spiegato prima, il Sonoff Basic sarà l’oggetto deputato alla raccolta degli impulsi radio inviati dal sensore Sonoff DW1 e alla trasformazione degli stessi in un contatore incrementale comunicato via MQTT alla domotica centrale.

Ovviamente tale componente dovrà essere posizionato “a tiro” sia degli impulsi radio (noi l’abbiamo testato a una trentina di metri con un paio di muri portanti in mezzo) e della Wi-Fi. Come spiegato negli assunti, si dà per scontato che l’unità sia già stata riprogrammata con firmware Sonoff-Tasmota e sia già configurata su MQTT.

Accedendo alla voce di menu Tasmota (via web, collegandosi all’IP del Sonoff Basic) “Configuration” > “Configure Module“, impostare la voce “Module Type” con “Generic (0)” e, dopo il riavvio, impostare (sempre nella stessa sezione di menu) “D3 GPIO0 Button 1” con “Counter1 (42)“.

Sonoff-Tasmota - configurazione a impulsi

Così facendo si attiverà la funzione di contatore, la quale ovviamente avrà anche un corrispettivo messaggio telemetrico MQTT inviato al broker ad ogni ricezione. Da qui in poi che il nome MQTT del Sonoff Basic in questione sia “Sonoff_Basic_RFR3“; in questo caso, il topic telemetrico inviato sarà qualcosa del genere:

tele/Sonoff_BasicRFR3/SENSOR = {“Time”:”2020-01-14T00:56:20″,”Switch3″:”OFF”,”COUNTER”:{“C1”:0}}

affacciandosi sulla console di Tasmota, sempre via web, sicuramente si troverà un topic del genere nella lista degli ultimi inviati/ricevuti. Come si può apprezzare leggendo il payload del messaggio telemetrico, il campo “C1” è valorizzato con un numero (in questo caso “0“) che indica, per l’appunto, il numero di letture sin qui ricevute.

N.b. il topic telemetrico tele/Sonoff_BasicRFR3/SENSOR viene inviato ogni tot indicato dalla configurazione del parametro TELEPERIOD, non ad ogni ricezione di impulso da parte del Sonoff DW1. Tale topic contiene il valore di “a quanto siamo arrivati“: è possibile inviarlo per esempio ogni due, o cinque minuti, non c’è bisogno di inviarlo troppo spesso, tanto ai fini del progetto la cosa non cambia.

Maggiori info su come impostare il parametro TELEPERIOD sono disponibili qui.
In breve: per impostare TELEPERIOD a 120 secondi, il comando (via console Tasmota o da broker MQTT)  è:

cmnd/Sonoff_BasicRFR3/TELEPERIOD 120

Per far in modo che Sonoff Basic cominci a conteggiare gli impulsi è necessario che conosca quale codice di riconoscimento il Sonoff DW1 invii ad ogni impulso: per farlo tenere premuto il pulsante sul dorso del Sonoff Basic per 3 secondi (il led rosso emetterà un lampeggio); entro pochi secondi inviare un comando dal Sonoff DW1 (usare una calamita – magari quella inclusa nel kit DW1 – per dare un impulso oppure cortocircuitare il reed per un attimo). Ciò fatto, nella pagina principale di Tasmota (sempre via web) il counter dovrebbe incrementarsi di 1 (e così ad ogni impulso).

Raggiunto questo obiettivo, siamo pronti per conteggiare i consumi presso la domotica di Home Assistant.

Home Assistant

La configurazione presso Home Assisant è davvero elementare: andremo semplicemente ad aggiungere due sensori basati sulla piattaforma “MQTT Sensor” i quali, sulla base dei topic telemetrici, effettuino i conteggi.

N.b. La configurazione proposta utilizza il nome MQTT “Sonoff_Basic_RFR3“; in caso se ne utilizzi un altro, ovviamente la configurazione andrà variata di conseguenza.

Aggiungere quindi in configurazione il seguente codice:

sensor:
- platform: mqtt
    name: "Impulsi Metano"  # dato grezzo impulsi dal Sonof Basic RFR3
    state_topic: "tele/Sonoff_BasicRFR3/SENSOR"
    unit_of_measurement: "imp"
    value_template: '{{ value_json.COUNTER.C1 }}'
  
  - platform: mqtt
    name: "Gas Consumato"
    state_topic: "tele/Sonoff_BasicRFR3/SENSOR"
    unit_of_measurement: "mc"
    value_template: '{{ ( ( (value_json.COUNTER.C1 | float) * 0.01) + 93.62)  | round(2) }}'

Il primo sensore (“sensor.impulsi_metano”) riporta gli impulsi conteggiati dal Sonoff Basic (utile a scopo diagnostico), mentre il secondo (“sensor.gas_consumato“) ci darà il valore convertito in metri cubi. Il numero addizionato (nel nostro caso “93.62“) è un offset in metri cubi che si può sommare o sottrarre a piacere dai metri cubi conteggiati per sincronizzare la lettura con il contatore reale. Ad esempio se il contatore di HA segna 1mc e quello reale segna 2500mc, dovremo sommare 2499 come offset.

Home Assistant - Sensore consumo gas
esempio di andamento nel tempo.

Ottenuto un sensore di misurazione è possibile introdurre uno o più sensori di tipo “Utility Meter” utile alla definizione di contatori veri e propri, in grado di storicizzare i valori dei mesi precedenti (o altri periodi) a scopo di analisi di costo o altro. Si faccia riferimento alla scheda componente per ottenere tali sensori. Come sempre, il limite è la fantasia.

Home Assistant - Sensore consumo gas con Utility Meter
esempi di sensori Utility Meter.
Home Assistant - Sensore consumo gas con Utility Meter - minigraph card
Utility Meter con rappresentazione tramite mini-graph card.

Note conclusive

Il sensore Sonoff DW1 utilizzato in questo progetto e configurato come sopra spiegato trasmette centinaia di impulsi al giorno: la batteria è dunque molto sollecitata. Si consiglia di adottare dei porta-batterie A23 esterni e di collegarli in parallelo per alimentare il Sonoff DW1 con 3 batterie A23 ed avere maggiore autonomia. Altra valida alternativa sarebbe di usare le ben più potenti batterie al litio CR2 da 3V (mettendone 4 in serie con gli appositi porta-batterie CR2 per ottenere i 12V necessari).

Crediamo realisticamente che usando 3 batterie A23 in parallelo si possa coprire una stagione invernale o addirittura un anno intero. Ad occhio possiamo stimare che con 4 CR2 si possano coprire anche 2 anni, forse di più.

Ringraziamenti

Si ringrazia Giovanni per l’ottima realizzazione fattiva del progetto.