3a sessió. Curset introductori d'Internet de les Coses. (17 / novembre / 2020)

De things.cat
La revisió el 15:53, 16 nov 2020 per Jordi Binefa (discussió | contribucions) (Dades encapsulades JSON)
Salta a: navegació, cerca

Ús del telèfon mòbil per trametre i rebre temes MQTT

MQTT Dash

Panell de control (dashboard) del NodeRED

Botons

Control dels leds de la placa IoT-02 mitjançant botons al panell de control del NodeRED

Ginys

Visualització del nivell de la LDR de la placa IoT-02 mitjançant ginys al panell de control del NodeRED

Gràfiques

Visualització del nivell de la LDR de la placa IoT-02 mitjançant gràfiques al panell de control del NodeRED

Dades encapsulades JSON

  • Ús de dades encapsulades JSON al NodeRED
  • Ús de les dades encapsulades a la placa IoT-02

Codi d'Arduino IoT-02_mqtt_10_adtelecom

#include <Arduino_JSON.h>
...
JSONVar json_IoT;
...
json_IoT["bIO0"] = (bIO0currentState)?"1":"0";
json_IoT["bI34"] = (bI34currentState)?"1":"0";
json_IoT["bI35"] = (bI35currentState)?"1":"0";
json_IoT["LDR"] = analogRead(LDR);
...
 if (szTopic == String("/" + String(sMac) + TOPIC_JSON_INPUT_REQ).c_str()) {
   String szJson = JSON.stringify(json_IoT);
   Serial.print("JSON: "); Serial.println(szJson);
   client.publish( String("/" + String(sMac) + TOPIC_JSON_INPUT).c_str(), szJson.c_str());
 }    
  • Comunicació entra la placa IoT-02 i el NodeRED mitjançant dades encapsulades JSON

Codi importable de NodeRED per a gestionarmissatges MQTT des de la placa IoT-02 mitjançant dades encapsulades JSON

Bases de dades temporals InfluxDB

Configuració inicial

Exemple d'instal·lació bàsica d'InfluxDB. Això no ho feu, és per a veure com ha estat configurat l'InfluxDB:

usuari@vps-12a7ecda:~$ docker exec -it 67ca6e3e82d6 /bin/bash
I have no name!@67ca6e3e82d6:/$ influx -username admin -password thingsCat
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> create database formacioDB
> show databases
name: databases
name
----
weather
_internal
formacioDB
> use formacioDB
Using database formacioDB
> insert Temperatura value=24.5
> insert Pressio value=1000.0
> insert Humitat value=50.0
> CREATE USER "iot" WITH PASSWORD 'iot'
> GRANT ALL ON "formacioDB" TO "iot"
> CREATE USER "convidat" WITH PASSWORD 'benvingut'
> GRANT READ ON "formacioDB" TO "convidat"
> show users
user     admin
----     -----
admin    true
iot      false
convidat false
> quit
I have no name!@67ca6e3e82d6:/$ exit
exit
usuari@vps-12a7ecda:~$ docker container restart 67ca6e3e82d6

Accés i configuració d'usuaris i mesures

I have no name!@67ca6e3e82d6:/$ influx -username iot -password iot
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> show databases
name: databases
name
----
formacioDB
> use formacioDB
Using database formacioDB
> select * from Temperatura
name: Temperatura
time                value
----                -----
1605478183340088709 24.5
> select * from Humitat
name: Humitat
time                value
----                -----
1605478195987797491 50
> insert Pressio value=1000.20
> select * from Pressio
name: Pressio
time                value
----                -----
1605478189310421317 1000
1605478716591764598 1000.2
> delete from Pressio where time=1605478716591764598
> select * from Pressio
name: Pressio
time                value
----                -----
1605478189310421317 1000
> quit

Ús de prefixos (aa_, ta_, vf_, sa_ i jb_) per a compartir la base de dades temporal InfluxDB

I have no name!@67ca6e3e82d6:/$ influx -username iot -password iot
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> use formacioDB
Using database formacioDB
> insert jb_Temp value=25.3
> insert jb_Temp value=25.7
> insert jb_Temp value=25.2
> select * from jb_Temp
name: jb_Temp
time                value
----                -----
1605479011234461680 25.3
1605479015733795563 25.7
1605479018394171773 25.2
> 

Lectura de dades

I have no name!@67ca6e3e82d6:/$ influx -username convidat -password benvingut
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> use formacioDB
Using database formacioDB
> select * from jb_Temp
name: jb_Temp
time                value
----                -----
1605479011234461680 25.3
1605479015733795563 25.7
1605479018394171773 25.2
> 

Dades crues i encapsulades

  • Dades crues (raw data)
  • Dades encapsulades. Ús de JSON a InfluxDB

Connexió d'InfluxDB amb NodeRED

Des de l'adreça personalitzada del vostre NodeRED, aneu al menú, escolliu l'opció Settings, seleccioneu la pestanya vertical Palette, aneu a la pestanya horitzontal Install, a Search modules escriviu-hi node-red-contrib-influxdb i premeu el botó Install.

Flux emprant InfluxDB

Accés i visualització de dades

Grafana

Emprant el vostre navegador, accediu a

http://formacio.things.cat:3000/

Els usuaris editors són antonio, jordi, simone, toni i vicente.

Ús de Grafana

Telegram

Bot de Telegram

  • Creació de bots amb BotFather
  • Instal·lació de nodes de Telegram a NodeRED
  • Interacció amb un usuari de Telegram
  • Interacció amb un grup de Telegram

Mastodon

  • Mastodon, una alternativa lliure a Twitter

No totes las instncies de Mastodon faciliten la instal·lació de bots. Per a fer els primers passos us recomano aquesta instància pensada per a hostatjar bots de Mastodon.

Exemple de bot de Mastodon per a fer lectures de sensors cada hora.

Getting credentials for the Mastodon API with Mastodon.py, step by step

Exercicis

Exercicis del curset introductori a Internet de les Coses per ADTelecom