Diferència entre revisions de la pàgina «Exercicis d'Internet de les Coses (M15UF1, M09UF2 i M09UF3 del curs 2020-2021)»
m |
|||
(Hi ha 44 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | = | + | 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. |
− | [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''' | + | |
+ | = ex3.1) Exercici d'introducció a les bases de dades temporals. Ús de l'InfluxDB 2.0 = | ||
+ | [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: | ||
Línia 8: | Línia 10: | ||
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 | 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'' 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. | * 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 '''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. | * 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. | 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. 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. | + | 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 [https://binefa.cat/training/adtelecom/20201223/exrebut.txt 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''' == | ||
+ | [https://binefa.cat/training/adtelecom/20201223/IoT-02-22_ttn-otaa_adtelecom_01.zip Exemple de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb OTAA] | ||
+ | |||
+ | [https://binefa.cat/training/adtelecom/20201223/uplinkOTAA.nodered.txt 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 === | ||
+ | [https://binefa.cat/training/adtelecom/20201223/IoT-02_ttn-abp_adtelecom_02.zip Exemple bàsic de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb ABP] | ||
+ | |||
+ | [https://binefa.cat/training/adtelecom/20201223/uplinkABP.nodered.txt Codi de NodeRED per a rebre missatges LoRaWAN amb ABP] | ||
+ | |||
+ | === ex3.5.2.2) Exemple de comunicació LoRaWAN amb ABP trametent un nombre real === | ||
+ | [https://binefa.cat/training/adtelecom/20201223/IoT-02_12_loraABP_modbus_bme280_adtelecom_03.zip 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 === | ||
+ | [https://binefa.cat/training/adtelecom/20201223/IoT-02_12_loraABP_modbus_bme280_adtelecom_04.zip Exemple de microprogramari per a la placa IoT-02 de comunicació LoRaWAN amb ABP trametent tres nombres reals] | ||
+ | |||
+ | [https://binefa.cat/training/adtelecom/20201223/uplinkABP_bme280.nodered.txt 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 [http://zerotier.com/ ZeroTier]: [https://binefa.cat/IoT/vpn/zerotier/zerotier_01.pdf Configuració d'una VPN emprant ZeroTier] | ||
+ | |||
+ | = ex3.8) Ascensor = | ||
+ | == ex3.8.1) Des del mòbil == | ||
+ | Feu les modificacions necessàries a [https://binefa.cat/training/snap/intro/ascensor.xml ascensor.xml] per a controlar l'ascensor des del vostre telèfon mòbil (Feu servir una aplicació com [https://play.google.com/store/apps/details?id=net.routix.mqttdash&hl=es_419&gl=US MQTT Dash] o una de pròpia feta per vosaltres). ([http://extensions.snap.berkeley.edu/snap/snap.html Snap! sense SSL]) | ||
+ | |||
+ | [http://rubi.xoic.coop/Snap/snap.html#run:exemples/06_sensorsRubi.xml 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 = | ||
+ | [https://binefa.cat/dam1819/M7UF1_M9UF2_M9UF3_M15UF1/20190412_ExOrd_2DAM_M09UF3_M15UF1/ Examen 18-19] Feu fins a la pregunta 16. | ||
+ | |||
+ | Ajuda: [https://github.com/jordibinefa/IoT-02/tree/master/codes/IoT-02_wifi_04_udp 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 [https://github.com/jordibinefa/IoT-02/tree/master/codes/IoT-02_mqtts_freeRTOS_json_12 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.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 |
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