Exercicis d'Internet de les Coses (M15UF1, M09UF2 i M09UF3 del curs 2020-2021)

De binefa.com
Salta a la navegació Salta a la cerca

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.

ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0

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

  • 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

  • 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

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

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

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

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

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

Exemple de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb ABP trametent un nombre real

ex3.5.2.3) Exemple de comunicació LoRaWAN amb ABP trametent tres nombres reals

Exemple de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb ABP trametent tres nombres reals

Codi de NodeRED per a rebre tres nombres reals LoRaWAN amb ABP

ex3.5.3) Desxifreu els 3 floats des de NodeRED

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

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

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

ex3.6.1) Tramesa OTAA d'un conjunt de dades llegides als sensors de la placa IoT-02

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

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

Ús de ZeroTier: Configuració d'una VPN emprant ZeroTier

ex3.8) Ascensor

ex3.8.1) Des del mòbil

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

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

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

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

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ó

Si bSocConnectat és certa, publica el canvi d'estat del botó quan es prem I35.

ex3.10.3) Subscripció

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

É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

ex3.11.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