SISTEMA IoT PARA MONITORIZACIÓN DEL ESTADO DE
UN CENTRO DE PROCESO DE DATOS DE GRANDES
DIMENSIONES
Balles e os de And és, Ca los
Sypko, Denys
GRADO EN INGENIERÍA DE COMPUTADORES. FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
T abajo Fin de G ado en Ingenie ía de Compu ado es
Mad id, 1 de junio de 2017
Di ec o es:
Igual Peña, F ancisco
Piñuel Mo eno, Luis
Au o ización de di usión
Balles e os de And és, Ca los
Sypko, Denys
Mad id, a 1 de junio de 2017
Los abajo i man es, ma iculados en el G ado de Ingenie ía de Compu ado es de la
Facul ad de In o má ica, au o izan a la Uni e sidad Complu ense de Mad id (UCM) a
di undi y u iliza con ines académicos, no come ciales y mencionando exp esamen e a su
au o el p esen e T abajo Fin de G ado: “SISTEMA IoT PARA MONITORIZACIÓN DEL
ESTADO DE UN CENTRO DE PROCESO DE DATOS DE GRANDES DIMENSIONES”,
ealizado du an e el cu so académico 2016-2017 bajo la di ección de F ancisco Igual Peña y
la co-di ección de Luis Piñuel Mo eno en el Depa amen o de A qui ec u a de Compu ado es
y Au omá ica, y a la Biblio eca de la UCM a deposi a lo en el A chi o Ins i ucional E-P in s
Complu ense con el obje o de inc emen a la di usión, uso e impac o del abajo en In e ne
y ga an iza su p ese ación y acceso a la go plazo.
Es a ob a es á bajo una
Licencia C ea i e Commons
A ibución-NoCome cial-Compa i Igual 4.0 In e nacional.
“I ha e lea ned all kinds o hings om my many mis akes. The one hing I ne e lea n
is o s op making hem.”
Joe Abe c ombie, Las A gumen o Kings
2
Ag adecimien os
A mis pad es Olena y Oleksand po odo su apoyo y paciencia.
Denys
A mi he mana y mis pad es, g acias po odo.
Ca los
A F ancisco Igual Peña y a Luis Piñuel Mo eno po oda la ayuda p es ada.
A odos ellos, muchas g acias.
3
Índice gene al
Índice i
Índice de igu as
Índice de códigos ii
Resumen iii
Abs ac ix
1. In oducción 2
1.1. Obje i os y isión gene al del sis ema . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Requisi osiniciales ................................ 4
1.2.1. Nodosenso ................................ 4
1.2.2. Pe sis encia de da os . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3. Comunicación bidi eccional . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.4. Visualización y ala mas . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.5. Segu idad ................................. 5
1.3. Tecnologías y ecu sos u ilizados . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Me odología y plan de abajo . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5. Es uc u a del documen o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Nodo Senso 10
2.1. Ca ac e ís icas ha dwa e del nodo senso . . . . . . . . . . . . . . . . . . . . 10
2.2. In aes uc u as so wa e e aluadas . . . . . . . . . . . . . . . . . . . . . . . 12
i
2.3. In e aces y p o ocolos de comunicación . . . . . . . . . . . . . . . . . . . . . 14
2.4. Ob encióndeda os................................ 16
2.4.1. Senso de empe a u a . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.2. INA219 .................................. 18
2.4.3. Fo o esis encia .............................. 19
2.5. E aluacióndeau onomía............................. 20
3. In e cambio y almacenamien o de da os 24
3.1. MQTT....................................... 24
3.1.1. B oke ................................... 26
3.2. Teleg a ...................................... 27
3.3. Pe sis enciadeda os ............................... 29
3.4. Segu idad ..................................... 30
3.5. Comunicación bidi eccional . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4. Visualización de los da os, ala mas y despliegue del p oyec o 36
4.1. G a ana ...................................... 37
4.1.1. Visualización de los da os . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1.2. Ala mas y no i icaciones . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1.3. Plugins, ex ensiones y APIs . . . . . . . . . . . . . . . . . . . . . . . 40
4.2. Despliegueenlanube............................... 40
4.3. CasosP ác icos.................................. 42
4.3.1. Moni o ización de sala ía . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.2. Moni o ización en labo a o io de Física de Ma e iales . . . . . . . . . 44
4.3.3. Moni o ización del sis ema de e ige ación en Facul ad de Ciencias
Físicas................................... 46
ii
5. Conclusiones 49
5.1. Conocimien os adqui idos y usados . . . . . . . . . . . . . . . . . . . . . . . 50
5.2. Desa íosencon ados ............................... 51
5.3. Posibles mejo as y obje i os u u os . . . . . . . . . . . . . . . . . . . . . . . 52
5.4. Apo ación indi idual de los miemb os del g upo al p oyec o . . . . . . . . . 53
Bibliog a ía 56
A. In oduc ion 58
A.1.Aimsandsys emo e iew............................ 58
A.2.Ini ial equi emen s................................ 60
A.2.1.Senso node................................ 60
A.2.2.Da ape sis ence ............................. 60
A.2.3. Two-way communica ion . . . . . . . . . . . . . . . . . . . . . . . . . 60
A.2.4. Visualiza ion and ale s . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2.5.Secu i y .................................. 61
A.3. Technologies and esou ces used . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.4. Me hodology and wo k plan . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
A.5. S uc u e o he documen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B. Conclusions 65
B.1. Acqui ed and used knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B.2.Challenges ound ................................. 67
B.3. Imp o emen s and u u e aims . . . . . . . . . . . . . . . . . . . . . . . . . . 68
B.4. Indi idual con ibu ion o he membe s o he g oup o he p ojec . . . . . . 69
C. Ins ucciones de ins alación 71
iii
C.1. In luxDB1..................................... 71
C.2. Teleg a 2...................................... 72
C.3. G a ana3...................................... 72
C.4. Mosqui o4..................................... 73
C.5.Ejecución ..................................... 73
D. Fi mwa e A duino 75
E. Sc ip s LUA 84
E.1.ini .lua....................................... 84
E.2.se up.lua...................................... 85
E.3.applica ion.lua................................... 86
E.4.con ig.lua ..................................... 88
1h ps://docs.in luxda a.com/in luxdb/ 1.2/in oduc ion/ins alla ion/
2h ps://docs.in luxda a.com/ eleg a / 1.2/in oduc ion/ins alla ion/
3h ps://docs.g a ana.o g/ins alla ion/
4h ps://mosqui o.o g/documen a ion/
i
Capí ulo 1
In oducción
IoT (In e ne o Things o In e ne de las Cosas) es un pa adigma que consis e
en in e conec a los obje os de la ida co idiana a a és de In e ne . A a és de es e pa-
adigma, es posible desplega g andes edes de senso es que moni o izan, en iempo eal y
de o ma conjun a mul i ud de pa áme os y pueden, en caso de se necesa io, ac ua en
unción de los alo es obse ados y en base a pa áme os o umb ales p ede inidos.
El concep o IoT se p opuso en 1999 en el MIT po Ke in Ash on pe o no ha sido has a
los úl imos años cuando ha c ecido su popula idad g acias en e o as cosas al auge de la
ecnología de los sma phones. Según la emp esa Ga ne , en 2020 end emos 12.863 millo-
nes unidades conec adas1, p incipalmen e se án los disposi i os del me cado de Domó ica .
Es o nos pe mi i á con ola di e en es apa a os in eg ados en nues os hoga es ales como
sis emas de clima ización, sis emas de segu idad y sob e odo equipos mul imedia.
1.1. Obje i os y isión gene al del sis ema
El obje i o p incipal de es e p oyec o es diseña e implemen a un sis ema de bajo cos e,
obus o y ácilmen e escalable que pe mi a la moni o ización en iempo eal de los ac o es
1h p://www.ga ne .com/news oom/id/2636073
2
ísicos que puedan ene ele ancia en un Cen o de P ocesamien o de Da os, como hume-
dad, empe a u a, consumo o luz.
Además, esul a deseable que el sis ema desa ollado pueda ex ende se a o os ámbi os
en los que la moni o ización de cualquie p oceso ele an e, sin que dicha mig ación esul e
complicada pa a el usua io inal. Dada la e sa ilidad del dashboa d de isualización u iliza-
do, que pe mi e selecciona de o ma muy in ui i a qué da os que emos e y cómo hace lo,
así como p og ama ala mas que nos no i iquen cuando algún pa áme o sob epase los alo-
es que le indiquemos y la mul i ud de senso es que se pueden conec a al nodo, se pueden
encon a o as u ilidades y casos p ác icos como pod emos e más adelan e, éase a la
ho a de moni o iza el ci cui o de e ige ación de la acul ad de Ciencias Físicas o igila
el co ec o uncionamien o de los ho nos de acío del labo a o io de Física de Ma e iales.
Figu a 1.1: Esquema gene al de la in aes uc u a p opues a.
3
La Figu a 1.1 ilus a un esquema gene al de la disposición e in e elación de los elemen os
que componen el sis ema p opues o.
1.2. Requisi os iniciales
Pa a el desa ollo del sis ema se p e ende c ea un p oyec o que cumpla, la menos, con
las siguien es necesidades.
1.2.1. Nodo senso
1. Se p e ende que el disposi i o enga un bajo cos e económico, con el in de que sea
ácilmen e ins alable con una in e sión mínima.
2. Que emos que además conlle e un bajo consumo, pues o que puede se necesa io
ins ala un g an núme o de disposi i os en la misma ed eléc ica e incluso que es os
es én alimen ados po ba e ías.
3. Es ob io que, pues o que puede medi pa áme os c í icos, ha de se un sis ema obus o,
po lo que necesi amos buen sopo e a ni el so wa e ( i mwa e).
4. Al se un p oyec o bas an e e sá il, que puede se mon ado en mul i ud de escena ios,
necesi amos que el nodo senso sea compa ible con dis in os ipos e in e aces
de senso .
5. Po úl imo, es ecomendable que el nodo que elijamos enga un buen sopo e e ni el
de comunidad pa a pode esol e de o ma ápida y p ecisa p oblemas con los que
nos encon emos.
1.2.2. Pe sis encia de da os
O a de las necesidades con la que nos encon amos es la de pode consul a de o ma
inmedia a un his ó ico de los da os ecogidos po los Nodos senso es, po lo que se han de
4
alo a di e en es sis emas de bases de da os con el in de que es e almacenaje de in o mación
se ealice de la o ma más e icien e posible.
1.2.3. Comunicación bidi eccional
Puede da se el caso en el que necesi emos comunica nos con el Nodo senso de o ma
emo a. Pa a ello es p eciso es ablece un mecanismo de ecepción de mensajes en el mismo
de o ma que, en el supues o de se necesa io, podamos da ó denes o ansmi i in o mación
al mic ocon olado .
1.2.4. Visualización y ala mas
Ob iamen e odo es e sis ema no end ía sen ido si no se pudiesen consul a los da os
ob enidos de una o ma ácil e in ui i a. Así que es necesa io busca algún dashboa d o
pla a o ma de isualización que cumpla con dichos equisi os. Además es un equisi o eco-
mendable que, de alguna o ma, se nos no i ica a cuando los pa áme os ecogidos po los
senso es sob epasen unos alo es c í icos.
1.2.5. Segu idad
Po úl imo, si conseguimos que la comunicación en e el mic ocon olado y el B oke se
ealice de o ma segu a (con algún p o ocolo de enc ip ación y/o au en icación) y p o ege-
mos el acceso a los di e en es se icios pod emos e i a p oblemas de segu idad y obos de
in o mación.
1.3. Tecnologías y ecu sos u ilizados
Dados los an e io es equisi os, se es uc u a el sis ema IoT desa ollado en las siguien es
cua o capas p incipales: disposi i o, in e az de comunicación, pe sis encia y isualización,
5
cuya uncionalidad y ca ac e ís icas se in oducen a con inuación y se de alla án en el es o
del documen o:
El disposi i o. Enca gado de la cap u a de da os, en nues o caso, un Nodo de bajo
cos e ESP8266 implemen ado en di e en es placas (NodeMCU [5] o Fea he HUZZAH
[7]) al que se conec an di e en es senso es como el INA219 [1], DS18B20 [3] o DHT22
[2].
In e az de comunicación. Es la pa e enca gada de ecibi y a a la in o mación
que le en ían los Nodos. Es á implemen ado en un se ido Ubun u al que se le han
con igu ado se icios como Mosqui o [11] ( ecibe mensajes po MQTT [10]) y Teleg a
[14] ( a a los da os con enidos en esos mensajes).
Pe sis encia. Es el eje p incipal del sis ema pa a pode adminis a lo de o ma in e-
ligen e, es a ges ionado median e In luxDB [13], que se enca ga de almacena los da os
en iados po los Nodos.
Visualización. Se ealiza median e el dashboa d G a ana [15], que o ece mul i ud
de opciones de pe sonalización pa a p opo ciona oda la in o mación ecolec ada al
usua io de o ma amigable, así como un sis ema de ala mas.
1.4. Me odología y plan de abajo
La inalidad de es e p oyec o es diseña una in aes uc u a de moni o ización en iempo
eal basada en IoT, seleccionando, in eg ando y con igu ando he amien as ya desa olladas,
e implemen ando la uncionalidad eque ida en el nodo senso a a és del i mwa e co es-
pondien e. Pa a ello el abajo se ha di idido en dos pa es, una de in es igación y p ueba
y o a de desa ollo.
6
Se empieza e aluando di e en es amewo ks y lenguajes de p og amación pa a los No-
dos senso es, p obando has a es lenguajes con sus espec i os IDEs. Como se e á, se ha
decidido u iliza el en o no A duino [6] po su sopo e a a és de comunidades en In e -
ne , la mul i ud de lib e ías desa olladas y la amilia idad con el lenguaje de p og amación
C, así como po la es abilidad obse ada al u iliza lo sob e las placas NodeMCU. Una ez
decidido, se comenza on a alo a ecnologías pa a con igu a los se icios del se ido . Es e
pun o es sob e odo una labo de in es igación a a és de o os especializados en IoT, blogs
o páginas de compa a i as.
Una ez decidido odo es o de o ma pa alela se abaja en la p og amación de los Nodos
senso es y en la ins alación y con igu ación de los dis in os se icios del se ido .
Con un sis ema o almen e es able y uncional el abajo ha consis ido en una úl ima
ase de e aluación de di e en es o mas de mejo a la in aes uc u a: u ilización de Cloud
Compu ing en dominios como AWS oAzu e, comunicación bidi eccional en e se ido y
nodo senso o añadi nue os senso es pa a medi nue os pa áme os o los ya exis en es.
1.5. Es uc u a del documen o
La p esen e memo ia se ha di idido en capí ulos siguiendo la siguien e es uc u a:
En el Capí ulo 1 se in oduce el p oyec o, explicando los obje i os y equisi os de
pa ida, las ecnologías y el plan de abajo que se an a u iliza pa a llega a los
mismos.
En el Capí ulo 2 se habla de odos los aspec os ela i os al Nodo Senso . Desde la
pa e ísica y elec ónica del mismo, has a las pla a o mas so wa e que se han e a-
7
luado y u ilizado pa a la p og amación del mismo, pasando po los di e en es senso es
u ilizados y las in e aces de comunicación que u ilizan.
El Capí ulo 3 explica del en ío y ecepción de los mensajes, en e el mic ocon olado
y el se ido de o ma segu a, incluyendo el a amien o de los mismos y el almacena-
mien o en la base de da os.
El Capí ulo 4 a a sob e el despliegue en la nube de los dis in os se icios, y de
la isualización de los da os en el dashboa d, así como de su sis ema de ala mas.
Además se comen an en es a sección casos p ác icos eales donde se ha implemen ado
el p oyec o.
En el Capí ulo 5 se discu en las conclusiones alcanzadas después de desa olla nues o
sis ema, compa ándolas con los equisi os iniciales y mencionando los conocimien os
y habilidades que nos ha p opo cionado la elabo ación del mismo.
8
Capí ulo 2
Nodo Senso
En es e capí ulo explica emos el uncionamien o del nodo, basado en el módulo ESP8266
que es un chip de bajo cos o Wi-Fi con una pila TCP/IP comple a y un mic ocon olado ,
así como de algunos de los senso es que se han ins alado y con igu ado en el mismo. Es e
módulo se puede encon a mon ado en di e en es placas de desa ollo. En nues o caso he-
mos u ilizado NodeMCU yFea he Huzzah, que además incluye un conec o pa a ba e ías
de ipo Lipo.
Po lo demás an o el mé odo pa a p og ama las como su uncionamien o son simila es,
po lo que nos cen a emos en emas más ele an es como la pla a o ma so wa e u ilizada
o los senso es con igu ados.
2.1. Ca ac e ís icas ha dwa e del nodo senso
El módulo ESP8266 cuen a con un p ocesado que unciona a 80MHz u ilizando una a -
qui ec u a de ipo RISC de 32 bi s. Cuen a con una memo ia RAM de 128KB y lo podemos
encon a con di e en es amaños de memo ia lash (los modelos que se han u lizado du an e
el desa ollo del p oceso cuen an con 4MB).
10
En cuan o a los pines, cuen a con 16 pines GPIO, en e los que se incluye un con e so
ADC de has a 10 bi s y sopo e pa a p o ocolos de comunicación como I2C, SPI o 1-wi e.
Podemos e en la Figu a 2.1 el pinou de un ESP8266 mon ado sob e un NodeMCU, del
que hablam emos a con inuación.
Figu a 2.1: Pinou de ESP8266 sob e una placa NodeMCU.
Una de las ca ac e ís icas más in e esan es de es e mic ocon olado , al ma gen de su
educido p ecio (en o no a 5€comp ándolo en España, menos de 3€si ecu imos a me -
cados asiá icos), es que incluye un módulo de conexión inalámb ica Wi-Fi 802.11 b/g/n con
oda la pila TCP/IP ins alada.
Podemos encon a el ESP8266 mon ado sob e placas de desa ollo de di e en es ab i-
can es como NodeMCU o Fea he Huzzah (Figu a 2.2). La di e encia en e es as placas es
mínima, a iando el núme o de pines GPIO disponibles (po ejemplo pueden sac i ica se
pines pa a la con e sión al mic oUSB que incluyen es as placas y que se usa pa a p og ama
11
impo ime
impo machine
impo onewi e
#Pin del senso GPIO2/D4
da = machine . Pin (2)
#C eamos e l o bje o OneWi e
ds = onewi e . DS18B20( onewi e . OneWi e( da ) )
#Escaneamos l o s d i s p o s i i o s del bus
oms = ds . scan ()
p in (' ound d e ices : ', oms )
ds . con e _ emp()
ime . sleep_ms (750)
o om in oms :
p in ( ds . ead_ emp ( om) )
Código 2.3: Mic oPy hon. Senso DS18B20.
2.4.2. INA219
El INA219 es un chip ab icado po Texas Ins umen s (aunque pueden encon a se clo-
nes en los me cados asiá icos), que pe mi e medi pa áme os de co ien e con inua como
son ol aje e in ensidad de en ada con una p ecisión de un 1 %, lo cual nos pe mi e calcula
de o ma i ial o os pa áme os elacionados como son la esis encia eléc ica o el consumo
de po encia en a ios. El esquema de conexión con la placa Fea he Huzzah es el mos ado
en la Figu a 2.7.
El código pa a inicializa el bus I2Cy ealiza las lec u as del senso y los cálculos
necesa ios co esponde con el Código 2.4.
#include <Ada ui _INA219 .h>
#include <Wi e . h>
. . .
Ada ui _INA219 ina219 ; //I2C
. . .
//Se i n i c i a e l senso
Wi e . begin (4 ,5) ; //I2C −> sda , s c l
ina219 . begin () ;
. . .
18
// Lec u a de l o s da os
loa shun ol age = ina219 . ge Shun Vol age_mV () ;
loa bus ol age = ina219 . ge BusVol age_V ( ) ;
loa cu en _mA = ina219 . ge Cu en _mA () ;
loa load ol age = bus ol age + ( shun ol age / 1000) ;
loa powe _mW = ( cu en _mA ) ∗load ol age ;
Código 2.4: A duino. Senso INA219.
Figu a 2.7: Esquema de conexión del senso INA219.
2.4.3. Fo o esis encia
El senso de luz se ha con igu ado median e una o o esis encia conec ada a un con e -
so analógico digi al MCP3008 (Figu a 2.8), que se comunica con el con olado median e
el p o ocolo SPI.
El LDR (Ligh Dependen Resis o ) o esis encia dependien e de la luz o ambién o-
océlula, es una esis encia que a ía su esis encia en unción de la luz que incide sob e
su supe icie. Cuan o mayo sea la in ensidad de la luz que incide en la supe icie del LDR
meno se á su esis encia y cuan o menos luz incida mayo se á su esis encia y po an o
meno es la lec u a de ol aje que se ealiza en el ESP8266.
19
Figu a 2.8: Esquema de conexión del senso LDR con MCP3008.
A con inuación, en el Código 2.5 se de allan las ins ucciones necesa ias pa a la iniciali-
zación, con igu ación y lec u a de los pa áme os p opo cionados po es e senso :
#include <SPI . h>
#include <MCP3008. h> // Con e so ADC
//∗∗ De iniciones ∗∗//
#de ine CS_PIN 14
#de ine CLOCK_PIN 5
#de ine MOSI_PIN 13
#de ine MISO_PIN 12
. . .
// Lib e í a MCP
MCP3008 adc (CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN) ;
. . .
// Lec u a de l o s da os
in al = adc . eadADC(0) ; // leamos Canal 0 de MCP3008 ADC( pin 1)
loa ol age = ( al ∗3 . 3 ) / 1023 ; // Con e si ón de adc con o l a j e 3 .3
Código 2.5: A duino. Senso LDR y MCP3008.
2.5. E aluación de au onomía
Con el in de que el sis ema pueda ins ala se sin dependencia de una línea de co ien e
eléc ica o bien de ene un espaldo en caso de co e del suminis o eléc ico y pues o que
la placa Fea he Huzzah incluye una en ada de alimen ación de ipo Lipo se han p obado
di e en es ba e ías pa a comp oba la du ación de la ida de las mismas y po an o que uso
20
pod ían ene .
El P ime o de los modelos p obados es del ab ican e PKCELL, más conc e amen e el
modelo LP503035(Figu a 2.9), con una capacidad de 500mAh y un ol aje de salida de
3,7V. Es a ba e ía puede encon a se en me cados asiá icos po un p ecio que oscila los 2,5$.
Figu a 2.9: P ime a de las ba e ías p obadas pa a el p oyec o.
Es e modelo dio unos esul ados de au onomía ela i amen e buenos, u ilizando en el
mic ocon olado el modo DeepSleep y haciendo que és e despe a a cada sesen a segun-
dos, se consiguió una du ación de la ida ú il de la ba e ía algo supe io a cincuen a ho as.
Po lo que se plan eó que es a pila pod ía u iliza se pa a ins ala el Nodo senso de modo
que que sea independien e de la ed eléc ica.
El segundo de los ipos de ba e ía p obados es una pila de bo ón de Li io eca gable,
conec ada aun adap ado que pe mi e la conexión de ipo Lipo, como puede e se en la
Figu a 2.10.
Es as ba e ías ienen una capacidad de 120mAh, sin emba go su ol aje de salida es de
21
3,6V, lo que hace que se encuen e «en el lími e» po lo que la du ación de su ida ú il bajo
las mismas condiciones apenas llega a ocho ho as. Sin emba go su bajo cos e hace que deba
se enida en cuen a como pila de espaldo pa a hipo é icos co es de luz en caso de que el
nodo senso es u iese conec ado a la ed eléc ica.
Figu a 2.10: Ba e ía conec ada a adap ado Lipo.
22
Capí ulo 3
In e cambio y almacenamien o de da os
En es e capí ulo e emos como se ealiza la comunicación de los da os, desde que los
senso es de la ESP8266 los cap u an has a su llegada a la Base de Da os, más de alladamen e
habla emos del p o ocolo de comunicación MQTT, del B oke usado y de Teleg a que se
enca ga de ecolec a odos los da os, p ocesa los si ue a necesa io y manda los a In luxDB.
3.1. MQTT
MQTT es un p o ocolo usado pa a la comunicación machine- o-machine(M2M) en el
In e ne o Things. Es un p o ocolo clien e-se ido sob e el que se publican/susc iben los
mensajes en e los disposi i os in e conec ados. Es á o ien ado p incipalmen e a la comuni-
cación de senso es, debido a su bajo consumo de banda ancha y mínima sob eca ga puede
se u ilizado en disposi i os con pocos ecu sos. Los mensajes se asmi en po TCP-IP.
Puede e se en el Código 3.1 la con igu ación pa a la inicialización del se icio y el en ío de
mensajes en nues o poyec o.
#include <PubSubClien . h>
// Función pa a e c i b i l o s mensajes MQTT
oid mq _sus (cha ∗ opic , by e ∗payload , unsigned in leng h ) ;
//Pa áme os de conexi ón
cons cha ∗mq _se e = " 147.96.67.1 7 2 " ;
cons cha ∗mq _use = " g −esp " ;
cons cha ∗mq _pass = "∗∗∗∗∗∗∗∗∗";
24
//TLS u i l i z a e l pue o 8083
WiFiClien Secu e w i i C l i e n ;
// I n i c i a l i z a m o s la comunicaci ón
PubSubClien c l i e n ( mq _se e , 8883 , w i i C l i e n ) ;
c l i e n . connec ( c l i e n I d . c_s () , mq _use , mq _pass ) ;
//En í o de un mensaje con un de e minado opic
c l i e n . publish ( " se n s o s /nodemcu/ empe a u eDh " , emepe a u eDh S ing) ;
Código 3.1: A duino. Con igu ación MQTT.
La a qui ec u a de MQTT sigue una opología de es ella, con un p og ama o disposi i o
que ac úa como se ido (B oke ) el cual es el enca gado de ges iona la ed e in e cambia
los mensajes. La comunicación se basa en los opics, que el clien e que publica el mensaje
c ea y a los que los nodos que p e enden consumi lo se susc iben. Un opic se ep esen a
median e una cadena y iene una es uc u a je á quica. Cada ni el de la je a quía se sepa a
con el símbolo (/). De es e modo, un posible ejemplo de je a quía desa ollado en el ám-
bi o de nues o p oyec o pod ía se edi icio1/plan a1/sala1/a duino0/ empe a u a;
la Figu a 3.1 mues a la je a quía MQTT plan eada en el ámbi o de nues o sis ema de
moni o ización de un cen o de p oceso de da os.
O a de las en ajas des acadas de es e p o ocolo es que o ece es calidades de se icio
pa a la en ega de mensajes:
Como máximo una ez, a lo sumo el mensaje publicado se ecibe una ez. Se puede
p oduci pé dida de mensajes.
Al menos una ez, donde se asegu a que los mensajes llegan, pe o se pueden p oduci
duplicados.
Exac amen e una ez, se asegu a que los mensajes llegan exac amen e una sola ez.
Se conside a on o os p o ocolos de comunicación, como HTTP, pe o po la na u aleza
de los disposi i os IoT, donde suele se impo an e un bajo consumo de ecu sos, lo habi ual
25
es u iliza p o ocolos op imizados como son MQTT. Al in y al cabo odas es as ca ac e ís-
icas lo hacen ideal en es e ipo de ecosis emas.
Figu a 3.1: Je a quía MQTT plan eada.
3.1.1. B oke
Es p ecisamen e el B oke el elemen o enca gado de ges iona la ed y edi igi los men-
sajes a sus co espondien es susc ip o es. En nues o caso, se op ó po u iliza uno de los
B oke s más conocidos que exis en pa a MQTT: Mosqui o. Mosqui o es un B oke desa-
ollado como código abie o po Eclipse1, ampliamen e u ilizado debido a su lige eza en e
a o as al e na i as como Mosca que al es a esc i o en ja a consume más ecu sos, lo que
nos pe mi e ácilmen e emplea lo en g an núme o de ambien es, incluso si és os pueden
1h p://mosqui o.o g/
26
apo a pocos ecu sos. A a és de es a página2se puede desca ga y consul a la docu-
men ación necesa ia pa a ins ala lo y usa lo en di e en es sis emas ope a i os.
Den o de la es uc u a que apa ece en la Figu a 3.1, nues os únicos «emiso es» son los
senso es de Tempe a u a y Humedad que hemos colocado en la Plan a1->Sala1->A duino1
y A duino2. Cada uno de ellos, lo amos a asigna a un opic p opio quedando el lis ado de
opics de la siguien e o ma:
Sala1:
edi icio1/plan a1/sala1/a duino0/ empe a u a
edi icio1/plan a1/sala1/a duino0/humedad
Pa a pode e los mensajes publicados po los emiso es hay que subsc ibi se a los dos
opics an e io es.
El B oke es una de las piezas p incipales del sis ema ya que sin MQTT no end íamos
una o ma an e icien e de comunicación. Cabe cons a a la sencillez con la que se puede
ins ala el sis ema y ene lo uncionando de o ma ins an ánea. En nues o p oyec o el B oke
es á con igu ado pa a escucha los mensajes a a és de los pue os 1883 (po de ec o) y 8883
(segu o).
3.2. Teleg a
Es un agen e, esc i o en Go, que se enca ga de ecopila mé icas y dis ibui las a una
al a gama de salidas, como pueden se dashboa ds o bases de da os, de o ma na i a. Es e
sis ema se ex iende no sólo a las salidas, sino ambién a las posibles en adas, que pueden se
2h ps://mosqui o.o g/download/
27
PubSubClien c l i e n ( mq _se e , 8883 , w i i C l i e n ) ;
oid se up () {
. . .
c l i e n . se Callback ( mq _sus ) ;
}
oid econnec () {
while ( ! c l i e n . connec ed ( ) ) {
S ing c l i e n I d = "ESP8266Clien −";
c l i e n I d += S ing ( andom (0 x ) , HEX) ;
i ( c l i e n . connec ( c l i e n I d . c_s () , mq _use , mq _pass ) ) {
S e i a l . p in ln ( " connec ed " ) ;
c l i e n . subs c ibe ( "ledS a us") ; //Nodo se sus c i b e al op i c " ledS a us "
}
e l s e {
S e i a l . p in ( " a i l e d , c=" ) ;
S e i a l . p in ( c l i e n . s a e () ) ;
S e i a l . p in ln ( " y again in 5 seconds " ) ;
delay (2000) ;
}
}
}
oid loop ()
{
i ( ! c l i e n . connec ed () ) {
econnec () ;
}
. . .
c l i e n . loop ( ) ; // Pe mi e al Mq Clien e p o cesa l o s mensajes e n an e s
}
Código 3.3: A duino. Comunicación Bidi eccional.
La aplicación p ác ica de es a uncionalidad adica en la posibilidad de con igu ación
de cie os pa áme os del nodo senso desde el p isma del usua io (po ejemplo, desde el
dashboa d); po ejemplo, pa áme os como ecuencia de mues eo, dimensiones conc e as
a mues ea , o unidades de medida a u iliza pod ían con igu a se emo amen e y de o ma
indi idual pa a cada nodo senso .
34
Capí ulo 4
Visualización de los da os, ala mas y
despliegue del p oyec o
Du an e la ase de p og amación de los ESP8266, cuando aún no se enía de inida la a qui-
ec u a de aplicaciones en el se ido , se u ilizó la pla a o ma ThingsPeak [16](Figu a 4.1).
Se a a de una aplicación web, basada en el en ío de mensajes median e el p o ocolo HTTP,
la cual nos si ió pa a comp oba el co ec o uncionamien o de los pe i é icos conec ados a
la placa. Es bas an e in ui i a y ácil de u iliza , pe o p e e imos u iliza el p o ocolo MQTT
po las en ajas que se han comen ado an e io men e, además de se más complicado de
in eg a en la a qui ec u a de nues o p oyec o, po se un se icio ex e no y dependien e
de e ce os.
Podemos encon a en la ed mul i ud de pla a o mas pa a el mon aje de dashboa ds,
an o g a ui as como de pago, o ien adas a la moni o ización y al In e ne de las Cosas. Así
dimos con algunos como Plo ly1, el cual es bas an e po en e en su e sión de pago pe o no
an o en la g a ui a; G aphi e2, que aunque p ome e se muy uncional aún es á en ases
emp anas de desa ollo; o F eeboa d 3, sencillo, in ui i o y ácil de u iliza pe o que en su
1h ps://plo .ly/
2h ps://gi hub.com/g aphi e-p ojec
3h ps:// eeboa d.io/
36
e sión g a ui a no pe mi e ene dashboa ds p i adas.
Figu a 4.1: Ejemplo de uncionamien o de la aplicación ThingsPeak.
Después de lee o os de comunidades in e esadas en IoT, iendo como la gen e hablaba
ma a illas de cie a pla a o ma que, pese a es a po aquel en onces aún en desa ollo,
enía muchísima uncionalidad nos decidimos po G a ana, cuyas ca ac e ís icas se de allan
a con inuación.
4.1. G a ana
G a ana4es un isualizado en iempo eal de se ies empo ales de da os que pe mi e
el uso de g á icos o almen e in e ac i os y edi ables, así como un sis ema de ale as ácil-
men e con igu ables desde la in e az g á ica de usua io. O a de las u ilidades que posee
es a pla a o ma es un e icien e sis ema de ges ión de usua ios, median e g upos y oles con
dis in os pe misos.
4h ps://g a ana.com/
37
Po úl imo hay un banco bas an e impo an e de de ex ensiones pa a G a ana cuya
ins alación es muy in ui i a y que pe mi en añadi uncionalidades como paneles con mapas
pa a geolocaliza la uen e de nues as mé icas o APIs pa a in eg a dis in os ipos de bases
o uen es de da os.
4.1.1. Visualización de los da os
G a ana pe mi e la isualizaión de los da os en o ma os de g á ica muy a iados con
pun os, ayas, ba as, e c. En nues o caso y pa a se ies de da os empo ales hemos consi-
de ado que lo mejo es mos a los de o ma lineal como la g á ica de la Figu a 4.2.
La con igu ación de las g á icas se hace median e consul as In luxDB como po ejemplo:
SELECT mean(" alue")FROM "mq _all" WHERE
" opic" ='senso s/nodemcu/luminosidad'
De es a o ma se puede mos a en una g á ica odos los alo es que en an con un de-
e minado opic.
Figu a 4.2: Visualización de la empe a u a median e líneas.
38
4.1.2. Ala mas y no i icaciones
Una de las uncionalidades que noso os conside amos más ú iles en nues o p oyec o,
es el sopo e pa a ale as que o ece G a ana. És as pueden con igu a se desde la in e az
g á ica y pe mi e el en ío no i icaciones no sólo po email si no po o as pla a o mas como
Slack oPage Du y.
Figu a 4.3: Pan alla de con igu ación de ale as en una g á ica.
El sis ema pe mi e de ini las ale as, que uncionan como un igge en la base de da os
In luxDB, de di e en es mane as (Figu a 4.3). Así podemos encon a nos con consul as de
di e en es ipos pa a que la aplicación nos a ise cuando un pa áme o supe e o baje de un
de e minado alo , cuando se deje de ecibi dicho pa áme o o consul as más complejas
cómo po ejemplo que la media de los da os ob enidos en los úl imos 5 minu os pase de un
alo c í ico. Podemos sabe que g á icas ienen ale as con igu adas, como la de la Figu a
Figu a 4.4.
Pa a pone la en uncionamien o u imos que c ea una cuen a de co eo con el nomb e
39
g [email p o ec ed]om y especi icamos la con igu ación SMTP (del se icio gMail) en el
iche o de con igu ación de G a ana.
Figu a 4.4: Cuando una g á ica iene una ale a con igu ada se mues a un icono con un
co azón jun o al nomb e de la misma.
4.1.3. Plugins, ex ensiones y APIs
G a ana o ece una lis a de ex ensiones5, que a aumen ando a medida que dis in os
desa ollado es o emp esas publican sus abajos en la comunidad de usua ios. Podemos
encon a de a ios ipos: di e en es o ma os de isualización de g á icas, APIs pa a conec a
con dis in as bases de da os, aplicaciones independien es de G a ana, e c.
4.2. Despliegue en la nube
A la ho a de ins ala los se icios se op a on po dis in as al e na i as, pe o los u o es
del p oyec o nos acili a on una máquina i ual, al que se puede accede desde la di ección
pe a.dacya.ucm.es. Es á máquina cuen a con el sis ema ope a i o Ubun u 16.04.1 y las
siguien es ca ac e ís icas ha dwa e i ualizadas:
5h ps://g a ana.com/plugins
40
1GB de memo ia RAM.
14GB de capacidad de disco du o.
P ocesado In el Wes me e, que unciona a 3GHz, con una memo ía caché de 4 MB y
que sólo u iliza un co e.
Po úl imo y una ez eníamos el p oyec o uncionando comple amen e, se decidió hace
una con igu ación simila a la que había ins alada en el se ido , pe o u ilizando ecnologías
de Cloud Compu ing, analizándose las siguien es pla a o mas pa a el despligue de la misma:
Windows Azu e. Es una pla a o ma de nube abie a y lexible que pe mi e compila ,
implemen a y adminis a aplicaciones ápidamen e en una ed global de cen os de
da os adminis ados po Mic oso . Puede compila aplicaciones en cualquie lenguaje,
he amien a o ma co.
Amazon Elas ic Compu e Cloud (EC2). Fo ma pa e del conjun o de aplicacio-
nes conocidas como Amazon Web Se ices. P opo ciona capacidad in o má ica con
amaño modi icable en la nube. Amazon EC2 p esen a un au én ico en o no in o má-
ico i ual, que pe mi e u iliza in e aces de se icio web (Figu a 4.5) pa a inicia
ins ancias con dis in os sis emas ope a i os, ca ga las con su en o no de aplicacio-
nes pe sonalizadas, ges iona sus pe misos de acceso a la ed y ejecu a su imagen
u ilizando los sis emas que desee.
Debido a que Amazon nos o ecía más se icios g a ui os así como c édi o pa a gas a
en su pla a o ma po da nos de al a en la misma como es udian es uni e si a ios, decidimos
decan a nos po és a. Además de se más segu a pues o que gene a un iche o de cla e pa a
que sólo se pueda conec a de o ma segu a median e TLS.
41
Figu a 4.5: Panel de adminis ación de Amazon E2C con la ins ancia de la máquina c eada
pa a el p oyec o.
4.3. Casos P ác icos
Dada la lexibilidad de nues o p oyec o se han encon ado di e en es aplicaciones de uso
del mismo, algunas de las cuales ya es án en uncionamien o y o a es á p oyec ada pa a un
u u o a co o plazo.
4.3.1. Moni o ización de sala ía
Siendo el obje i o inicial la moni o ización de un CPD de g andes dimensiones no podía-
mos da po inalizado el p oyec o sin el despligue del mismo en una sala ía con un g an
núme o de se ido es, más conc e amen e uno de nues os Nodos senso es se encuen a ins-
alado en el labo a o io del Depa amen o de A qui ec u a de Compu ado es y Au omá ica
en la Facul ad de Físicas de la Uni e sidad Complu ense (Figu a 4.6).
Se eque ía en es e caso la medición de la empe a u a, humedad y luminosidad (a mo-
42
do de senso de p esencia) de dicha sala, po lo que se han con igu ado senso es DHT22,
DS18B20 (a modo de espaldo) y una o o esis encia.
Figu a 4.6: Nodo senso ins alado en sala ía.
Todas las g á icas se han con igu ado con ale as pa a asegu a el co ec o unciona-
mien o del sis ema de e ige ación de la sala, al como puede e se en la Figu a 4.7. La
igu a mues a el es ado de la moni o ización de la sala du an e un pe íodo de sie e días,
epo ando empe a u a (paneles supe io izquie do e in e io ), humedad ela i a (panel su-
pe io de echo) y luminosidad (panel cen al). Tan o en los paneles de empe a u a como
de luminosidad se han es ablecido las ala mas co espondien es, con igu adas pa a en ia
co eos elec ónicos al adminis ado del labo a o io al supe a 25ªC y una luminosidad del
60 %. En los paneles, se pueden obse a , median e líneas e icales de colo ojo y e de, los
momen os en los que se han en iado a isos al supe a el umb al es ablecido y al ecupe a
un alo acep able. El senso de luminosidad en ía ala mas a modo de a iso de p esencia
en la sala. El sis ema ha uncionado de o ma es able du an e un ele ado núme o de días y
43
Al habe p obado ba e ías de espaldo, es á p o egido con a hipo é icos co es de luz.
Además después de habe es ado los se icios de cloud compu ing de Amazon, se ha
comp obado que se puede ins ala odo el sis ema con ela i a acilidad en un se ido
ex e no de al a iabilidad y disponibilidad.
Es ácilmen e escalable ya que se puede amplia el núme o de nodos senso es con el
único lími e de las di ecciones IPs disponibles en la ed, pues o que se puede eu iliza
el mismo código pa a p og ama odos los con olado es.
Además de odo es o, se puede a i ma que el sis ema o ece una g an e sa ilidad, ya que
su uncionamien o es ácilmen e ex apolable a o os ecosis emas, como la moni o ización
de un sis ema de cale acción o de los pa áme os ísicos de un in e nade o.
5.1. Conocimien os adqui idos y usados
Hemos u ilizado di e sos conocimien os ela i os a a ias amas de la in o má ica y de
las asigna u as es udiadas du an e el anscu so del G ado:
Los lenguajes de p og amación LUA y Py hon e an desconocidos pa a noso os; no
obs an e con la base que enemos a lo la go de la ca e a esul ó ela i amen e sencillo
adqui i unas nociones básicas con las que maneja nos con ellos. El código que usa
A duino IDE, p ác icamen e igual a C no nos supuso ningún p oblema al es a muy
amilia izados con es e lenguaje; además, en las asigna u a P og amación de Sis-
emas y Disposi i os ySis emas Empo ados ya p og amamos pe i é icos sob e
un mic ocon olado , po lo que eníamos cie a expe iencia en es e ámbi o.
Po el lado de las comunicaciones en e Nodo y B oke , nos ue on de g an ayuda los
conocimien os adqui idos en las asigna u as Redes yAmpliación de Redes a la ho a
de elegi p o ocolos a ni el de aplicación y anspo e. También la asigna u a op a i a
50
Segu idad en Redes, así como emas a ados en É ica, Legislación y P o esión
nos empuja on a enc ip a los mensajes median e TLS pa a que el in e cambio de
in o mación ue a lo más segu o posible.
Tampoco eníamos ninguna expe iencia p e ia en bases de da os no elacionales, po
lo que ue un ema o almen e no edoso. A o unadamen e, el o ma o de consul as
u ilizado po In luxDB es simila a SQL, sí es udiado en la asigna u a Bases de
Da os y po an o la adap ación no esul ó complicada.
No nos esul ó complicado u iliza el se ido Linux pues o que es amos muy acos um-
b ados a abaja en es e Sis ema Ope a i o, que es udiamos con bas an e p o undidad
en Sis emas Ope a i os yAmpliación de Sis emas Ope a i os.
Po úl imo, la asigna u a Ingenie ía del So wa e nos dio unas nociones sob e cómo
se debe plani ica y ges iona un p oyec o.
Po o a pa e los abajos p esen ados a lo la go de oda la ca e a, así como las di e-
en es p esen aciones que hemos ealizado en odas las asigna u as nos han enido muy bien
a la ho a de edac a la memo ia y plani ica la p esen ación de la misma.
5.2. Desa íos encon ados
El p ime o de los p oblemas encon ado ue el desa ollo inicial con Lua. Si ya de po sí
el lenguaje nos esul aba nue o p on o nos opamos con que, al in en a que el con olado
en a a en es ado DeepSleep en e lec u as y en íos, és e no ol ía a unciona co ec amen-
e. In es igando po o os descub imos que se a aba de un p oblema de las lib e ías del
lenguaje po lo que, en e o os mo i os, enunciamos a segui a anzando en dicho ame-
wo k.
51
No ue el único p oblema encon ado en elación a DeepSleep, pues o que una ez e -
minado el p oyec o y ya en ase de in es igación de posibles mejo as, in en amos añadi
uncionalidades con comunicación bidi eccional, haciendo que el senso pudie a ecibi men-
sajes del se ido . No obs an e, al es a la placa do mida no se ecibían esos mensajes y se
pe dían. Po lo que en un u u o y si se pensase en añadi es a uncionalidad hab ía que
pensa si in e esa aumen a el consumo, sob e odo si el sis ema abaja de o ma au ónoma
conec ado a una ba e ía.
Po úl imo, o o de los desa íos que nos encon amos ue el hace unciona el sis ema de
ale as o ala mas. Cuando nos decidimos a usa G a ana en los o os de desa ollado es se
comen aba que se es aba abajando en es e sis ema, y p ác icamen e el día que se publicó
la p ime a be a noso os comenzamos a es ea la, sin apenas documen ación ni e e encias.
El usua io que habíamos asignado a G a ana en In luxDB sólo enía pe misos de lec u a,
pe o al unciona las ale as como un igge en la base de da os no podía ejecu a se al
no ene pe misos, de alle que conlle ó cie o e aso en el desa ollo. La con igu ación del
p o ocolo SMTP pa a el en ío de co eos elec ónicos de ale a conlle ó ambién cie o
es ue zo adicional.
5.3. Posibles mejo as y obje i os u u os
Una de las p ime as mejo as a implemen a , cuya iabilidad ya se ha p obado, es el des-
pliegue de oda la in aes uc u a del se ido u ilizando Cloud Compu ing. Pla a o mas
como Azu e de Windows y EC2 de Amazon Web Se ices pod ían esul a económicas y
o almen e ac ibles.
O o de los obje i os ma cados a co o plazo es la ins alación y con igu ación de di e en es
52
senso es como pueden se p oximidad, humo, p esencia pa a pode u iliza el p oyec o en
di e en es ámbi os y ecosis emas de abajo. Se nos ha p opues o el mon aje del sis ema
en un in e nade o, en la moni o ización de un sis ema de cale acción o el con ol de la
empe a u a de un ho no.
5.4. Apo ación indi idual de los miemb os del g upo al
p oyec o
Po lo gene al el abajo se ha desa ollado de o ma conjun a, o ganizando sesiones
conjun as pa a implemen a de mane a coope a i a los dis in os aspec os del p oyec o.
Al comienzo del p oyec o, mien as se e aluaban los dis in os lenguajes de p og amación
que se podían usa pa a con igu a los nodos, Denys se enca gó de p oba más en p o undi-
dad Mic oPy hon mien as Ca los in es igaba con Lua pa a, después de pone nues as
espec i as conclusiones en común, p og ama de o ma conjun a un p ime sc ip en Lua.
Una ez decididos po A duino po los mo i os explicados en los apa ados an e io-
es cada uno de noso os comenzó el abajo sob e una placa di e en e (NodeMCU Denys
y Fea he Huzzah Ca los) pa a, de o ma pa alela, i p og amando el uncionamien o de
di e en es senso es mien as cada uno in es igábamos di e en es ecnologías que se pod ían
usa en el se ido . Reuniendo cada dos semanas pa a pone en común nues os a ances y
la in o mación descubie a.
Además en es as euniones pe iódicas se ap o echó pa a ins ala y con igu a odos los
pa áme os necesa ios pa a hace unciona los p og amas en el se ido .
53
Bibliog a ía
[1] INA219 - Da aShee .
h ps://cdn-shop.ada ui .com/da ashee s/ina219.pd .
[2] DHT22 - Da aShee .
h ps://www.spa k un.com/da ashee s/Senso s/Tempe a u e/DHT22.pd .
[3] DS18B20 - Da aShee .
h ps://cdn.spa k un.com/da ashee s/Senso s/Temp/DS18B20.pd .
[4] MAX31855 - Da aShee .
h ps://da ashee s.maximin eg a ed.com/en/ds/MAX31855.pd .
[5] NodeMCU - Documen ación.
h ps://nodemcu. ead hedocs.io/en/de /.
[6] A duino - Documen ación.
h ps://www.a duino.cc/.
[7] Fea he HUZZAH - Documen ación.
h ps://lea n.ada ui .com/ada ui - ea he -huzzah-esp8266.
[8] Fea he HUZZAH - Pinou s.
h ps://lea n.ada ui .com/ada ui - ea he -huzzah-esp8266/pinou s.
[9] NodeMCU - Pinou s.
h ps://gi hub.com/openda a-s u ga /me a/wiki/Pinou s-NodeMCU- 2,- 3.
55
[10] MQTT - Documen ación.
h p://mq .o g/documen a ion.
[11] Mosqui o - B oke .
h p://mosqui o.o g/.
[12] Mosqui o - TLS.
h ps://mosqui o.o g/man/mosqui o- ls-7.h ml.
[13] In luxDB - BBDD.
h ps://docs.in luxda a.com/in luxdb/ 1.2/.
[14] Teleg a - Collec .
h ps://docs.in luxda a.com/ eleg a / 1.2/.
[15] G a ana - Dashboa d.
h ps://g a ana.com/.
[16] Thingspeak - Dashboa d.
h ps:// hingspeak.com/.
56
Apéndice A
In oduc ion
IoT (In e ne o Things) is a pa adigm ha consis s o in e connec ing he objec s
o e e yday li e h ough he In e ne . Th ough his pa adigm, i is possible o deploy la ge
ne wo ks o senso s ha moni o , in eal ime and join ly a mul i ude o pa ame e s and can,
i necessa y, ac on he obse ed alues and based on p ede ined pa ame e s o h esholds.
The IoT concep was i s p esen ed by Ke in Ash on in 1999 a he MIT, bu i s
popula i y has only isen in ecen yea s mainly due o he boom in he sma phones
echnology. Acco ding o Ga ne , in 2020 he e will be 12.863 million o hings connec ed1,
mainly he Home Au oma ion Ma ke de ices. I will allow he use s o con ol a se ies o
in eg a ed de ices such as ai condi ioning sys ems, secu i y in as uc u es and mul imedia
ools.
A.1. Aims and sys em o e iew
The main pu pose o his p ojec is o c ea e a low p ice, obus and easily escala ed
sys em o moni o in eal ime physical ac o s ha migh be ele an in a Da a P ocessing
Cen e , such as humidi y, empe a u e, consump ion o ligh .
1h p://www.ga ne .com/news oom/id/2636073
58
In addi ion, i is desi able ha he de eloped sys em may be ex ended o o he a eas
in which he moni o ing o any ele an p ocess is c ucial, wi hou impac on he end use .
Gi en he e sa ili y o he isualiza ion ool dashboa d used, i allows o selec in a e y
in ui i e way wha da a we wan o see and how o do i , as well as o p og am ala ms ha
no i y us when a pa ame e exceeds he alues ha we indica e and he mul i ude o senso s
ha can be connec ed o he node. I is possible o ind o he u ili ies and p ac ical cases
as we will see la e , see when moni o ing he e ige a ion ci cui o he Facul y o Physical
Sciences o moni o he co ec ope a ion o acuum u naces o he Physics labo a o y o
Ma e ials.
Figu e A.1 illus a es a scheme ha se es o make us he idea o he gene al s uc u e
o he p oposed sys em.
Figu a A.1: Gene al scheme o he p oposed in as uc u e.
59
The backup ba e ies a e p o ec ed agains hypo he ical cou s o ligh . Besides a e
es ing he Amazon cloud compu ing se ices, i was p o en ha i can all be ins alled
wi h ela i e ease in an ex e nal se e o high eliabili y.
I is easily scalable since you can expand he numbe o senso nodes wi h he only
limi o he IPs add esses di ec ions a ailable in he ne wo k, since you can euse he
same code o p og am all he con olle s.
In addi ion, he sys em o e s a huge e sa ili y since i s ope a ion can be easily ans e-
ed o o he ecosys ems, like he moni o ing o a hea ing sys em o he physical pa ame e s
o a g eenhouse.
B.1. Acqui ed and used knowledge
We ha e used knowledge o se e al compu ing b anches as well as knowledge om he
subjec s s udied in he ca ee .
We did no know a i s he p og amming languages LUA and Py hon, ne e heless
wi h he base ha we ha e ob ained along he ca ee , i did no cos us much o lea n
some basic no ions o bo h languages The A duino IDE code is p ac ically he same
used in C, so i was no p oblem o us since we a e e y amilia ized wi h his language,
besides ha in he subjec “P og amación de Sis emas y Disposi i os” and “Sis emas
Empo ados” we had al eady p og amed pe iphe al on a mic ocon olle , so we had
some expe ience in his ield.
Rega ding he communica ions be ween Node and B oke , i was a g ea help o
us he knowledge ob ained in he subjec s “Redes y Ampliación de Redes” in o de
o choose p o ocols o applica ion and anspo . Also he “Segu idad en Redes”, as
well as subjec s ea ed in “É ica, Legislación y P o esión” pushed us o enc yp he
messages by means o TLS so ha he exchange o in o ma ion was he sa es possible.
66
Nei he had we had any p e ious expe ience in no ela ional da abases, i was a com-
ple e new g ound o us. Luckily, he o ma o que ies ha i is used in In luxDB is
qui e simila o SQL, which we ha e al eady s udied in he subjec “Bases de Da os”,
so i was no di icul o become luen in his language.
I was no complica ed o use he Linux se e since we a e e y used o wo k wi h
Ope a i e Sys ems, which we s udy in he subjec “Sis emas Ope a i os y Ampliación
de Sis emas Ope a i os”.
Finally, he subjec “Ingenie ía del So wa e” ga e us some no ions on how o schedule
and manage a p ojec .
On he o he hand, he deli e ables handled along all he ca ee , as well as he di e en
p esen a ions ha we ha e made in all he classes ha e helped us elabo a e he documen-
a ion and plan i s p esen a ion.
B.2. Challenges ound
The i s p oblem ha we aced was when we s a ed o de elop wi h Lua. The language
i sel was e y new o us and we soon aced a p oblem when we ied o pu he con olle
on DeepSleep mode be ween eadings and i did no wo k p ope ly a e wa ds. A e in es-
iga ing in some o ums, we disco e ed ha is was a p oblem wi h he languages lib a ies
so among o he easons, we e used o keep ad ancing wi h his amewo k.
I was no he only p oblem ha had wi h he DeepSleep, since once we had inished
he p ojec and decide o in es iga e imp o emen s, we ied o add unc ionali ies wi h
bidi ec ional communica ion so he senso could ecei e messages om he se e . Howe e ,
because he pla e was asleep i did no ecei e hese messages and hey go los . Ha ing
67
said ha , in he u u e i his unc ionali y was o be implemen ed i would be i s ecom-
mended o analyze wea he he inc ease in consump ion, especially i he sys em wo ks o
au onomous o m connec ed o a ba e y.
Finally, ano he o he challenges ha we aced was o make wo k he ale s and ala ms
sys em. When we decide us o use G a ana, a he de elope ’s o ums hey we e discussing
wo king wi h his ool and basically he day ha he i s be a e sion was eleased we
s a ed es ing i , wi hou any documen s no e e ences.
The use ha had assigned o G a ana in In luxDB only had eading pe missions, bu
since he ale s wo ked like a igge in he da abase, i could no be execu ed due o no
ha ing pe missions. We had lo s o p oblems wi h his ma e up un il we ound ou wha
was causing he e o . In addi ion o i , wi h he i s se ings iles he e we e no clea
speci ica ion ega ding he con igu a ion SMTP o he mailing.
B.3. Imp o emen s and u u e aims
One o he i s imp o emen s o implemen , whose easibili y has al eady being es ed,
is he deploymen o all he se e in as uc u e using Cloud compu ing. Pla o ms like
Azu e o Windows and EC2 om Amazon Web Se ices could esul economic and o ally
easible.
Ano he o he aims ma ked in he sho e m is he ins alla ion and con igu a ion o
di e en senso s as hey can be icini y, smoke, p esence o be able o use he p ojec in
di e en ields and ecosys ems o wo k. I has p oposed o us he se ing o he sys em in a
g eenhouse, o moni o ing a hea ing sys em o he o en empe a u e con ol.
68
B.4. Indi idual con ibu ion o he membe s o he g oup
o he p ojec
Gene ally he p ojec has been de eloped by he g oup join ly, we ga he ed o implemen
in a collabo a i e way he di e en is p ojec ’s s eps.
A he beginning o he p ojec , while we e alua ed he dis inc p og amming languages
ha could be used o con igu e he nodes, Denys was esponsible o es in dep h Mic oPy -
hon while Ca los in es iga ed wi h Lua in o de o la e , a e sha ing ou pe spec i es and
conclusions, we s a ed o p og am oge he he i s sc ip in Lua.
Once we decided o use A duino due o easons explained in he p e ious sec ions, each
one o us ca ied a pla e home (NodeMCU Denys and Fea he Huzzah Ca los) in o de o
wo k in pa allel o p og am he ope a ion o di e en senso s while each one in es iga ed
di e en echnologies ha could be used in he se e . We ga he ed each wo weeks o pu
in common ou ad ances and he in o ma ion disco e ed.
A hese pe iodic mee ings we ins all and con igu e all he necessa y pa ame e s o do
wo k he p og ams in he se e .
69
Apéndice C
Ins ucciones de ins alación
Se p opo cionan, como documen ación adicional, las ins ucciones y pasos básicos necesa-
ios pa a la ins alación y con igu ación de los dis in os se icios u ilizados pa a el desa ollo
del p oyec o.
C.1. In luxDB1
En desde la e minal y en el di ec o io home ejecu amos:
$ wge h ps://dl.in luxda a.com/in luxdb/ eleases/in luxdb_1.2.1_amd64.deb
$ sudo dpkg -i in luxdb_1.2.1_amd64.deb
Después de la ins alación pod emos edi a la con igu ación de la base de da os In luxDB
ubicada en el iche o /e c/in luxdb/in luxdb.con . A con inuación pod emos accede a
la misma desde cualquie na egado web, pa a ello ello debemos ab i la URL de In luxDB,
que se á la di ección ip del se ido en el que se ha ins alado, accediendo desde el pue o
8083: h p://ip:8083.
1h ps://docs.in luxda a.com/in luxdb/ 1.2/in oduc ion/ins alla ion/
71
C.2. Teleg a 2
Al igual que en el paso an e io , se ejecu an desde la consola de comandos ubicados en
el di ec o io home las siguien es ins ucciones:
$ sudo wge h ps://dl.in luxda a.com/ eleg a / eleases/ eleg a _1.2.1_amd64.deb
$ sudo dpkg -i eleg a _1.2.1_amd64.deb
Una ez comple ada la ins alación, desde el iche o de con igu ación /e c/ eleg a / e-
leg a .con se pueden inse a odos los pa ame os que nos hacen al a, como uen es de
da os de en ada y de salida. Po ejemplo la URL de nues o se ido In luxDB se indica en
la sección llamada ou pu s.in luxdb.
C.3. G a ana3
En home ejecu amos desde la línea de comandos:
$ sudo wge h ps://g a ana el.s3.amazonaws.com/builds/
g a ana_4.1.2-1486989747_amd64.deb
$ sudo dpkg -i g a ana_4.1.2-1486989747_amd64.deb
Una ez se ha iniciado el se icio sin p oblemas, ya podemos i a nues a URL po el
pue o 3000 h p://ip:3000 desde un explo ado web y en a a la aplicación con el usua io
po de ec o (use : admin, passwo d: admin) pa a con igu a desde la in e az g á ica el es o
de pa áme os como dashboa ds, ala mas, usua ios y pe misos, e c.
2h ps://docs.in luxda a.com/ eleg a / 1.2/in oduc ion/ins alla ion/
3h ps://docs.g a ana.o g/ins alla ion/
72
C.4. Mosqui o4
Mosqui o es el B oke que amos a u iliza pa a la ecepción y manejo de los mensajes
MQTT de nues o sis ema. Pa a ins ala lo sólo enemos que ejecu a en el di ec o io home
la siguien e ins ucción:
$ sudo ap -ge ins all mosqui o
Pa a cambia los di e en es pa áme os del se icio como pueden se au en i icación,
pue os, ce i icados de enc ip ación, e c., i emos al iche o de con igu ación ubicado en /e -
c/mosqui o/mosqui o.con .
Además, la he amien a Mq -Spy es una aplicación que puede se ú il pa a moni o iza
la ac i idad del sis ema en caso de duda del co ec o uncionamien o del mismo.
C.5. Ejecución
Pa a ejecu a hemos de ca ga el p og ama del Apéndice D en la ESP8266 usando el
A duino IDE 5. Después hemos de le an a In luxDB, Mosqui o y G a ana. Una ez que
odos los sis emas es án a ancados y uncionando accedemos a G a ana po la siguien e u l
h p://ip:3000 y con igu amos el o igen de los da os como In luxDB.
4h ps://mosqui o.o g/documen a ion/
5h ps://www.a duino.cc/en/main/so wa e
73
Apéndice D
Fi mwa e A duino
A con inuación se adjun a el código en A duino que se ha u ilizado pa a la ins alación de
odos los senso es y la inicialización de los dis in os buses e in e aces que se han mencionado
y explicado a lo la go del p oyec o:
1//** Lib e ías **//
2#include <OneWi e.h> // OneWi e
3#include <DallasTempe a u e.h> // DS18B20
4#include <ESP8266WiFi.h> // WiFi
5#include <ESP8266WebSe e .h> // TCP
6#include <MCP3008.h> // ADC
7#include <PubSubClien .h> // MQT
8#include <DHT.h> // DHT
9#include <Wi e.h> // INA219
10 #include <WiFiClien Secu e.h> // Clien e WiFi con sopo e de TLS
11 #include <Ada ui _INA219.h> // INA219
12 #include "FS.h" // File Sys em
13
14 //** De iniciones **//
15 /* GPIOS: En es a egión se de inen dis in os GPIOS que se
16 usa an pa a es ablece la comunicación con los pe i é icos. */
17 //SPI
18 #de ine CS_PIN 14
19 #de ine CLOCK_PIN 5
75
224 clien .disconnec ();
225
226 Se ial.p in ln("Closing WiFi connec ion...");
227 WiFi.disconnec ();
228 delay(100);
229
230 // Con igu amos el modo deepSleep
231 // WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED.
232 ESP.deepSleep(1000000 * imeSleep,WAKE_NO_RFCAL);
233
234 }
82
Apéndice E
Sc ip s LUA
Es e código son los sc ip s LUA que ue on desa ollados como p ime a e sión, pe o
desechada po p oblemas a la ho a de con igu a el modo DeepSleep. En ellos, emos la
conexión po WIFI, lec u as de los da os del senso ds18b20 y el en ío de mensajes a a és
de MQTT.
E.1. ini .lua
1app = equi e("applica ion")
2con ig = equi e("con ig")
3se up = equi e("se up")
4-- h ps://gi hub.com/nodemcu/nodemcu- i mwa e/ ee/mas e /lua_modules
5-- DS18B20 one wi e module o NODEMCU
6ds18b20 = equi e("ds18b20")
7
8se up.s a ()
84
E.2. se up.lua
1local module ={}
2
3local unc ion wi i_wai _ip()
4i wi i.s a.ge ip()== nil hen
5p in ("IP una ailable, Wai ing...")
6else
7 m .s op(1)
8p in (" n====================================")
9p in ("ESP8266 mode is: " .. wi i.ge mode())
10 p in ("MAC add ess is: " .. wi i.ap.ge mac())
11 p in ("IP is "..wi i.s a.ge ip())
12 p in ("====================================")
13 app.sa a ()
14 end
15 end
16
17 local unc ion wi i_s a (lis _aps)
18 i lis _aps hen
19 --
20 o key, alue in pai s(lis _aps) do
21 i con ig.SSID and con ig.SSID[key] hen
22 wi i.se mode(wi i.STATION);
23 wi i.s a.con ig(key,con ig.SSID[key])
24 wi i.s a.connec ()
25 p in ("Connec ing o " .. key .. " ...")
26 --con ig.SSID = nil -- can sa e memo y
27 m .ala m(1,2500,1, wi i_wai _ip)
28 end
29 end
30 else
31 p in ("E o ge ing AP lis ")
32 end
85
33 end
34
35 unc ion module.s a ()
36 p in ("Con igu ing Wi i ...")
37 wi i.se mode(wi i.STATION);
38 -- scan acces poin
39 wi i.s a.ge ap(wi i_s a )
40 end
41
42 e u n module
E.3. applica ion.lua
1local module ={}
2m=nil
3
4-- sends a simple ping o he b oke
5local unc ion send_ping()
6m:publish(con ig.ENDPOINT .. "ping","id=" .. con ig.ID,0,0)
7end
8
9-- sends my id o he b oke o egis a ion
10 local unc ion egis e _mysel ()
11 m:subsc ibe(con ig.ENDPOINT .. con ig.ID,0, unc ion(conn)
12 p in ("Success ully subsc ibed o da a endpoin ")
13 end)
14 end
15
16 local unc ion mq _s a ()
17 m=mq .Clien (con ig.ID, 120)
18 -- egis e message callback be o ehand
19 m:on("message", unc ion(conn, opic, da a)
20 i da a ~= nil hen
21 p in ( opic .. ": " .. da a)
86
22 -- do some hing, we ha e ecei ed a message
23 -- execu e_command(da a)
24 end
25 end)
26 -- connec o b oke
27 m:connec (con ig.HOST, con ig.PORT, 0,1, unc ion(con)
28 egis e _mysel ()
29 -- cnd hen pings each 1000 milliseconds
30 m .s op(6)
31 m .ala m(6,1000,1, send_ping)
32 end)
33 end
34
35 local unc ion ds18b20_s a ()
36 p in ("ds18b20_s a .... n ")
37 -- pin senso
38 --gpio0 = 3 --D3
39 gpio3 =nil -- de aul D9
40 gpio4 = 2 --D4
41
42 ds18b20.se up(gpio3)
43 add s =ds18b20.add s()
44 i (add s ~= nil) hen
45 p in ("To al DS18B20 senso s: ".. able.ge n(add s))
46 end
47 -- jus ead empe a u e
48 p in ("Tempe a u e: "..ds18b20. ead().."'C n")
49 p in ("Tempe a u e: "..ds18b20. ead(nil,ds18b20.K).."'K")
50 -- elease i a e use
51 ds18b20 =nil
52 ds18b20 =nil
53 package.loaded["ds18b20"]=nil
54 end
55
87
56 unc ion module.s a ()
57 ds18b20_s a ()
58 --mq _s a ()
59 end
60
61 e u n module
E.4. con ig.lua
1local module ={}
2
3-- wi is a ay
4module.SSID ={}
5module.SSID["MOVISTAR_*"]="pass"
6module.SSID["MOVISTAR_*"]="pass"
7module.SSID["O ange_*"]="pass"
8
9module.HOST =" es .mosqui o.o g"
10 module.PORT = 1883
11 -- opic
12 module.ENDPOINT ="nodemcu/"
13
14 e u n module
88