Questo mi serve siccome in inverno la temperatura puo' scendere considerevolmente e danneggiare i tubi della caldaia.
Un controllo della temperatura mi dovrebbe permettere di prevenire ogni sorta di problema.
Ho usato freeboard.io, come spiegato in quest'articolo http://mancusoa74.blogspot.it/2014/11/create-la-tua-dashboard-con-freeboard-e.html , per visualizzare la temperatura del vano caldaia
Sensore di temperatura DTH11
Siccome ho a disposizione un sensore di temperatura DHT11 lo utilizzo nel mio progettino.Questo sensore implementa un semplice protocollo 1-wire.
Questo articolo http://www.rpiblog.com/2012/11/interfacing-temperature-and-humidity.html mi ha aiutato a capirne meglio il funzionamento e mi ha anche fornito la base del codice per leggere i dati dal sesore.
Io ho apportato delle modifiche al codice siccome non mi interessa il valore di temperatura.
Faccio notare che per il funzionamento di questo codice sul tuo Raspberry deve essere installata la libreria wiringPi qui disponibile http://wiringpi.com/
Cablaggio Sensore
- filo verde -> Data
- filo arancione -> +5V
- filo giallo -> GND
Come nell'articolo precedente ho cablato il sensore con l'aiuto di un piccolo mammuto, sempre per ragioni di disposizione all'interno della mia scatola a muro.
Come si nota il filo verde (Data) e l'arancione (+5V) ho inserito una resistenza da 10K ohm. Questo per stabilizzare la lettura del sensore.
Ho notato che anche senza resistenza ottengo i medesimi risultati dal sensore quindi se non l'avete potete ometterla. Se invece vedete che avete troppe letture non valide vi consiglio di aggiungerla come in figura.
Infine ho cablato il sensore al Raspebrry in questo modo:
- filo verde -> pin 26 = GPIO7
- filo giallo -> pin 25 = GND
- filo arancio -> pin 4 = +5V
Infine ho rimontato il tutto nella mia scatola a muro e ho lasciato il sensore di temperatura all'esterno
Codice di lettura
Come detto in precedenza ho apportato delle semplicissime modifiche al codice di lettura della temperatura e umidita'.
/* let's read 3 correct temperature values*/ while(count < 3) { t = dht11_read_val(); if (t != 9999) { temp[count] = t; count++; } delay(500); } /*calculate the average temperature out of the 3 reads from sensor*/ avg = (temp[0] + temp[1] + temp[2])/3; printf("%.2f", avg);
La funzione dht11_read_val legge il valore di temperatura dal sensore. Se il valore resitituito e' 9999 significa che c'e' stato un errore di lettura e non e' valido.
Ho implementato un semplicissimo ciclo che legge le temperature fintantoche' non 3 temperature non sono lette correttamente.
A questo punto calcolo la media matematica e stampo il valore.
Questo valore verra' poi utilizzato dal codice python per inviare un messaggio PubNub a freeboard.io per la visualizzazione
def update_fb_status_temp(): command = "/home/pi/SMHA/DTH11/dth11_sensor" process = subprocess.Popen(command, stdout=subprocess.PIPE) temp = process.communicate()[0] log.info("updating Temperature: %s statuys on FB" %temp) pubnub.fb_update_status_temp(temp) def fb_update_status_temp(temp): pubnub_mex = '{"temperature":"%s"}' %temp log.info("sending pubnub FB message: %s" %pubnub_mex) pubnub_freeboard.publish(CHANNEL_FB, json.loads(pubnub_mex))
Come sempre tutto il codice e' disponibile su gitHub
Chiunque voglia apportare delle migliorie o abbia delle idee si faccia vanti. Saro' ben lieto di incorporarle nel mio sistema di controllo remoto della caldaia
Nessun commento:
Posta un commento