Diferència entre revisions de la pàgina «Exercicis d'Internet de les Coses (M15UF1, M09UF2 i M09UF3 del curs 2020-2021)»
Línia 2: | Línia 2: | ||
= ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0 = | = ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0 = | ||
− | [https://binefa.cat/training/nodered/influxDB_2.0/escripturaUnaDadaAleatoriaInfluxDB.nodered.txt Flux NodeRED d'escriptura d'una dada aleatòria a InfluxDB] a l'organització '''Clot''' al ''bucket'' '''aleatori/v1''' | + | [https://www.binefa.cat/training/nodered/influxDB_2.0/escripturaUnaDadaAleatoriaInfluxDB.nodered.txt Flux NodeRED d'escriptura d'una dada aleatòria a InfluxDB] a l'organització '''Clot''' al ''bucket'' '''aleatori/v1''' |
Codi Flux per a la graficació a Grafana: | Codi Flux per a la graficació a Grafana: |
Revisió de 19:04, 19 feb 2022
Dins de la vostra Carpetes compartides 2n de DAM. Curs 2020-2021, feu una carpeta anomenada 3rT_dam2021-Cognom1Cognom2Nom. Dins d'aquesta carpeta feu subcarpetes amb noms ex3.1, ex3.2, ... A dins, haureu de posar el vostre arxiu pdf explicatiu i els codis necessaris per a desenvolupar cada exercici.
Contingut
- 1 ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0
- 2 ex3.2) Visualització a Grafana de les dades emmagatzemades a una base de dades temporal
- 3 ex3.3) Pont d'HTTP a MQTT
- 4 ex3.4) Presa de contacte amb FreeRTOS
- 5 ex3.5) Presa de contacte amb LoRaWAN
- 6 ex3.6) Ús de LoRaWAN per la tramesa de dades
- 7 ex3.7) ZeroTier
- 8 ex3.8) Ascensor
- 9 ex3.9) Examen del curs 2018-2019
- 10 ex3.10) Tasca de connexió a MQTT fent servir FreeRTOS
- 11 ex3.11) Teleprogramació de la placa IoT-02 fent servir OTA
- 12 ex3.12) OpenMPI
ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0[modifica]
Flux NodeRED d'escriptura d'una dada aleatòria a InfluxDB a l'organització Clot al bucket aleatori/v1
Codi Flux per a la graficació a Grafana:
from(bucket: "aleatori/v1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
Expliqueu com es poden emmagatzemar dades a InfluxDB 2.0 emprant NodeRED i com es poden visualitzar emprant el mateix servei web d'InfluxDB 2.0
ex3.2) Visualització a Grafana de les dades emmagatzemades a una base de dades temporal[modifica]
- Visualitzeu a Grafana les dades de temperatura, humitat relativa, pressió atmosfèrica i de nivell de llum. Feu servir missatgeria MQTT amb un broker públic. Gestioneu les dades amb NodeRED emmagatzemant-les a una base de dades temporal InfluxDB v2.0. Visualitzeu les dades a un panell de gràfiques emprant Grafana.
- Visualitzeu a Grafana les dades de temperatura, humitat relativa, pressió atmosfèrica i de nivell de llum. Feu servir missatgeria MQTT amb un broker local (a la vostra màquina base o màquina virtual). Gestioneu les dades amb NodeRED emmagatzemant-les a una base de dades temporal InfluxDB v2.0. Visualitzeu les dades a un panell de gràfiques emprant Grafana.
ex3.3) Pont d'HTTP a MQTT[modifica]
- Mitjançant navegador web encén i/o apaga qualsevol led de la placa IoT-02 connectada a un broker MQTT. Feu servir com a pont el NodeRED.
- Mitjançant curl al terminal encén i/o apaga qualsevol led de la placa IoT-02 connectada a un broker MQTT. Feu servir com a pont el NodeRED.
ex3.4) Presa de contacte amb FreeRTOS[modifica]
Fent servir la placa IoT-02 feu un programa amb dues tasques. Una tasca farà que el led groc faci pampallugues (500ms encés i 500ms apagat). Una altra tasca llegirà el botó I35, fent que quan estigui premut el cicle del led groc sigui de 100ms encés i 100ms apagat.
ex3.5) Presa de contacte amb LoRaWAN[modifica]
Expliqueu com donar-vos d'alta a The Things Network i com heu adjuntat la vostra placa IoT-02 com a una aplicació d'aquest servei.
A un NodeRED funcionant des del terminal (no com a servei. Precisament, com ho fem a classe) dóna errors d'execució al fer servir els nodes instal·lats com a node-red-contrib-ttn (nodes oficials de TheThingsNetwork o TTN). També es veu que des de fa dos anys no s'ha fet manteniment d'aquests nodes. Degut a això es tractaran les trames emeses pels dispositius LoRaWAN com a missatges MQTT.
A una aplicació anomenada dam2021-cognom1_cognom2_nom afegiu-hi un dispositiu anomenat dam2021-cognom1_cognom2_nom-0001. Al NodeRED caldrà introduir aquestes dades:
Broker: eu.thethings.network
Port: 1883
Security / Username: dam2021-cognom1_cognom2_nom (el nom de l'aplicació a TTN)
Security / Password: ttn-account-v2.LVh3FzICF-3yhHe__no__es__la__que__toca__yPaQ3kEJ9uiCNkyPkGM (default key d'ACCESS KEYS)
Tema (Topic): dam2021-Cognom1Cognom2Nom/devices/dam2021-cognom1_cognom2_nom-0001/up (tema de pujada o uplink)
El missatge arriba com a text, es converteix a json i hi ha els temes: app_id, dev_id, hardware_serial, port, counter, payload_raw (codificat en base 64) i metadata. Dins de metadata: time, frequency, modulation, data_rate, airtime, coding_rate i gateways. Dins de gateways: les passarel·les que han captat el missatge LoRa començant per 0. I dins de cada passarel·la: gtw_id, timestamp. time, channel, rssi, snr, rf_chain, latitude, longitude i altitude.
ex3.5.1) Poseu en marxa una aplicació fent servir OTAA[modifica]
Exemple de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb OTAA
Codi de NodeRED per a rebre missatges LoRaWAN amb OTAA
ex3.5.2) Poseu en marxa una aplicació fent servir ABP[modifica]
Feu un nou dispositiu anomenat dam2021-Cognom1Cognom2Nom-0002. Quan canvieu d'OTAA a ABP desactiveu la casella Frame Counter Check.
ex3.5.2.1) Exemple bàsic de comunicació LoRaWAN amb ABP[modifica]
Exemple bàsic de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb ABP
Codi de NodeRED per a rebre missatges LoRaWAN amb ABP
ex3.5.2.2) Exemple de comunicació LoRaWAN amb ABP trametent un nombre real[modifica]
ex3.5.2.3) Exemple de comunicació LoRaWAN amb ABP trametent tres nombres reals[modifica]
Codi de NodeRED per a rebre tres nombres reals LoRaWAN amb ABP
ex3.5.3) Desxifreu els 3 floats des de NodeRED[modifica]
Desxifreu els 3 floats des de NodeRED, fent servir l'aplicació ABP dam2021-Cognom1Cognom2Nom-0002
ex3.5.4) Tramesa del nivell de l'LDR fent servir ABP[modifica]
Expliqueu un microprogramari mínim per a la placa IoT-02 que tramet les dades llegides a la fotoresistència (LDR). Expliqueu un flux mínim de NodeRED per a capturar les dades rebudes emprant LoRaWAN fent servir ABP.
ex3.5.5) Tramesa del nivell de l'LDR fent servir OTAA[modifica]
Expliqueu un microprogramari mínim per a la placa IoT-02 que tramet les dades llegides a la fotoresistència (LDR). Expliqueu un flux mínim de NodeRED per a capturar les dades rebudes emprant LoRaWAN fent servir OTAA.
ex3.6) Ús de LoRaWAN per la tramesa de dades[modifica]
ex3.6.1) Tramesa OTAA d'un conjunt de dades llegides als sensors de la placa IoT-02[modifica]
Emprant OTAA, visualitzeu a Grafana les dades de temperatura, humitat relativa, pressió atmosfèrica i de nivell de llum. Feu servir LoRaWAN trametent al rerefons de The Things Network, NodeRED emmagatzemarà les dades rebudes mitjançant LoRaWAN a una base de dades temporal. Visualitzeu les dades mitjançant el visualitzador web Grafana.
ex3.6.2) Tramesa ABP d'un conjunt de dades llegides als sensors de la placa IoT-02[modifica]
Emprant ABP, visualitzeu a Grafana les dades de temperatura, humitat relativa, pressió atmosfèrica i de nivell de llum. Feu servir LoRaWAN trametent al rerefons de The Things Network, NodeRED emmagatzemarà les dades rebudes mitjançant LoRaWAN a una base de dades temporal. Visualitzeu les dades mitjançant el visualitzador web Grafana.
ex3.7) ZeroTier[modifica]
Ús de ZeroTier: Configuració d'una VPN emprant ZeroTier
ex3.8) Ascensor[modifica]
ex3.8.1) Des del mòbil[modifica]
Feu les modificacions necessàries a ascensor.xml per a controlar l'ascensor des del vostre telèfon mòbil (Feu servir una aplicació com MQTT Dash o una de pròpia feta per vosaltres). (Snap! sense SSL)
Exemple dús d'MQTT amb sòcols web
Més exemples d'interacció entre la placa IoT-02 i sòcols web: Nodes sensors (motes) i passarel·les (gateways)
ex3.8.2) Des de la placa IoT-02[modifica]
Aprofiteu els canvis realitzats abans per a canviar de pis des dels botons de la vostra placa IoT-02 i que cada led correspongui a un pis (Per exemple, assigneu, quan arribi l'ascensor: planta 0 -> verd, planta 1 -> groc, planta 2 -> vermell. I mentre canvia de pis el led blanc fa pampallugues).
ex3.9) Examen del curs 2018-2019[modifica]
Examen 18-19 Feu fins a la pregunta 16.
Ajuda: Codi UDP per a la placa IoT-02
ex3.10) Tasca de connexió a MQTT fent servir FreeRTOS[modifica]
Aprofiteu l'enunciat de l'exercici 3.4: Fent servir la placa IoT-02 feu un programa amb dues tasques. Una tasca farà que el led groc faci pampallugues (500ms encés i 500ms apagat). Una altra tasca llegirà el botó I35, fent que quan estigui premut el cicle del led groc sigui de 100ms encés i 100ms apagat.
ex3.10.1) Connexió a WiFi i un broker MQTT[modifica]
Afegiu una tasca per a fer connexió a WiFi i MQTT. Us podeu basar en el codi present a IoT-02_mqtts_freeRTOS_json_12. Afegiu-hi també un #define USING_WIFI per saber si cal que funcionin totes aquelles funcions que tenen relació amb la wifi. Feu servir també una variable booleana bSocConnectat (que serà certa quan hi hagi connexió i falsa quan no s'hagi establert la connexió o s'hagi perdut -quan es perd la IP que s'autollegeix és 0.0.0.0-).
ex3.10.2) Publicació[modifica]
Si bSocConnectat és certa, publica el canvi d'estat del botó quan es prem I35.
ex3.10.3) Subscripció[modifica]
Quan feu la connexió a MQTT, afegiu una subscripció al tema /MAC/led (essent MAC la MAC de la vostra placa). Si rebeu per aquest tema un '1', 'On','on' o 'ON' s'ha d'encendre el led blanc. Si rebeu '0', 'Off', 'off' o 'OFF' s'apaga el led blanc.
ex3.11) Teleprogramació de la placa IoT-02 fent servir OTA[modifica]
És un recull de la pràctica feta a classe:
- Teleprogramació des de la xarxa local
- Teleprogramació des de l'ordinador a la vora (edge)
- Teleprogramació des de l'ordinador al núvol (cloud)
ex3.12) OpenMPI[modifica]
ex3.12.1) Instal·lació de l'OpenMPI
sudo apt install openmpi-common openmpi-bin libopenmpi3 libopenmpi-dev
ex3.12.2) Presa de contacte. Compilació:
mpiCC helloWorld02.cpp -o helloWorld02
Execució:
mpirun -np 2 helloWorld02
Per a executar més processos:
mpirun -np 4 helloWorld02
Si dóna problemes per manca d'osques (slots):
mpirun -np 4 --oversubscribe helloWorld02
o fem un arxiu my-localhost:
cat my-hostfile
localhost slots=4
i es pot executar:
mpirun -np 4 --hostfile my-hostfile helloWorld02