Diferència entre revisions de la pàgina «ASIX/M17/UF1/P2»

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca
m (Guillem ha mogut M17/UF1/P2 a ASIX/M17/UF1/P2 sense deixar una redirecció: Crear subnivell ASIX)
 
(Hi ha 21 revisions intermèdies del mateix usuari que no es mostren)
Línia 23: Línia 23:
 
{{imatge|mosquitto1.png|800px|thumb|Faig una '''subscripció''' al tema ''exemple-topic'' des del terminal de la dreta}}
 
{{imatge|mosquitto1.png|800px|thumb|Faig una '''subscripció''' al tema ''exemple-topic'' des del terminal de la dreta}}
 
{{imatge|mosquitto2.png|800px|thumb|Faig una '''publicació''' al tema ''exemple-topic'' amb el missatge ''Vull un 10'' des del terminal de l'esquerra}}
 
{{imatge|mosquitto2.png|800px|thumb|Faig una '''publicació''' al tema ''exemple-topic'' amb el missatge ''Vull un 10'' des del terminal de l'esquerra}}
{{imatge|mosquitto3.png|800px|thumb|El terminal de la dreta, subscrit al tema on he publicat el missatge, rep el missatge enviat}}
+
{{imatge|mosquitto3.png|800px|thumb|El terminal de la dreta, subscrit al tema on he publicat el missatge, rep els missatges que vagi enviant en aquell tema}}
 +
Tornant a l'enunciat, i amb l'esquema jeràrquic a mà, obriré 3 terminals que se subscriguin a cada punt que es demana i el 4t serà el que publiqui els avisos. D'aquesta manera veurem com cada subscriptor rep o no els missatges en funció del nivell on estigui subscrit.
 +
{{imatge|mosquitto4.png|800px|thumb|Situació inicial: els 3 terminals subscriptors subscrits cadascú a la zona on es demana}}
 +
El primer missatge ha arribat a tots els terminals ja que:
 +
*El primer està subscrit a '''tot''' el que passa a la casa.
 +
*El segon està subscrit a '''tot''' el que passa a les habitacions.
 +
*El tercer està subscrit concretament al llum de l'HAB1 que hem encès.
 +
El segon missatge ha arribat només al primer i segon terminal:
 +
*El primer està subscrit a '''tot''' el que passa a la casa.
 +
*El segon està subscrit a '''tot''' el que passa a les habitacions
 +
*El tercer '''NO''' està subscrit a nivell d'habitacions.
 +
El tercer missatge només ha arribat al primer terminal perquè:
 +
*El primer està subscrit a '''tot''' el que passa a la casa.
 +
*El segon està subscrit '''només''' al que passa a les habitacions; '''NO''' pas al que passa a la cuina.
 +
*El tercer '''només''' està subscrit a l'estat del llum de l'HAB1.
 +
{{imatge|mosquitto5.png|800px|thumb|Situació final: els missatges publicats pel terminal 1 han arribat selectivament als subscriptors configurats}}
  
 
==Part 2. IoT Simulator==
 
==Part 2. IoT Simulator==
Línia 32: Línia 47:
 
:https://www.bevywise.com/iot-simulator/help-document/
 
:https://www.bevywise.com/iot-simulator/help-document/
 
====Solució====
 
====Solució====
 +
Quan descarreguem i instal·lem el ''Bevywise'' tenim una GUI web amb una xarxa de dispositius IoT predefinida que podem eliminar i crear-ne una de nova per a la nostra simulació:
 +
{{imatge|mosquitto6.png||Creo una nova xarxa d'exemple per a la meva pràctica}}
 +
Una vegada creada la nova xarxa la tindrem completament buida
 +
{{imatge|mosquitto7.png}}
 +
{{imatge|mosquitto8.png||thumb|Podem afegir dispositius nous amb el botó}}
 +
{{imatge|mosquitto9.png||thumb|Afegim un altre dispositiu}}
 +
Una vegada creats uns quants dispositius, podem configurar esdeveniments fent clic a cada un dels dispositius i clicant el '+' de dalt a la dreta:
 +
{{imatge|mosquitto10.png}}
 +
Jo crearé un event ''on connect'' que envḯi un missatge quan es connecti i estigui a punt:
 +
{{imatge|mosquitto11.png}}
 +
Per l'altra banda, configurarem el dispositiu ''Extintor cuina'' se subscrigui als missatges del detector de fum. Això simularia un control d'incendis, per exemple.
 +
{{imatge|mosquitto12.png}}
 +
{{imatge|mosquitto13.png||thumb|Aquí mostro com el missatge publicat pel sensor de fum de la cuina és rebut pel dispositiu extintor}}
 +
Creo un altre dispositiu que representi un ordinador que va registrant tota l'activitat els sensors de la casa:
 +
{{imatge|mosquitto.14.png}}
 +
I el subscric al tòpic general ''casa/#'' perquè rebi tots els missatges publicats de qualsevol dispositiu de la casa virtual
 +
{{imatge|mosquitto15.png}}
 +
Per acabar, he configurat els dispositius de Presència de les habitacions perquè publiquin missatges a ''casa/habitacions/HABX''. Finalment, comprovo com el PC_registre rep tots els missatges ja que està subscrit a '''tot''' el que passa al topic casa i els seus subtopics.
 +
{{imatge|mosquitto16.png}}
  
 
==Part 3. Tecnologies subjacents a IoT==
 
==Part 3. Tecnologies subjacents a IoT==
Línia 44: Línia 78:
 
*Seguretat
 
*Seguretat
 
====Solució====
 
====Solució====
 +
*Energia
 +
:Pel que fa a l'energia, els dispositius IoT han de tenir bons nivells d'eficiència i ser al màxim d'autònoms possible. Hem de pensar que són dispositius que normalment estaran en llocs on sigui difícil fer-hi arribar línies elèctriques per a alimentar-los i, per tant, haurem d'optar per sistemes com ara l'energia solar, eòlica, ''harvesting'', i fins i tot l'opció d'instal·lar bateries de petites dimensions per a poder suplir energia si la font d'alimentació primària falla. Això seria interessant de cara a dispositius que funcionin 24/7 per a suplir energia durant la nit: s'hauria d'estudiar el seu consum i instal·lar plaques solars que sobrepassin el consum de manera que l'excedent es pugui guardar en bateries per a poder mantenir un funcionament continu durant la nit o durant un dia que l'energia solar no fos suficient per mantenir el dispositiu encès.
 +
 +
*Sensors
 +
:Pel que fa als sensors, s'ha de dir que actualment n'hi ha una gran varietat. Al ser l'IoT una tecnologia bastant emergent, podríem dir que molta gent s'anima a dissenyar i crear sensors. Això, combinat amb l'auge de la filosofia ''Open Source'' fa que tinguem a l'abast mapes i dissenys de molts sensors que, amb una mica de temps, coneixement i els components adequats, podem construir-los nosaltres mateixos. Un exemple d'això seria el propi microcontrolador Arduino que, en sí, està publicat el seu disseny i qualsevol persona es pot muntar el seu Arduino a partir d'aquesta documentació. De la mateixa manera, molta gent opta per deixar al domini públic el disseny dels seus sensors compatibles amb aquest microcontrolador de manera que podem tenir dispositius IoT totalment de codi obert amb la intenció de poder abarcar encara més gent que en un principi es podria mostrar escèptica sobre un sensor, el codi o funcionament del qual sigui privat. Tot i això, hi ha fabricants de dispositius electrònics que també posen a la venda dispositius d'aquest tipus i són totalment propietaris; a canvi de tenir, possiblement, un millor suport que no pas al ser de codi obert, en el que només disposes del suport de la pròpia comunitat.
 +
 +
*Cloud Computing
 +
:És un aspecte dels més importants conjuntament amb el de comunicació, al meu parer. És dels que tenen més protagonisme perquè el sentit d'una xarxa de dispositius IoT és que siguin poc voluminosos i no haguem d'anar nosaltres com a "administradors" o "usuaris" d'aquell sistema a recollir les dades físicament i freqüentment al dispositiu. Com que són dispositius que es poden posar, i és interessant posar-los, en llocs ''difícils'' d'accedir (com ara al cim d'una muntanya, a una estructura de comunicacions per a mesurar la qualitat de l'aire, etc) és important tenir darrere una bona infraestructura de Cloud Computing on es recolzin els dispositius de manera que les dades recollides pels sensors s'envïin a servidors des dels que poguem concentrar totes les dades i treballar-hi després. Un exemple seria una xarxa de dispositius que mesurin la qualitat de l'aire del centre d'una gran ciutat: seria impensable haver de tenir una persona (o més) voltant per la ciutat i enfilant-se als terrats de les cases on hi ha estacions de mesura per a recollir les dades obtingudes. La manera òptima és tenir un servidor accessible des dels dispositius (mitjançant una bona xarxa de comunicacions) on els ''IoT devices'' vagin volcant les dades en un servidor on després l'administrador pugui accedir i treure'n informes i conclusions des d'un únic lloc.
 +
 +
*Comunicació
 +
:L'altra de les branques més importants de l'IoT són les comunicacions. Tornant al tema anterior, per a poder volcar les dades en temps real o a intervals bastant petits, ens cal una bona infraestructura de comunicacions; tant a nivell de fiabilitat com de cobertura. Potser no tant a nivell d'ample de banda perquè l'IoT també està orientat a zones de difícil accés a les persones i això pot significar que tampoc hi tinguem bona cobertura de xarxes 3G, 4G o WiFi amb un bon ample de banda. És per això que pot ser interessant tenir una via de comunicació de dades més fiable que no pas ràpida; ja que els dispositius IoT poden generar moltes dades però utilitzen protocols que utilitzen poc ample de banda (com MQTT ''Mosquitto'' o similars). Aleshores podem invertir en una xarxa 2G o una xarxa WiFi tipus 802.11b que, tot i tenir poc ample de banda, té una millor relació cobertura-abast/potència a canvi d'un menor ample de banda que un WiFi 802.11ac o una xarxa mòbil tipus 4G LTE.
 +
 +
*Integració de dispositius
 +
:La integració de dispositius també ha de ser possible i al màxim d'estandarditzada possible per a poder muntar infraestructures escalables; de manera que si el dia de demà necessitem millorar una estació amb diversos sensors, no haguem de renovar tot de nou i, d'aquesta manera, minimitzar despeses i poder fer actualitzacions de maquinari (sensors, microcontroladors, etc.) de manera ràpida i còmoda. L'escalabilitat és un tema clau també pel fet que l'IoT és una tecnologia encara molt verda i està creixent contínuament: s'ha de tenir perspectiva de futur i crear estàndards i protocols que el dia de demà ens serveixin per a poder integrar el màxim de dispositius sense haver de patir per incompatibilitats entre aparells antics i nous o similar.
 +
 +
*Estàndards
 +
:Com he comentat en l'apartat d'integració, la comunitat d'investigadors i desenvolupadors de la tecnologia IoT ha de ser intel·ligent de cara a futur i poder definir protocols de comunicació públics que permetin la comunicació M2M de manera que en el futur no ens trobem que s'hagi de renovar per complet el parc de dispositius IoT perquè cada fabricant va per la seva banda i crea els seus estàndards propietaris sense tenir la possibilitat de poder integrar diversos dispositius per a poder muntar ''clústers'' de dispositius més potents quant a tamany, consum energètic. etc. No seria bo en cap sentit haver de muntar un microcontrolador nou cada vegada que necessitessim afegir un mòdul/sensor nou en un ja existent perquè tindríem, per exemple, un microcontrolador Arduino amb 2 sensors treballant en paral·lel amb un altre tipus de microcontrolador que recopila dades d'un altre tipus de sensor però que no es "parlin" entre ells perquè no són compatibles en protocol.
 +
 +
*Seguretat
 +
:És el tema per excel·lència del segle XXI i de l'era tecnològica que estem vivint. En el moment que es connecta un aparell a Internet, implícitament estem fent-lo potencialment vulnerable a atacs externs maliciosos de qualsevol tipus. És per això que la tecnologia IoT hauria d'enfocar la seguretat com el pilar fonamental d'aquesta nova tecnologia. No es podria permetre en cap cas que un servei d'extinció d'incendis comandat per una xarxa IoT de sensors de CO<sub>2</sub> pogués ser crackejat de manera que un atacant pogués activar els extintors d'un local sense que aquest estigui incendiat. Si això ho portem a l'extrem, podríem anar a tocar temes com la salut pública en el cas d'hospitals que utilitzin sensors per a monitoritzar l'estat dels pacients, o bé en el tema de la seguretat i la privacitat si ens imaginem que un lladre pogués entrar sense permís a la xarxa d'una casa i pogués desactivar el sistema d'alarma o disposar d'alguna cosa que li permetés poder obrir les portes automàtiques sense necessitat de forçar-les.
 +
[[Category:M17]]

Revisió de 11:34, 15 abr 2020

Guillem Solà i Boeck

Part 1. Protocol MQTT (Mosquitto)

Simular la comunicació de sensors i servidor mitjançant el protocol MQTT

Subscripcions

  • Subscripció a tota la casa independentment del sensor
  • Subscripció a totes les habitacions independentment del sensor
  • Subscripció al sensor de llum de l’habitació HAB1

Publicacions

  • Encén llum HAB1
  • Encén llum HAB2
  • Encén Presencia CUINA

Experimenta amb altres configuracions de subscriptions i casos de publicació que tu vulguis relacionats amb l’estructura anterior

Solució

He instal·lat mosquitto des dels repositoris per defecte d'Ubuntu 16

sudo apt install mosquitto

Aleshores he engegat el servei i l'he activat a l'arrencada amb

systemctl start mosquitto
systemctl enable mosquitto

Per a poder disposar de les comandes mosquitto_pub i mosquitto_sub haurem d'instal·lar el paquet mosquitto-clients

sudo apt install mosquitto-clients

A partir d'aquí podem començar a fer les nostres proves:

Faig una subscripció al tema exemple-topic des del terminal de la dreta


Faig una publicació al tema exemple-topic amb el missatge Vull un 10 des del terminal de l'esquerra


El terminal de la dreta, subscrit al tema on he publicat el missatge, rep els missatges que vagi enviant en aquell tema


Tornant a l'enunciat, i amb l'esquema jeràrquic a mà, obriré 3 terminals que se subscriguin a cada punt que es demana i el 4t serà el que publiqui els avisos. D'aquesta manera veurem com cada subscriptor rep o no els missatges en funció del nivell on estigui subscrit.

Situació inicial: els 3 terminals subscriptors subscrits cadascú a la zona on es demana


El primer missatge ha arribat a tots els terminals ja que:

  • El primer està subscrit a tot el que passa a la casa.
  • El segon està subscrit a tot el que passa a les habitacions.
  • El tercer està subscrit concretament al llum de l'HAB1 que hem encès.

El segon missatge ha arribat només al primer i segon terminal:

  • El primer està subscrit a tot el que passa a la casa.
  • El segon està subscrit a tot el que passa a les habitacions
  • El tercer NO està subscrit a nivell d'habitacions.

El tercer missatge només ha arribat al primer terminal perquè:

  • El primer està subscrit a tot el que passa a la casa.
  • El segon està subscrit només al que passa a les habitacions; NO pas al que passa a la cuina.
  • El tercer només està subscrit a l'estat del llum de l'HAB1.
Situació final: els missatges publicats pel terminal 1 han arribat selectivament als subscriptors configurats


Part 2. IoT Simulator

Heu de crear la vostra pròpia xarxa de Iot Devices i simular events

  • A una màquina virtual UBUNTU heu de tenir instal·lat MYSQL i Mosquitto Broker.
  • Al campus virtual us haureu de baixar el BEVYWISE IoT Simulator per instal·lar al vostre UBUNTU.
  • Abans de posar-ho en marxa haureu de posar la contrasenya de root del mysql al fitxer de configuració del IoT Simulator segons marca el següent link:
https://www.bevywise.com/iot-simulator/help-document/

Solució

Quan descarreguem i instal·lem el Bevywise tenim una GUI web amb una xarxa de dispositius IoT predefinida que podem eliminar i crear-ne una de nova per a la nostra simulació:

Mosquitto6.png


Una vegada creada la nova xarxa la tindrem completament buida

Mosquitto7.png


Podem afegir dispositius nous amb el botó


Afegim un altre dispositiu


Una vegada creats uns quants dispositius, podem configurar esdeveniments fent clic a cada un dels dispositius i clicant el '+' de dalt a la dreta:

Mosquitto10.png


Jo crearé un event on connect que envḯi un missatge quan es connecti i estigui a punt:

Mosquitto11.png


Per l'altra banda, configurarem el dispositiu Extintor cuina se subscrigui als missatges del detector de fum. Això simularia un control d'incendis, per exemple.

Mosquitto12.png


Aquí mostro com el missatge publicat pel sensor de fum de la cuina és rebut pel dispositiu extintor


Creo un altre dispositiu que representi un ordinador que va registrant tota l'activitat els sensors de la casa:

Mosquitto.14.png


I el subscric al tòpic general casa/# perquè rebi tots els missatges publicats de qualsevol dispositiu de la casa virtual

Mosquitto15.png


Per acabar, he configurat els dispositius de Presència de les habitacions perquè publiquin missatges a casa/habitacions/HABX. Finalment, comprovo com el PC_registre rep tots els missatges ja que està subscrit a tot el que passa al topic casa i els seus subtopics.

Mosquitto16.png


Part 3. Tecnologies subjacents a IoT

L'aplicació amb èxit del concepte IoT en el món real és possible gràcies als avenços en les tecnologies subjacents

Analitza fent un resum amb les teves paraules com han de ser les tecnologies subjacents de IoT i quina visió creus que han de tenir com a paper que hauran de jugar a la IoT respecte a:

  • Energia
  • Sensors
  • Cloud Computing
  • Comunicació
  • Integració de dispositius
  • Estàndards
  • Seguretat

Solució

  • Energia
Pel que fa a l'energia, els dispositius IoT han de tenir bons nivells d'eficiència i ser al màxim d'autònoms possible. Hem de pensar que són dispositius que normalment estaran en llocs on sigui difícil fer-hi arribar línies elèctriques per a alimentar-los i, per tant, haurem d'optar per sistemes com ara l'energia solar, eòlica, harvesting, i fins i tot l'opció d'instal·lar bateries de petites dimensions per a poder suplir energia si la font d'alimentació primària falla. Això seria interessant de cara a dispositius que funcionin 24/7 per a suplir energia durant la nit: s'hauria d'estudiar el seu consum i instal·lar plaques solars que sobrepassin el consum de manera que l'excedent es pugui guardar en bateries per a poder mantenir un funcionament continu durant la nit o durant un dia que l'energia solar no fos suficient per mantenir el dispositiu encès.
  • Sensors
Pel que fa als sensors, s'ha de dir que actualment n'hi ha una gran varietat. Al ser l'IoT una tecnologia bastant emergent, podríem dir que molta gent s'anima a dissenyar i crear sensors. Això, combinat amb l'auge de la filosofia Open Source fa que tinguem a l'abast mapes i dissenys de molts sensors que, amb una mica de temps, coneixement i els components adequats, podem construir-los nosaltres mateixos. Un exemple d'això seria el propi microcontrolador Arduino que, en sí, està publicat el seu disseny i qualsevol persona es pot muntar el seu Arduino a partir d'aquesta documentació. De la mateixa manera, molta gent opta per deixar al domini públic el disseny dels seus sensors compatibles amb aquest microcontrolador de manera que podem tenir dispositius IoT totalment de codi obert amb la intenció de poder abarcar encara més gent que en un principi es podria mostrar escèptica sobre un sensor, el codi o funcionament del qual sigui privat. Tot i això, hi ha fabricants de dispositius electrònics que també posen a la venda dispositius d'aquest tipus i són totalment propietaris; a canvi de tenir, possiblement, un millor suport que no pas al ser de codi obert, en el que només disposes del suport de la pròpia comunitat.
  • Cloud Computing
És un aspecte dels més importants conjuntament amb el de comunicació, al meu parer. És dels que tenen més protagonisme perquè el sentit d'una xarxa de dispositius IoT és que siguin poc voluminosos i no haguem d'anar nosaltres com a "administradors" o "usuaris" d'aquell sistema a recollir les dades físicament i freqüentment al dispositiu. Com que són dispositius que es poden posar, i és interessant posar-los, en llocs difícils d'accedir (com ara al cim d'una muntanya, a una estructura de comunicacions per a mesurar la qualitat de l'aire, etc) és important tenir darrere una bona infraestructura de Cloud Computing on es recolzin els dispositius de manera que les dades recollides pels sensors s'envïin a servidors des dels que poguem concentrar totes les dades i treballar-hi després. Un exemple seria una xarxa de dispositius que mesurin la qualitat de l'aire del centre d'una gran ciutat: seria impensable haver de tenir una persona (o més) voltant per la ciutat i enfilant-se als terrats de les cases on hi ha estacions de mesura per a recollir les dades obtingudes. La manera òptima és tenir un servidor accessible des dels dispositius (mitjançant una bona xarxa de comunicacions) on els IoT devices vagin volcant les dades en un servidor on després l'administrador pugui accedir i treure'n informes i conclusions des d'un únic lloc.
  • Comunicació
L'altra de les branques més importants de l'IoT són les comunicacions. Tornant al tema anterior, per a poder volcar les dades en temps real o a intervals bastant petits, ens cal una bona infraestructura de comunicacions; tant a nivell de fiabilitat com de cobertura. Potser no tant a nivell d'ample de banda perquè l'IoT també està orientat a zones de difícil accés a les persones i això pot significar que tampoc hi tinguem bona cobertura de xarxes 3G, 4G o WiFi amb un bon ample de banda. És per això que pot ser interessant tenir una via de comunicació de dades més fiable que no pas ràpida; ja que els dispositius IoT poden generar moltes dades però utilitzen protocols que utilitzen poc ample de banda (com MQTT Mosquitto o similars). Aleshores podem invertir en una xarxa 2G o una xarxa WiFi tipus 802.11b que, tot i tenir poc ample de banda, té una millor relació cobertura-abast/potència a canvi d'un menor ample de banda que un WiFi 802.11ac o una xarxa mòbil tipus 4G LTE.
  • Integració de dispositius
La integració de dispositius també ha de ser possible i al màxim d'estandarditzada possible per a poder muntar infraestructures escalables; de manera que si el dia de demà necessitem millorar una estació amb diversos sensors, no haguem de renovar tot de nou i, d'aquesta manera, minimitzar despeses i poder fer actualitzacions de maquinari (sensors, microcontroladors, etc.) de manera ràpida i còmoda. L'escalabilitat és un tema clau també pel fet que l'IoT és una tecnologia encara molt verda i està creixent contínuament: s'ha de tenir perspectiva de futur i crear estàndards i protocols que el dia de demà ens serveixin per a poder integrar el màxim de dispositius sense haver de patir per incompatibilitats entre aparells antics i nous o similar.
  • Estàndards
Com he comentat en l'apartat d'integració, la comunitat d'investigadors i desenvolupadors de la tecnologia IoT ha de ser intel·ligent de cara a futur i poder definir protocols de comunicació públics que permetin la comunicació M2M de manera que en el futur no ens trobem que s'hagi de renovar per complet el parc de dispositius IoT perquè cada fabricant va per la seva banda i crea els seus estàndards propietaris sense tenir la possibilitat de poder integrar diversos dispositius per a poder muntar clústers de dispositius més potents quant a tamany, consum energètic. etc. No seria bo en cap sentit haver de muntar un microcontrolador nou cada vegada que necessitessim afegir un mòdul/sensor nou en un ja existent perquè tindríem, per exemple, un microcontrolador Arduino amb 2 sensors treballant en paral·lel amb un altre tipus de microcontrolador que recopila dades d'un altre tipus de sensor però que no es "parlin" entre ells perquè no són compatibles en protocol.
  • Seguretat
És el tema per excel·lència del segle XXI i de l'era tecnològica que estem vivint. En el moment que es connecta un aparell a Internet, implícitament estem fent-lo potencialment vulnerable a atacs externs maliciosos de qualsevol tipus. És per això que la tecnologia IoT hauria d'enfocar la seguretat com el pilar fonamental d'aquesta nova tecnologia. No es podria permetre en cap cas que un servei d'extinció d'incendis comandat per una xarxa IoT de sensors de CO2 pogués ser crackejat de manera que un atacant pogués activar els extintors d'un local sense que aquest estigui incendiat. Si això ho portem a l'extrem, podríem anar a tocar temes com la salut pública en el cas d'hospitals que utilitzin sensors per a monitoritzar l'estat dels pacients, o bé en el tema de la seguretat i la privacitat si ens imaginem que un lladre pogués entrar sense permís a la xarxa d'una casa i pogués desactivar el sistema d'alarma o disposar d'alguna cosa que li permetés poder obrir les portes automàtiques sense necessitat de forçar-les.