Mettere i dati dei sensori in un DB, usando MQTT

Questo articolo fa parte del progetto La Domotica fai-da-me ed è il naturale proseguimento dell’articolo sul server/broker MQTT.

Una volta realizzato il server è necessario intercettare i dati inviati dai sensori per memorizzarli nel DB.

Esatto, il DB. per poter lavorare con il database è necessario crearne uno. Io uso SQLite perché è facile, leggero e nativamente integrato in Python. Per installarlo basta usare il solito comando su Ubuntu

sudo apt-get install sqlite3

Per creare il DB è sufficiente accedere a sqlite indicando il nome del DB da creare

sqlite3 /percorso/domotica.db

Una volta dentro si devono creare le tabelle necessarie per memorizzare i dati, la struttura che ho pensato io è basata su tre tabelle:

  • I luoghi dei quali mi servono i dati
  • Le temperature
  • I consumi di corrente (questa tabella è usata dal progetto del misuratore di corrente)

Queste sono le tabelle da creare

CREATE TABLE Luoghi 
(
  ID INTEGER PRIMARY KEY ASC, 
  Descrizione TEXT NOT NULL
);

CREATE TABLE Temperature
(
  ID INTEGER PRIMARY KEY ASC, 
  Timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
  Luogo INTEGER,
  Temp REAL,
  Umid REAL,
  Vbatt REAL
);

Una volta create le due tabelle è necessario inserire i vari luoghi che si vogliono monitorare con delle semplici INSERT

INSERT INTO Luoghi (Descrizione) VALUES ('[nome ambiente');

L’identificativo del campo “ID” viene messo automaticamente, per vederlo basta fare una SELECT sulla tabella

SELECT * FROM Luoghi;

Il risultato dovrebbe essere una cosa tipo questa

sqlite> select * from luoghi; 
1|Camera
2|Balcone Strada
3|Cucina
4|Sala

Per comodità è bene prendere nota di questi valori, perché ci serviranno per programmare i sensori e fare le varie query.

Il programma è scritto ovviamente in Python e può essere trovato nella pagina GitHub del progetto. Per poter funzionare sono necessarie alcune librerie, una di queste, che sicuramente manca nel server è la libreria PAHO-MQTT, che permette di gestire MQTT con Python. Si installa con il comando:

pip install paho-mqtt

Il programma va eseguito all’avvio del sistema, se no i sensori troveranno il server, manderanno i loro dati, ma questi non saranno salvati da nessuna parte. Per fare questo è necessario modificare il crontab con il comando

crontab -e

A questo punto si deve inserire la riga

# avvio del sistema che salva i dati vai MQTT al boot
@reboot python /percorso/mqtt_to_db.py >/percorso/mqtt_to_db_std.log 2>&1

per salvare il crontab basta fare Ctrl+X, S (o Y a seconda della lingua del sistema) e poi INVIO

Giusto per capire cosa abbiamo appena scritto:

  • le righe che iniziano con il cancelletto # sono commenti (usare bene i commenti è obbligatorio, sempre!)
  • @reboot: questa cosa va eseguita all’avvio del sistema
  • python /percorso/programma.py: esecuzione del programma
  • >/percorso/log: redirige lo standard output su un file di log invece che a video
  • 2>&1: redirige sullo stesso file di log anche l’output degli errori

Adesso mancano solo più i sensori!

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.ladomoticafaidame.it) come fonte principale.
Se sei bloccato, non riesci a fare qualcosa, non funziona o vuoi apportare delle modifiche, puoi richiedere il mio supporto, acquistando le ore di consulenza (via Skype o Hangout) direttamente da qui.

Registrare i dati dei sensori via MQTT

Nel progetto La Domotica fai-da-me ho inserito alcuni sensori che leggono i dati ambientali di casa e li trasmettono al server in mo tale che questo possa memorizzarli in un DB. Tutti i sensori sviluppati fin qui inviando i dati facendo una chiamata web, nello specifico una http-GET di questo tipo:

http://[ip_server]/?tipo=temperatura&luogo=bagno&dato=22,5

Sul server è attivo un server web che riceve la chiamata, legge i dati e li memorizza nel DB. Tutto facile, anche a livello di codice.

Esiste però un protocollo, sviluppato specificamente per i sensori IoT, che ha alcune caratteristiche molto interessanti:

  • E’ molto molto facile da implementare lato server
  • E’ molto molto facile da implementare su qualunque dispositivo (nel mio caso sulle schede ESP8266), ci sono milioni di librerie
  • Ha pochissimo overhead di dati (vedi dopo)
  • La trasmissione del dato consuma molta meno energia di una chiamata http. Questo allunga la durata delle batterie, cosa molto interessante
  • Funziona su qualunque mezzo di trasmissione.
Leggi tutto “Registrare i dati dei sensori via MQTT”

Misurare la corrente che si consuma, con ESP8266

Questo post è un’evoluzione di quello fatto qualche anno fa, con lo stesso scopo, ma utilizzando una (non proprio economica) scheda Arduino Yun. All’epoca non conoscevo le ESP e avevo la scheda inutilizzata a casa, con l’esperienza e il senno del poi ho abbassato il prezzo del progetto di oltre metà.

Nota importante e fondamentale: con questo progetto si lavora vicino alla corrente elettrica 220V, toccare la 220V è pericoloso, ci si può far male o si può morire. Se non sai quel che fai chiedi aiuto. Non sono responsabile per qualsiasi danno a persone, cose, animali o qualunque altra cosa.

Il progetto è rilasciato con licenza GPL V.3 (Open Source), quindi puoi prenderlo, fartelo a casa, modificarlo e pubblicarlo a nome tuo. Se lo condividi modificato devi citare questo sito (www.ladomoticafaidame.it) come fonte principale.
Se sei bloccato, non riesci a fare qualcosa, non funziona o vuoi apportare delle modifiche, puoi richiedere il mio supporto, acquistando le ore di consulenza (via Skype o Hangout) direttamente da qui.

Questo progetto si inserisce all’interno del lavoro La Domotica fai-da-me, migliora il progetto precedente fatto con Arduino o si aggiunge per rendere il controllo dei consumi più preciso mettendone uno su ogni elettrodomestico.

Prima di tutto, la lista della spesa, che senza materiale non si va da nessuna parte.

Poi ci va la lista dell’attrezzatura necessaria

  • Un PC su cui installare e usare il software (qualsiasi sistema operativo)
  • Un cavetto micro USB di quelli per il cellulare
  • Un saldatore e lo stagno
  • Un paio di forbici
  • Un cacciavite a taglio e uno a stella
  • Un multimetro digitale
  • Un phon (per i test)

Il progetto si basa sulle funzionalità che servono in casa a me, c’è ovviamente la possibilità di adattarlo alle proprie esigenze, lavorando senza WiFi, senza display o aggiungendo un buzzer che suona in caso di consumo anomalo (vedi al fondo).

Il sistema memorizza i dati in una centralina, presente sempre in casa e basata su Linux, con il protocollo MQTT. Sicuramente ci sarà un post specifico per la centralina.

Assemblare i componenti

Una volta ricevuti i componenti è necessario fare qualche saldatura prima di poter usare il tutto. Se hai qualche dubbio sulla saldatura compra una shield millefori e dei piedini in più, saldali tutti facendo in modo di non creare dei cortocircuiti.

Iniziamo dal display, che dovrà essere saldato ai piedini da collegare al microcontrollore. Visto che è il pezzo che dovrà essere a vista, è quello da montare sopra tutto, quindi si devono usare i piedini che hanno il solo connettore maschio. La saldatura va fatta sulla parte corta, che va saldata dal lato del display lasciando i piedini lunghi sotto.

Il secondo livello sarà il microcontrollore, la scheda WeMos D1 Mini, dovranno essere saldati i piedini che hanno la femmina da una parte (da mettere in alto) e i maschi dall’altra, in basso. In modo che sopra la D1 Mini si possa mettere il display OLED saldato prima.

Prima di saldare i PIN della millefori, sulla quale si dovrà collegare la pinza amperometrica, è bene mettere i componenti e fare le giuste connessioni.

Da questo schema “Arduino A2” diventa “WeMos A0” e “Arduino 5V” diventa “WeMos 3,3V”

Saldati i componenti si possono saldare i PIN, questa volta solo il connettore femmina, in modo che la scheda millefori sia sotto alla D1 Mini

La logica di funzionamento del sistema è abbastanza semplice: la pinza amperometrica, che va installata “intorno” al filo della fase o del neutro (solo uno, non entrambi, e non sulla terra giallo/verde) capta la variazione del campo magnetico intorno al filo in base a quanta corrente passa.
La lettura del campo magnetico viene convertita in una tensione elettrica, nel caso di questa pinza, tra 0 e 1V per correnti tra 0 e 30A.
In un appartamento il contratto della corrente standard prevede un massimo di 16A (3,5KW), ovviamente se hai una potenza maggiore potresti non farcela con i 30A (che sono 6,6KW) e serve quindi cambiare la pinza e qualche altro dettaglio.

Adesso è il caso di pensare al software

L’hardware è pronto, adesso è necessario passare al software. La scheda D1 Mini si programma con l’Arduino IDE, che si può scaricare e installare gratuitamente per qualsiasi piattaforma. Per poterla usare correttamente è necessario seguire la guida sul sito di WeMos.

Il codice (chiamato comunemente sketch) da caricare sulla scheda WeMos si trova su GitHub, alla pagina del progetto.

Come si prosegue?

Il test operativo è abbastanza semplice. Ma c’è bisogno di qualcuno che sappia fare un po’ di lavori da elettricista. Non smetterò mai di dire che la 220V, se usata male, è mortale, quindi attenzione. Se non sai come fare, fatti aiutare, ad esempio dal negoziante dove vai a comprare i fili e le prese/spine volanti (nei negozi piccoli, non nei centri commerciali)

Adesso è necessario creare una mini prolunga elettrica da 20cm circa. Con il cacciavite apri la presa e la spina. Collega i tre fili elettrici, facendo bene attenzione che il filo giallo/verde parta e arrivi dal centro delle due, gli altri fili saranno collegati ad uno dei due lati, non fa differenza.
Con il tester verifica che non ci siano corto circuiti tra i 3 fili.

Fai passare uno dei due fili colorati (non il giallo/verde) dentro la pinza amperometrica che è collegata alla scheda. Collega la spina ad una presa a muro. Collega alla presa il phon
Accendi il circuito e leggerai sul display una piccola corrente, che tenderà ad essere zero. Adesso accendi il Phon a velocità minima. Guarda quanto sta consumando. Adesso passalo alla velocità massima. Tipicamente sarà intorno ai 2000W. Se spegni la parte che scalda l’aria e la fa solo girare vedrai la potenza crollare. Bene, funziona.

Stacca tutto e vai al quadro elettrico principale dell’appartamento.

Vale sempre la regola: la 220V è mortale, se non lo sai fare chiedi aiuto.

E’ necessario installare la pinza intorno alla fase o al neutro subito a monte o a valle dell’interruttore generale di casa. Ovviamente è necessario alimentare la scheda con un alimentatore a 5V. Le batterie non durerebbero abbastanza. Se l’elettricista ti fornisce due fili a 5V dentro il quadro basta saldarli alla D1 mini ai pin GND e 5V (questo limita di molto l’occupazione di spazio all’interno del quadro, visto che solitamente sono spazi ristrewtti, non può che fare bene.).

E la scatola?

Purtroppo mi manca, cerca qualcosa che sia adattabile e sia gradevole alla vista. Se sei bravo e attrezzato potresti fartela stampare in 3D.

Alcune note finali

  • Che la 220V sia molto pericolosa l’ho già detto? Non lo dico mai abbastanza.
  • La lettura della potenza impegnata non è precisa, in quanto la vera potenza la si calcola sapendo corrente e tensione, nel nostro caso sappiamo solo la corrente, ma non la tensione, che potrebbe oscillare tra 210 e 240V, quindi nella lettura c’è un minimo errore.
  • Il contatore non scatta istantaneamente al superamento dei 3500W, c’è quindi un po’ di tempo per intervenire prima di rimanere al buio. Se si assorbe invece un picco molto più alto, il contatore salta in pochi secondi.
  • Alcuni componenti sono da acquistare in Cina, è bene sapere che i tempi di consegna sono tra 30 e 60 giorni e che gli ordini da più di 20€ (circa) comprese le spese di spedizione sono tassati dalla dogana.
  • Con il passare del tempo i componenti potrebbero cambiare, smettere di essere prodotti o sostituiti da altri (Le D1 Mini in 3 anni sono cambiate 4 volte).

Adesso parliamo del software. Lo sketch proposto si integra con un server MQTT che registra le letture e le archivia da qualche parte per farci poi delle statistiche. Se il sistema è stand-alone si può aggiungere un LED che si accenda al superamento di una certa soglia o un buzzer che suoni al superamento della fatidica soglia.

Per fare queste attività è sufficiente collegare il dispositivo (LED o buzzer) a uno dei PIN Dx della WeMos (cercate sempre i datasheet per capire come si collegano) e mettere nel codice una IF che se l’assorbimento è troppo, eccita il pin che alimenta il dispositivo

// mettere in cima la dichiarazione che il PIN in uso è il 16 (quindi D0)
pinMode(16, OUTPUT);

// una volta tolte le parti di connessione a MQTT e invio a MQTT si può
// usare la variabile "wattTrasmettere" per capire se c'è l'allarme
// da attivare
if (wattTrasmettere > 3200) //si attiva se al potenza è > di 3200 Watt
{
// attiva il pin (mette 3,3V)
digitalWrite(16, HIGH);
}
else
{
// disattiva il pin (mette 0V)
digitalWrite(16, LOW);
}

Raspberry, Arduino o ESP?

Durante la Maker Faire di Roma, mentre raccontavo come funziona il mio progetto La Domotica fai-da-me mi sono  trovato spesso a rispondere alla domanda “ma perché non usi Arduino al posto del Raspberry?”. Semplicemente perché sono due cose completamente diverse.

Vediamo se riesco a farlo capire anche a quelli che “Arduino cosa?”.

In questo articolo affronterò anche le differenze tra Arduino ed ESP, altra spiegazione data circa 1000 volte agli avventori della fiera. Tutti affamati di sapere, dovete sempre chiedere e fate sempre bene.

Da sinistra a destra: Raspberry Pi Zero, Raspberry Pi Mod 3B, Arduino Duemilanove (uno dei primi messi in commercio), WeMos D1 Mini con ESP8266 (è la scheda scura più piccola che si vede sulla scheda blu) e una scheda Arduino di nuova concezione, della serie MKR.

Il Raspberry Pi non è altro che un piccolo computer. Fa (quasi) le stesse cose che può fare un PC comune con Linux installato. E’ una scheda che contiene una CPU, della memoria RAM, una scheda video, una scheda audio, alcune porte USB, un’interfaccia di rete e uno slot per metterci la memoria da usare come disco per il sistema operativo. La nuova serie 3B può montare una versione specifica di Windows.

E allora, perché non usi un PC normale e parli di Raspberry Pi?

Questa è un’ottima domanda. Vediamo tutti i perché

  • E’ tutto in unico pezzo (alimentatore a parte).
  • Costa poco (da 10 a 30€ a seconda della versione).
  • Consuma poco (nell’ordine dei 10W o anche meno).
  • Ha la possibilità di interagire un po’ con il mondo reale usando i PIN di GPIO. Ci si possono collegare sensori o dispositivi seriali, cose che solitamente con un PC non si possono fare.

Ok, il Raspberry Pi è un piccolo PC, quindi perché al posto suo non usi Arduino che è comunque piccolo?

Perché sono due schede profondamente diverse. Se sul Raspberry Pi posso avviare un sistema operativo, utilizzare programmi, avere un DB e mille altre cose, con Arduino tutto questo non è possibile. Arduino è un semplice microcontrollore.

Arduino ha un suo firmware, è programmabile e una volta programmato eseguirà le operazioni che gli sono state impartite per sempre, a meno che non venga riprogrammato. La programmazione di Arduino avviene con un suo sistema di sviluppo (si chiama IDE) e il codice che si scrive è in un linguaggio molto simile al C.

Arduino accede al mondo fisico (sensori) in maniera molto più diretta, senza dover passare per svariati strati software o la schedulazione della CPU, che potrebbe rallentare di molto le letture o le scritture.

Visto che le cose sono già complicate così, sul mercato c’è un’altra scheda, un piccolo microcontrollore, che fa grossa guerra ad Arduino: la famigerata scheda ESP8266.

In fiera, per capire il livello delle persone con cui parlavo, chiedevo “Conosci il Raspberry? Conosci Arduino? Conosci la ESP8266?” Normalmente l’ultima non la conosceva nessuno. Quando andavano via capivo di aver tolto un cliente ad Arduino (scusami Banzi)

La scheda ESP8266 ha alcuni punti interessanti rispetto ad Arduino, per il quale è diretta concorrente:

  • Costa molto meno (3€ contro i 25€ per la più piccola Arduino)
  • E’ più piccola (davvero molto piccola)
  • Ha meno ingressi/uscite digitali
  • Non ha uscite analogiche
  • Ha un solo ingresso analogico
  • Ha il WiFi integrato
  • Si programma con lo stesso linguaggio e usando lo stesso software di Arduino

La scheda base è davvero semplice e limitata, ad esempio non si può programmare con la USB, ma ci va un adattatore USB-seriale. Per ovviare a questo ci sono molti produttori che le hanno montate su schedine un po’ più grandi per poterle usare più facilmente. Io uso da un po’ di tempo le schede WeMos che hanno anche una struttura a shield (letteralmente scudo), praticamente delle schede già assemblate che permettono di impilare alcuni accessori, come sensori e display, sul microcontrollore, evitando fili vari sparsi in giro.

Ma, dopo tutta questa manfrina, io cosa devo usare per i miei progetti?

Non lo posso sapere, ma quel che ti consiglio è questo:

Se devi interagire solo con sensori e attuatori scegli i microcontrollori. Inizia comprando il kit base di Arduino (visto, Banzi, che te li mando lo stesso?) e fai tutti i progetti. A questo punto sei pronto per passare alle ESP.

Se invece il tuo sistema è più complesso, con sensori distribuiti, gestione di un DB, accessi web e quant’altro, prendi in considerazione il Raspberry Pi, se il tuo progetto richiede molto utilizzo della CPU devi ripiegare su qualche scheda “fruttata” più potente (Banana Pi, Orange Pi, Odroid, Udoo …) o direttamente un mini PC. Se hai bisogno di qualche sensore o qualche accessorio particolare il mini PC potrebbe però non essere la scelta giusta.

Dai, voglio iniziare, dove spendo i miei soldi?

Per tutto quello che riguarda Raspberry io uso i siti ufficiali PiMoroni e The Pi Hut
Arduino lo puoi comprare sullo store ufficiale o su Amazon (<– link sponsorizzato)
ESP di solito si acquista direttamente in Cina, se ti perdi tra Aliexpress o Banggod, puoi aprire il sito ufficiale di WeMos (ora Lolin) e poi andare sul loro shop. Se compri in Cina adeguati ai tempi di consegna e attento che sopra circa 20€ (spese di spedizione comprese) compaiono le spese doganali.

E’ giunto il momento della Maker Faire

Ci siamo, oggi vado a montare lo stand del mio progetto La domotica fai-da-me alla fiera di Roma.

Se volete avere aggiornamenti in tempo (quasi) reale potete seguirmi su Twitter o su Facebook.

Se invece volete passare a trovarmi sarò al padiglione 8, stand B7 (non ho la cartina dettagliata della disposizione dei padiglioni, così potete farvi un giro per cercarmi) da venerdì alle 14 a domenica alle 19.

Vi aspetto!

Partecipare ad una fiera

Scrivo questo post a caldo, ancora stanco dei due giorni di fiera, dove in circa 20h ho percorso 20Km stando dietro al mio tavolo 160×80 (questo è quello che mi hanno detto l’orologio e i muscoli delle gambe).

L’esperienza della fiera è stressante. Prima perché hai paura che non funzioni un tubo di quello che hai preparato (Murphy è sempre lì che aleggia), poi perché devi essere all’altezza di quello che presenti, devi essere sicuro di te e lo devi spiegare (circa 3740378404783 volte) a chi vuole saperne di più.

D’altro canto la soddisfazione a fine evento è stata esaltante, un sacco di gente si è fermata, ha chiesto, incuriosita, ha voluto vedere il sistema all’opera e mi ha chiesto se lo vendevo (no, non è pronto per essere venduto).

Sono passati un sacco di amici a salutare, anche lontani. Grazie di cuore a tutti.

Si sono fermati molti bambini, in questo caso ho capito che devo studiarmi un modo di descrivere il progetto a loro misura, anche se in effetti non è un giocattolo.

Mi ha stupito molto, ma si sono fermate molte ragazze a chiedere informazioni, addirittura in una coppia, lui stava tirando dritto e lei lo ha fermato per chiedermi come funzionasse.

Il sistema ha sempre funzionato, anche se la pessima connettività (sovraffollamento di reti WiFi e della cella 3G piena all’inverosimile) ha giocato contro.

Molta gente è passata, ha preso le caramelle e non mi ha neanche guardato in faccia (vabbé, pazienza).

Ho ripetuto la descrizione del progetto moltissime volte, al punto tale che adesso modifico la pagina relativa al progetto scrivendo quel che dicevo in fiera.

Le slide che proiettavo sul monitor attiravano lo sguardo, ma poca gente le ha guardate tutte, le devo ripensare un attimo.

Devo modificare la casetta, perché alcune funzionalità erano davvero poco visibili, tra le quali una delle più importanti: il controllo dei consumi elettrici. Devo aggiungere un controllo extra, magari una pompa per l’irrigazione, dovrei modificare il bot in modo che risponda alle chiamate telegram degli avventori. In ogni caso usare la casa delle bambole di Ikea (idea di Valentina) è stato geniale per attirare le persone.

Ho anche trovato, forse, un po’ di possibilità di business e un modello che potrebbe funzionare per far fruttare qualche soldo da questo sistema (che non è minimamente pronto per essere venduto a chiunque, è facile da usare, ma decisamente complesso da installare).

Nei prossimi giorni aggiornerò tutti gli articoli relativi al progetto, perché per fare la casa da esporre ho modificato e migliorato alcune parti. Abbiate pazienza che arriva il tutto.

Visto come è andato il tutto, sto per fare l’application alla Maker Faire di Roma (fate il tifo per me!)

Torino Mini Maker Faire 2018

La Maker Faire è un evento organizzato in diverse parti del mondo dove maker (e tutto il mondo nerd che ci gira intorno) portano le loro realizzazioni per mostrarle o venderle al numeroso pubblico che viene attirato dall’evento.

Sono andato a vedere la fiera per molti anni, in quanto a Torino, da qualche anno, viene organizzata la Mini Maker Faire (mini perché è un evento della community). Qui ho sempre trovato spunti davvero interessanti e idee a tratti geniali.

Quest’anno ho fatto il grande passo e ho proposto il mio progetto di casa controllata dalla centralina che ho sviluppato io. Mi hanno accettato, quindi sarò presente come espositore 🙂

Se vi interessa vedere il sistema de “la domotica fai-da-me” funzionante (con un sacco di nuove funzionalità che ho sviluppato a discapito delle ore di sonno, in questi giorni) passate a trovarmi. Ne sarei davvero felice!

Dove?

Torino, Via Egeo 18, presso i locali del FabLab di Torino e Toolbox

Quando?

Sabato 2 e domenica 3 giugno 2018 dalle 10 alle 18:30

La Maker Faire ha anche un sacco di altri eventi come talk e laboratori, dalle 10 alle 20 di entrambi i giorni, secondo me un giro vale comunque la pena.

Ci vediamo lì?

Sensore di temperatura WiFi

Nel progetto della domotica fai da me non può mancare un sensore di temperatura, in questo caso con alcune caratteristiche particolari, utili a metterlo in ogni punto della casa senza dover cablare o far passare fili in giro per casa.

Le caratteristiche che sono riuscito ad ottenere sono:

  • Economico
  • WiFi
  • Portatile, quindi a batteria con una durata decente senza dover cambiare pile ogni pochi giorni.
  • Interfacciabile con la mia centralina basata sul Raspberry Pi

La lista della spesa è veramente minima e prevede, purtroppo, lunghe attese, perché tutto in arrivo dalla Cina.

  • WeMos D1 Mini
  • Sensore DHT22 (questo shield non esiste più, quindi dovete ripiegare su DHT12 o SHT30, il codice potrebbe cambiare)
  • Contenitore per 3 pile AA
  • Scatoletta (ho usato delle vecchie scatole di plastica dei nastri di backup LTO che ho trovato a mucchi in un magazzino in ufficio, ma se volete essere veramente pro, potete farvi stampare una scatola 3D da Freelabster)

La scheda WeMos D1 mini è basta su ESP8266, un microcontrollore tipo Arduino, ma con alcune caratteristiche che lo rendono davvero interessante.

Innanzitutto costa poco, con 4€ ci si porta a casa il processore, il modulo per alimentarlo e programmarlo via MicroUSB e tutta l’elettronica necessaria, poi è WiFi, di serie, senza nessun tipo di difficoltà a collegarlo alle reti casalinghe, ha la funzione di deep sleep, durante la quale non è attivo e consuma 0,3mA, questo lo rende perfetto per essere alimentato a batteria; in ultimo, ma non meno importante, si programma tramite l’IDE di Arduino, quindi il tutto è davvero semplice, se si ha già conoscenza della programmazione di Arduino.

Ho scelto la WeMos perché produce anche dei piccoli shields con sensori e altri dispositivi piccoli (relè, display OLED, …). Un po’ di pratica con il saldatore ed è possibile avere il proprio sensore di temperatura che occupa circa 2 cc (sì, è davvero piccolo!)

La parte di assemblaggio hardware è davvero banale: si saldano i pin sulla D1 e si saldano gli altri pin sullo shield, poi si collegano tra di loro. Fatto. Anzi, no, serve una saldatura aggiuntiva che colleghi tra di loro il pin RST e il pin D0 sullo shield con il sensore della temperatura.

img_2232
Saldare D0 a RST (attenzione, che se la piedinatura cambia dovete seguire i nomi dei pin e non la posizione che vedete in foto)

A cosa serve questo collegamento? E’ assolutamente necessario per il ciclo di deep sleep. Quando si impartisce il comando per questa specie di ibernazione, c’è un contatore interno che consuma molto poco e dà il segnale di reset al pin D1 al termine del conteggio, collegando il pin D1 al pin di reset questo sveglierà la scheda che riprenderà il suo lavoro, come appena accesa.

Perché devo saldarlo sullo shield? Perché quando questi due pin sono collegati tra loro è impossibile scrivere il programma nel microcontrollore, quindi quando si deve aggiornare il codice lo shield può essere tolto, così non ci saranno problemi.

L’alimentazione può essere fornita tramite 3 pile stilo AA alcaline o ricaricabili. messe in serie. Se alcaline, la tensione in uscita sarà 1,5×3 = 4,5V, se ricaricabili 1,2×3 = 3,6V (sapevate che le pile ricaricabili sono da 1,2 e non da 1,5?), la scheda funziona a 3,3V e ha un regolatore di tensione che le permette di funzionare anche con i 5V della USB, pertanto fornire un po’ più di 3,3V permetterà al tutto di funzionare adeguatamente.
Ho fatto un po’ di prove è sono giunto alla conclusione che i fili nero e rosso che escono dalla scatolina delle batterie possono essere saldati sulla scheda D1 Mini ai pin 5V (il rosso) e GND (nero). Con 3 pile stilo ricaricabili da 2000mAh sono arrivato a fare più di 6,500 letture (circa 90gg con una lettura ogni 20 minuti).

Dove saldare i cavetti delle batterie, attenzione alla polarità!
Dove saldare i cavetti delle batterie, attenzione alla polarità!

Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi

  1. Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
  2. Attiva la comunicazione con il sensore DHT22
  3. Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
  4. Scrive la lettura chiamando il server web (quello fatto sulla centralina, se non ve lo ricoardate, andate a vedere il post relativo) che la memorizza
  5. Va in ibernazione per 10 minuti (ma potete mettere il tempo che più vi piace) per poi ricominciare dal punto 1

Nel codice, al momento della scrittura del valore sul DB, c’è il parametro della stanza, così, avendo più sensori sparsi per casa, si può avere l’andamento della temperatura in ogni stanza. Ho dovuto faticare un po’ per la creazione del link http per scrivere i dati nel DB.

Scrivere il codice tramite l’arduino IDE è banale, basta seguire la semplicissima guida per abilitare la scheda, scegliere il dispositivo D1 mini (con me ha funzionato quello indicato come “retired”) e usarla esattamente come Arduino. Con il Mac non ci sono riuscito, ho fatto tutto con un PC Windows 10.

Se invece volete creare un qualunque altro sensore che misuri il parametro ad intervalli regolari (umidità, gas, pioggia, acqua nella terra delle piante, allagamento, …) basta sostituire il DHT22 con il relativo componente e studiare come interfacciarlo con l’ESP, solitamente ci sono librerie per ogni tipo di sensore.

Registrare i dati dei sensori in giro per casa

Sempre parlando del mio progetto di domotica fai da me, vi presento oggi le poche righe di codice necessarie per memorizzare i dati dei sensori che spargerò per casa (per la gioia di mia quasi moglie!).

L’obiettivo è rendere disponibile un server web che memorizzi i dati passati con una GET http, così da scrivere il codice dello sketch del sensore per registrare il dato in questo modo:

http://[ip_server]:[porta]/?variabile1=valore1&variabile2=valore2

Questo tipo di chiamate si possono generare molto facilmente con Arduino (a patto che abbia una connessione di rete) o con ESP8266.

Oltre al server che recepisce i dati, serve anche un posto dove memorizzarli, per questo ho installato SQLite sul mio Raspberry, un motore di DB leggero, veloce e semplice da usare con Python. Leggi tutto “Registrare i dati dei sensori in giro per casa”

Lettura istantanea del consumo di corrente

Attenzione! Non sono responsabile per qualunque danno fisico (ustione, folgorazione, ...) o materiale (incendio, corto circuito, ...) possa accadere mentre cercate di riprodurre tutto il progetto o solo in parte! Non ho alcuna sponsorizzazione dai produttori e rivenditori a cui faccio riferimento nel post.

Questo progetto fa parte del più grande lavoro della domotica fai da me ed è stato nominato come “gingillo del giorno” in Digitalia, episodio 324

Prima di partire vorrei sottolineare che questo progetto è un po’ complesso e vi porta ad armeggiare intorno alla 220V di casa, quindi ci va attenzione e servono un po’ di basi di programmazione, impianti elettrici, saldatura. Ho usato componenti vecchiotti, potrebbe essere necessario comprarne di diversi e per questo adattare programmazione e collegamenti, se siete alle prime armi fatevi aiutare, ad esempio, in un FabLab (se non sapete cos’è un FabLab ne abbiamo parlato diffusamente in questa puntata di GeekCookies)

Negli alloggi moderni il contatore della corrente elettrica non è in casa, ma in cantina, se aggiungiamo che gli elettrodomestici moderni consumano parecchio, mi è capitato spesso, causa disattenzione, di dover correre in cantina a tirare su la leva del contatore perché avevo fatto partire lavastoviglie e forno. Quando salta la corrente si spegne anche il router, il PC e una serie di altri dispositivi (ho poi messo vari UPS in giro per casa), insomma, una gran scocciatura.

Un altro utilizzo interessante è accendere i singoli dispositivi che avete in casa per capire esattamente quanto consumano. Ho scoperto che la lavatrice consuma molto, ma solo per metà del ciclo, inoltre consuma di più quando muove lentamente il cestello piuttosto che quando fa la centrifuga. Ho scoperto che i 250W della lampada alogena richiedono un’immediata sostituzione con una a LED e che lavorare con il Mac consuma circa 250W. Spegnere con un interruttore TV, console, BluRay e compagnia quando non li uso mi fa risparmiare 7-8W (fate due conti sull’anno intero) e che ho un consumo “di fondo” (tutto spento, tranne i router, il frigo, il sensore stesso, il mio server) di circa 150W.

Leggi tutto “Lettura istantanea del consumo di corrente”