Sistema di controllo del riscaldamento “lowcost” : Esp8266 + Raspberry

IOT FOR Dummies.

 Ovvero: se ci sono riuscito io, può farcela chiunque 😉

Da tempo pensavo di realizzare un sistema di controllo del riscaldamento “lowcost” che potesse essere controllato anche da remoto. Una possibile soluzione potrebbe essere quella di utilizzare due schede esp2866 con sensore di temperatura, relayed un hub(cioè un intermediario) per gestire le comunicazioni tramite protocollo MQTT.

  • Prima precisazione: Il motivo per cui non ho collegato ad una singola scheda sia il sensore di temperatura che il relay (cosa assolutamente possibile) è perché volevo effettuare la misurazione nell’ambiente in cui si soggiorna e che, di solito, è distante dal locale in cui si trova la caldaia.
  • Seconda precisazione: in commercio esistono soluzioni che semplificano l’assemblaggio dei vari componenti ed abbassano ulteriormente i costi.  A prezzi ridicoli si possono trovare schede esp2866 con sensore dht11 a bordo e schede con relay 10 Ampere. Io ho preferito la soluzione “da assemblare” perché sto imparando a fare i collegamenti e perché non volevo attendere un mese per avere tutto l’occorrente dalla Cina.

Per realizzare il sistema ho utilizzato:

  • Due schede esp2866 (in grado di collegarsi in rete tramite wifi) – costo 4 euro
  • Un sensore di temperatura dht11 – costo da 1,50 fino a 3 euro
  • Un relay 10A – costo 2,20 euro inclusa spedizione su Ebay
  • Un HUB sul quale installare un Broker MQTT, io ho utilizzato una RaspberryPi 3 (esistono anche soluzioni Cloud come CloudMQTT). Gratis se si utilizza il servizio CloudMqtt in versione base, circa 45 euro se si decide di investire in una Raspberry PI che ci permetterà di realizzare un sistema di automazione domestica scalabile.

 



[read more=”English Version” less=”Read Less”]

For some time I had been thinking of creating a low-cost heating control system that could also be controlled remotely. One possible solution could be to use two esp2866 cards with temperature sensor, relayed a hub (i.e. an intermediary) to manage communications via MQTT protocol.

First clarification: The reason why I did not connect to a single board both the temperature sensor and the relay (which is absolutely possible) is because I wanted to make the measurement in the environment in which you stay and that, usually, is far from the room where the boiler is located.
Second clarification: on the market there are solutions that simplify the assembly of the various components and further lower costs. At ridiculous prices you can find esp2866 boards with dht11 sensor on board and boards with 10 Ampere relay. I preferred the solution “to assemble” because I’m learning to make the connections and because I did not want to wait a month to have everything you need from China.

I used to make the system:

Two esp2866 boards (able to connect to the network via wifi) – cost 4 euro
– temperature sensor dht11 – cost from 1.50 up to 3 euro
– 10A relay – cost 2,20 euro including shipping on Ebay
–  HUB on which to install an MQTT Broker, I used a RaspberryPi 3 (there are also Cloud solutions such as CloudMQTT). Free if you use the CloudMqtt service in the basic version, about 45 euros if you decide to invest in a Raspberry PI that will allow us to create a scalable home automation system.

[/read]

Il protocollo MQTT

Ci sarebbe sicuramente tantissimo da dire sul protocollo MQTT.Gli esperti mi perdoneranno se cercherò di semplificare al massimo il discorso. In poche parole, il protocollo MQTT serve a far comunicare gli elementi del sistema IOT che stiamo realizzando.

Questi i termini base:

  • Il “topic” è l’argomento per il quale possono essere pubblicati i messaggi e sul quale i subscribers possono restare in ascolto. Esempio: home/riscaldamento. Se volessimo utilizzare anche il sensore di umidità del DHT11 per comandare un umidificatore, potremmo anche pensare, in un secondo tempo, ad un topic home/umidità
  • I “publishers” sono gli elementi che pubblicano i messaggi per un determinato topic. Nel nostro caso la scheda ESP2886 con il sensore di temperatura invia il comando di accensione o spegnimento della caldaia
  • I “subscribers” sono gli elementi in ascolto su un determinato topic. Nel nostro caso la scheda ESP2866 con il relay che accende o spegne la caldaia in base al comando ricevuto
  • Il “broker MQTT”, il centro di smistamento dei messaggi. Nel nostro caso la Raspberry PI con sistema Hassbian e add-onMosquitto.

Un po di foto

esp8266 controlliamo la caldaia
esp8266 controllo temperatura e caldaia

 

Sensore temperatura - esp8266 controllo temperatura e caldaia
Sensore temperatura – esp8266 controllo temperatura e caldaia

 

Sensore temperatura - esp8266 controllo temperatura e caldaia
relè – esp8266 controllo temperatura e caldaia

 



Il Publisher

La prima scheda ESP2866 con il sensore di temperatura funziona come “publisher”. Quando la temperatura varia rispetto una determinata soglia, il publisher invia un comando di accensione o spegnimento al broker MQTT sul topichome/temperatura. Se la temperatura scende al di sotto di una determinata soglia, la scheda invia un comando di tipo “ON”. Al contrario invia un comando di tipo “OFF”.

 

Il Subscriber

La seconda scheda ESP2866 con relayresta in ascolto sul topichome/riscaldamento e, in base al messaggio ricevuto dal broker, accende o spegne la caldaia chiudendo o aprendo il circuito di controllo dell’impianto di riscaldamento

Il Broker MQTT

Sulla Raspberry ho installato Hassbian, un sistema operativo che la trasforma in un centro di controllo ed automazione domestica in grado di gestire, tra l’altro, le comunicazioni tra elementi IOT. Hassbian contiene un set di funzioni di base ma può essere esteso tramite l’installazione di add-on.  Per quello che volevo realizzare, ho installato Mosquitto,un broker gratuito MQTT. Quando il broker riceve un messaggio per un determinato topic, provvede a smistarlo a tutti i subscribers in ascolto su quel canale.

Il codice

Passiamo agli  sketches.

 

 

 

[read more=”English Version” less=”Read Less”]

One must be loaded on the ESP8266 board that controls the temperature sensor
The other one has to be loaded on the ESP8266 board that controls the realy

[/read]

 

 

 

Bruno Gangemi

 

Key :esp8266 controllo temperatura e caldaia ; esp8266 ; Raspberry ; Controllo temperatura esp8266