En aquest article volem explicar que es i com configurar la plataforma per guardar i monitoritzar dades de sensors https://thinger.io/
La practica a realitzar es obtenir i pujar les dades de temperatura i humitat a Thinger.io.
Les dades les llegim de un sensor DHT22 connectat a la placa NodeMCU.
Thinger permet que sigui el processador del NodeMCU, per programació, el encarregat de gestionar el moment de enviar les dades a la plataforma de Internet, streaming resources.
Es especialment útil fer servir el mode de estalvi de energia del processador ESP, nomenat deep sleep.
1.- Placa NodeMCU en mode estació
2.- Sensor DHT22.
3.- Resistència de 10K Ohm.
4.- IDE de Arduino.
5.- Plataforma per guardar i monitoritzar dades Thinger.io.

Per desenvolupar aquesta practica ens hem basat en la pàgina de ESPloradores
Thinger es una plataforma gratuïta que permet gestionar dispositius com ESP8266, Arduino, Raspberry Pi, etc, a traves de Internet. Respon al concepte de Internet de les coses, IoT, que es la interconnexió dels objectes quotidians amb Internet.
· Guardar i visualitzar informació rebuda dels sensors: Les dades es mostren en gràfics i també e poden exportar, per posterior anàlisis.
· Enviar informació o instruccions a dispositius: Podem configurar el nostres dispositius a traves de Internet, per exemple encendre una caldera a una temperatura prèviament establerta o fer que una porta s'obri o tanqui quan ho desitgem.
· Interactuar amb aplicacions com IFTTT: Permet crear connexions amb serveis en línia com Google Drive,Dropbox, Facebook, Twitter, YouTube, Instagram, pagines Web, correus electrònics, dades climatològiques, etc.
· Fem servir el mètode de Streaming Resource, en el qual, es el nostre dispositiu el que per programació ordena el enviament de dades a la plataforma Thinger.io. La plataforma només admet que les dades rebudes es guardin en un Data Bucket cada 55 segons. Si nomes volem visualitzar-les en un Dashboard, la recepció es pràcticament instantanea.
· Permet connectar un màxim de 2 dispositius. Sense limitacions en la quantitat de paràmetres a mesurar per els sensors.
· Els paràmetres rebuts en la plataforma es poden guardar en un màxim de 4 camps diferents, nomenats Data Buckets. Cada Data Bucket pot guardar dades de múltiples sensors amb una freqüència màxima de 1 minut, cada minut pot guardar una dada.
· Les dades dels sensors es poden mostrar en com màxim 4 pantalles gràfiques, que son els Dashboards.
· Es poden establir fins a 4 Endpoints que son les marques per interactuar amb els serveis en línia.
El primer pas per treballar amb Thinger.io es crear un compte en la plataforma.
Una vegada entrem en la plataforma en el panel de control (Console Dashboard), podem veure el estat de la nostre compte Account Stats, Connected Devices Locations i la quantitat de dades rebudes i enviades Data Transmission.

Anem en el menú de l'esquerra a Devices i Add Device i introduïm les dades del nou dispositiu:
Device Id: Es el nom que escollim per identificar la conexió de thinger.io amb el dispositiu.
Device description: Una breu descripció de la connexió.
Device credentials: La clau de seguretat per establir la conexió entre thinger.io i el dispositiu.

Ja tenim afegit el nou dispositiu DHT22.

Quan s'inicia la placa, es connecta per WiFi amb el router, la connexió es en mode Station.
A continuació es realitza la connexió amb Thinger.io.
El sensor DHT22 llegeix la temperatura i la humitat, si son dades errònies, torna a prendre noves mesures.
Si les dades son correctes les envia a un Data Bucket de Thinger.io. El mètode per enviar les dades es thing.stream(temperatura, humitat). La restricció es que nomes podem pujar les dades cada 55 segons.
La placa als 10 segons de estar encesa, entra en mode Deep Sleep.
Està en mode Deep Sleep 2'20", que son 140*10^6 us, igual a 140 segons, després es reinicia la placa i torna estar activa 10".
Únicament envia una dada per cicle de 10".
La librería per Thinger es thinger.io by Alvaro Luis Bustamante.
Thinger.ino
/*
Lectura de valors de temperatura y humitat del sensor DHT22 i placa
NodeMCU utilitzan la funció ESP.deepSleep() i monitorizació en la plataforma www.thinger.io
El temps que està el microprocesador en repos es de 140*10^6 us = 140 segundos.
El temps per realitzar la conexió WiFi, conexió amb Thinger.io, realitzar
le mesures de temperatura i humitat i enviar-lo a thinger.io es de 10000 ms = 10 segundos
*/
#include <ESP8266WiFi.h> //Llibrería de connexió WiFi
#include <ThingerESP8266.h> //Llibrería de la plataforma thinger.io
#include "DHT.h" //Llibrería del sensor DHT22
// Paràmetres del conexió amb thinger.io
#define usuari "josep"
#define device_Id "DHT22"
#define device_credentials "12345678"
ThingerESP8266 thing(usuari, device_Id, device_credentials);
// Paràmetres del DHT
#define DHTPIN D1
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Temps de Deep Sleep del ESP8266 (en microsegons)2'20"
uint32_t SLEEP_TIME = 140e6;
// Parámetres de conexió WiFi
const char WiFi_ssid[]="mirablau";
const char WiFi_password[]="Cla1DeCasa";
// Variables globals
float h; //humitat
float t; //temperatura
void setup() {
// Inicialització del DHT22
dht.begin();
// Inicialització de la WiFi per comunicar-se amb la API
thing.add_wifi(WiFi_ssid, WiFi_password);
// Recurs que permet la lectura de dades des de la API
thing["DHT22"] >> [](pson& out){
out["Temperatura"] = t;
out["Humitat"] = h;
};
}
void loop() {
thing.handle();
float t_NOverificada = dht.readTemperature();
float h_NOverificada = dht.readHumidity();
//Verifica que las lectures son correctes
if (isnan(t_NOverificada) || isnan(h_NOverificada)) {
return;
}
else{
t = t_NOverificada;
h = h_NOverificada;
thing.stream(thing["DHT22"]); //Si les lectures son vàlidas, les envía a thing.io
}
//despres de 10" el procesador es posa a dormir
//i estarà dormin 2.20'
if (millis() >= 10000){
ESP.deepSleep(SLEEP_TIME, WAKE_RF_DEFAULT);
}
}
Tenim que posar els propis paràmetres per la connexió tan de WiFi com també a Thinger.io, com es mostra en la següent imatge:
Pugem el codi a la placa des de el IDE de Arduino i el port sèrie.
Amb la placa en funcionament, en la plataforma de thinger.io podem comprovar que la connexió es exitosa. El dispositiu DHT22 esta connectat (Connected). Si no s'ha iniciat veiem la etiqueta Disconnected.

Si cliquem sobre el dispositiu, tenim mes detalls se la connexió. Si mirem la consola del dispositiu DHT22, es mostra el tràfic de dades entre la placa i thinger.io:

Amb el dispositiu connectat, tenim que registrar les dades en un Data Bucket, per que quedin guardades. Seleccionem Data Bucket i emplenem tots els camps.
Quan volem crear un Data Bucket o un Dashboard, Thinger.io intenta connectar-se a la placa per veure els camps de dades (temperatura i humitat), al estar la nostre placa nomes 10 segons activa cada 2'30". No pot funcionar. Tenim que modificar el temps de activitat de la placa de 10" a 1000" que son 1000000 milisegons. Després tenim que tornar canviar-ho.

Per crear una pantalla gràfica de visualització, seleccionem Dashboards. Una vegada plens tots el camps. A dins de la pantalla gràfica podem inserta els següents elements (Widget Settinng) de representació gràfica:
> Time Series Chart. Uneix en una gràfica continua les mesures guardades es un Data Bucket en un interval de temps.
> Donut Chart. Gràfic de dònut per representar un únic valor.
> Progressbar. Gràfic de barra per representar un únic valor, per exemple l'últim.
> Google Map. Mapa de Google amb la localització del dispositiu.
> Image/MJPEG. Imatge des de una URL, per exemple imatge obtinguda per una vídeo càmera via Internet.
> Text/Value. Un únic valor de text o numèric.
> Clock. Rellotge.
En Widget Settings emplenem els camps de la següent manera:



El mar.
Havaneres.
Lloret antic.
Lloret avui.
De cala Morisca a Sa Carabera.
De Sa Carabera a Treumal.
Lloret en kayak.
Vígilancia remota.
Caixa-tpv.
Cambrer-app.
Client webApp.
Relats del banc del si no fos
Històries d'ahir
Vídeos antics de Lloret
El caiac
Contes de l'avi.
Control d’accés amb contrasenya.
Orgue de llums.
Comparativa de editors Arduino.
Projecte bon Nadal.
Control de la qualitat del aire interior (CO2) amb semàfor LED.
NodeMCU-ThingSpeak
ThingSpeak.
NodeMCU com AccessPoint.
Control de la llum de casa per web.
Control de un led per el mòbil.
Sistema de fitxers en ESP8266.
Altura del nivell d'aigua.
Avis d’alarma a Telegram.
Control de la intensitat de llum de un LED per Internet.
Magatzematge de temperatura i humitat en Thinger.
Publicar temperatura i humitat en Google Sheets.
ESP8266 i Firebase.
La bàscula. ESP8266 NodeMCU amb cèl·lula de càrrega.
ESP32-CAM
ESP32-CAM captura fotos per ser vistes en la WEB.
Pujar fotos a un servidor FTP amb ESP32-CAM.
MicroPython en ESP8266.
Visual Estudio Code per Arduino.
Classificador d’imatges.
Instal·lar i configurar Apache en Ubuntu.
Accés a un servidor Linux remotament.
Client i Servidor FTP.
Màquina virtual UBUNTU.
WindowsXP en Virtualbox.
Multisim, simulador de circuits electrònics.
Proteus, simulador de circuits electrònics.
MySQL. Instal·lació.
MySQL. Aplicacions.
Netbeans Maven MySQL.
Java+Netbeans+Maven+EclipseLink+Mysql
Aplicació d’escriptori JavaFX
App JavaFX amb SceneBuilder
App Java-Swing




Y cuando llegue el día del último vïaje,
y esté al partir la nave que nunca ha de tornar,
me encontraréis a bordo ligero de equipaje,
casi desnudo, como los hijos de la mar.


Noves tecnologies WEB Arduino Domótica MycroPython NodeMCU IoT Java ESP8266 Lora C++ Programació Server-Client