3a sessió. Curset introductori d'Internet de les Coses. (17 / novembre / 2020)
Contingut
Teleconferència
Adreça de la teleconferència d'avui
Ús del telèfon mòbil per trametre i rebre temes MQTT
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
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.
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.
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 instàncies 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