Visualizzazione post con etichetta freeboard. Mostra tutti i post
Visualizzazione post con etichetta freeboard. Mostra tutti i post

domenica 30 novembre 2014

Sensore Temperatura Vano Caldaia

Nel precedente posto  http://mancusoa74.blogspot.it/2014/11/controllo-remoto-per-caldaia-progetto.html abbiamo visto come creare un controllo remoto per caldaia.

In questo articolo faccio vedere come ho aggiunto un sensore di temperatura al mio vano caldaia.

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

giovedì 27 novembre 2014

Create la tua Dashboard con freeboard e PubNub

ciao,
in questo post spiego brevemente come creare una semplice ma efficace dashboard basata su un paio di servizi molto interessanti:



Ci sono due concetti fondamentali:

  • DataSource: cioe' come e da dove la dashbaord riceve i dati da visualizzare
  • Widget: oggetto grafico che visualizza in modo specifico i dati provenienti dal DataSource 







Questi sono i tipi di DataSource supportati ad oggi:




Mentre i Widget supportati sono i seguenti:





E' possibile sviluppare il proprio widget in modo da visualizzare al meglio i propri dati. Questo pero' non fa parte di questo post.


Temperatura Ambienti

Vediamo adesso un esempio pratico. Immaginiamo che in ogni stanza della nostra casa abbiamo un termometro connesso che sia in grado di inviare le letture della temperatura via Internet.

In questo caso immaginiamo che il termometro invii periodicamente il valore di temperatura rilevato come messaggio PubNub su un canale dedicato (e.g. temp1, temp2, temp3)

Per emulare il nostro termometro usiamo PubNub Console. Qui impostate la vostra pub e sub key e inserite il nome del canale.





In questo modo possiamo inviare un semplice messaggio contenente la temperatura della stanza.

Adesso dobbiamo creare la nostra Dashboard:

Dopo aver effettuato il login su freeboard crea una nuova dashboard inserendo il nome.

A questo punto dobbiamo creare un DataSource che "ascolti" il nostro sensore di temperatura (PubNub console nel nostro esempio):

  • Aggiungi un DataSource di tipo PubNub
  • Name: Cucina (o quello che preferisci)
  • Subscriber Key: e' la SUB KEY di PubNub. Deve coincidere con quella inserita in PubNub Console
  • Channel: il canale su cui mettersi in ascolto per le letture di temperatura. Deve coincidere con quello inserito in PubNub Console




Adesso che abbiamo creato un DataSource valido aggiungiamo il widget in questo modo:

  • ADD PANE: un nuovo pannello vuoto viene creato
  • Fai click sull'icona +:
  • TYPE: Sparkline 
  • TITLE: Temperatura Cucina
  • VALUE: datasources["Cucina"]["temperatura"]




A questo punto un nuovo widget vuoto di tipo Sparkline viene aggiunto alla tua dashboard




Adesso non ci resta che inviare le letture di temperatura tramite PubNub Console (prova ad inviare 5 letture diverse di temperatura). In realta' queste saranno inviate dal nostro termometro intelligente in modo automatico

Ogni volta che invierete una nuova lettura di temperatura il vostro widget nella vostra dashboard si aggiornera' automaticamente.





Spero sia utile.

Altre idee su come usare freeboard? dai aspetto i vostri commenti