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

De things.cat
Salta a: navegació, cerca

Teleconferència

Adreça de la teleconferència d'avui

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

MQTT Dash

Exemple de configuració de l'aplicació MQTT Dash

Panell de control (dashboard) del NodeRED

Control d'indicador de color al panell de control

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

Exemple JSON per a NodeRED

Escritura de múltiples datos al mismo tiempo. Uso del formato de datos json

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

Codi d'Arduino IoT-02_mqtt_10_adtelecom (Biblioteca Arduino_JSON)

#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 ps -a
usuari@vps-12a7ecda:~$ docker exec -it 67ca6e3e82d6 /bin/bash
I have no name!@67ca6e3e82d6:/$ influx -username admin -password txxxxsCxx
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
> show measurements
name: measurements
name
----
Humitat
Pressio
Temperatura
jb_Temp
> 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

Flux amb panell de control

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