Diferència entre revisions de la pàgina «3a sessió. Curset introductori d'Internet de les Coses. (17 / novembre / 2020)»
m (→Dades encapsulades JSON) |
m (→Dades encapsulades JSON) |
||
Línia 18: | Línia 18: | ||
[https://binefa.cat/training/adtelecom/20201117/IoT-02_mqtt_10_adtelecom.zip Codi d'Arduino IoT-02_mqtt_10_adtelecom] | [https://binefa.cat/training/adtelecom/20201117/IoT-02_mqtt_10_adtelecom.zip Codi d'Arduino IoT-02_mqtt_10_adtelecom] | ||
− | #include <Arduino_JSON.h> | + | #include <'''Arduino_JSON.h'''> |
... | ... | ||
− | JSONVar json_IoT; | + | '''JSONVar''' json_IoT; |
... | ... | ||
json_IoT["bIO0"] = (bIO0currentState)?"1":"0"; | json_IoT["bIO0"] = (bIO0currentState)?"1":"0"; |
Revisió del 13:43, 16 nov 2020
Contingut
Ús del telèfon mòbil per trametre i rebre temes MQTT
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
Missatges MQTT des de la placa IoT-02 al NodeRED 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.
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 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