scieee Open visual document viewer

Sistema IoT para monitorización del estado de un centro de proceso de datos de grandes dimensiones

Ballesteros de Andrés, Carlos; Sypko, Denys

Abstract

Los Centros de Proceso de Datos (CPD) son grandes instalaciones con centenares de equipos de alto rendimiento funcionando de manera concurrente. El correcto control de parámetros como la temperatura, humedad o consumo energético se convierte en un aspecto clave para un funcionamiento correcto, eficiente y seguro. En este proyecto, se propone el despliegue de una infraestructura compuesta por un elevado número de sensores inalámbricos de bajo consumo y coste en distintos puntos de un CPD de grandes dimensiones siguiendo el paradigma IoT (Internet of Things), controlando y reportando periódicamente distintos parámetros como temperatura, humedad, consumo energético, presencia o humos entre otros. Dicha información será centralizada en un panel de control web que ofrezca una visión integral y en tiempo real del estado del CPD y, bajo ciertas circunstancias, tome de manera automática decisiones que aseguren el correcto funcionamiento del mismo cuando alguno de dichos parámetros supere los límites aceptables. Además, se demuestra la flexibilidad de la solución aplicando el entorno desarrollado a dos escenarios diferentes: la monitorización de una sala fría equipada con un elevado número de servidores; y la monitorización de un laboratorio científico en el ámbito de la Física de Materiales, donde el correcto control de la temperatura resulta clave para la corrección experimental y la seguridad durante el proceso.

Full text

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