scieee Open visual document viewer

Sistema IoT para el control y monitorización de un terrario con Eclipse Kura, Amazon AWS y Angular

Jiménez Casas, Juan

Abstract

Debido a la imparable digitalización que está aconteciendo en la actualidad, numerosos objetos y dispositivos que en el pasado no eran más que eso, se están viendo actualizados y conectados en una red formada por estos. Surge así el concepto de Internet of Things. Este concepto intenta proponer soluciones que hagan que la vida cotidiana de las personas sea mucho más sencilla, haciendo uso de la tecnología. Para ello, se le dota a los objetos de una conectividad que antes no tenían, abriendo paso a un conjunto de infinitas posibilidades, como la facilidad de realizar alguna acción o el análisis de datos para poder tomar mejores decisiones. Como consecuencia, numerosos dispositivos se están viendo conectados y surgen conceptos como las Smart Cities o la Domótica. Este trabajo viene a plantear una solución en este campo, haciendo uso de tecnologías de vanguardia, como el uso de Eclipse Kura como Gateway IoT1 en una Raspberry Pi. Además, se ponen en marcha servicios en la nube haciendo uso del conjunto de utilidades que proporciona Amazon AWS, como IoT Core, DynamoDB, Lambda y API Gateway, otorgando fiabilidad, seguridad y facilidad de uso al sistema. Para la presentación e interacción con estos sistemas a través de una interfaz web se hace uso de Angular.

Full text

–Equa ion Chap e 1 Sec ion 1 T abajo de Fin de G ado G ado en Ingenie ía de las Tecnologías de Telecomunicación Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Au o : Juan Jiménez Casas Tu o : Ma ía Te esa A iza Gómez Depa amen o de Ingenie ía Telemá ica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2019 2 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Índice de Figu as 3 T abajo de Fin de G ado G ado en Ingenie ía de Tecnologías de Telecomunicación Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Au o : Juan Jiménez Casas Tu o : Ma ía Te esa A iza Gómez P o eso i ula Depa amen o de Ingenie ía Telemá ica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2019 4 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula T abajo in de G ado: Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Au o : Juan Jiménez Casas Tu o : Ma ía Te esa A iza Gómez El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os: P esiden e: Vocales: Sec e a io: Acue dan o o ga le la cali icación de: Se illa, 2019 El Sec e a io del T ibunal Índice de Figu as 5 A mi amilia A mis amigos A mis maes os 6 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Índice de Figu as 7 Ag adecimien os Sin duda, el momen o más di ícil y a la ez más impo an e en la ealización de oda es a memo ia no es más que el que acon ece en es e apa ado. Es de especial impo ancia pa a mí el ac o de ag adece a odas las pe sonas que me han acompañado du an e es e camino. Po ello, y a pesa de odo, c eo que con es e apa ado nunca se á su icien e pa a ag adece odo lo que os debo. Ag adece , en p ime luga , a la u o a de es e p oyec o, Ma ía Te esa A iza Gómez, el iempo, la con ianza y empeño dedicado en ayuda a la ealización de es e abajo. Además, me gus a ía ag adece al es o de p o eso es que, en cualquie momen o de es os años, me han se ido como ayuda y han endido su mano pa a que odo es o sea más sencillo. Todo es o no hubiese sido posible sin oso os, mis pad es, mis he manos, mis abuelos, mi amilia. Muchas g acias, nunca pod é compensa os odo lo que hacéis po mí. Es e abajo ambién es igual de ues o que mío. G acias po con ia an o en mí y po guia me pa a se quien soy. Po enseña me día as día, po inculca me unos alo es. Po da lo odo, sin pedi nada a cambio. Os quie o. No puedo deja a ás a o o de mis pila es undamen ales, mi compañe a en odo es e camino, quien me ha apoyado día as día, ha aguan ado mis días malos y me ha ayudado a desconec a en odo el caos que han sido es os cua o años. Es e pá a o a po i. Po úl imo, pe o no po ello menos impo an e, me gus a ía hace un ag adecimien o a la casualidad, a la casualidad de encon a me unos compañe os, que pasa on a se amigos y hoy en día son amilia. Sin ellos, hoy en día no es a ía esc ibiendo es o y sin ellos no ol e ía a epe i . Desde ese p ime encuen o casual, las isas po no llo a , los días is es y los días elices, los consejos, los momen os i idos, los des a íos u os del ago amien o, los agobios y como no, las quejas. No hace al a que os nomb e, si ya leyendo es e pá a o os habéis sen ido iden i icados, signi ica que sois pa e de es a dedica o ia. Juan Jiménez Casas De Las Cabezas de San Juan a Se illa, 2019 8 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Resumen Debido a la impa able digi alización que es á acon eciendo en la ac ualidad, nume osos obje os y disposi i os que en el pasado no e an más que eso, se es án iendo ac ualizados y conec ados en una ed o mada po es os. Su ge así el concep o de In e ne o Things. Es e concep o in en a p opone soluciones que hagan que la ida co idiana de las pe sonas sea mucho más sencilla, haciendo uso de la ecnología. Pa a ello, se le do a a los obje os de una conec i idad que an es no enían, ab iendo paso a un conjun o de in ini as posibilidades, como la acilidad de ealiza alguna acción o el análisis de da os pa a pode oma mejo es decisiones. Como consecuencia, nume osos disposi i os se es án iendo conec ados y su gen concep os como las Sma Ci ies o la Domó ica. Es e abajo iene a plan ea una solución en es e campo, haciendo uso de ecnologías de angua dia, como el uso de Eclipse Ku a como Ga eway IoT 1 en una Raspbe y Pi. Además, se ponen en ma cha se icios en la nube haciendo uso del conjun o de u ilidades que p opo ciona Amazon AWS, como IoT Co e, DynamoDB, Lambda y API Ga eway, o o gando iabilidad, segu idad y acilidad de uso al sis ema. Pa a la p esen ación e in e acción con es os sis emas a a és de una in e az web se hace uso de Angula . 1 Un Ga eway IoT es un disposi i o ísico o un p og ama de so wa e que si e como pun o de conexión en e la nube y los con olado es, senso es y disposi i os in eligen es. Índice de Figu as 9 Abs ac Due o he uns oppable digi aliza ion ha is happening oday, se e al objec s and de ices ha in he pas we e no hing mo e han ha , a e being upda ed and connec ed in a ne wo k o med by hem. So, i a ises he concep o In e ne o Things. This concep ies o p opose solu ions ha make people's daily li e much simple and easie , making use o echnology. To do his, he objec s a e p o ided wi h a connec i i y ha hey did no ha e be o e, opening he way o a se o in ini e possibili ies, such as he ease o pe o ming some ac ion o he analysis o da a in o de o make be e decisions. As a esul , se e al de ices a e being connec ed and concep s such as Sma Ci ies o Home Au oma ion a ise. This wo k comes o p opose a solu ion in his ield, making use o cu ing-edge echnologies, such as he use o Eclipse Ku a as Ga eway IoT in a Raspbe y Pi. In addi ion, cloud se ices a e deployed using he se o u ili ies p o ided by Amazon AWS, such as IoT Co e, DynamoDB, Lambda and API Ga eway, p o iding eliabili y, secu i y and ease o use o he sys em. Angula is used o p esen and in e ac wi h hese sys ems h ough a web in e ace. 16 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 1.2 Obje i os El obje i o del T abajo es la implemen ación de un sis ema o mado po : • Senso es de empe a u a y humedad conec ados a una Raspbe y Pi, la cual con e i emos en un disposi i o IoT, haciendo uso de Eclipse Ku a. • En o no de Cloud Compu ing el cual ecibi á in o mación de un disposi i o IoT median e MQTT, almacena á dicha in o mación en una Base de Da os y la o ece á a a és de una API REST. • Aplicación web desa ollada en Angula con la que el usua io pueda ob ene in o mación de un de e minado e a io y pueda in e ac ua con es e. 1.3 An eceden es Los an eceden es de es e abajo co esponden a un p oyec o ealizado en la asigna u a Sis emas Ope a i os, la cual impa e la u o a de es e T abajo Fin de G ado, Ma ía Te esa A iza Gómez. Aquel p oyec o enía como uncionalidad la de con ola y moni o iza un e a io a pequeña escala, desde la e minal de la Raspbe y Pi y haciendo uso de los con enidos impa idos en aquella asigna u a, pa a ob ene la in o mación de los dis in os senso es. Como p opues a de mejo a a es e, se ha buscado el con e i la Raspbe y Pi en un disposi i o IoT, pa a en ia es a in o mación a la nube, con el in de p ocesa es a, almacena la en una base de da os y o ece la a a és de un se icio REST. Además, se ha desa ollado una aplicación Web que nos pe mi a accede a la in o mación de es e e a io, así como de más e a ios si uese necesa io, con el uso de es e se icio. 1.4 Desc ipción de la solución A con inuación, se desc ibe de mane a gene alizada la solución implemen ada, con el in de alcanza los obje i os p opues os. 1.4.1 Obje i os Especí icos • Ob ención y en ío de los da os de los senso es. Pa a ob ene la in o mación de humedad y empe a u a se han u ilizado senso es DHT11, de bajo cos e, pe o de g an u ilidad pa a ep esen a la oma de da os. Pa a la ob ención y en ío de la in o mación de es os, se ha u ilizado Eclipse Ku a, que se enca ga de ob ene la in o mación de los senso es y publica las en el IoT Co e de AWS, haciendo uso del p o ocolo MQTT. • Publicación de o ma segu a de in o mación en Amazon AWS. Pa a ello se han u ilizado ce i icados de cla e pública y p i ada, i mados po la p opia CA 3 aíz de Amazon. De es a o ma, cuando un disposi i o quie a publica o susc ibi se a la in o mación del IoT Co e de Amazon, debe á ene un ce i icado álido. • Almacenamien o y consul a de los da os. Se ha u ilizado una Base de Da os noSQL, llamada Amazon DynamoDB, donde se almacena la in o mación de cada uno de los es ados en los que es á un Obje o IoT. 3 Au o idad de ce i icación. In oducción 17 • C eación de un se icio se e less, basado en el p ocesamien o en la nube. Haciendo uso de las dis in as he amien as que p opo ciona Amazon Web Se ices, como son IoT Co e, DynamoDB, Lambda Func ion y API Ga eway; se ha implemen ado un se icio REST sin ene que implemen a de o ma local un se ido que o ezca de es os ecu sos pa a que luego, una aplicación Web consuma de es os. • Obje i os de disponibilidad, escalabilidad y e iciencia. Al hace uso de la compu ación en la nube, o o gamos a nues o sis ema de una obus ez, que, desa ollándolo en un se ido local, no pod íamos. Además, con he amien as como AWS Lambda, nues o se icio solo consume la capacidad de p ocesamien o que necesi a. Es o en conjunción con IoT Co e, le o o ga una g an capacidad de escalabilidad, po lo que nues o sis ema puede pasa de o ma au omá ica de escasas pe iciones a un g an núme o de es as. • P esen ación Pa a que nues o sis ema pueda se usable po cualquie usua io se hace uso de una aplicación Web. Es a es á desa ollada en Angula . Es e amewo k p opo ciona, en e o as, la capacidad de eca ga au omá ica del con enido que se es á mos ando en una página, así como la posibilidad de in e ac ua con una API REST de o ma sencilla, haciendo uso del p o ocolo HTTP. 1.4.2 Funcionalidades De ca a al usua io inal, el sis ema diseñado o ece las siguien es uncionalidades: • Consul a de los dis in os e a ios que hay disponibles pa a consul a . • Ob ención de in o mación de humedad y empe a u a de cada uno de los e a ios. • Modi icación del nomb e de un e a io, así como de su desc ipción. • Acceso al his ó ico de humedad y empe a u a de un e a io. • In e acción con el sis ema IoT, pudiendo ac i a o desac i a posibles uncionalidades de es e, como se ían un adiado o una bombilla. 18 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 1.4.3 Esquema de la a qui ec u a A con inuación, se mues a la a qui ec u a de la solución adop ada: Figu a 1: Esquema de la a qui ec u a GPIO MQTT Reglas IoT NoSQL HTTP E en os REST Usua io TERRARIO In oducción 19 Como podemos obse a en la Figu a 1: Esquema de la a qui ec u a, en el escena io o mado, un e a io a con ola y moni o iza es a ía compues o po un senso DHT11 y una Raspbe y Pi. Es a Raspbe y Pi end ía ins alado Eclipse Ku a, que se ía el enca gado de ob ene la in o mación que los senso es DHT11 en ían a la Raspbe y Pi, median e los pines GPIO. Una ez iene es a in o mación, haciendo uso del p o ocolo MQTT, publica á en un opic MQTT p opo cionado po el IoT Co e de Amazon AWS. De es a o ma, la Raspbe y Pi se con ie e en un disposi i o IoT. De igual mane a, se susc ibi á a o o opic pa a ecibi in o mación del IoT Co e, en iándosela pos e io men e a la Raspbe y Pi. El en o no de Cloud Compu ing de AWS end ía dos pun os de en ada y salida de in o mación. Uno se ía el IoT Co e, que median e el p o ocolo MQTT se comunica ía con Eclipse Ku a y la Raspbe y Pi. El o o se ía la API REST que p opo cionamos haciendo uso del se icio API Ga eway, pa a la comunicación con el usua io, a a és de una Aplicación Web Angula . In e namen e, en AWS u ilizamos 4 se icios: • IoT Co e: median e el cual ecibimos/en iamos in o mación pe enecien e a los Disposi i os IoT, haciendo uso de MQTT. • API Ga eway: p opo ciona una URL a la que pod emos hace pe iciones HTTP, pa a accede a los ecu sos de Amazon AWS. P opo ciona ía un se icio REST. • DynamoDB: p opo ciona una Base de Da os donde almacena emos el his ó ico de humedades y empe a u as que ha enido un Disposi i o IoT. • Lambda Func ions: unciones ejecu adas cuando se p oduce un e en o o se ac i a una Regla IoT. Son el pun o de in e conexión en e los dis in os se icios de AWS. Pa icula men e: • Almacena á la in o mación en DynamoDB, cuando se p oduzcan e en os p oceden es de la API Ga eway de esc i u a de in o mación (mé odo POST de HTTP) o cuando se ac ualice el es ado de un Disposi i o IoT en el IoT Co e. • P opo ciona á la in o mación almacenada en DynamoDB cuando un e en o p oceden e de API Ga eway se lo solici e median e un mé odo GET de HTTP. En su conjun o, se o ma un sis ema in e conec ado de ex emo a ex emo, que hace uso de di e en es p o ocolos, como MQTT o HTTP en cada uno de sus pun os de in e conexión. Como esul ado, se p opo ciona la moni o ización y con ol de un e a io. 1.5 Es uc u a de la memo ia Con el in de acili a la lec u a del documen o, se p opo ciona en es e apa ado un esumen de cada capí ulo: 1. In oducción: P esen ación del p oblema, el con ex o que lo in oluc a y la solución adop ada. 2. Recu sos u ilizados: Recu sos ha dwa e y so wa e u ilizados pa a la lec u a de la in o mación, despliegue de las dis in as ecnologías empleadas (bases de da os, aplicación web, se icios en la nube) así como pa a implemen a los senso es y su comunicación con el sis ema. 3. Tecnologías u ilizadas: Resumen de las p incipales ecnologías u ilizadas pa a la implemen ación. 4. Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a: Análisis y Ca ac e ís icas de la implemen ación en la Raspbe y Pi, así como la publicación de la in o mación en la nube de Amazon. 20 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 5. Aplicación desa ollada: Nube Amazon AWS: Es uc u a y análisis de la implemen ación en Amazon AWS (IoT Co e, DynamoDB, Lambda, API Ga eway). 6. Aplicación desa ollada: In e az web Angula : Es uc u a y análisis de la aplicación web desa ollada en Angula , así como la ob ención de la in o mación de la API REST de AWS. 7. Conclusiones y líneas u u as: Ideas y ca ac e ís icas que pod ían implemen a se pa a mejo a el sis ema en p óximas e siones de es e. Además de los capí ulos mencionados, se p opo ciona una se ie de Anexos que pe mi i án implemen a el Sis ema paso a paso: • Anexo A: Ins alación de Senso es DHT11 y Leds en Raspbe y Pi. • Anexo B: Ins alación y con igu ación de Eclipse Ku a en Raspbe y Pi. • Anexo C: C eación de usua ios y con igu ación de se icios en AWS. • Anexo D: Despliegue del sis ema. Recu sos u ilizados 21 2 RECURSOS UTILIZADOS con inuación se exponen los ecu sos u ilizados pa a lle a a cabo la implemen ación. Se de alla án las ca ac e ís icas más ele an es de cada uno de ellos. 2.1 Recu sos Ha dwa e 2.1.1 MacBook P o El o denado en el que se ha desa ollado odo el código necesa io pa a que uncione el abajo ha sido un MacBook P o-Re ina de 13 pulgadas, de p incipios de 2015. En e sus especi icaciones encon amos: • P ocesado In el Co e i5 a 2,7 GHz. • 16 GB de memo ia RAM DDR3 a 1867 MHz. • G á icos In el I is G aphics 6100. • 128 GB de almacenamien o SSD. Figu a 2: MacBook P o de 13 pulgadas modelo 2015. A The pessimis sees di icul y in e e y oppo uni y. The op imis sees he oppo uni y in e e y di icul y. - Wins on Chu chill - 22 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 2.1.2 Raspbe y Pi Model 3B+ Es e es el núcleo de p ocesamien o y comunicación IoT. En es a se conec a án los senso es de los que se ob end á la in o mación, los leds pa a indica que se es á ac uando en base a las decisiones omadas. También se á el disposi i o enca gado de publica y susc ibi se en la nube pa a el in e cambio de in o mación. Po lo an o, cumple las unciones de Ga eway IoT. Figu a 3: Raspbe y Pi Model 3B+ Especi icaciones [1]: • SoC: B oadcom BCM2837B0 quad-co e A53 (ARM 8) 64-bi @ 1.4GHz • GPU: B oadcom Videoco e-IV • RAM: 1GB LPDDR2 SDRAM • Ta je a de ed: Gigabi E he ne ( ia USB channel), 2.4GHz and 5GHz 802.11b/g/n/ac Wi-Fi • Blue oo h: Blue oo h 4.2, Blue oo h Low Ene gy (BLE) • S o age: Mic o-SD • GPIO: 40-pin GPIO heade , popula ed • Pue os: HDMI, 3.5mm analogue audio- ideo jack, 4x USB 2.0, E he ne , Came a Se ial In e ace (CSI), Display Se ial In e ace (DSI) 2.1.3 Senso de humedad y empe a u a DHT11 Senso de humedad y empe a u a de bajo cos e, muy ú il pa a expe imen os y usos donde se necesi an g an can idad de medidas. La e sión u ilizada de es e es la que con iene 3 pines de conexión con los pue os GPIO de la Raspbe y Pi. Los alo es que es capaz de cap a son los siguien es [2]:. El implemen ado es el que se mues a en la Figu a 4: Senso DHT11. • Humedad: 20-80% (5% p ecisión) • Tempe a u a: 0-50°C (±2°C p ecisión) Recu sos u ilizados 23 Figu a 4: Senso DHT11 2.1.4 LEDs Pa a emi i señales luminosas simulando la ac uación sob e cada uno de los posibles elemen os con los que in e ac ua . Los leds son de dis in os colo es, conec ándose es os a la Raspbe y Pi a a és de una placa de p uebas. Se mues an en la Figu a 5: LED Figu a 5: LED 2.2 Recu sos So wa e 2.2.1 Sis ema Ope a i o MacOs Moja e Es e P oyec o se ha desa ollado sob e MacOs Moja e e sión 10.14.6, como sis ema ope a i o pa a los dis in os ecu sos so wa e que han sido necesa ios pa a el desa ollo de la aplicación. 2.2.2 Na egado Web Google Ch ome Se ha u ilizado el na egado de Google pa a la in e acción con las dis in as in e aces web, así como la depu ación y desa ollo de la aplicación web. Figu a 4: Google Ch ome 24 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 2.2.3 Eclipse IDE Pa a el desa ollo de los bundles que u iliza á Eclipse Ku a se ha u ilizado el en o no de desa ollo que p opo ciona Eclipse pa a Eclipse Ku a. [3] Figu a 5: Eclipse 2.2.4 Pos man Es un en o no de desa ollo de API. Ha sido de g an u ilidad pa a desa olla la API REST, así como e i ica la publicación/susc ipción a los di e en es emas MQTT. Figu a 6: Pos man 2.2.5 S ackBli z y Sublime Tex 3 Se han u ilizado ambos edi o es de ex o pa a la codi icación. Sublime Tex 3 se ha u ilizado pa a desa olla los con olado es de los dis in os senso es. Cabe des aca que S ackBli z ha sido de g an u ilidad pa a el desa ollo de la aplicación Web en Angula , ya que pe mi ía la codi icación del código online, gua dando au omá icamen e y un con ol de e siones en Gi Hub de o ma sencilla. Además, pe mi i á el despliegue de la aplicación Web median e un na egado web in eg ado. Figu a 6: S ackBli z y Sublime Tex 3 Recu sos u ilizados 25 2.2.6 VNC Pe mi e u iliza de o ma emo a la Raspbe y Pi. Se accede a es a indicando la di ección IP que iene asignada e iniciando sesión con el nomb e de usua io y con aseña que hayamos con igu ado. Figu a 7: VNC 32 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 3.3 Angula Angula es un amewo k 7 pa a aplicaciones web desa ollado en TypeSc ip [22], de código abie o, man enido po Google, que se u iliza pa a c ea y man ene aplicaciones web de una sola página (SPA). Su obje i o es aumen a las aplicaciones basadas en na egado con capacidad de Modelo Vis a Con olado (MVC) 8 , en un es ue zo pa a hace que el desa ollo y las p uebas sean más áciles. Figu a 14: Aplicaciones web de una sola página Una aplicación web SPA c eada con Angula es una web de una sola página, en la cual la na egación en e secciones y páginas de la aplicación, así como la ca ga de da os, se ealiza de mane a dinámica, casi ins an ánea, asínc onamen e haciendo llamadas al se ido (backend con un API REST) y sob e odo sin e esca la página en ningún momen o. Angula se basa en clases ipo "Componen es. s", cuyas p opiedades son las usadas pa a hace el binding 9 de los da os. En dichas clases enemos p opiedades ( a iables) y mé odos ( unciones a llama ). Angula es la e olución de Angula JS [23] aunque incompa ible con su p edeceso . Figu a 15: A qui ec u a Angula 7 Un amewo k es una es uc u a concep ual y ecnológica de asis encia de inida, no malmen e, con a e ac os o módulos conc e os de so wa e, como lib e ías, que puede se i de base pa a la o ganización y desa ollo del so wa e. 8 Modelo- is a-con olado (MVC) es un pa ón de a qui ec u a de so wa e, que sepa a los da os y la lógica de negocio de una aplicación de su ep esen ación y el módulo enca gado de ges iona los e en os y las comunicaciones. 9 Binding: Enlazado o unión de a iables. Tecnologías u ilizadas 33 A con inuación, se explica á la a qui ec u a que iene una aplicación en Angula . Pa a que sea más isual la a qui ec u a que que emos explica , cada uno de los apa ados que se mues an a con inuación hacen e e encia a los mos ados en la Figu a 15: A qui ec u a Angula . 3.3.1 Módulos El bloque básico pa a cons ui una aplicación en Angula son los NgModules, es os p opo cionan una compilación de los dis in os componen es, eniendo en cuen a el con ex o y haciendo uso de los módulos que necesi e. Se á necesa io un módulo oo , el cual nos pe mi i á indica el es o de los módulos de los que que emos hace uso pa a lanza la aplicación. Es e se llama po con ención AppModule. Es o ayuda a o ganiza el código en módulos uncionales, de o ma que la adminis ación del desa ollo en aplicaciones complejas sea más sencilla. 3.3.2 Componen es Cada aplicación en Angula iene, al menos, un componen e: el componen e oo . Es e se enca ga de conec a los dis in os componen es con el con enido que se ans ie e a la página Web, conocido como documen objec model (DOM). Cada componen e de ine una clase que con iene los da os de la aplicación y la lógica de es a. Es a clase es asociada con una plan illa HTML, que de ine la is a en la que se a a mos a . Pa a iden i ica una clase como componen e se u iliza el deco a o 10 @Componen (). Es e iden i ica a la clase en la que se esc ibe como un componen e y le asocia un me ada o especí ico que lo iden i ica como clase. 3.3.3 Plan illas, di ec i as y enlace de da os Las plan illas combinan HTML con ma cado en Angula pa a que los elemen os HTML puedan se modi icados an es de se mos ados. Las di ec i as de las plan illas p opo cionan al p og ama la lógica y el ma cado pa a el enlazado que conec a los da os de la aplicación con el DOM. Hay dos ipos de enlazado de da os: • E en binding: deja a u aplicación esponde a una en ada de in o mación po pa e del usua io, ac ualizando los da os de la aplicación. • P ope y binding: deja in e pola los alo es que han sido ob enidos desde los da os de la aplicación al HTML. An es de que una is a sea p esen ada, Angula e alúa las di ec i as y esuel e el enlazado, haciendo uso de las plan illas, pa a modi ica los elemen os HTML o el DOM, de acue do con la lógica del p og ama. 3.3.4 Se icios e inyección de dependencias Pa a los da os o la lógica que no es á asociada con una is a especí ica y se quie e compa i con los dis in os componen es, se c ean clases de Se icios. Pa a la de inición de una clase Se icio, se debe acompaña del deco a o @Injec able (). Es e p opo ciona los me ada os pa a que o os componen es puedan inyec a es as dependencias en sus clases. La inyección de dependencias e pe mi e que us clases sean limpias y e icien es, ya que no ob ienen la in o mación di ec amen e del se ido , sino que delega es o a los se icios, que inyec an lo ob enido. 10 Un deco a o es una unción que modi ica las clases de Ja aSc ip . Angula iene de inidos una se ie de deco a o s que asocia me ada os especí icos a las clases. De es a o ma, el sis ema sabe qué clases son y cómo deben unciona . 34 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 3.3.5 Rou ing El NgModule Rou e de Angula p opo ciona un se icio que e deja de ini una u a de na egación pa a los di e en es es ados y is as de la aplicación. De es a o ma podemos accede a cada una de las is as de la aplicación haciendo uso de la URL en la ba a de na egación del buscado o asociando bo ones de las is as a u as. Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a 35 4 APLICACIÓN DESARROLLADA: RASPBERRY PI Y ECLIPSE KURA a a qui ec u a del sis ema diseñado, cons a de es bloques di e enciados. La implemen ación en la Raspbe y Pi, la pa e en la nube de Amazon y la aplicación Web. En es e capí ulo se p o undiza en la implemen ación que in oluc a la Raspbe y Pi, así como su in eg ación con Eclipse Ku a. 4.1 Lec u a de in o mación de los senso es en la Raspbe y Pi Los senso es DHT11, se comunican median e comunicación se ie a a és de los pines GPIO de la Raspbe y Pi. Es os es a án conec ados a es a al y como se indica en el Anexo A: Ins alación de Senso es DHT11 y Leds en Raspbe y Pi. A a és de es os se puede ob ene la in o mación de empe a u a y humedad. Pa a ello, necesi an hace uso de una lib e ía de Py hon, llamada Ada ui . Es a se enca ga de con e i la in o mación ecibida median e comunicación se ie a un alo de empe a u a y humedad álido. Pa a la implemen ación de es a, se ha u ilizado Py hon 3. El código que es capaz de suminis a es a in o mación se co esponde con el iche o Ada ui DHT.py. Es e código iene incluido como un enlace, en el paque e que ienen los senso es. Pa a desca ga es e se puede accede a la Web p opo cionada como e e encia [2]. Pa a ejecu a lo enemos que ejecu a el comando que emos a con inuación y pasa le como pa áme os el ipo de senso DHT que es, que en nues o caso es 11 y el pin GPIO al que es á conec ado, que en nues o caso es el 20. $ py hon Ada ui DHT.py 11 20 La in o mación ob enida de es a lec u a se á esc i a en el iche o empe a u a.log donde se almacena á el his ó ico de empe a u a y humedades. El bundle de Eclipse Ku a accede á a es e y ob end á la in o mación de los senso es. L I ha e no ailed. I´ e jus ound 10,000 ways ha won´ wo k. - Thomas A. Edison - 36 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 4.2 Publicación y susc ipción de la in o mación IoT Co e de Amazon AWS. Se icio CloudSe ice. Pa a la comunicación con el se icio IoT que p opo ciona Amazon AWS, u iliza emos el p o ocolo MQTT. Publica emos y nos susc ibi emos a los opics que el IoT Co e nos p opo ciona pa a la in e acción con las somb as. Los opics se en en el capí ulo 5.1.1 In e acción con el Obje o: Thing Shadow. Eclipse Ku a p opo ciona un se icio pa a ello, CloudSe ice [24]. Es e nos p opo ciona á los se icios que podemos e en la Figu a 16: CloudSe ice. Figu a 16: CloudSe ice Pa a nues o sis ema, han sido de u ilidad los se icios: • CloudPublishe : Pe mi e a las aplicaciones publica en una pla a o ma cloud. • CloudSusc ibe : Pe mi e a las aplicaciones susc ibi se a una pla a o ma cloud. Pa a que odo uncione, es necesa io es ablece conexión con un CloudEnpoin . En nues o caso se á el p opo cionado po Amazon AWS. En el apa ado Con igu ación pa a la compa ibilidad con AWS, del Anexo B: Ins alación y con igu ación de Eclipse Ku a en Raspbe y Pi, se mues a cómo c ea un CloudSe ice, asociándole un CloudEndpoin [25]. Una ez se ha c eado el CloudSe ice, podemos modi ica median e la in e az Web de Eclipse Ku a pa áme os de es e en el apa ado MQTTDa aT anspo de Cloud Connec ions, en nues o caso, asignamos los que se pueden e en la Figu a 17: MQTTDa aT anspo . Son los siguien es: Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a 37 • B oke -u l: CloudEndpoin p opo cionado po Amazon AWS. • Accoun -Name: Pa a una conexión con Amazon AWS. En nues o caso lo llama emos aws. • Clien -id: Opcional, en nues o caso le hemos pues o hings. Lo u iliza emos pa a es ablece la u a en la que publica /susc ibi nos. • Topic: Topic en el que que emos publica . En nues o caso se á $#accoun -name/#clien -id. El "#" lo elaciona con los pa áme os (accoun -name, clien -id) mencionados an e io men e. Con es a con igu ación, los publicado es/susc ip o es lo ha án en los opics del CloudEndpoin indicado en el campo B oke -u l. Además, lo ha án con la u a $aws/ hings g acias a la in o mación del campo Topic. Figu a 17: MQTTDa aT anspo 4.2.1 CloudPublishe Pa a publica la in o mación en un opic de Amazon AWS, c ea emos un se icio CloudPublishe . Pa a c ea uno, lo hemos ealizado al y como se indica en el u o ial de Eclipse Ku a [25]. Pa iendo de que ya hemos c eado el CloudSe ice, como se indica en el Anexo B: Ins alación y con igu ación de Eclipse Ku a en Raspbe y Pi. Debemos i al menú que apa ece en la pa e izquie da de la in e az Web de Eclipse Ku a. En es e seleccionamos Cloud Connec ions. Hacemos click sob e el CloudSe ice que enemos c eado. P esionamos sob e el bo ón que indica New Pub/Sub. Le asignamos el PID (nomb e) que que amos y elegimos que que emos un Publishe . A con inuación, se nos mos a á el desplegable de con igu ación que se mues a en la Figu a 18: CloudPublishe . 38 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 18: CloudPublishe Lo des acable de la con igu ación, que podemos e en la Figu a 18: CloudPublishe es que le hemos indicado en el campo Applica ion Id, la u a pa a hace e e encia a la somb a de un obje o, en es e caso ku a-ga eway/shadow. En el campo Applica ion Topic, le hemos asignado upda e, ya que cuando publicamos, lo que que emos es ac ualiza una somb a. Po lo an o, la u a del opic en el que amos a publica es: $aws/ hings/ku a-ga eway/shadow/upda e En el apa ado 5.1.1 In e acción con el Obje o: Thing Shadow e emos que se co esponde con la u a que nos p opo ciona IoT Co e de AWS pa a ac ualiza el es ado de una somb a median e MQTT. 4.2.2 CloudSusc ibe La in o mación y con igu ación en el CloudSusc ibe es análoga a la del CloudPublishe . Po lo que pa a c ea un CloudSusc ibe , lo podemos hace como se ha indicado en el apa ado 4.2.1 CloudPublishe , pe o indicando que que emos un CloudSusc ibe en luga de un CloudPublishe . Lo des acable de es e es la u a del opic a la que nos amos a susc ibi , que es: $aws/ hings/ku a-ga eway/shadow/upda e/accep ed Es a es la u a en la que se publica el es ado de una Somb a una ez se ha ac ualizado. Pa a pode e la in o mación que ecibimos de es e, lo amos a enlaza con el se icio Logge que p opo ciona Eclipse Ku a. Es e se icio nos esc ibi á en el iche o / a /log/ku a.log oda la in o mación que ecibamos. Pa a ealiza el enlazado, se puede hace median e la in e az Web de Eclipse Ku a. Se hace de mane a g á ica, al y como se puede e en la Figu a 19: Ku a Wi es. Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a 39 Se deben selecciona de la columna Wi e Componen s los componen es que que emos enlaza , en es e caso Susc ibe y Logge . Con el uso del a ón se conec an ambos componen es. Figu a 19: Ku a Wi es De es a o ma, si mos amos el con enido del iche o / a /log/ku a.log ob enemos la in o mación ecibida del opic al que nos hemos susc i o. Es o se mues a en la Figu a 20: Fiche o / a /log/ku a.log. Figu a 20: Fiche o / a /log/ku a.log 4.3 Bundle implemen ado en Eclipse Ku a: Hea e Como ya se comen ó en la sección 3.1.1.1 Bundles, los bundles son unos JAR y un mani ies o. Pa a implemen a es os bundles, es necesa io u iliza Eclipse como en o no de desa ollo [26]. Pa a desa olla nues os bundles se han u ilizado los ejemplos que apa ecen en es a documen ación. La clase que se enca ga de ob ene la in o mación de los senso es y de implemen a los mé odos necesa ios pa a el uncionamien o de cada uno de los se icios que u iliza y expo a es la clase Hea e .ja a. 40 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula A con inuación, se an a de alla los iche os de me ada os del bundle, los se icios que es a usa y su uncionamien o. 4.3.1 Fiche os de me ada os P opo ciona án in o mación ace ca de nues o bundle. Es os iche os son: MANIFEST.MF y componen .xml 4.3.1.1 MANIFEST.MF El iche o MANIFEST.MF de nues o p oyec o es el siguien e: Mani es -Ve sion: 1.0 Bundle-Mani es Ve sion: 2 Bundle-Name: o g.eclipse.ku a.demo.hea e Bundle-SymbolicName: o g.eclipse.ku a.demo.hea e ;single on:= ue Bundle-Ve sion: 1.0.600.quali ie Bundle-Vendo : Eclipse Ku a Bundle-Requi edExecu ionEn i onmen : Ja aSE-1.8 Se ice-Componen : OSGI-INF/*.xml Bundle-Ac i a ionPolicy: lazy Impo -Package: o g.eclipse.ku a.cloud; e sion="[1.0,2.0)", o g.eclipse.ku a.cloudconnec ion.lis ene ; e sion="[1.0,2.0)", o g.eclipse.ku a.cloudconnec ion.message; e sion="[1.0,2.0)", o g.eclipse.ku a.cloudconnec ion.publishe ; e sion="[1.0,2.0)", o g.eclipse.ku a.con igu a ion; e sion="[1.0,2.0)", o g.eclipse.ku a.message; e sion="[1.0,2.0)", o g.osgi.se ice.componen ; e sion="1.2.0", o g.sl 4j; e sion="1.6.4" Con la cabece a Mani es -Ve sion indicamos la e sión de la especi icación pa a iche os mani ies o que sigue el iche o. En es e caso la 1.0. El es o de las cabece as que comienzan po Bundle- nos especi ican ca ac e ís icas de OSGi. Las más des acadas son: • Bundle-Name: Especi ica el nomb e del bundle. • Bundle-SymbolicName: Especi ica el nomb e del paque e que iden i ica al bundle. • Bundle-Ve sion: Especi ica la e sión del bundle. • Bundle-Requi edExecu ionEn i onmen : Especi ica la e sión de Ja a con la que se ejecu a. Con la cabece a Se ice-Componen : especi icamos la u a local al p oyec o donde se si úa un iche o de de inición del componen e componen .xml. Median e la cabece a Impo -Package indicamos las dependencias necesa ias del wo kspace de Ku a pa a el uncionamien o de nues o Bundle. 4.3.1.2 componen .xml Es e iche o nos pe mi e indica cual es la clase p incipal del bundle, los se icios que implemen a, expo a y u iliza. En nues o p oyec o es el siguien e: Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a 41 <?xml e sion="1.0" encoding="UTF-8"?> <sc :componen xmlns:sc ="h p://www.osgi.o g/xmlns/sc / 1.2.0" name="o g.eclipse.ku a.demo.hea e .Hea e " ac i a e="ac i a e" deac i a e="deac i a e" modi ied="upda ed" enabled=" ue" immedia e=" ue" con igu a ion-policy=" equi e"> <implemen a ion class="o g.eclipse.ku a.demo.hea e .Hea e "/> <p ope y name="se ice.pid" ype="S ing" alue="o g.eclipse.ku a.demo.hea e .Hea e "/> <se ice> <p o ide in e ace="o g.eclipse.ku a.con igu a ion.Con igu ableComponen "/> </se ice> < e e ence name="CloudPublishe " policy="dynamic" bind="se CloudPublishe " unbind="unse CloudPublishe " ca dinali y="0..1" in e ace="o g.eclipse.ku a.cloudconnec ion.publishe .CloudPublishe "/ > </sc :componen > El elemen o aiz es sc :componen . Median e el elemen o implemen a ion indicamos que clase es nues a clase componen e. Es a clase que se enca ga de implemen a los mé odos ac i a e y deac i a e pa a a anca y pa a el bundle. Es e además con iene un elemen o se ice po cada se icio que implemen a y expo a. Con iene un elemen o e e ence po cada se icio que u iliza. En es e caso implemen a y expo a Con igu ableComponen y u iliza el se icio CloudPublishe . En cada elemen o se ice, indicamos median e el elemen o p o ide cuál es la in e az del se icio que se implemen a. En nues o caso: o g.eclipse.ku a.con igu a ion.Con igu ableComponen . En cada elemen o e e ence, indicamos median e el a ibu o: • name: El nomb e del se icio. • policy: Polí ica asociada. • bind: Mé odo llamado pa a ob ene la e e encia del se icio. • unbind: Mé odo llamado pa a elimina la e e encia del se icio. Po lo an o, la clase Hea e debe: • Implemen a la in e az Con igu ableComponen . • Implemen a los mé odos ac i a e, deac i a e y upda e. • Implemen a los mé odos se CloudPublishe y unse CloudPublishe . 48 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 25: Ku a Wi es El con enido del sc ip es el siguien e: a eco d = inpu . eco ds[0] //Se ob iene la in o mación del Susc ibe o ( a p op in eco d) { // Se i e a en el con enido ecibido i ( eco d[p op].ge Type()==BOOLEAN){ //Se busca el campo con in o mación booleana logge .in o('{}: {}', p op, eco d[p op]) a coun e Reco d = newWi eReco d() //Flujo de salida coun e Reco d.LED = eco d[p op] // Se asigna el alo al Led ou pu .add(coun e Reco d) //Se inse a el alo en el lujo de salida } } De es a o ma, se consigue encende /apaga el LED conec ado al pin GPIO 21 cuando se eciba in o mación de con ol (boolean) en el opic al que es á susc i o el CloudSusc ibe . En las igu as: Figu a 26: Con ol enciende LED, Figu a 27: Con ol apaga LED, se e leja el mensaje MQTT que p oduce es e cambio. Aplicación desa ollada: Raspbe y Pi y Eclipse Ku a 49 Figu a 26: Con ol enciende LED Figu a 27: Con ol apaga LED 50 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 5 APLICACIÓN DESARROLLADA: CLOUD COMPUTING EN AMAZON AWS an can idad del desa ollo ealizado en es e abajo es á di ec amen e implemen ado sob e los se icios que p opo ciona el en o no de Amazon Cloud Compu ing. En es e capí ulo se analiza cómo se ha conseguido desa olla en es e en o no conc e o an o el conexionado de los se icios que o ece, como el código que lo hace posible. En el Anexo C: C eación de usua ios y con igu ación de se icios en AWS, se mues a la in o mación necesa ia pa a egis a nos en AWS, así como los pasos necesa ios pa a c ea cada uno de los se icios u ilizados. 5.1 IoT Co e: Pue a de acceso al Cloud Compu ing pa a un Ga eway IoT. Nues o sis ema es á pensado pa a que pueda se usado an o po un único e a io, como po múl iples e a ios que pod ían llega a ag upa se en iendas. Pa a simplicidad y acilidad, se a a supone que un e a io con iene una Raspbe yPi, jun o con los senso es necesa ios pa a ob ene la in o mación. Así es como se mues a en la Figu a 1: Esquema de la a qui ec u a. Es po es o po lo que es de i al impo ancia sepa a la in o mación de cada e a io. Del mismo modo, es necesa io que cada e a io enga una iden idad y que es o le pe mi a maneja su in o mación de mane a segu a, es deci , que nadie que no enga pe misos pa a accede a la in o mación de es e pueda en ia u ob ene in o mación ela i a a él. Pa a ello se hace uso del componen e Regis o que p opo ciona IoT Co e. Cada e a io se c ea á en el sis ema como un "Obje o" en el egis o de "Obje os". Pa a más in o mación de cómo egis a un obje o en IoT Co e, consul a el apa ado 7.4 IoT Co e del Anexo C: C eación de usua ios y con igu ación de se icios en AWS. Como podemos obse a , hemos c eado un Obje o denominado "ku a-ga eway" co espondien e a una Raspbe y Pi con Eclipse Ku a ins alado. Pa a cada obje o, en su c eación se c ea y se ac i a un ce i icado, del cual podemos ob ene su cla e p i ada. Es o se mues a en la Figu a 28: Ce i icado asociado a un obje o. G I you business is no on he In e ne , hen you business will be ou o business. - Bill Ga es - Aplicación desa ollada: Cloud Compu ing en Amazon AWS 51 Figu a 28: Ce i icado asociado a un obje o Con es e ce i icado, el Obje o adquie e una Iden idad, que u iliza el componen e Se icio de segu idad e iden idad pa a que la Raspbe y Pi pueda conec a se a la nube y accede a la in o mación en su nomb e. La uncionalidad del se icio de segu idad e iden idad es la que se de alla en el apa ado 3.2.1 AWS IoT Co e A es e ce i icado se le an a asocia unas Polí icas pe sonalizadas, que nos an a pe mi i es ingi el núme o de Raspbe y Pi que pueden publica en un Obje o. Pa a su simplicidad, se end á en cuen a la conside ación ealizada an e io men e y a cada obje o asigna emos una Raspbe y Pi. 52 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 29: Polí ica asociada a un ce i icado Como emos en la Figu a 29: Polí ica asociada a un ce i icado, el documen o de una polí ica se esc ibe en o ma o JSON, y su obje o S a emen con iene una se ie de eglas en las que se especi ica si se pe mi e o no (E ec ) una ope ación (Ac ion) sob e un ecu so (Resou ce) [30]. Si quisié amos asigna una es icción de los disposi i os que se pueden conec a bas a ía con cambia a " Resou ce" : " opic_publicación_eclipse_ku a 12 " 5.1.1 In e acción con el Obje o: Thing Shadow Pa a cada obje o se c ea una Somb a de es e, haciendo uso del componen e Somb a del Disposi i o, que no es más que un documen o JSON que nos indica el es ado de un obje o. 12 opic_publicacion_eclipse_ku a: Ru a del opic MQTT en el que se quie a publica /susc ibi . Aplicación desa ollada: Cloud Compu ing en Amazon AWS 53 Figu a 30: Somb a de un Obje o Como podemos e en la Figu a 30: Somb a de un Obje o, cada Somb a puede ene a ios es ados, con in o mación ela i a a es e. • El es ado desi ed co esponde a una in o mación de es ado deseado. En es e campo es donde se modi ica á y almacena á la in o mación p oceden e de la aplicación Web pa a con ola cada uno de los e a ios. • El es ado epo ed co esponde a una in o mación de es ado epo ado. En es e campo es donde se modi ica á y almacena á la in o mación p oceden e del Disposi i o Ku a, ya que con end á la in o mación epo ada po cada uno de los senso es. • El es ado del a co esponde a una in o mación de es ado a ian e. En es e campo se incluye la in o mación que se ha modi icado en la úl ima ac ualización de una Somb a. Es de g an u ilidad pa a comp oba que odo unciona según lo espe ado y no se ha p oducido ningún e o . Pa a pode in e ac ua con los dis in os obje os c eados u iliza emos el componen e Se icio De ice Shadow. La uncionalidad de es e se indica en el apa ado 3.2.1 AWS IoT Co e. Es e componen e nos p opo ciona la posibilidad de ac ualiza y ob ene in o mación de una Somb a median e: 1. Un pun o de enlace a una API REST [31]: Es a API es la que u iliza emos pa a ac ualiza la in o mación de la somb a desde la aplicación Web. Los mé odos que p opo ciona son: GET, UPDATE y DELETE. 2. Un ema MQTT pa a ac ualiza , ob ene o elimina la in o mación de es ado de una Somb a [32]: En los emas MQTT que podemos e en la Figu a 31: Se icio De ice Shadow, nos susc ibi emos y publica emos la in o mación ob enida p oceden e/des inada a la Raspbe y Pi. 54 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 31: Se icio De ice Shadow 5.1.2 Reglas Las eglas son una pa e undamen al pa a la in e conexión en e los dis in os se icios que p opo ciona AWS. Es as son acciones que ealiza cuando se p oduce un e en o dado, ya sea un mensaje ecibido/en iado po un obje o o ac ualiza la somb a de es e. Es as eglas necesi an sabe el o igen de los mensajes, y los a ibu os que se quie en de es e. Pa a acili a su uso, es as consul as se ealizan en lenguaje SQL: SELECT <A ibu e> FROM <Topic Fil e > WHERE <Condi ion> En la Figu a 32: Acciones AWS, se mues an las di e en es acciones que se pueden hace desde el IoT Co e. Aplicación desa ollada: Cloud Compu ing en Amazon AWS 55 Figu a 32: Acciones AWS Pa a el desa ollo de nues a pla a o ma, han sido de g an u ilidad las eglas de Inse a un mensaje en una abla de DynamoDB, así como In oca a una unción Lambda pa a pasa los da os del mensaje. El uncionamien o de es as se de alla á en los apa ados a con inuación. Pa a el desa ollo de nues a aplicación, hemos c eado una egla llamada sendToDB. Es a se enca ga de in oca una unción Lambda cuando se ac ualiza la Somb a de un Obje o. Cuando se p oduce la egla, a la unción Lambda se le pasa el con enido de es a somb a, así como el nomb e del Obje o al cual se le es á ac ualizando la Somb a. Es o se consigue con la sen encia SQL: SELECT s a e. epo ed.* , s a e.desi ed.* , opic(3) AS ku aId FROM '$aws/ hings/+/shadow/upda e/accep ed' Ya que es a íamos haciendo un SELECT sob e el opic en el que se gua da la in o mación ac ualizada de una Somb a ($aws/ hings/+/shadow/upda e/accep ed) y ex ayendo los pa áme os de es ado "deseado" y " epo ado". Como acla ación, el '+' es el elemen o comodín pa a elegi el opic, (es como un *). Signi ica cualquie a. Es o es de g an u ilidad de ca a a la escalabilidad, ya que amos a pode u iliza la misma egla pa a ob ene la Somb a de odos los Obje os que engamos c eados. Pa a sabe de qué obje o se ha ob enido la in o mación, se ob iene ambién el pa áme o opic (3), co espondien e al e ce elemen o de la u a del opic, que se co esponde ía con lo que se in oduce en el elemen o '+'. En caso de que se p oduzca algún e o se en ia á un mensaje con los da os de e o a CloudWa ch 13 . Desde la in e az Web de AWS, una ez se ha c eado la egla, se nos debe mos a la in o mación con enida en la Figu a 33: Regla SendToDB. 13 CloudWa ch es el se icio de e en os y ale as in e no de Amazon AWS. 56 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 33: Regla SendToDB 5.2 Dynamo DB Pa a almacena la in o mación pe enecien e a los es ados de las dis in as Somb as, u iliza emos una Base de Da os noSQL. El obje i o de es a Base de Da os es la de almacena un his ó ico de los dis in os es ados en los que se ha encon ado un e a io, pa a pode isualiza lo y ac ua en consecuencia. Además, es a se á la Base de Da os a la que se acceda median e la API REST p opo cionada po API Ga eway. Hemos c eado una abla llamada e a io. Es a iene una cla e p ima ia llamada ku aId (s ing) y una cla e de o denación llamada da e (numbe ). Se han elegido de es a o ma ya que iden i ica emos a cada e a io po su nomb e y u iliza emos la cla e de o denación pa a accede al his ó ico de in o mación po echas de un e a io. Una ez hayamos c eado la abla, se nos debe mos a la in o mación que se mues a en la Figu a 34: In o mación Base de Da os e a io. La Base de Da os posee un ARN p opio, que u iliza emos pa a asigna los dis in os pe misos necesa ios pa a pode lee /esc ibi en es a desde el es o de los se icios de AWS. Tan o la c eación de la Base de Da os como el ARN se e en más de enimien o en el Anexo C: C eación de usua ios y con igu ación de se icios en AWS, apa ado 7.5 DynamoDB. Aplicación desa ollada: Cloud Compu ing en Amazon AWS 57 Figu a 34: In o mación Base de Da os e a io Pa a el uso que se ha de inido, la abla con end á elemen os con in o mación: • ku aId (s ing): Nomb e iden i ica i o que se le asigna al e a io. • da e (numbe ): Fecha en la que se ha incluido la in o mación. • name (s ing): Nomb e que indica in o mación ace ca del e a io, como el dueño o la ienda. • ype (s ing): Campo que indica si la in o mación in oducida es de ipo desi ed o epo ed. • humidi yDesi ed (s ing): Humedad deseada. • humidi yRepo ed (s ing): Humedad epo ada. • empe a u eDesi ed (s ing): Tempe a u a deseada. • empe a u eRepo ed (s ing): Tempe a u a epo ada. • mois u eRepo ed (s ing): Campo que indica si ha habido alguna incidencia o no. • id (numbe ): Índice que hace e e encia a un e a io en un momen o dado. Es de u ilidad pa a accede a un es ado dado del e a io desde la aplicación Web. En la Figu a 35: Elemen os de e a io, podemos obse a cómo se isualizan los dis in os elemen os que se incluyen en la abla. Figu a 35: Elemen os de e a io 64 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Como podemos obse a en la Figu a 44: Función dynamodb_w i e, iene un e en o desencadenado , la API Ga eway. Po lo an o, el con enido del obje o e en con end á la in o mación ela i a a la pe ición HTTP que se haga a es a. En el apa ado de API Ga eway se indica cómo se iene que en ia es a in o mación pa a que ambos ex emos puedan unciona . Se esponde á a la pe ición HTTP con el esul ado de la ejecución del código. Como es a unción se enca ga de ac ualiza el es ado de la Somb a, no es necesa io que acceda a la Base de Da os, pe o si a la Somb a del Obje o. Pa a ello, son necesa ias las líneas de código: cons AWS = equi e('aws-sdk'); a con ig = { " hingName":"ku a-ga eway", "endpoin Add ess":"a2i 4dwpo41h6e-a s.io .eu-wes 3.amazonaws.com" }; a io da a = new AWS.Io Da a({endpoin : con ig.endpoin Add ess}); Donde hingName se co esponde con el nomb e del Obje o al que que emos accede y endpoin Add ess es la di ección co espondien e al pun o de acceso pe sonalizado que podemos ob ene en nues o IoT Co e. En el Anexo C: C eación de usua ios y con igu ación de se icios en AWS, IoT Co e se e de o ma de allada como ob ene es a di ección. La di ección es la que se mues a en la Figu a 45: Pun o de acceso pe sonalizado. Figu a 45: Pun o de acceso pe sonalizado Pa a que la ac ualización de la Somb a sea posible, c eamos una a iable llamada upda e, con la in o mación pe enecien e al es ado "desi ed" 14 que puede ene la Somb a de un Obje o. Con el mé odo upda eThingShadow() ac ualiza emos la in o mación de la Somb a, incluyendo en es a la in o mación de la a iable upda e [34]. El con enido de es e se mues a en la Figu a 46: Mé odo upda eThingShadow. 14 Como mencionamos en el apa ado 5.1.1 In e acción con el Obje o: Thing Shadow, el es ado "desi ed" es el que u iliza emos pa a almacena la in o mación pe enecien e a la in e acción de la aplicación Web, po lo que es es e el es ado que ac ualiza emos. Aplicación desa ollada: Cloud Compu ing en Amazon AWS 65 Figu a 46: Mé odo upda eThingShadow Cabe des aca que como con es a unción lo que ac ualizamos es la Somb a de un Obje o, como consecuencia di ec a, se in oca la unción Lambda shadowToDB, po lo que ambién se ac ualiza ía la Base de Da os con la in o mación del nue o es ado de la Somb a. Po lo an o, si ealizamos una pe ición POST a la URL que nos p opo ciona la API Ga eway, que e emos en el apa ado 5.4 API Ga eway, con la in o mación de un nue o es ado de la Somb a, es a se ac ualiza á y pod emos consul a lo an o en el IoT Co e, como en la Base de Da os. Pa a es a pe ición hacemos uso de Pos man. Es o se ecoge en las igu as: Figu a 47: Ac ualización somb a median e POST usando Pos man, Figu a 48: Somb a ac ualizada en IoT Co e y Figu a 49: Base de Da os ac ualizada con el nue o es ado de la somb a. Figu a 47: Ac ualización somb a median e POST usando Pos man 66 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 48: Somb a ac ualizada en IoT Co e Figu a 49: Base de Da os ac ualizada con el nue o es ado de la somb a. 5.4 API Ga eway Pa a que nues o sis ema se e less en la nube sea de u ilidad, es necesa io que o as aplicaciones puedan accede , sin ene conocimien o de cómo es én implemen adas es as a a és de una API. Amazon AWS p opone una he amien a denominada API Ga eway pa a ello. Es a nos p opo ciona acceso a los ecu sos que enemos en AWS a a és de una API REST. Po lo an o, pod emos accede a es e se icio ealizando pe iciones HTTP. Aplicación desa ollada: Cloud Compu ing en Amazon AWS 67 G acias a es o, end emos desa ollado el backend de nues a aplicación, sin ene que desplega noso os mismos un se ido local, sino que lo " end emos en la nube". Pa a que sea más isual lo que se quie e consegui con odos es os se icios, es de g an ayuda la Figu a 50: Backend IoT AWS [35]: Figu a 50: Backend IoT AWS Como podemos e , el backend de nues o sis ema es a ía compues o po : • En o no IoT: El cual in oluc a la Somb a de un Obje o. In e acciona emos con es a median e su opic IoT. Además, end emos una se ie de eglas que ienen como obje i o inal in oduci la in o mación de es a Somb a en una Base de Da os. Pa a ello se ha á uso de una unción Lambda llamada shadowToDB. • En o no Web: En es e en o no ob enemos/modi icamos la in o mación que hemos almacenado an o en la Somb a de un Obje o, como en la Base de Da os median e HTTP. Pa a ello ha emos uso de una API REST, p opo cionada po API Ga eway. Es a in oca á a la unción Lambda dynamodb_ ead si que emos lee in o mación de la Base de Da os o a la unción dynamodb_w i e si que emos publica in o mación en el opic IoT pa a ac ualiza una somb a, y como consecuencia, ac ualiza la Base de Da os. Pa a ello, en la he amien a API Ga eway c ea emos una API, llamada ku a. La in o mación de cómo c ea una API se ecoge en el Anexo C: C eación de usua ios y con igu ación de se icios en AWS. En la Figu a 51: API ku a podemos e la API c eada. Figu a 51: API ku a 68 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula En es a c ea emos los mé odos median e los cuales que emos accede a los ecu sos. En nues o caso se án los mé odos GET y POST pa a ob ene y modi ica la in o mación espec i amen e. En el Anexo C: C eación de usua ios y con igu ación de se icios en AWS, apa ado 7.7 API Ga eway se indica como c ea los di e en es mé odos que se mues an en la Figu a 52: Recu sos API ku a. Figu a 52: Recu sos API ku a 5.4.1 Mé odo GET El mé odo GET co espondien e a la API REST llamada ku a, que se ha c eado con API Ga eway, se ha con igu ado pa a que llame a una unción Lambda. En es e caso a la unción dynamodb_ ead, is a en el apa ado 5.3.2 Función dynamodb_ ead. Un esquema de es e mé odo se mues a en la Figu a 53: Mé odo GET. En es e se mues a la secuencia en la que se p oduce la ejecución de un mé odo GET. No se le han con igu ado pa áme os de segu idad, po lo que ac ualmen e, cualquie a que disponga de la URL que nos p opo ciona la API al implemen a la, pod á accede a la in o mación de la Base de Da os. Aplicación desa ollada: Cloud Compu ing en Amazon AWS 69 Figu a 53: Mé odo GET Pa a que podamos accede a la base de da os y consul a un único elemen o de la abla (u iliza mé odo ge () de la unción Lambda), es necesa io que añadamos una plan illa de mapeo como la que se mues a en la Figu a 54: Plan illa de mapeo GET. En el Anexo C: C eación de usua ios y con igu ación de se icios en AWS se indica como c ea an o un mé odo de la API como las plan illas de mapeo. Figu a 54: Plan illa de mapeo GET Es o lo que indica son los dis in os pa áme os que podemos ob ene en la pe ición GET. En es e caso, enemos un campo en o ma o JSON: "ku aId":"iden i icado ", cuando en iemos la in o mación a la unción Lambda, se co esponde á con la in o mación que con enga e en .ku aId. 5.4.2 Mé odo POST El mé odo POST co espondien e a la API REST llamada ku a, que se ha c eado con API Ga eway, se ha con igu ado pa a que llame a una unción Lambda. En es e caso a la unción dynamodb_w i e, is a en el apa ado 5.3.3 Función dynamodb_w i e. Un esquema de es e mé odo se mues a en la Figu a 55: Mé odo POST. En es e se mues a la secuencia en la que se p oduce la ejecución de un mé odo POST. No se le han con igu ado pa áme os de segu idad, po lo que ac ualmen e, cualquie a que disponga de la URL que nos p opo ciona la API al implemen a la, pod á accede a la in o mación de la Base de Da os. 70 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 55: Mé odo POST Pa a que podamos ac ualiza la in o mación de la Somb a, es necesa io que añadamos una plan illa de mapeo, pa a que la nue a in o mación se aslade a la unción Lambda al y como es a lo espe a. Es a se mues a en la Figu a 56: Plan illa de mapeo POST. En el Anexo C: C eación de usua ios y con igu ación de se icios en AWS se indica como c ea an o un mé odo de la API como las plan illas de mapeo. Figu a 56: Plan illa de mapeo POST Aplicación desa ollada: Cloud Compu ing en Amazon AWS 71 Es o lo que indica es la in o mación ecibida en o ma o JSON, de igual mane a que con el mé odo GET. 5.4.3 Implemen ación de la API Una ez hemos c eado los dis in os mé odos que end á nues a API, end emos que implemen a la, pa a que consigamos una URL a la cual accede . Pa a ellos enemos que c ea una E apa. Es o nos pe mi e ene a ias API de unos mismos mé odos, con el in de pode p oba nue as e siones de la API sin que la que es á en uncionamien o deje de es a lo. En nues o caso, c ea emos la E apa p od. Pa a más in o mación de cómo c ea una E apa, consul a el Anexo C: C eación de usua ios y con igu ación de se icios en AWS. En la Figu a 57: E apa p od se mues a la API implemen ada. Figu a 57: E apa p od Si que emos accede a los ecu sos que p opo ciona es a API, end emos que accede a la URL h ps://l jjl cw 8.execu e-api.eu-wes -3.amazonaws.com/p od/ku a El esul ado es el que se mues a en la Figu a 58: Acceso API. Como podemos e , la in o mación mos ada se co esponde con el de la base de da os an e io men e mos ada en la Figu a 49: Base de Da os ac ualizada con el nue o es ado de la somb a.. Figu a 58: Acceso API 72 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 6 APLICACIÓN DESARROLLADA: INTERFAZ WEB ANGULAR a a pode ob ene oda la in o mación almacenada en la Base de Da os, así como pode in e ac ua con la Somb a de un Obje o y po consecuen e, la Raspbe y Pi, se ha p opo cionado una in e az de usua io o on end desa ollado en Angula . 6.1 Módulos u ilizados En el iche o app.module. s es donde hemos indicado los dis in os módulos de Angula que amos a u iliza , así como los componen es que hemos decla ado noso os mismos. Figu a 59: Módulo app.module. s P The only way o do g ea wo k is o lo e wha you do. I you ha en' ound i ye , keep looking. Don' se le - S e e Jobs - Aplicación desa ollada: In e az web Angula 73 Como podemos e en la Figu a 59: Módulo app.module. s, se impo an al código los dis in os módulos y componen es a a és de las u as donde se encuen an cada uno de los módulos que se quie en e e encia pos e io men e en @NgModule{}. Los módulos que se impo an p o ienen de la lib e ía de Angula y son: • B owse Module: Pe mi e hace búsquedas de elemen os en los da os de la aplicación. • Fo msModule: Pe mi e ellena un o mula io y ans e i la in o mación a los da os de la aplicación. • AppRou ingModule: Pe mi e hace Rou ing den o de la aplicación. • H pClien Module: Pe mi e hace pe iciones HTTP a la API REST. Los componen es que se decla an y expo an como consecuencia, son los c eados pa a lle a a cabo las uncionalidades deseadas y son: • AppComponen : Componen e p incipal, es la p ime a is a que se mues a. Se enca ga de llama al es o de componen es. • Dashboa dComponen : Componen e que mues a los úl imos e a ios a los que hemos accedido, pe mi iendo hace click en ellos pa a ob ene una in o mación más de allada. • Te a iosComponen : Componen e que almacena cada uno de los e a ios, así como la in o mación ecien e de cada uno de es os. • Te a iosDe ailComponen : Componen e que con iene la in o mación de cada uno de los e a ios, así como el his ó ico de empe a u a de es os. • MessagesComponen : Componen e que nos pe mi e sabe el es ado de cada una de las pe icione ealizadas, en o ma de mensajes, pa a la depu ación. La implemen ación de es os componen es se de alla en el apa ado 6.3 Componen es Implemen ados. 6.2 Se icio Te a io Se ice Es e se icio es el enca gado de ealiza las pe iciones HTTP a la API REST que nos p opo ciona API Ga eway, is a en el apa ado 5.4 API Ga eway. Pa a ello hace uso del módulo HTTPClien . Es e p opo ciona los mé odos GET y POST necesa ios pa a ob ene la in o mación almacenada en AWS. Los pa áme os de con igu ación que amos a u iliza son los que se mues an en la Figu a 60: Con igu ación e a io.se ice. s. 80 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula @Componen ({ selec o : 'app- e a ios', empla eU l: './ e a ios.componen .h ml', s yleU ls: ['./ e a ios.componen .css'] }) C eamos dos obje os, pa a hace el mapeo del JSON ob enido a clases a las que podamos accede . e a ios: Te a io[]; i ems: I ems; Po úl imo, cabe des aca el mé odo que se llama á pa a ob ene los e a ios. Es e se susc ibi á a el mé odo ge Te a ios() de Te a ioSe ice. ge Te a ios(): oid { his. e a ioSe ice.ge Te a ios() .subsc ibe(i ems => { his.i ems = { i ems: (i ems as any).I ems, coun : (i ems as any).Coun , scannedCoun : (i ems as any).ScannedCoun }; his. e a ios = his.i ems.i ems; console.log( his. e a ios); }); } Es o lo que hace es asigna al obje o i ems, el JSON ob enido de la pe ición GET. Pos e io men e, al obje o e a ios se le asignan odos los e a ios que se ob ienen, que es el con enido de la a iable i ems del obje o i ems. De es a o ma, la is a ob iene odos los e a ios. 6.3.4 Componen e Dashboa d Componen Es e componen e nos pe mi e ob ene una is a ápida de los úl imos e a ios a los que hemos accedido. 6.3.4.1 Vis a HTML En es e componen e, la is a queda al y como se mues a en la Figu a 66: Página p incipal. La única di e encia es el amaño de los bo ones. 6.3.4.2 Da os y lógica TypeSc ip La lógica de es e componen e es idén ica a la del componen e Te a ios, pe o a la ho a de asigna los e a ios al obje o e a ios, sólo se asigna án los 2 p ime os. Es o se consigue con la siguien e línea de código: his. e a ios = his.i ems.i ems.slice(0,2); 6.3.5 Componen e Te a ios De ail Es e componen e es el que nos pe mi e e el his ó ico de empe a u as que ha enido un e a io dado. Además, pe mi e con ola el e a io median e un o mula io. Aplicación desa ollada: In e az web Angula 81 6.3.5.1 Vis a HTML Es e componen e nos mos a á en o ma de lis a el his ó ico de empe a u a y humedad de un e a io. Además, se pod á ellena un o mula io que nos pe mi a ac i a o desac i a el con olado y en ia la empe a u a o humedad deseada. La is a en el na egado Web se ía la mos ada en la Figu a 69: Vis a Te a ios De ail. Figu a 69: Vis a Te a ios De ail Pa a ep esen a cada uno de los es ados del e a io en o ma de lis a se ha empleado el siguien e código: <ul class=" e a ios"> <li *ngFo ="le e a io o e a ios"> <a> <span class="badge">Fecha: {{ e a io.da e}} </span> Tempe a u a: {{ e a io. empe a u eRepo ed}} Humedad: {{ e a io.humidi yRepo ed}} </a> </li> </ul> Pa a c ea el o mula io y asigna es a in o mación a los da os de la pa e TypeSc ip se ha empleado el siguien e código: <di > <label>Ac i a /Desac i a Con olado : <inpu # e a ioCon ol /> </label> <label> Tempe a u a deseada: <inpu # empe a u e /> </label> 82 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula <label> Humedad deseada: <inpu #humidi y /> </label> <!-- (click) passes inpu alue o add() and hen clea s he inpu --> <bu on (click)="add( e a ioCon ol. alue, empe a u e. alue, humidi y. alue); e a ioCon ol. alue=''; empe a u e. alue=''; humidi y. alue=''"> En ia </bu on> </di > De es a o ma, cuando le demos al bo ón en ia de la in e az Web, se en ia á una pe ición POST a la URL "h ps://l jjl cw 8.execu e-api.eu-wes -3.amazonaws.com/p od/ku a" p opo cionada po API Ga eway de AWS con el con enido del o mula io en el cue po de la pe ición POST. Es a se enca ga á de in oca a la unción Lambda 5.3.3 Función dynamodb_w i e pa a ac ualiza la Somb a del Obje o co espondien e y la Base de Da os. Como la Raspbe y Pi es á susc i a a es a median e el CloudSusc ibe is o en el apa ado 4.2.2 CloudSusc ibe , es a ecibi á la in o mación de con ol y se encende án/apaga án los LEDs al y como se mues a en las igu as: Figu a 26: Con ol enciende LED, Figu a 27: Con ol apaga LED del apa ado 4.4 Ku a Wi es y GPIOD i e : Con ol de LEDs. 6.3.5.2 Da os y lógica TypeSc ip Es e compon en e se ha de inido u ilizando la dependencia: @Componen ({ selec o : 'app- e a io-de ail', empla eU l: './ e a io-de ail.componen .h ml', s yleU ls: [ './ e a io-de ail.componen .css' ] }) Como que emos que la in o mación de u a sea u ilizable po Rou ingComponen , así como pode ob ene in o mación de la u a pa a hace la pe ición GET necesa ia, necesi amos implemen a el siguien e cons uc o : cons uc o ( p i a e ou e: Ac i a edRou e, p i a e e a ioSe ice: Te a ioSe ice, ) {} Con es o conseguimos in oduci en la a iable ou e, la URL en la que nos encon amos. Pa a ob ene la a iable ku aId, que es la cla e de un e a io, sólo enemos que ob ene la de la a iable ou e: le ku aId = his. ou e.snapsho .pa amMap.ge ('ku aId'); Pa a ob ene la in o mación del e a io, llamamos al mé odo ge Te a io(ku aId) del apa ado 6.2 Se icio Te a io Se ice, en la que nos de uel e la in o mación y la asignamos de la misma o ma que en Te a iosComponen , pe o en es e caso, sólo es la in o mación ela i a a un e a io. Aplicación desa ollada: In e az web Angula 83 Pa a en ia la in o mación de con ol, llamamos al mé odo addTe a io( e a ioEn ) del apa ado 6.2 Se icio Te a io Se ice. Pa a que es a pe ición se p oduzca de o ma sa is ac o ia, hemos enido que c ea una in e az denominada Pos ing. La in e az Pos ing con iene los a ibu os: expo class Pos ing { id: numbe ; name: s ing; empe a u eDesi ed: s ing; ku aId: s ing; humidi yDesi ed: s ing; con ol: boolean; } Es a nos pe mi e in oduci in o mación de con ol en un e a io y de empe a u a/humedad deseada. Es la que se u iliza pa a mapea la in o mación p oceden e del o mula io. Es o se consigue con el siguien e código: add(con ol: boolean, empe a u e: s ing, humidi y: s ing): oid { his. e a ioEn = { id : his. e a io.id, empe a u eDesi ed : empe a u e, ku aId : his.ku a, humidi yDesi ed : humidi y, name: his. e a io.name, con ol : con ol, } } Siendo el mé odo add el que se in oca cuando se pulsa el bo ón En ia del o mula io. 6.3.6 Componen e Messages Es e componen e nos pe mi e isualiza in o mación de depu ación en la pan alla. Pa a de ini lo se ha u ilizado la siguien e dependencia: @Componen ({ selec o : 'app-messages', empla eU l: './messages.componen .h ml', s yleU ls: ['./messages.componen .css'] }) Po lo an o, en el es o de las is as se inclui á <app-messages></app-messages> pa a que se mues e la in o mación cap u ada en es e. Mues a la in o mación como se puede ap ecia en las igu as: Figu a 66: Página p incipal y Figu a 68: Vis a Te a ios Componen . 84 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Con la inalidad de acla a el uncionamien o y las posibles in e acciones que es a aplicación Web o ece, en la Figu a 70: Casos de uso se mues an los dis in os casos de uso que es a aplicación p opo ciona. Figu a 70: Casos de uso Además en la Figu a 71: Diag ama de secuencia ob ene e a io, se mues a un diag ama de secuencia pa a el caso de uso de ob ene el de alle de un e a io. Figu a 71: Diag ama de secuencia ob ene e a io Aplicación desa ollada: In e az web Angula 85 Po úl imo, en la Figu a 72: Diag ama de secuencia con ola e a io se mues a un diag ama de secuencia pa a el caso de uso de con ola e a io. Figu a 72: Diag ama de secuencia con ola e a io 86 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula 7 CONCLUSIONES Y LÍNEAS FUTURAS omo pun o inal a es e T abajo de Fin de G ado me gus a ía e lexiona sob e los conocimien os adqui idos, la uncionalidad conseguida pa a es e, así como la capacidad de mejo a que iene. Desde el pun o de is a del ap endizaje, me gus a ía ema ca los conocimien os adqui idos pa a la c eación de un se icio basado en el Cloud Compu ing, que nos p opo ciona acilidades como no p eocupa se po el man enimien o, po el ap o isionamien o de los ecu sos, po la in eg idad de la in o mación. Además, odo el desa ollo modula con Eclipse Ku a y la Raspbe y Pi me han hecho ene consciencia de la impo ancia de la modula idad y la eu ilización de código, aspec os cla e hoy en día pa a el desa ollo. Desde el pun o de is a de la uncionalidad desa ollada, conside o que se ob iene una buena solución inicial pa a el p oblema que se plan eaba. Sin emba go, aún iene mucho ma gen de mejo a. Ac ualmen e, se p opo ciona un sis ema IoT, que pe mi e la moni o ización de la empe a u a y humedad de un e a io y el con ol de unos LEDs median e una in e az Web. La in e az Web implemen ada en Angula , es capaz de mos a la in o mación y accede a los dis in os ecu sos de una o ma sencilla. Po con aposición, la o ma de mos a es a in o mación no es la más isual ni in ui i a, ya que lo mejo pa a es o se ía hace uso de g á icas y es ilos a la o den del día. Pa a ello conside o una mejo a sus ancial el inclui una plan illa de es ilos en Boo s ap. En el apa ado del Cloud Compu ing, se o o ga al sis ema de una segu idad in e na en el p ocesamien o y ges ión de la in o mación, así como en la comunicación con la Raspbe y Pi. Se han u ilizado di e en es se icios den o de es e en o no, como son IoT Co e, DynamoDB como Base de Da os, Lambda y API Ga eway. Sin emba go, la API REST no p opo ciona ningún ipo de segu idad, po lo que cualquie a que conozca la URL de es a, puede accede a los ecu sos median e los mé odos que p opone. Po lo an o, en un u u o es a ía a bien inco po a le esa segu idad que le al a. Finalmen e, la implemen ación en Eclipse Ku a ha sido la que más queb ade os de cabeza me ha dado, aunque a p io i pa ecía la más sencilla. Es o se debe a que se necesi a ene un conocimien o muy p o undo de cómo unciona pa a pode empeza a desa olla us p opias aplicaciones. Una ez se adquie e, la modula idad y la can idad de ecu sos que p opo ciona "lo ponen odo en bandeja". A pesa de odo, me hubiese gus ado implemen a más uncionalidades en es a, como la in eg ación con mo o es y elés que se accionen en unción de una empe a u a y humedad deseada. C I you ge up in he mo ning and hink he u u e is going o be be e , i is a b igh day. O he wise, i ´s no . - Elon Musk- Anexo A: Ins alación de Senso es DHT11 y Leds en Raspbe y Pi 87 ANEXO A: INSTALACIÓN DE SENSORES DHT11 Y LEDS EN RASPBERRY PI En es e anexo se explica paso a paso cómo conec a los senso es de humedad y empe a u a DHT11 a los pines GPIO de la Raspbe y Pi, pa a que se pueda ob ene la in o mación de es os. Además, se mues a el conexionado de los LEDs u ilizados. Pa a el conexionado del senso DHT11, se ha u ilizado la siguien e e e encia [2]. Inicialmen e, hay que iden i ica qué ipo de senso DHT11 enemos. Los hay de 3 pines y de 4 pines. La di e encia en e es os adica en que el de 3 pines no necesi a una esis encia pa a conec a lo con los pines GPIO de la Raspbe y Pi, ya que la ae inco po ada. En el caso de que engamos uno de 4 pines, necesi a emos adicionalmen e una esis encia de en e 4,7K y 10 K Ohmios que coloca emos en e el pin 1 y el in 2 [2]. En nues o caso, el senso es de 3 pines, po lo que no la necesi a emos. Figu a 73: Senso DHT11 Pa a hace e e encia a los pines del senso mos ados en la Figu a 73: Senso DHT11, de izquie da a de echa nos e e i emos como: • Pin 1: Posi i o. • Pin 2: Da os. • Pin 3: Nega i o. Pa a e e i nos a los pines GPIO de la Raspbe y Pi los nume a emos como se indica en la Figu a 74: Pines GPIO. Figu a 74: Pines GPIO 88 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Po lo an o, el conexionado del Pin 1 debe ía hace se con un pin de ol aje posi i o, po ejemplo, el Pin 1 (3.3V) de la Raspbe y Pi. El conexionado del Pin 3 debe á hace se con un pin de ie a, en es e caso el Pin 39 (GND) de la Raspbe y Pi. Pa a la ansmisión de da os, debemos conec a el Pin 2 con alguno de los pines denominados como GPIO XX, que son los que pe mi en el in e cambio de da os. En nues o caso, lo ha emos con el Pin 38 (GPIO 20). Con odo es o, si ejecu amos el p og ama que nos pe mi e lee la in o mación de los senso es DHT11 (Ada ui DHT.py) nos mos a á la siguien e salida: Pa a el conexionado de los LEDs, se han conec ado di ec amen e al PIN GPIO del que an a ob ene in o mación en el polo posi i o de es e. El polo nega i o se ha conec ado a una esis encia de 1K Ohmios y pos e io men e a un pin de ie a (GND). El conexionado an o de los senso es como del LED se mues a en la Figu a 75: Conexionado Raspbe y Pi. Figu a 75: Conexionado Raspbe y Pi ANEXO B: INSTALACIÓN Y CONFIGURACIÓN DE ECLIPSE KURA EN RASPBERRY PI En es e anexo se explica paso a paso cómo ins ala y con igu a Eclipse Ku a 4.1.0 en una Raspbe y Pi 3, así como los pa áme os necesa ios pa a su con igu ación. 7.1 Ins alación de Eclipse Ku a 4.1.0 en una Raspbe y Pi 3 con Raspbian Bus e Se ins ala á Eclipse Ku a en una Raspbe y Pi 3 con la imagen Raspbian Bus e , e sión Julio de 2019 [36] pa a con e i es e disposi i o en una pasa ela IoT. Pa a ello se han seguido los pasos indicados en la documen ación de Eclipse Ku a. [37] Desde una e minal en la Raspbe y Pi ejecu amos los siguien es comandos: 1. Desins alamos paque es que son incompa ibles con Eclipse Ku a. $ sudo ap -ge pu ge dhcpcd5 2. Ins alamos la he amien a gdebi, necesa ia pa a el uncionamien o. $ sudo ap -ge upda e $ sudo ap -ge ins all gdebi-co e 3. Ins alamos Ja a 8 en caso de no ene lo ins alado. $ sudo ap -ge ins all openjdk-8-j e-headless 4. Desca gamos el paque e de Eclipse Ku a y lo ins alamos usando la he amien a gdebi $ wge h p://download.eclipse.o g/ku a/ eleases/< e sion>/ku a_4 .1.0_ aspbe y-pi-2-3_ins alle .deb $ sudo gdebi ku a_4.1.0_ aspbe y-pi-2-3_ins alle .deb T as ejecu a es os comandos end íamos ins alado Eclipse Ku a en nues a Raspbe y Pi. A con inuación, se puede einicia y accede a la in e az Web de Ku a haciendo uso de un na egado Web, haciendo uso de una de las di ecciones IP que enga asignada, o en nues o caso, la local. Se debe mos a el con enido de la Figu a 76: In e az inicio sesión de Eclipse Ku a. h ps://localhos 96 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula ANEXO C: CREACIÓN DE USUARIOS Y CONFIGURACIÓN DE SERVICIOS EN AWS En es e anexo se explica paso a paso cómo c ea un usua io y c ea y con igu a los dis in os se icios u ilizados en Amazon AWS. Pa a el desa ollo de es e T abajo de Fin de G ado, odos los se icios u ilizados han sido g a ui os, ya que no se ha excedido el lími e de ecu sos g a ui os que la pla a o ma p opo ciona. 7.3 C eación de usua io AWS Pa a c ea nos un usua io en la pla a o ma de Amazon AWS, enemos que di igi nos a la siguien e URL: h ps://aws.amazon.com/ ee. Una ez en es a, podemos e odos los p oduc os que AWS o e a en su pla a o ma de Cloud Compu ing. Pa a c ea una cuen a, debemos hace click en el bo ón na anja de la esquina supe io de echa (C ea una cuen a de AWS). Figu a 83: Fo mula io AWS Se debe á ellena el o mula io que apa ece en la Figu a 83: Fo mula io AWS con la in o mación pe sonal del usua io a c ea . Se debe á ellena oda la in o mación que se solici e en cada paso. Pide una a je a de c édi o pa a e i ica la iden idad, pe o no se ha á ningún ca go a es a. Una ez hayamos comple ado el egis o, end emos nues a sesión c eada. Se nos mos a á nues o panel p incipal, como podemos e en la Figu a 84: Panel p incipal AWS. Anexo C: C eación de usua ios y con igu ación de se icios en AWS 97 Figu a 84: Panel p incipal AWS 7.4 IoT Co e En es e apa ado se indican los pasos necesa ios pa a c ea un Obje o en el IoT Co e de AWS. Es e obje o se á el u ilizado en el en o no de Cloud Compu ing de AWS pa a ep esen a un disposi i o IoT, en es e caso, la Raspbe y Pi con Eclipse Ku a. Pa a empeza a u iliza IoT Co e, debemos hace click en el elemen o Se icios que apa ece en la Figu a 84: Panel p incipal AWS. Ahí in oduci emos en el buscado IoT Co e. Se nos debe mos a lo que apa ece en la Figu a 85: IoT Co e. 98 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 85: IoT Co e Una ez en es e, debemos c ea un Obje o. Pa a ello debemos i a Adminis ación -> Obje os -> C ea . Debemos elegi la opción c ea un solo Obje o. Hab á que ellena cada uno de los campos que se solici an en la Figu a 86: C eación Obje o. Figu a 86: C eación Obje o Anexo C: C eación de usua ios y con igu ación de se icios en AWS 99 En es e caso, le asigna emos el nomb e ku a-ga eway. Es e obje o ep esen a á la Raspbe y Pi, ya que es un Ga eway IoT, haciendo uso de Eclipse Ku a. No le aplica emos ningún ipo. No es necesa io asigna le aho a un g upo al que pe enece . A con inuación, debemos da le a Siguien e. Pa a que es e Obje o adquie a una Iden idad, que nos pe mi a que se conec en a es e disposi i o IoT de o ma segu a, debemos asigna le unos ce i icados. La o ma más ácil es hace lo a a és de la opción que p opo ciona Amazon AWS. Pa a ello debemos hace click en C ea ce i icado en un click. Debemos de desca ga nos y ac i a los ce i icados que apa ecen en la Figu a 28: Ce i icado asociado a un obje o. Es os son los que u iliza emos en el Anexo B: Ins alación y con igu ación de Eclipse Ku a en Raspbe y Pi, apa ado 7.2.2 y en el apa ado 5.1.1 In e acción con el Obje o: Thing Shadow. Figu a 28: Ce i icado asociado a un obje o Po úl imo, debemos asocia le unas polí icas al obje o. Las polí icas asociadas son las que se mues an en la Figu a 29: Polí ica asociada a un ce i icado. Es as son las polí icas po de ec o que se incluyen en la documen ación de AWS [30]. Con odo es o, ya end íamos nues o Obje o ku a-ga eway con igu ado y con las di ecciones que se mues an en la Figu a 31: Se icio De ice Shadow, pa a que se pueda in e ac ua con es os. La di ección que apa ece en el apa ado HTTPS coincide con la di ección de pun o de enlace pe sonalizado. 100 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 31: Se icio De ice Shadow 7.5 DynamoDB En es e apa ado se indica cómo c ea una base de da os NoSQL en AWS. U iliza emos la Base de Da os g a ui a que se p opo ciona en es e en o no. En ella almacena emos la in o mación ela i a a un e a io. Pa a empeza a u iliza DynamoDB debemos hace click en el elemen o Se icios que apa ece en la Figu a 84: Panel p incipal AWS. Ahí in oduci emos en el buscado DynamoDB. Se nos debe mos a lo que apa ece en la Figu a 87: Panel de con ol DynamoDB. Anexo C: C eación de usua ios y con igu ación de se icios en AWS 101 Figu a 87: Panel de con ol DynamoDB El p ime paso es c ea una abla. Pa a ello hacemos click en el bo ón que indica C ea abla. Debemos ellena los campos al y como se mues an en la Figu a 88: Pa áme os abla e a io. Con es os pa áme os, la abla se co esponde á con la indicada en el apa ado 5.2 Dynamo DB. Figu a 88: Pa áme os abla e a io Una ez c eada, nos debe apa ece la in o mación de es a al y como se mues a en la Figu a 34: In o mación Base de Da os e a io. Como podemos ap ecia , se nos p opo ciona un Nomb e de ecu so de Amazon (ARN). Es e es el que u iliza emos pa a e e i nos a es a abla, desde cualquie pun o del en o no de Amazon AWS (asocia polí icas o accede desde las unciones Lambda). 102 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula Figu a 34: In o mación Base de Da os e a io 7.6 Funciones Lambda En es e apa ado se indica cómo c ea una unción Lambda en AWS. Escoge emos como lenguaje de p og amación Node.js. Además, se e á como asigna le los pe misos necesa ios pa a que pueda accede a los ecu sos que necesi e (IoT Co e o DynamoDB). Pa a empeza a u iliza Lambda debemos hace click en el elemen o Se icios que apa ece en la Figu a 84: Panel p incipal AWS. Ahí in oduci emos en el buscado Lambda. Se nos debe mos a lo que apa ece en la Figu a 89: Panel de con ol Lambda. Figu a 89: Panel de con ol Lambda Pa a c ea una unción debemos hace click en el bo ón C ea una unción. Debemos ellena los campos con la in o mación que se mues a en la Figu a 90: C ea unción. En el campo de Rol, pa a la Anexo C: C eación de usua ios y con igu ación de se icios en AWS 103 p ime a unción se debe á c ea uno nue o. Pa a el es o de las unciones se puede u iliza el mismo si se quie en compa i los pe misos que se le asignen a ese Rol. Figu a 90: C ea unción Una ez se haya c eado la unción, debe á apa ece nos un panel como se mues a en la Figu a 91: Panel de con ol de una unción Lambda. Lo p ime o que debemos hace es asigna le los desencadenado es que pueda ene la unción (API Ga eway, AWS IoT o DynamoDB). Ahí le asigna emos la egla o la pe ición que la in oque. Figu a 91: Panel de con ol de una unción Lambda Pos e io men e, en el edi o de ex o que p opo ciona, implemen a emos lo que que emos que la unción haga en cada caso. Pa a que odo uncione co ec amen e, al Rol de la unción enemos que da le 104 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula pe misos pa a que acceda a los ecu sos a los que se necesi e accede en cada caso. Es o se hace al y como se indica en el u o ial de Amazon AWS pa a c ea una unción Lambda [40]. Pa a ello, enemos que i al apa ado que se mues a en la Figu a 92: Rol de ejecución Lambda. Haciendo click en Consul e el ol (nomb e_ ol), nos een ia á al se icio que nos pe mi e ges iona lo, que es AWS IAM. Figu a 92: Rol de ejecución Lambda Figu a 93: Resumen Rol En es e se nos mos a á un panel como el que se mues a en la Figu a 93: Resumen Rol. Como podemos ap ecia , iene 3 polí icas inse adas. Anexo C: C eación de usua ios y con igu ación de se icios en AWS 105 • AWSLambdaBasicExecu ionRole-bd0cb128-5510-4521-b 85-b 76b8773022: Es la que se le asocia au omá icamen e al c ea el ol con la unción Lambda. Es a le asocia los pe misos necesa ios pa a que pueda ejecu a la unción cuando ecibe un e en o desencadenado . • ullDynamoDB: Polí ica c eada pa a que es e ol enga an o acceso de esc i u a como de lec u a a la Base de Da os e a io. El con enido de es a polí ica es el que se puede e en la Figu a 94: Polí ica ullDynamoDB. Figu a 94: Polí ica ullDynamoDB • io ullaccess: Polí ica c eada pa a que es e ol enga pe misos pa a publica /susc ibi se a un opic IoT del IoT Co e. El con enido de es a polí ica es el que se mues a en la Figu a 95: Polí ica io ullaccess. Figu a 95: Polí ica io ullaccess Con es as polí icas, las unciones Lambda que engan asociado es e Rol pa a sus ejecuciones, pod án ene odos los pe misos necesa ios pa a accede a los ecu sos que se necesi an pa a es e p oyec o. 112 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula REFERENCIAS [1] «Raspbe y Pi 3B+ Specs and Benchma ks - The MagPi MagazineThe MagPi Magazine». [En línea]. Disponible en: h ps://www. aspbe ypi.o g/magpi/ aspbe y-pi-3bplus-specs-benchma ks/. [2] «DHT11 Tempe a u e and Humidi y Senso and he Raspbe y Pi - Raspbe y Pi Spy». [En línea]. Disponible en: h ps://www. aspbe ypi-spy.co.uk/2017/09/dh 11- empe a u e-and-humidi y- senso - aspbe y-pi/#p e yPho o. [3] «Ge ing S a ed». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/de /ku a-se up.h ml. [4] «Eclipse Ku a | The Eclipse Founda ion». [En línea]. Disponible en: h ps://www.eclipse.o g/ku a/. [5] «Ga eways | IoT de elopmen made simple - io .eclipse.o g». [En línea]. Disponible en: h ps://io .eclipse.o g/ga eways/. [6] «Ga eways IoT | Ap endiendo A duino». [En línea]. Disponible en: h ps://ap endiendoa duino.wo dp ess.com/2018/11/21/ga eways-io /. [7] «Wha is OSGi? – OSGiTM Alliance». [En línea]. Disponible en: h ps://www.osgi.o g/de elope /wha -is-osgi/. [8] «Wha is OSGi (Open Se ice Ga eway Ini ia i e)? - De ini ion om Wha Is.com». [En línea]. Disponible en: h ps://sea chne wo king. ech a ge .com/de ini ion/OSGi. [9] «Bene i s o Using OSGi – OSGiTM Alliance». [En línea]. Disponible en: h ps://www.osgi.o g/de elope /bene i s-o -using-osgi/. [10] «A chi ec u e – OSGiTM Alliance». [En línea]. Disponible en: h ps://www.osgi.o g/de elope /a chi ec u e/. [11] «Amazon Web Se ices (AWS) : ¿qué es y qué o ece?» [En línea]. Disponible en: h ps://www. icpo al.es/ emas/cloud-compu ing/amazon-web-se ices. [12] J. M. L. Sille o, «Amazon Web Se ices». [En línea]. Disponible en: h ps://www2.deloi e.com/es/es/pages/ echnology/a icles/in oduccion-a-amazon-web- se ices.h ml. [13] «Wha is AWS IoT (Amazon Web Se ices in e ne o hings)? - De ini ion om Wha Is.com». [En línea]. Disponible en: h ps://sea chaws. ech a ge .com/de ini ion/AWS-IoT-Amazon-Web- Se ices-in e ne -o - hings. [14] «¿Qué es AWS IoT? - AWS IoT». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/io /la es /de elope guide/wha -is-aws-io .h ml. [15] «¿Qué es Amazon DynamoDB? - Amazon DynamoDB». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/amazondynamodb/la es /de elope guide/In oduc ion.h ml. [16] «Ci ado en eposo de DynamoDB - Amazon DynamoDB». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/amazondynamodb/la es /de elope guide/Enc yp ionA Res .h ml. [17] «Wha is Se e less? | Se e less S ack». [En línea]. Disponible en: h ps://se e less- s ack.com/chap e s/wha -is-se e less.h ml. [18] «¿Qué es AWS Lambda? - AWS Lambda». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/lambda/la es /dg/welcome.h ml. [19] «Tiempos de ejecución de AWS Lambda. - AWS Lambda». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/lambda/la es /dg/lambda- un imes.h ml. [20] «▷ ¿Qué es una API REST? | Guía 【2019】 - Iden o». [En línea]. Disponible en: h ps://www.iden o.es/blog/desa ollo-web/que-es-una-api- es /. [21] «¿Qué es REST? Conoce su po encia | OpenWebina s». [En línea]. Disponible en: h ps://openwebina s.ne /blog/que-es- es -conoce-su-po encia/. [22] «TypeSc ip - Wikipedia, la enciclopedia lib e». [En línea]. Disponible en: h ps://es.wikipedia.o g/wiki/TypeSc ip . [23] «Qué es Angula | OpenWebina s». [En línea]. Disponible en: h ps://openwebina s.ne /blog/que- es-angula /. Re e encias 113 [24] «O e iew». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/cloud-api/1-o e iew.h ml. [25] «Use guide». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/cloud-api/2-use - guide.h ml. [26] Raspbe y Pi Founda ion, «Deploying Bundles». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/de /deploying-bundles.h ml. [27] «Con igu able Applica ion». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/de /con igu able_componen .h ml. [28] «Publishing Applica ion». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/de /hea e _demo.h ml. [29] «GPIO d i e in Ku a Wi es». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/wi es/ku a- wi es-gpio.h ml. [30] «Polí icas de AWS IoT - AWS IoT». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/io /la es /de elope guide/io -policies.h ml. [31] «API REST ul de somb a de disposi i o - AWS IoT». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/io /la es /de elope guide/de ice-shadow- es -api.h ml. [32] «Temas - AWS IoT». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/io /la es /de elope guide/ opics.h ml. [33] «¿Qué es AWS Lambda? | Se e less S ack». [En línea]. Disponible en: h ps://se e less- s ack.com/chap e s/es/wha -is-aws-lambda.h ml. [34] «API REST ul de somb a de disposi i o - AWS IoT». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/io /la es /de elope guide/de ice-shadow- es -api.h ml. [35] «Implemen ing a Se e less AWS IoT Backend wi h AWS Lambda and Amazon DynamoDB | AWS Compu e Blog». [En línea]. Disponible en: h ps://aws.amazon.com/es/blogs/compu e/implemen ing-a-se e less-aws-io -backend-wi h-aws- lambda-and-amazon-dynamodb/. [36] Raspbe y Pi Founda ion, «Ins alling ope a ing sys em images - Raspbe y Pi Documen a ion», 2008. [En línea]. Disponible en: h ps://www. aspbe ypi.o g/documen a ion/ins alla ion/ins alling-images/. [37] Raspbe y Pi Founda ion, «Raspbe y Pi- Quick s a », 2012. [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/in o/ aspbe y-pi-quick-s a .h ml. [38] Raspbe y Pi Founda ion, «Ne wo k Con igu a ion». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/con ig/ne wo k-con igu a ion.h ml. [39] «Amazon AWS IoTTM pla o m». [En línea]. Disponible en: h ps://eclipse.gi hub.io/ku a/cloud- s acks/ku a-aws-cloud.h ml. [40] «Uso de polí icas basadas en ecu sos pa a AWS Lambda - AWS Lambda». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/lambda/la es /dg/access-con ol- esou ce-based.h ml. [41] «TUTORIAL: Desa olla una API con in eg ación HTTP que no sea de p oxy - Amazon API Ga eway». [En línea]. Disponible en: h ps://docs.aws.amazon.com/es_es/apiga eway/la es /de elope guide/api-ga eway-c ea e-api-s ep- by-s ep.h ml. [42] «Angula - A chi ec u e o e iew». [En línea]. Disponible en: h ps://angula .io/guide/a chi ec u e. 114 Sis ema IoT pa a el con ol y moni o ización de un e a io con Eclipse Ku a, Amazon AWS y Angula