«

»

Mag 12

Stampa Articolo

Centralina meteo arduino yùn – grafici web

Continuo a descrivere la centralina meteo arduino yùn per raccontarti come funziona la parte web e la generazione di grafici con php e javascript

centralina meteo arduino grafico day

Probabilmente hai già letto come generare grafici con excel dopo aver realizzato la tua centralina meteo arduino, il vantaggio di usare l’arduino yùn è la possibilità di installare php e grazie al web server già presente in Linino puoi facilmente completare il tuo progetto web di centralina.

Puoi collegarti al web server della centralina meteo arduino yùn anche con il tuo smartphone, tablet o dall’ufficio ( apportando le opportune modifiche alla configurazione del tuo router casalingo )

I file della centralina meteo arduino yùn

Se hai letto l’introduzione alla centralina meteo arduino yùn sai che il solo sketch con l’arduino yùn non è sufficente a realizzare tutto il progetto e che ti occorre anche la parte web, ho raccolto tutto: sketch e file www in un mio repository GitHub sotto il nome del progetto meteoArduino in cui trovi:

centralina meteo arduino repository

sia i file relativi allo sketch ed alle librerie necessarie a comunicare con i sensori di temperatura ed umidità dell’aria e del suolo, li trovi nella dir  meteoYùn:

centralina meteo arduino meteoyùn

sia i file della parte web, li trovi nella dir www:

centralina meteo arduino www

Lo sketch è dettagliatamente descritto nell’articolo dedicato allo sketch della centralina meteo arduino yùn e che puoi leggere con la descrizione linea per linea riportata nell’articolo stesso.

In questo articolo mi dedico alla parte www che puoi installare direttamente nella SD card che inserirai nell’arduino yùn ricordandoti di creare nella sd il path arduino/www letto in automatico dalla tua centralina meteo arduino.

Il file principale è index.php per la cui lettura ed interpretazione ti invito alla lettura dei numerosi blog che spiegano, meglio di come saprei fare io, la programmazione php.

La realizzazione dei grafici l’ho realizzata grazie alla libreria js chart-min.js che trovi nel path jss che mi ha notevolmente semplificato la realizzazione dei grafici che vedi.

Come funziona la centralina meteo arduino yùn

Il principio di funzionamento è alquanto semplice: arduino interroga i sensori ogni minuto e scrive i valori rilevati sulla SD Card nel path:

/mnt/sd/arduino/www/

in modo che la pagina index.php possa trovarlo ed elaborarlo.

Collegandoti all’url della tua arduino: http://arduino.local/index.php

centralina meteo arduino url connessione

ti apparirà la seguente pagina:

centralina meteo arduino grafico day

è la pagina che mostra i dati rilevati in formato giornaliero ossia un dato per ciascuna ora nell’arco delle ultime ore di cui disponi dei log, in pratica se la centralina ha rilevato fino alle 23.50 di ieri 08/05/2014 vedrai i dati di ieri.

In alto trovi i 3 pulsanti che ti permettono di variare la modalità di visualizzazione in:

  • Mensile
  • Giornaliero
  • Orario

Per meglio comprendere come si presentano i dati ti mostro alcune schermate relative alle rilevazioni eseguite dalla mia centralina meteo arduino yùn.

Visualizzazione Grafico Mensile

centralina meteo arduino grafico month

Ti mostra il grafico relativo alle rilevazioni di umidità e temperatura dell’aria e del suolo dell’ultimo mese o di uno dei mesi in cui la centralina è stata in funzione.

Nota che ciascun punto rilevante del grafico si riferisce adun giorno e che tra le frecce è indicato il mese di cui stai visualizzando i risultati.

Visualizzazione Grafico Giornaliero

centralina meteo arduino grafico day

Il grafico giornaliero è il medesimo già visto e ti mostra i dati rilevati nell’arco di una giornata ( 24 se la centralina meteo arduino è stata attiva per una intera giornata ) un valore per ciascuna ora di rilevamento.

Anche in questa modalità puoi usare le frecce per spostarti al giorno precedente o successivo.

Visualizzazione Grafico Orario

centralina meteo arduino graficohour

Il grafico orario ti mostra i dati all’interno di un ora del giorno che ti interessa in modo particolare, chiaramente le rilevazioni da un minuto al successivo saranno sempre molto lievi e vedrai maggiori cambiamenti tra fasce orarie.

Tra le frecce vedi data ed ora relativa ai dati che stai visualizzando e con le frecce puoi scorrere all’ora successiva o a quella precedente.

Buona rilevazione !!!

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/centralina-meteo-arduino-yun-grafici-web.html

24 comments

Vai al modulo dei commenti

  1. Cubo di Rubik

    Buongiorno, complimenti per il blog e complimenti per questo progetto che trovo molto interessante. Lo scopro appena dopo aver effettuato l’acquisto di A.Yun così approfitto dei complimenti anche per chiederle un chiarimento. Perchè preferisce creare un web server dove alloggiare dati e pagina grafici e farlo raggiungere dall’esterno impostando il port mapping invece che utilizzare qualche API che punti a qualche servizio come Pachube o alternativi o ad un foglio di calcolo di google doc(??forse questo non si può fare??). Mi scuso se la curiosità dovesse essere banale o stupida e spero di non aver scritto cose imprecise(è da poco che mi sono affacciato al mondo arduino e senza avere competenze del settore, ho solo molta curiosità). Spero che il corriere consegni velocemente per provare con mano questo progetto.Cubo di Rubik

    1. Mauro Alfieri

      Ciao Cubo di Rubik,
      ho solo realizzato questo progetto pensando di utilizzarlo all’arduino Day del 29 marzo e non ero certo che sarebbe stata disponibile una connessione WiFi da far utilizzare al progetto ed ai partecipanti.

      Se fai evolvere il progetto collegandolo ad un servizio on-line di quelli che hai citato mi piacerebbe pubblicare la tua evoluzione del mio progetto, se ti va.

  2. Luca

    Ciao Mauro, sto testando la scheda Arduino Yun di recente acquisto. La trovo veramente eccezionale nella sua praticità e completezza di opzioni.

    Finora ho lavorato con Arduino 1 con ETH, realizzando una stazione meteo di rilevazione della temperatura, umidità e pressione atmosferica. I dati li invio ad un database mysql di uno spazio web attraverso un comando GET ad una pagina php preimpostata,il tutto poi viene gestito da una libreria grafica per la visualizzazione dei dati.

    Volevo chiederti se con arduino Yun è possibile oltre che a salvare i dati su server locale, inviare un semplice GET da sketch Arduino per il salvataggio anche su uno spazio database mysql remoto? Con Arduino Uno è semplice ma con Arduino Yun mi pare di aver capito che bisogna impostare i parametri di bridge?

    Grazie mille per l’aiuto ti seguo con interesse in ogni tuo tutorial sempre esaustivo

    Luca Serafini

    1. Mauro Alfieri

      Ciao Luca, effettivamente io uso il bridge in questo tutorial per trasferire i dati dal chip arduino al sistema operativo linino che li memorizza su SD. Se dovessi pensare a qualcosa di remoto userei linino per sincronizzare i dati.

  3. luca

    Ciao Mauro, grazie per la risposta, alla fine dopo alcuni test sono riuscito a configurare l’ Arduino Yun con le librerie Bridge e httpclient per l’ invio dei dati alla tabella myslq del mio sito internet con il GET come ho fatto per la mia stazione meteo con Arduino Uno. La mia idea sarebbe adesso quella di avere un doppio salvataggio del dato sia su server locale mysql su sd che su Server remoto. Nell’ eventualità che la SD abbia qualche problema il dato comunque lo potrei recuperare sulla tabella remota, potrebbe essere visto come una sorta di backup.

    Volevo chiederti un consiglio tecnico: dovrei fare il monitoraggio di temperatura interna ed esterna di un box che potrebbe raggiungere anche un buon grado di umidità quindi per andare sul sicuro pensavo a 2 sonde uguali ermetiche. Su che modello potrei optare per avere un giusto compromesso tra precisione, affidabilità e prezzo?

    Grazie mille
    Luca Serafini

    1. Mauro Alfieri

      Ciao Luca,
      cosa intendi per sonde ermetiche? tutte quelle utilizzate per arduino hanno un buon grado di resistenza all’umidità ma non sono ermetiche.
      Se vuoi qualcosa di interessante c’è la sonda per il controllo della temperatura ed umidità del terreno mi sembra si chiami SHT1x e l’ho recensita per un progetto di controllo del terreno per un mandorleto.

  4. luca serafini

    Ciao Mauro, intendo sensore da esterno resistente a pioggia ed eventuali intemperie.. navigando in rete ho trovato questo sensore di tempetatura digitale Ds18b20http://www.robot-italy.com/it/ds18b20-waterproof-digital-temperature-sensor.html secondo te potrebbe essere valido? Grazie mille ciao

    1. Mauro Alfieri

      Ciao Luca,
      ora mi è chiaro il tipo di sonda.
      Io ho provato la sonda che hai trovato, trovi il mio test in quaetso articolo: http://www.mauroalfieri.it/elettronica/ds18b20-temperatura-lcd.html
      Il chip è lo stesso ma la mia sonda è in metallo che penso migliori l’affidabilità delle misurazioni

  5. luca

    Perfetto Grazie Mauro, credo proprio che opterò per 2 sensori di questo tipo. Vedo che lo spessore della sonda è di 7 mm confermi il dato? Te lo chiedo perchè una sonda la devo inserire in un box di legno che contiene al suo interno delle tavole e il massimo spazio disponibile che posso sfruttare per il posizionamento della sonda è di 10 mm. Grazie per l’aiuto.

    Luca Serafini

    1. Mauro Alfieri

      Ciao Luca,
      la dimensione è inferiore ai 10mm di certo, non sono sicuro, perché non l’ho mai misurata, se sia 7 o 7,5 ma solitamente questo produttore rilascia informazioni precise 🙂

  6. luca

    Ciao Mauro, la maggior parte dei sensori necessita della resistenza di pull-up. Per quanto riguarda il sensore di temperatura accennato sopra dallo schema vedo che tra i 5 V e l’ ingresso digitale si deve mettere una resistenza da 4.7 K. Se io mettessi un valore diverso cosa potrebbe succedere? Potrei compromettere la taratura della sonda?

    Grazie
    Luca Serafini

    1. Mauro Alfieri

      Ciao Luca,
      il valore della resistenza è quello indicato dal costruttore della sonda, puoi provare a scrivere al produttore della sonda cosa accade variando il valore consigliato.

  7. francesco

    Ciao Mauro,
    sto prendendo dimistichezza da poco tempo con Yùn e vorrei sviluppare un progetto simile a quello che tu hai presentato qui ma dove ci sia anche la possibilità di intervenire su dei relè da remoto. Premetto che mi sono documentato parecchio in merito e ho trovato molteplici soluzioni ma molte di queste si appoggiano su web server che devono girare su pc (Apache etc..) o su applicazioni da installare (Nodejs etc..). La cosa mi genera confusione perchè io vorrei che arduino fosse stand alone e il web server fosse gestito dalla parte linux (come da tuo esempio). Come posso far crescere il progetto in modo da avere anche il controllo oltre che il post dei dati? E’ corretto appoggiarsi comunque alla libreria REST API? Mi scuso in anticipo per le eventuali inesattezze nel commento ma mi urge fare chiarezza su questi punti.
    Ti ringrazio in anticipo.
    Francesco

    1. Mauro Alfieri

      Ciao Francesco,
      Yun dispone già di un web server integrato sulla parte linino e puoi controllare i relay con le funzioni REST API.
      Dovrai scriverti una interfaccia Web che attui i comandi che vuoi impartire ai relay.

  8. Simone

    Ciao Mauro,
    ho realizzato il tuo progetto. Lo Yun è connesso alla rete WiFi di casa. Dopo alcune ore di accensione lo Yun non è più raggiungibile dall’esterno… Provo allora a connettermi alla rete di casa con Lan direttamente al modem Belkin e con WiFi di un PC portatile, ma seppur con segnale massimo non mi lascia entrare in rete… Spengo e riaccendo il modem tutto riprende a funzionare… Lo Yun è aggiornato e il modem lo uso senza problemi tenendolo in attività tutta la notte con il PC. E come se lo Yun mi “inchiodasse” il modem pur rimanendo solo connesso alla rete senza effettuare attività di rete…
    Hai qualche idea?

    1. Mauro Alfieri

      Ciao Simone,
      mi avevano accennato a qualche problema simile con le prime versioni di Linino, ma se hai aggiornato la Yun all’ultimo update dovresti avere l’OpenWRT che non mi sembra abbia questo tipo di problemi.
      La scorsa settimana mi si è verificato un problema simile quando ho aggiunto il Tim vision alla mia connessione Telecom, la soluzione è stata un reset tecnico eseguito da un operatore sulla linea, ignoro cosa significhi per loro tale operazione.
      In compenso ho cambiato anche il modem/router con un TpLink ed il problema non si è più verificato.

  9. Margherita Bergamaschi

    Caro Mauro,
    grazie per il bel progetto. Lo sto realizzando in maniera un po’ diversa, in particolare senza l’utilizzo del sensore per il suolo. Mi daresti una mano nel modificare il file index.php? Non sono per niente pratica di questo linguaggio, grazie mille in anticipo.

    1. Mauro Alfieri

      Ciao Margherita,
      trattandosi di pagine php ti consiglierei di leggere un buon manuale html/php on-line per le modifiche perché saresti autonoma nell’eseguirle.
      Mi è difficile in questo blog trattare anche quei linguaggi e descrivere il significato dei comandi utilizzati.
      Se non sono modifiche strutturali posso provare a darti qualche dritta.

  10. Stefano camussi

    Ciao Mauro.
    Sto elaborando un progetto per l’irrigazione dove vorrei utilizzare arduino yun, la relay shield, 2 elettrovalvole per separare le due zone necessarie per l’irrigazione e due sensori (temperatura esterna e umidità) secondo te posso gestire tutto con blink (la app per smartphone)?? La domanda sorge nel momento in cui vorrei poter gestire da remoto sia le accensioni manuali che un impostazione di orari predefiniti per le due zone magari modificabili da remoto. Il progetto poi vorrei ampliarlo con un pluviometro per inibire il funzionamento nei giorni di pioggia. Grazie mille per i consigli…
    Stefano

    1. Mauro Alfieri

      Ciao Stefano,
      conosco blink come app ma non l’ho mai usata nei miei progetti, immagino che sia tutto fattibile.
      Se nei prossimi mesi riuscirò a provarla magari realizzo qualche articolo in merito, continua a seguire il blog e probabilmente leggerai qualche applicazione realizzata con Blink.

  11. stefano camussi

    Ciao Mauro,
    sto testando il progetto ma ho qualche difficoltà:
    la codifica dello script mi da questo errore: Arduino:1.6.11 (Mac OS X), Scheda:”Arduino Yún”

    /Users/stefanocamux/Documents/Arduino/meteoYùn/meteoyun/meteoyun.ino: In function ‘void loop()’:
    meteoyun:37: error: ‘readSensor’ was not declared in this scope
    readSensor();
    ^
    meteoyun:41: error: ‘getTimeStamp’ was not declared in this scope
    dataString += getTimeStamp();
    ^
    meteoyun:51: error: ‘getInterval’ was not declared in this scope
    cur = getInterval(“+%M”);
    ^
    exit status 1
    ‘readSensor’ was not declared in this scope

    Consigli??
    ps lavoro su mac

    grazie mille

    1. Mauro Alfieri

      Ciao Stefano,
      hai eseguito il download di tutto lo sketch e delle librerie necessarie?
      Dall’errore che posti non trova delle funzioni, ad esempio la readSensor, che sono nello sketch subito dopo la loop().

  12. Alberto

    Ciao Mauro,
    complimenti per il progetto, l’ho realizzato in versione semplificata con un solo sensore di temperatura e umidità facendo delle piccole modifiche al codice php e a quello della parte Arduino.
    Non sono però pratico della parte di php e, avendo modificato il tempo di acquisizione da 1 minuto a 10 minuti, ho notato che non viene più visualizzata la rappresentazione dei dati in modalità oraria.
    L’impressione è che ci siano troppo pochi dati e che quindi non siano gestibili.
    Ecco la registrazione dei dati di 3 ore
    30/06/2017 07:07:00 37.91 24.56
    30/06/2017 07:17:00 37.77 24.60
    30/06/2017 07:27:00 37.67 24.59
    30/06/2017 07:37:00 37.71 24.60
    30/06/2017 07:47:00 37.74 24.59
    30/06/2017 07:57:00 37.67 24.64
    30/06/2017 08:07:00 37.68 24.75
    30/06/2017 08:17:00 37.69 24.79
    30/06/2017 08:27:00 37.70 24.84
    30/06/2017 08:37:00 37.60 23.91
    30/06/2017 08:47:00 37.98 23.58
    30/06/2017 08:57:00 38.11 23.47
    30/06/2017 09:07:00 37.82 23.04
    30/06/2017 09:17:00 37.74 23.26
    30/06/2017 09:27:00 36.79 24.05
    30/06/2017 09:37:00 36.55 24.40
    30/06/2017 09:47:00 36.42 24.44
    30/06/2017 09:57:00 38.72 24.16
    Mi puoi aiutare?
    Grazie

    1. Mauro Alfieri

      Ciao Alberto,
      è un progetto che non tocco da molto tempo prova a debuggare la parte php in fase di estrazione dei dati.
      Che io ricordi la visualizzazione su base oraria cataloga i dati al minuto, per cui è possibile che non riesca a comporre un indice di dati valido con soli 5 valori.
      E’ solo una ipotesi, dovresti indagare meglio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>