Menu

Sito a cura di

Andrea Costantini

Mi presento

Come autocostruire una stazione meteo con tecnologia IoT – LoRaWan – parte 3

Pubblicato il 29 Aprile 2021

Capitolo 3: “portiamoci a casa i dati”

Nei capitoli precedenti (Capitolo 1 e Capitolo 2), abbiamo seguito la procedura attuale per attivare la trasmissione del dispositivo verso il gateway, dopo aver correttamente registrato quest’ultimo nella piattaforma TTN (attualmente, la V2).

Dovremo ora predisporre la cosiddetta “Application” sulla piattaforma TTN; in sostanza, ora che il gateway riceve e trasmette su TTN i dati crittati dal sensore, c’è bisogno di decodificarli e renderli poi fruibili per le elaborazioni finali.

Prima di proseguire, fermiamoci a riassumere i passaggi finora svolti e quelli che ancora dobbiamo implementare:

1) Cablaggio sensori meteo al trasmettitore ELSYS: fatto
2) Registrazione gateway TTIG-868 su piattaforma TTN: fatto
3) Programmazione base del trasmettitore per invio dati a piattaforma TTN, mediante il gateway: fatto
4) Creare una “Application” su piattaforma TTN per decodificare i dati criptati ricevuti su TTN mediante il gateway: da fare
5) Creare l”Integration” “Data Storage” su piattaforma TTN per predisporre l’esportazione/elaborazione dei dati precedentemente decodificati: da fare
6) Creare un semplice codice php per esportare/elaborare/visualizzare i dati in tempo reale (script che può girare ad esempio su dominio Aruba o altri): da fare
7) Creare ulteriori “Integration” (come “AllThingsTalk Maker” e “HTTP Integration for Datacake“) che permettano di esportare i dati su piattaforme appositamente pensate per la visualizzazione dati di sensori IoT al fine di presentarli in maniera facilmente leggibile (grafici dinamici, aggiornamento automatico etc): da valutare

In questo capitolo ci occuperemo dei punti 4, 5 e 6; il punto 7 è ancora in fase di studio e, essendo in corso di aggiornamento la piattaforma TTN (da V2 a V3, come indicato anche in precedenza), sarà probabilmente ritardato.

Punto 4
Per creare una application su TTN, consiglio di seguire la facile guida creata proprio da Elsys:https://www.elsys.se/en/ttn-guide/. Come visibile nella documentazione, l’obiettivo è decodificare i dati che, fino a questo momento, esistono solo in maniera crittata (ricordiamo che il gateway NON esegue alcuna operazione di decrittazione e si limita a trasferirli così come li riceve). Utilizzando il “payload decoder” fornito già pronto e funzionante, è sufficiente inserirlo nell’apposita sezione per poter ottenere i dati “in chiaro” sotto il menu “Data” della nostra application.

Punto 5
Per creare una integration su TTN è necessario accedere all’omonimo menu dell’application e selezionare “add integration”. Basilare sarà attivare quella nominata “Data Storage”. Successivamente, cliccare su Integration info >> go to platform per accedere al tool.

Si apre un sito web che si chiamerà https://NOMEAPPLICATION.data.thethingsnetwork.org/; in alto, cliccare su “authorize” e nella schermata che appare (richiesta “key”), inserire l’access key della vostra application su TTN (visibile sotto il menu “Overview” dell’application stessa, si chiama “default key”).

Infine, andare su GET /api/v2/query/{device-id} e su device-id digitale il nome del vostro device (così come registrato sull’application) e su last inserire il tempo di cui fare la ricerca dati (Data Storage attualmente permette un archivio ciclico di 7 giorni). Per la nostra finalità, inserire 24h e premere “Try it out”.
I dati verranno visualizzati su Response Body e saranno quelli delle ultime 24 ore.

Si veda un esempio qui sotto di stringa completa standard (senza impulsi esterni da pluviometro, valore “digital2=0)

{
“device_id”: “elt2”,
“digital”: null,
“digital2”: 0,
“externalTemperature”: 20.7,
“humidity”: 34,
“pressure”: 1002.904,
“raw”: “AQD1AiIHDjwMAM8UAA9NmBoA”,
“temperature”: 24.5,
“time”: “2021-04-28T15:06:35.107902699Z”,
“vdd”: 3644
},

e questo è invece un esempio di impulso da reed switch registrato su “digital2” (il valore è su stato “1”) che corrisponde ad una basculata del pluviometro. I rimanenti valori sono “null”

{
“device_id”: “elt2”,
“digital”: 1,
“digital2”: 1,
“externalTemperature”: null,
“humidity”: null,
“pressure”: null,
“raw”: “DQEaAQ==”,
“temperature”: null,
“time”: “2021-04-29T05:02:25.53377155Z”,
“vdd”: null
},

6) Al fine di ottenere i dati dall’integration “Data Storage” è necessario scrivere uno script (ho utilizzato php in quanto ho familiarità con le basi di questo linguaggio ma ci sono molti altri metodi, ad esempio mediante Pyhton che è un linguaggio adatto a maneggiare stringhe e dati). La logica è la seguente:
A) dichiarare il metodo di “cattura” dati mediante la funzione curl della stringa in formato json ed importare l’ultimo dato disponibile
B) dichiarare le variabili ed eseguirne le elaborazioni (es. conversione formato timestamp, compensazione umidità relativa, pressione atmosferica, calcolo accumulo pluviometrico giornaliero, estrazione estremi temperatura etc)
C) visualizzare i dati finali elaborati in formato leggibile
D) inserire l’eventuale webcam e/o l’immagine della stazione

Stazione meteo sperimentale IoT LoRaWan ELSYS ELT2-HP – dati in tempo reale da Vittorio Veneto ogni 5 minuti

Orario ultimo dato: 29/04/2021 23:56:30

Temperatura attuale: 13.8°C
Temperatura minima odierna: 11.6°C alle ore 03:46:33
Temperatura massima odierna: 18.1°C alle ore 14:36:31
Umidità relativa: 95%
Dew Point: 12.8°C
Pressione atmosferica relativa: 1010.9hPa
Precipitazione giornaliera: 3.3mm
Tensione batteria: 3.647V

 

Nel prossimo capitolo analizzeremo la struttura dello script php

Alla prossima!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.