integración de un sistema de control para una plataforma

66
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN UNIVERSIDAD DE CANTABRIA Trabajo Fin de Grado Integración de un Sistema de Control para una Plataforma de la Internet de las Cosas (Integration of a Control Dashboard over a Smart City Internet of Things Platform) Para acceder al Titulo de Graduado en Ingeniería de Tecnologías de Telecomunicación Autor: Ignacio Fernández- Regatillo Rubio Septiembre - 2016

Upload: others

Post on 13-Jul-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integración de un Sistema de Control para una Plataforma

ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN

UNIVERSIDAD DE CANTABRIA

Trabajo Fin de Grado

Integración de un Sistema de Control para una Plataforma de la Internet de las Cosas

(Integration of a Control Dashboard over a Smart City Internet of Things Platform)

Para acceder al Titulo de

Graduado en Ingeniería de Tecnologías de Telecomunicación

Autor: Ignacio Fernández- Regatillo Rubio

Septiembre - 2016

Page 2: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

2

E.T.S DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN

GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN

CALIFICACIÓN DEL TRABAJO FIN DE GRADO

Realizado por: Ignacio Fernández-Regatillo Rubio�Director del TFG: Luis Sánchez González��Título: “Integración de un Sistema de Control para una plataforma de la Internet de las Cosas”��Title: “Integration of a Control Dashboard over a Smart City Internet of Things Platform“ Presentado a examen el día: 16 de Noviembre de 2016

para acceder al Título de

GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE

TELECOMUNICACIÓN Composición del Tribunal: Presidente (Apellidos, Nombre): Sanz Gil, Roberto Secretario (Apellidos, Nombre): Sánchez González, Luis Vocal (Apellidos, Nombre): Villa Benito, Enrique Este Tribunal ha resuelto otorgar la calificación de: ...................................... Fdo.: El Presidente

Fdo.: El Vocal

Vo Bo del Subdirector

Fdo.: El Secretario

Fdo.: El Director del TFG (sólo si es distinto del Secretario)

Trabajo Fin de Grado No (a asignar por Secretaría)

Page 3: Integración de un Sistema de Control para una Plataforma

3

AGRADECIMIENTOS

Quisieraagradecerenprimerlugaramifamiliatantoporlaeducacióncomoporlosvaloresquemehaninculcadodurantetodosestosaños,asícomoelapoyomostradoalolargodeestosañosdecarrera.

MenciónespecialaMarina,portodosestosañosquemehaestadoaguantando,siempreconunaactitudpositiva.Deverdad,gracias,porapoyarme,cuidarmeysobretodo,confiarsiempreenmí.

Igualmente, a todosmis compañeros, con los que he tenido la posibilidad decompartirbuenosymalosmomentosalolargodetodaestaetapauniversitaria.

Porultimo,agradeceratodoelcuadrodocentedelaEscuelaTécnicaSuperiordeIngenierosIndustrialesyTelecomunicación,porlosconceptosyvaloresquemehanidoenseñandoalolargodelaformacióncomoIngeniero,especialmenciónamitutor,LuisSánchez, por haberme orientado y ayudado a la hora de realizar este Trabajo,aportándomepartedesusconocimientos,necesariosparalaconsecucióndelmismo.

Graciasporestosaños.

Page 4: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

4

RESUMEN

Elprogresivodesplazamientodelapoblaciónhacialaszonasurbanas,implicaquelosretosalosqueseenfrentanhoylasgrandesciudadesseancadavezmayores,conelobjetivoprimordialdeproporcionarunentornodevidasostenibley lanecesidadactualdeorientarnuestravidahacia lasostenibilidad.Porello,elprincipalobjetivodeesteTrabajoFindeGradonoesotroqueeldecontribuiralamejoradelaeficienciadelosserviciosde losentornosurbanosyconseguirundesarrollomássosteniblede losmismos,medianteeldiseñoe implementacióndeunSistemadeControlqueofrezcaunainterfazvisualenlaqueseconcentretodalainformaciónrelativa a una infraestructura de dispositivos de IoT. Este sistema se haprobadoenparticularparalainfraestructuraIoTdesplegadaenelproyectoSmartSantander.

Una adecuada gestión de los datos, nos llevará a desarrollaraplicacionesqueutilicentoda la informaciónqueproporcionandeformainteligenteyconellodarrespuestaalosretossocialesqueimperanenlaactualidad. Sin embargo, es necesario poder tener un control de lainfraestructura subyacente a través del cual el proveedor de lainfraestructura pueda en todo momento detectar funcionamientosanómalosycorregirlosoportunamente.Paraello,elobjetivoqueseaborda,eseldecrearunaPlataformadeControl(Dashboard)quefacilitelagestióndelainfraestructuraIoTsubyacenteaunaSmartCity.

Así, el alcancede este trabajo será conseguir la integraciónde unsistemadecontrol,queoperarásobrelaplataformaSmartSantander,conelfindequelosgestorescuentenconuncuadrodecontrolvisualenqueseconcentre la información relativa a toda la infraestructura, facilitando yagilizandodeestemodosugestión,medianteunainterfazvisualatractiva,atravésdelacualsepresentarálainfraestructuradesplegada.

Page 5: Integración de un Sistema de Control para una Plataforma

5

ABSTRACT

The progressive displacement of the population to urban areasimplies that the challenges of today’s large cities are growing. Its mainobjectiveistosupplyasustainableenvironmentandtherealnecessitytoorientateourlivestowardssustainability.Duetothis,theprimarypurposeof thisend-of-degreeProject is tocontribute to the improvementof theurban areas efficiency services, and to achieve a more sustainabledevelopmentforthem,throughthedesignandimplementationofaControlSystem that provides a visual interface in which all the informationregardingan IoTdevice infrastructure is gathered. This systemhasbeenparticularly tested for the IoT infrastructure deployed in theSmartSantanderProject.

Anadequatedatamanagementwillleadustodevelopapplicationswhichusealltheinformationtheyprovideinanintelligentway,andwiththat,wewillbeabletoprovideanswerstothesocialchallengesthatprevailtoday. Nevertheless, it is necessary to have control over the underlyinginfrastructure throughwhich the infrastructure supplier can at all timesdetectmalfunctionsandcorrecttheminduecourse.Forthatpurpose,theaddressedobjectiveistocreateaControlPlatform(Dashboard)thateasesthemanagementoftheunderlyingIoTinfrastructureofaSmartCity.

Thereby, the scope of this Project is to achieve the inclusion of acontrol systemwhichwill operate over the SmartSantander platform, inorder toprovidetheagentswithavisualcontrolboxthatassemblestheinformationrelatedtotheentireinfrastructure,facilitatingandspeedingupits management through an attractive visual interface, whereby thedeployedinfrastructurewillbepresented.

Page 6: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

6

ÍndiceAGRADECIMIENTOS........................................................................................3

RESUMEN.......................................................................................................4

ABSTRACT......................................................................................................5

ÍndicedeFiguras............................................................................................8

ÍndicedeTablas..............................................................................................9

ListadodeAcrónimos...................................................................................10

INTRODUCCIÓN.......................................................................11

1.1 Motivación................................................................................................11

1.2 Objetivosdelproyecto..............................................................................12

1.3 Resumenejecutivo....................................................................................13

MarcodelDesarrollo...............................................................15

2.1 InternetdelasCosas,Big-DataySmartSantander.....................................15

2.1.1 InternetdelasCosas.................................................................................15

2.1.2 BigData.....................................................................................................17

2.1.3 SmartSantander........................................................................................19

2.2 Logstash,ElasticsearchyKibana................................................................23

2.2.1 Logstash....................................................................................................23

2.2.2 Elasticsearch..............................................................................................26

2.2.3 Kibana........................................................................................................28

2.3 PlataformasCloud:Infrastructure,PlatformandSoftwareasaService.....30

2.3.1 IaaS............................................................................................................33

2.3.2 PaaS...........................................................................................................33

2.3.3 SaaS...........................................................................................................33

SistemadeControldeInfraestructurasIoT..............................35

3.1 ArquitecturadelSistema...........................................................................35

3.2 AccesoalasObservacionesdeSmartSantander........................................36

3.3 MódulodeCaptacióndeDatos.................................................................40

3.4 MódulodeAlmacenamiento.....................................................................45

Page 7: Integración de un Sistema de Control para una Plataforma

7

3.5 MódulodeRepresentación.......................................................................49

3.6 DesplieguedelSistema.............................................................................51

3.7 DashboardsdeControl..............................................................................53

DirectricesparalaExtensibilidaddelSistema...........................59

Conclusionesyfuturaslíneasdetrabajo..................................63

5.1 Conclusiones.............................................................................................63

5.2 FuturasLíneasdeTrabajo..........................................................................65

Bibliografía..............................................................................66

Anexo1.ArchivodeconfiguracióndeLogstash............................................67

Page 8: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

8

ÍndicedeFigurasFigura1.DescripciónGráficadelMundoInterconectado.............................................15Figura2.TiposdeDatosdeBigData.............................................................................18Figura3.RepresentaciónGráficadeSmartSantander...................................................20Figura4.FuncionalidadesdeLogstash..........................................................................23Figura5.ConfiguraciónAvanzadadeunaLogstashPipeline.........................................25Figura6.EjemplodeunDashboard...............................................................................30Figura7.ClasificacióndelasCloud................................................................................32Figura8.SeparacióndeResponsabilidadesdelaComputaciónenlaNube.................34Figura9.ArquitecturadelSistema................................................................................35Figura10.GráficodelaSistemáticadeunaSubscripciónaSmartSantander...............36Figura11.CreacióndeunaSubscripción.......................................................................37Figura12.ElementosdeunaSubscripción....................................................................38Figura13.ArquitecturadeLogstash.............................................................................41Figura14.CódigodelInputdeLogstash........................................................................41Figura15.CódigodelFiltrodeLogstash........................................................................43Figura16.CódigodelFiltrodeLogstash........................................................................44Figura17.CódigodelaSalidadeLogstash....................................................................45Figura18.FormatoCoordenadasdeLocalizacióndeSmartSantander.........................46Figura19.MappingdeElasticSearch.............................................................................46Figura20.EstructuradeElasticSearch..........................................................................48Figura21.InterfazWebdeKibana................................................................................49Figura22.InterfazWebdeKibana(Visualize)...............................................................50Figura23.CapturadelDashboardGeneral...................................................................53Figura24.PersonalizacióndelFiltrodelosDashboards...............................................54Figura25.VisualizacionesdelDashboardGeneral........................................................55Figura 26. Gráficas de Línea del Dashboard General. (a) Nivel de llenado de los

contenedoresdebasura(b)Niveldecargadelasbaterías.......................................................55Figura27.GráficadeÁreadelaTemperaturaMedia...................................................56Figura28.GráficosCircularesyLinealesdelNiveldeBatería.......................................56Figura29.GráficoCirculardelaBatería........................................................................57Figura30.GráficadelCampoElectromagnético...........................................................57Figura31.CreacióndeBúsquedasenKibana................................................................59Figura32.OpcionesdeVisualizacióndeKibana............................................................59Figura33.IlustracióndelosDistintosCamposenlaCreacióndeVisualizaciones........60Figura34.BarradeCreacióndeDashboard..................................................................60

Page 9: Integración de un Sistema de Control para una Plataforma

9

ÍndicedeTablasTabla1.NúmerodeObservacionesgeneradasdiariamenteenelbancodepruebasde

SmartSantander.........................................................................................................................22

Page 10: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

10

ListadodeAcrónimos

API InterfazdeProgramacióndeAplicaciones

DB BasedeDatos

DSL DomainSpecificLanguage

GFS GoogleFileSystem

HDFS HadoopDistributedFileSystem

HTTP ProtocolodeTransferenciadeHipertexto

IaaS InfraestructuracomoServicio

IoT InternetofThings

IP ProtocolodeInternet

JSON NotacionesdeObjetosJavaScript

M2M MachinetoMachine

MIT MassachusettsInstituteofTechnology

PaaS PlataformacomoServicio

REST TransferenciadeEstadoRepresentacional

SaaS SoftwarecomoServicio

TCP ProtocolodeControldeTransmisión

TIC TecnologíasdelaInformaciónylaComunicación

XML LenguajedeMarcasExtensible

Page 11: Integración de un Sistema de Control para una Plataforma

Capítulo1.Introducción

11

INTRODUCCIÓN

1.1 Motivación En las últimas décadas, estamos asistiendo a nivel mundial, a un progresivo

desplazamientode lapoblaciónhacia laszonasurbanas,o loquees lomismo,aunaprogresivaurbanización.Estehecho,implicaquelosretosalosqueseenfrentanhoyendíalasgrandesciudadesseancadavezmayores.Enestesentido,estosretossepuedenresumirenunobjetivoúnico,proporcionarunentornodevidaurbanosostenible.LasciudadesinteligentesoSmartCities,nosonsinoelresultadodelanecesidadactualdeorientarnuestravidahacialasostenibilidad.

CadavezmásciudadesimplementanlasinfraestructurasbasadasenlaInternetde lasCosas.El IoTes,entreotros,unode losnovedososhabilitadoresde lasSmartCities. El avance en la microelectrónica y la evolución que están alcanzando lastecnologíasinalámbricas,hanpermitidolaintegracióndelmundofísicoconelmundodigital.ElIoTsecomponededispositivostantofijoscomomóvilesqueinteractúanentreellos.LasinfraestructurasbasadasenlaInternetdelasCosaspermitenmonitorizarelcorrectofuncionamientodesusestructuras,asícomoadaptarsufuncionamientoantenuevoseventosdeformamásflexible.

LosobjetivosdeesteTrabajoFindeGradoestánembebidosenestosgrandesobjetivosquelasgrandesciudadestienen,yquenosonotrosquemejorarlaeficienciadelosserviciosdelosentornosurbanosyconseguirundesarrollomássostenibledelosmismos.

UnadelasclavesdelconceptodeSmartCityeslacapacidad,quelaevolucióndelasTecnologíasdelaInformaciónylasComunicacioneshapermitido,deaccederaunacantidad cada vez mayor de información acerca del entorno urbano y todos lossubsistemasqueenélcoexisten.Sinembargo,esnecesariopodergestionarymanejartalcantidaddeinformacióndetalmaneraquesepuedasintetizaryseleccionartodalainformaciónypoderhacerunbuenusodelamisma.Unaadecuadagestióndelosdatosnosllevaráadesarrollaraplicacionesqueutilicentodalainformaciónqueproporcionande forma inteligente y con ello afrontar los retos sociales y medioambientalesanteriormentereferidos.

Siunodelosretosanivelmundial,esconseguirciudadessosteniblesyeficientes,enlasquelosciudadanospuedeninteractuardeformadinámicaconlaadministracióny losservicios,unode losretosdeesteTrabajoFindeGradoescontribuirenalgunamedidaaello.

ElcontroldelaoperativadeunaplataformadelaInternetdelasCosas,requierelaobservacióndevariossistemasycomponentesqueseencuentrandistribuidosenunaarquitecturademúltiplesniveles.Portodoello,elobjetivodelTrabajoqueseaborda,es el de crear una Plataforma de Control (Dashboard) que facilite la gestión de laInfraestructuraIoTsubyacenteaunaSmartCity.

Page 12: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

12

Asumirunatareadegestióndeunainfraestructuraquepuedellegaracontenermillaresdedispositivos,sepuedeconvertirenunprocesomuyengorroso,quenoharíasinolimitarlacapacidaddereacciónyanálisisdelgestorresponsabledeestaplataformasi se hace de forma manual.�La infraestructura desplegada por el ProyectoSmartSantander,nosofrecelaposibilidaddedesarrollareinvestigarnuevosprotocolosytecnologíasderedenelentornodelasredesdesensores.Dehecho,elserlaciudaddeSantanderprobablementelaciudadquecuentaconmássensoresdelmundo(sehandesplegadomásde20000dispositivosenlaciudadyentornosparadiferentesámbitosdeaplicación)animóalarealizacióndeesteproyectoquesepresenta.

ConesteProyectosepretendeconseguirlaintegracióndeunsistemadecontrol,queoperarásobrelaplataformaSmartSantander,conelfindequelosgestorescuentenconuncuadrodecontrolvisualenelqueseconcentrelainformaciónrelativaatodalainfraestructura.

El cuadro de control diseñado será accesible víaweb y el sistema de controlestará basado en tres herramientas propietarias de Elastic: Logstash(módulo decaptacióndedatos);Elasticsearch(módulodealmacenamiento)yKibana(móduloderepresentación).

1.2 Objetivos del proyecto ElprincipalobjeticodeesteTrabajoes:

DiseñareimplementarunSistemadeControlqueofrezcaunainterfazvisualenelqueseconcentretodalainformaciónrelativaalainfraestructuradedispositivosIoTdesplegadaenelproyectoSmartSantander.

Este Sistema de Control permitirá que se opere sobre la plataforma deSmartSantander,quelosgestorescuentenconuncuadrodemandoquefaciliteyagilicesu gestión, así como una interfaz visual atractiva a través de la cual presentar lainfraestructuradesplegada.

Paraconseguiresteobjetivo,sehaprocedidoa:

• Conocerlatipologíadedatosproporcionadaporlossensores.SehaestudiadoelmodelodedatosutilizadoporSmartSantanderalahoradegenerarlainformación.ConocerycomprenderelmodeladodelainformaciónesfundamentalparasuposteriortratamientoporpartedelSistemadeControldesarrolladoenesteTrabajo.

• Capturarlosdatosquenosproporcionanparaprocederasuanálisis.Paraellosehanevaluado lasdiferentesopcionespermitidaspor laplataformadeSmartSantanderyseleccionadalaquemejorseajustaa las tecnologías empleadas por el Sistema de Control que se hadesarrollado.

• Estudiarycomprendercadaunadelasherramientasintegradasenel

SistemadeControl.Esteestudiohapermitidoquesehayanadquirido

Page 13: Integración de un Sistema de Control para una Plataforma

Capítulo1.Introducción

13

losconocimientosnecesariosenlaimplementaciónygestióndelasmismas,parapoderexplotarsusposibilidadesysuutilización,quenosllevenaunaexitosapuestaenfuncionamientodeesteTrabajo.

• IntegrarydesarrollarelSistemadeControlhasido laúltimade las

tareasdesempeñadas.

1.3 Resumen ejecutivo ElTrabajoFindeGradoquesepresentaestádivididoencincocapítulos.Enel

primercapítulo,apartedelpresenteresumenejecutivo,sellevaacabounaexposicióndelasmotivacionesquehanllevadoaldesarrollodelmismo,asícomolosobjetivosquesepretendenconelmismo.

Enelsegundocapítulo,sedescribeelmarcotecnológicoenelquesehabasadoesteTrabajo,abordandoenprimerlugarconceptosyestudiosdelaIoT,BigData,asícomo la descripción del Proyecto SmartSantander. En segundo lugar, se describen yestudianlasherramientasLogstash,ElasticsearchyKibana,culminandoelcapítuloconladescripciónsomeradelasplataformascloud.

El tercer capítulo se centra en el Sistema de Control de Infraestructuras IoT,incluyendolaarquitecturadelsistema,elaccesoalasobservacionesdeSmartSantanderydesarrollandolosmódulosdecaptacióndedatos,eldealmacenamiento,asícomoelmóduloderepresentación.DesarrollandofinalmenteenestecapítuloeldesplieguedelsistemaylosDashboardsdecontrol.

A continuación, en el capítulo cuarto se especifican las directrices para laextensibilidad del sistema mediante un pequeño tutorial explicando las distintasposibilidadesdeampliacióndelosdistintosDashboards.

Enelquintoyúltimocapítuloseexpondrántodas lasconclusionesalcanzadastrasanalizarlosresultados,asícomolasposiblesfuturaslíneasdetrabajoquequedanabiertas.

Page 14: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

15

MarcodelDesarrollo

2.1 Internet de las Cosas, Big-Data y SmartSantander

2.1.1 Internet de las Cosas

La Internetde lasCosas (IoT, por sus siglas en Inglés) esun conceptoque serefierealainterconexióndigitaldelosobjetoscotidianosconinternet.

LaIoT,sebasaensensores,enredesdecomunicacionesyenunainteligenciaquemanejatodoelprocesoylosdatosquesegeneran.Lossensoressonlossentidosdel sistema y para que puedan ser empleados de forma masiva, deben tener bajoconsumoycoste,unreducidotamañoyunagranflexibilidadparasuusoentodotipodecircunstancias.

Figura1.DescripciónGráficadelMundoInterconectado

Esteconcepto,fuepropuestoporKevinAshtonen1999enelAuto-IDCenterdelMIT1,dondesellevabanacaboinvestigacionesenelcampodelaidentificaciónporradiofrecuenciaytecnologíasdesensores.

1MIT:“MassachusettsInstituteofTechnology”

Page 15: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

16

LaIoT,enesencia,esunsistemadecomunicacióndemáquinaamáquina,perosusimplicacionesvanmuchomásalláquesimplementelainterconexióndedispositivos.

AligualqueocurreconlaInternet,supotencialsedesvelacuandoseplanteanlasaplicacionesquepuedellegarasoportar.LosdatosdelaIoTcreanoportunidadesparaanalizarlasituacióndeunentornoenunmomentodadoyactuarenconsecuencia,habida cuenta de que no sólo se interconectan dispositivos sensores sino tambiénactuadores.

Desdehacemuchosañossevienetrabajandoconlaideadehacerunpocomásinteractivos todos los objetos deuso cotidiano.Así la IoT, permitequeobjetos, queantiguamente se conectaban mediante circuitos cerrados, como comunicadores,cámaras,sensoresydemás,(loquesehavenidoadenominarInternet-of-Things)ahorasepuedanexportarsusserviciosdemaneraglobalatravésdelaredderedes.

Sepodríapuesdefinir,comounaredqueinterconectaobjetosfísicosvaliéndosedeInternet.Sevaledeunhardwareespecializadoquelepermitenosólolaconectividadainternet,sinoquetambiénprogramaeventosespecíficosenfuncióndelastareasqueleseandictadasremotamente.

NohayuntipoespecíficodeobjetosconectadosalaIoT,enrealidadsonobjetosquefuncionancomosensoresyobjetosquerealizanaccionesactivas.CadaunodelosobjetosconectadosaInternet,tieneunadirecciónIPespecíficaymedianteesadirecciónIPpuedeseraccedidopara recibir instrucciones.Asímismo,puedecontactarconunservidorexternoyenviarlosdatosquerecoja.

LaIoT,nohaencontrado,alcontrarioqueotrastecnologías,sufocodeexpansiónen el mercado del consumo. Si bien Apple y Google han dado algunos pasos contecnologíascomoHomeKityAndroidHome,esenelsectorprivado,dondeelinternetdelascosasseestáhaciendocadavezmáspopular:

• Cadavezmásciudades implementanlas infraestructurasbasadasen laIoT: control de semáforos, puentes, vías de tren, permitiendo de estemodo monitorear el correcto funcionamiento de sus estructuras, asícomo adaptar más flexiblemente su funcionamiento ante nuevoseventos.LasaplicacionesIoTquepodemosencontraractualmenteenlasciudades inteligentes son variadas, como aparcamientos inteligentes,controldetráfico,alumbradosinteligentes…

• Casas inteligentes, en las que el objetivo es lograrmejores niveles de

confortmientrassedisminuyeelgastototal.• En la industria de producción en masa, cada vez más empresas

centralizanelcontroldelainfraestructuraenloqueseconocehoyendíacomoFactoría4.0

Page 16: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

17

• Además, en el sector de la salud y del control ambiental, también se

vislumbraun granpotencial para la IoT (p.ej. telemedicina, control deincendios,etc).

Si bien haymuchasmaneras en que la IoT podría afectar a la sociedad y losnegocios,estassepuedencondensarentresgrandesáreasquesoncomunesacualquieraplicacióndelasqueseintuyetengalaIoT,asaber,comunicación,controlyahorrodecostes.

Unpunto importantede la IoT,esque requeriráhabilidadesy conocimientosespecíficos combinados (tecnológicas, matemáticas o de funcionamiento de lasorganizaciones), en un perfil que hasta ahora no existía. Esto abrirá nuevasoportunidades de trabajo, como son los llamados gestores de datos que requierenconocer y manejar las nuevas herramientas para la captura, el análisis y elaprovechamientodelosdatos.

2.1.2 Big Data

SedenominaBigDataalagestiónyanálisisdeenormesvolúmenesdedatosquenopuedensertratadosdemaneraconvencional,alsuperarloslímitesycapacidadesdelasherramientasdesoftwarequehabitualmenteutilizamosparalacaptura,gestiónyprocesamientodedatos.

Esunconceptoqueenglobatecnologíasyserviciosdeinfraestructurasquehansido creados para dar solución al procesamiento de grandes conjuntos de datosestructurados,semiestructuradosonoestructurados.

Los datos estructurados son aquellos que tienen longitud y formato y quepuedenseralmacenadosentablas;losdatosnoestructuradossonaquellosquecarecendeunformatodeterminadoyquenopuedenseralmacenadosenunatabla,puedenserde tipo texto (documentos Word) y de tipo no texto (audio, video); y lossemiestructurados,aquellosquenopertenecenabasesdedatosrelacionalesyaquenoselimitanacamposdeterminados(documentosXML,HTML...).

ElobjetivodeBigData,esconvertir losdatosa información, facilitandoasí latomadedecisiones,inclusoentiemporeal.Peroquizá,comopiensanlamayoríadelosexpertos,másqueunacuestióndetamaño,esunacuestióndeoportunidaddenegocio.

HablamosdeBigDatacuandolosvolúmenessuperanlacapacidaddesoftwarehabitualparasermanejadosygestionados.Cuandosehabladegrandesvolúmenes,seestá hablando de Terabytes o Petabytes. Así, esto permite incluir en este tipo de

Page 17: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

18

proyectos informaciones(logs)quehastahacepocotiemponoseutilizabaporquelatecnologíanopermitíaprocesarlosenuntiemporazonable.

La gestión de una información desestructurada precisa de una tecnologíadiferenteypermitetomardecisionesbasadaseninformaciónquetienenimportantesgradosdeinexactitud.Muchosdeestosalgoritmosserelacionanconlostratamientosdesistemasavanzadosdelógicadifusa.

Peroademásdelgranvolumendeinformación,existeunagranvariedaddedatosquepuedenserrepresentadosdediversasformasentodoelmundo,porejemplodesistemasGPS,dispositivosmóviles,video,audio,anemómetros,etc,loscualespuedenmedirycomunicarelmovimiento,elposicionamiento,latemperatura,lahumeda,etc.detalformaquelasaplicacionesqueanalizanestosdatosrequierenquelavelocidadderespuestasealomásrápidaposibleparalograrobtenerlainformacióncorrectaenelmomentopreciso.

Si bien existe una amplia variedad de tipos de datos a analizar, la Figura 2muestralosmásutilizados:

1. Web and Social Media, incluye contenido web e información que es

obtenidadelasredessocialescomoFacebook,Twitter,etc.

Figura2.TiposdeDatosdeBigData

Máquina-a-Máquina

• Contadoresdeconsumoeléctricos

• EtiquetasRFID• Sensoresdelecturade

plataformaspetrolíferas• SeñalesGPS

WebandSocialMedia

• TwitterFeeds• FacebookPostings• WebContent

DatosBiométricos

• ReconocimientoFacial

• Genética

DatosGeneradosporHumanos

• Grabacionesdecentrosdellamadasdevoz

• Email• Registroselectrónicosmédicos

• Registrodetalladodellamadastelefónicas

• Registrosdefacturacióndeserviciospúblicos

GrandesTransaccionesdeDatos

Page 18: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

19

2. Máquina-a-Máquina (M2M), que se refiere a las tecnologías quepermitenconectarseaotrosdispositivos.

3. GrandesTransaccionesdeDatos,queincluyeregistrosdefacturación.4. DatosBiométricos,queeslainformaciónbiométricaenlaqueseincluyen

huellasdigitales,reconocimientosfaciales…5. DatosGeneradosporHumanos,comonotasdevoz,correoselectrónicos,

estudiosmédicos…

Componentes de una plataforma Big Data

Actualmentequientieneelliderazgoentérminosdepopularidadparaanalizarenormescantidadesdeinformación,eslaplataformadecódigoabiertoHadoop2.

Hadoop, está inspirado en el proyecto de Google File System (GFS) y en elparadigma de programación MapReduce, el cual consiste en dividir en dos tareas(mapper-reducer)paramanipularlosdatosdistribuidosanodosdeunclúster,lograndounaltoparalelismoenelprocesamiento.

Hadoopestácompuestodetrescomponentes:HadoopDistributedFileSystem(HDFS),HadoopMapRduceyHadoopCommon.

PeromásalládeHadoop,unaplataformadeBigData,consisteenunecosistemadeproyectosqueen conjuntopermiten simplificar, administrar, coordinar y analizargrandesvolúmenesdeinformación.

2.1.3 SmartSantander

SmartSantanderesunproyectodeinvestigacióncientíficapertenecienteal7ªProgramaMarco de la Comisión Europea, en el que se han diseñado, desplegado yvalidado una plataforma para la experimentación en la IoT compuesta por más de20.000dispositivos ( sensores, captadores, actuadores, cámaras, terminalesmóviles,etcétera)portodalacapitalcántabra,formandounespaciovirtualdondelosobjetossecomunicanentresíytrasmiteninformaciónparalaspersonasconelfindemejorarsubienestar(calidaddevida).

Elcampodepruebasque laciudadofrece,creaunesquemadecolaboración,entrelopúblicoyloprivado,cuestiónquehasidodesdeelinicio,unodelosmotoresdelproyectoSmartSantander,noyasóloenelProyectoEuropeoqueledionombre,sinoenelglobaldelaideadeSantandercomociudadinteligente

2Hadoop:“frameworkdesoftwarequesoportaaplicacionesdistribuidasbajounalicencialibre”.

Page 19: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

20

SmartSantanderseencuadradentrodelretodelasRedesUbicuasyConfiableseInfraestructurasdeServicio,conelobjetivodestinadoadesarrollarlainvestigación,enrelaciónalaInternetdelFuturo,basadaenlaexperimentaciónsobreinfraestructurasreales.

El núcleo principal de las instalaciones que comprenden más de 20000dispositivos,selocalizaenlaciudaddeSantanderysusalrededores,incluyendopuntossingularesdelaComunidaddeCantabria.

Figura3.RepresentaciónGráficadeSmartSantander

SmartSantander es una aplicación real y a gran escala de la llamada“computaciónubicua”,yestacomputaciónesunparadigmadelatelemáticaquetieneporobjeto la integracióndepequeñosdispositivosysensoresentodo losaparatosyobjetosdenuestravidacotidiana,detalformaquesepuedaninterconexionarseentreellos,pudiéndoseintercambiardeestemodoinformaciónútilentreellos.LoquesehavenidotambiénallamarcomunicaciónMáquinaaMáquina(M2M).

Como vemos en la Figura 3, los dispositivos que utiliza son demuy pequeñotamaño(nodos),conunacapacidaddecomputaciónmuy limitada,peroa losqueesposible acoplar sensores de diversa naturaleza para que puedan captar datos delentorno.Estosdatosfluyenatravésdelaredhastaunpuntodeconcentracióndondelainformaciónquecaptanlossensoresestratadaconelobjetodeobtenerunservicioútil.

Page 20: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

21

Para laconsecuciónde losobjetivosdelproyecto, laplataformasoftwarey lainfraestructurafísicadesplegadadebenofrecerunaseriedecaracterísticasnecesariasparaquelafuturaexperimentaciónpuedarealmentesuponerunavancecualitativoenla investigación e innovación de los campos de la IoT, las Ciudades Inteligentes y laInternetdelFuturo.

Plataforma SmartSantander

LaplataformaSmartSantander, sebasaenunaarquitectura formadapor tresniveles:

• Nivel de Dispositivo IoT, que proporciona el sustrato necesariocompuestopor lospropiosdispositivos;estos son recursos limitadosyexportandatosfiablesqueaseguranconunaseriedemedidas.

• ElniveldeGatewayIoT,queenlazalosdispositivosIoTenlosbordesdelaredaunainfraestructuraderedcentral.

• ElniveldeServidor,quedisponededispositivosdegrancapacidad,loscualessonconectadosdirectamenteconlainfraestructuraderedcentral.Los servidorespuedenusarse como repositorios dedatos IoT, y comoservidoresdeaplicaciónquepuedenserconfiguradosparaofrecerunagranvariedaddediferentesserviciosIoTyaplicaciones.

Análisis de generación de datos de implementación de ciudades

Dada la gran cantidad de datos que se generan y deben ser manejados,almacenadosypuestosadisposición,enestasecciónseresumirálaformaenquesegeneranylascifrasaproximadasdedatosatratar.

Patronesdegeneracióndedatos

El patrón de generación de datos se define por el servicio para el que estádestinado.Podemosidentificardospatrones:eldegeneracióndeobservaciónperiódicaydebasadaeneventos.

Los dispositivos IoT programados con el patrón de observación periódicainformarán una observación que contiene la información detectada en una base defrecuencia configurable ( Dispositivos para servicios de vigilancia ambiental, deintensidaddeltráficoyderiesgosdeparquesyjardines).SinembragolosdispositivosdeIoTquesededicanalestacionamientoalairelibrefuncionanenformadeevento,asísolo informan sobre la detección de un cambio en el parámetro que estánmonitorizando(SensibilizaciónParticipativa).

Page 21: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

22

Cantidaddedatosgenerados

Uno de los objetivos de la plataforma SmartSantander era apoyar laexperimentaciónavanzadadelaIoT,yparaelloydadoqueelpatróndegeneracióndeobservaciónperiódicaesconfigurable,elobjetivoeraestablecerunaaltafrecuencia.

Teniendoencuentasólolasnecesidadesdeservicio,lafrecuenciaseleccionadaconduce a una situación de sobremuestreo. Sin embargo, esto permitió unaexperimentaciónmásamplia.Paralamayoríadelosdispositivos,elperíododetiempoutilizadoparainformardelasnuevasobservacionessefijóencincominutos.Paralosdispositivosqueusanelpatróndegeneracióndeobservaciónbasadoeneventos,elnúmerodeobservacionesreportadasdependesolamentedelusorealdelservicio.

LaTabla1resumeelnúmerodeobservacionesgeneradasdiariamentedentrodellechodepruebasSmartSantanderduranteMarzode2014.

Tabla 1. Número de Observaciones generadas diariamente en el banco de pruebas deSmartSantander

Este Proyecto, es único en el mundo y ofrecerá un excelente campo deexperimentación a la comunidad científica europea, puesto que SmartSantanderestablecerálasbasesparalacomunicaciónentreelementosheterogéneos,permitiendolafederaciónconotrasredesdesimilarnaturalezaenelrestodeEuropayelmundo.EsteProyecto,haceposiblequeconlagrancantidaddesensoresdequedispone,secumplaelobjetivodeconstruiruna“CiudadInteligente”.

Servicio ObservacionesdiariasMonitoreoambiental 139.370

IrrigacióndeParquesyJardines 8,365MonitorizaciónAmbientalMóvil 82.726Ocupacióndeaparcamiento 13.489

Lagestióndeltráfico 54.720DetecciónParticipativa 6.352Realidadaumentada 1.489

Page 22: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

23

2.2 Logstash, Elasticsearch y Kibana

2.2.1 Logstash

Logstashesunpotentemotorderecopilacióndedatosdecódigoabiertoconcapacidadesdepipeliningentiemporeal.Permiteunificardinámicamentelosdatosdediferentes fuentes y normalizar los datos a un único modelo, así como hacer queconverjanaldestinoodestinosqueseelijan.

Logstash,aunqueinicialmentenacióparalarecopilaciónderegistros,poseeunacapacidad que va mucho más allá de ese uso. Cualquier tipo de evento puede serenriquecido y transformadomediante distintos tipos de plug-ins (entrada, filtrado ysalidas).

Principales funcionalidades de Logstash

• ProcesamientodedatosescalablehorizontalmenteconunafuertesinergiaconElasticSearchyKibana.

• Arquitecturadetuberíasconectable:recolectar,mapearyorganizardiferentesentradas,filtrosysalidas.

• Comunidadextensibleyecosistemadeplug-insparalosdesarrolladores:másde200plug-insdisponibles,abiertalaposibilidaddecrear,desarrollarycompartirconlacomunidad.

Figura4.FuncionalidadesdeLogstash

Page 23: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

24

Fuentes de datos para Logstash

Logstash,fuediseñadopararecopilardatosprovenientesdeficherosdelogsconel fin de pre-procesarlos y enviarlos a un sistema de almacenamiento. Pero laherramienta ha evolucionadomucho y existemultitudde entradas quenos permiteobtenerdatosdesdefuentesdedatosdelomásvariado.

LasfuentesdedatosparaLogstashsonmúltiples,ylomásimportanteesquesonampliables.Losejemplosmásdesarrolladosporlacomunidadson:

§ LogsyMétricas:• Manejatodotipodedatosderegistro

o RegistroswebcomoApache,Registrosdeaplicacionescomolog4jparaJava…

o Capturaotrosformatosderegistroscomosyslog,eventosdeWindows,deredycortafuegos,ymuchosmás…

• Recoge las métricas de Ganglia3, collectd4, NetFlow5, JMX6 ymuchas otras plataformas de infraestructuras y aplicacionessobreTCPyUDP

§ LaWeb

• Transformalaspeticioneshttpeneventos.o Captura de métricas y otros tipos de datos de las

interfacesdeaplicacionesWeb.

§ SensoreseIoT

Explora una anchura expansiva de otros datos. Logstash puedeformarlacolumnavertebralderecopilacióndeeventosparalaingestióndelos datos enviados desde dispositivos móviles a las casas inteligentes,vehículos,ymuchasaplicacionesespecíficasdelaindustria.

3Glanglia: “softwarequeproveemonitoreoen tiempo real yejecucióndeambientes. EnlazalíneasdeClusterycomputación”.

4Collectd: “programa informático que recoge del sistema las aplicaciones métricasperiódicamenteyproporcionamecanismosparaalmacenarlosvalores”.

5Netflow: “protocolo de red desarrollo por Cisco Systems para recolectar información sobretráficoIP”.

6 JMX: “tecnologíaquedefineunaestructurade gestión, laAPI, los patronesdediseño y losserviciosparalamonitorizacióndeaplicacionesbasadasenJAVA”.

Page 24: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

25

CONFIGURACION DE UNA LOGSTASH PIPELINE

La operativa de Logstash se organiza alrededor del concepto de PipelineLogstash.UnaPipelineLogstash,enlamayoríadeloscasos,tieneunaomásentradas,unaseriedefiltrosyunoovariosplug-insdesalida.Lacantidad,tipoyoperativadecadaunodeestoselementosdentrodeunaPipelineLogstashsedefineatravésdeunarchivodeconfiguración.

TalycomoseveenlaFigura5,enunPipelineLogstash,lasfuentesdedatossecanalizanatravésdeunInputplug-in.Esposibletenervariasfuentesutilizandoelmismoplug-inousandodistintosInputplug-ins

Losfiltrosoperansobreloseventosqueseproducendesdelasfuentesdedatosmoldeándolos, adaptándoloso interpretándolos según seanecesario.Porúltimo, losplug-insdesalidapermitenalmacenarloseventosunavezmodificados.

• Algunasentradasmásutilizadasson:§ File:seleedeunarchivoenelsistemadearchivos,aligual

queelcomandoUNIX“tail-0F”§ Syslog:escuchaenelpuerto514yloanalizadeacuerdo

conelformatoRFC3164.§ Redis:leedesdeunservidorRedis7,usandoamboscanales

y listas redis. Redis es utilizado con frecuencia comointermediarioenunainstalacióncentralizadaLogstash.

§ Beats:procesaeventosenviadosporFilebeat.

7Redis:“setratadeunservidordecachédememoriaqueconocelaestructuradelosdatosquealberga”.

Figura5.ConfiguraciónAvanzadadeunaLogstashPipeline

Page 25: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

26

• Algunosfiltrosútilesson:§ Grok: analiza y estructura arbitrariamente el texto. Es

actualmente lamejormanera en Logstash para analizarlos datos de registro no estructurados en algoestructuradoyconsultable.

§ Mutate:realizatransformacionesgeneralesenloscamposdeloseventos.Puederenombrar,eliminar,reemplazarymodificarloscamposentuseventos.

§ Drop: omite un evento, por ejemplo, depuración deeventos.

§ Clone: realiza una copia de un evento, añadiendo oquitandocampos.

§ Geoip: añade información sobre la ubicación geográficamediantelasdireccionesIP.

§ Lassalidashacenreferenciaalafasefinal.Uneventopuedepasaratravésdevariassalidas,perounavezqueelprocesodesalidasehacompletado,eleventohafinalizadosuejecución.Algunassalidasincluyen:

• Elasticsearch: envía los datos de los eventos aElasticsearch.

• File:escribelosdatosdeuneventoenunficherodeldisco.• Graphite:envíalosdatosdeloseventosaGraphite8.• StatsD:envíalosdatosdeloseventosaStatsD9.

Existe una cuarta funcionalidad dentro de Logstash que ofrece una formademanejarloseventosmásalládelosfiltros.Loscodecs,sonfiltrosquepuedenfuncionarcomopartedeunaentradaosalida.Permitensepararfácilmenteeltransportedesusmensajesdesdeelprocesodepublicación.Destacan:JSON,multilineyplain.

2.2.2 Elasticsearch

Elasticsearchesunmotordebúsquedayanálisisdetextodecódigoabiertodegranescalabilidad.Seutilizageneralmentecomotecnologíasubyacenteparafuncionescomplejas.Nospermitealmacenar,buscaryanalizargrandesvolúmenesdedatosde

8Graphite:“unapopularherramientadecódigoabiertoparaelalmacenamientoyrepresentacióndemétricas”.

9StatsD:“esunasimpleherramientadesarrolladaporEtsyparaagregaryresumirlasmétricasdeapliaciones”.

Page 26: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

27

formamuyrápidayentiempocasireal.Vamásalládelabúsquedaportextograciasaun Lenguaje de Dominio Específico (DSL, por sus siglas en Inglés, Domain SpecificLanguage) y una Interfaz de Programación (API, Application Programming Interface)parabúsquedasmáscomplicadas.

Pordefecto,sepuedeesperarunretrasodeunsegundodesdeelmomentoenelqueelíndiceseactualizaoborrasusdatoshastaelmomentoenqueaparecenlosresultadosdebúsqueda.Estaesunadistinciónimportanteconotrasplataformas.

Sebasaenlossiguientesconceptos:

• Cluster: Es un conjunto de uno o más nodos que mantienen toda lainformación de manear distribuida e indexada. Cada cluster estáidentificadoporunnombre,quepordefectosellamaElasticsearch.

• Nodo:formapartedeuncluster,almacenandoinformaciónyayudando

alastareasdeindexaciónybúsquedadelcluster.

• Index: es una colección de documentos que tiene característicassimilares.

• Sharding y Réplicas: cuando la información que estamos indexando

sobrepasa el límite de una sola máquina, Elasticsearch nos ofrecedistintasmanerasdesaltarnosesta limitación.ElShardingnospermitedividirestosíndicesendistintaspiezas,ofreciéndonoslaposibilidaddeescalarhorizontalmente,ademásdeparalelizarydistribuir lasdistintasoperacionesquehagamossobreestosíndices.Lareplicaciónnosofreceunmecanismoparaqueencasodefalloelusuarionoseveaafectado.

HayquedestacarcomocaracterísticasdeElasticsearch:

• Esunaplataformadebúsquedaentiempocasireal(NRT)

• ElasticsearchproporcionaunaAPImuycompletaypotenteRESTquesepuedeutilizarparainteractuarconelclúster.

• Ademásdesercapazdereemplazardocumentos,sepuedenactualizar,

eso sí cada vez que queramos hacer una actualización, Elasticsearcheliminaeldocumentoyluegoloactualizaenunasolatoma.

• Escapazderealizarmúltiplesoperacionesdeformarápida,evitandola

reddeidayvueltamedianteunaAPIconcisaysimplificada.

Page 27: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

28

• Elasticsearchnorequierequelecreendeformaexplícitauníndiceantesde poder indexar documentos en él, Elasticsearch crearáautomáticamenteelíndicesinoexistieradeantemano.

• Elasticsearch, proporcionaun lenguaje especificodedominiode estilo

JSON,quesepuedeutilizarparaejecutarconsultas.EstoseconocecomoelDSLdeconsulta.

• ElasticsearchestáconstruidousandoJava,yrequierealmenosJava7,ya

quelasversionesanteriorespodríandañarlo.ÚnicamenteJavadeOracleyelOpenJDKsoncompatibles.

2.2.3 Kibana

KibanaesunaplataformadeanálisisyvisualizacióndecódigoabiertodiseñadaparatrabajarsobreíndicesdeElasticsearch.Permitebuscar,vereinteractuarconlosdatos almacenados en los índices Elasticsearch. Puede realizar fácilmente análisisavanzadodedatosyvisualizar losdatosenunaampliavariedaddegráficos, tablasymapas.

Kibanafacilitalainterpretacióndegrandesvolúmenesdedatos.Contieneunasencillainterfazgráficabasadaenunnavegadorweb,permitiendocreardeformarápidadistintospanelesdinámicosdelasconsultasdeElasticsearchentiemporeal.

Se puede instalar Kibana y comenzar a explorar los índices Elasticsearch encuestióndeminutos,sinningunainfraestructuraadicionalrequerida.

LaconfiguracióndeKibanaessimple,tendremosqueindicardondeseencuentraElasticsearch.

ConceptosbásicosdelfuncionamientodeKibana:

• KibanayElasticsearch.Asignacióndinámica:

De formapredeterminada,Elasticsearch,permiteelmapeodinámicopara loscampos. Kibana necesita de dicho mapeo para manejar los distintos campos en lacreación de las visualizaciones, así como para poder gestionar búsquedas,visualizacionesycuadrosdemando.

• ConexiónKibana-Elasticsearch:

Antes de empezar a utilizar Kibana, hay que configurar en Elasticsearch, quéíndicessedeseanexplorar.Asísenospedirádefinirunpatróndeíndices.

Page 28: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

29

• Visualización:

Lasherramientasdevisualizaciónpermitenmostrarlosaspectosdelosconjuntosde datos de diferentes maneras. Las visualizaciones dependen de Elasticsearch“agregaciones”,endostiposdiferentes:agregacionesdetuboyagregacionesmétricas.

• AccesoaKibana:

Kibanaofrecesusvisualizacionesatravésdeunaaplicaciónweb.Elpuntoenelqueescudaelservidorwebquesoportaestaaplicaciónesfácilmenteconfigurable.Deesta formael usuario solo tienequeutilizar sunavegadorwebpara acceder a estasvisualizaciones.

• Mecanismosdedesbordamientos:

Se pueden explorar interactivamente los datos de la página Discover. Así setendráaccesoatodoslosdocumentosquecoincidenconelpatróníndiceseleccionado.Sepuedenenviarconsultasdebúsqueda, filtrar losresultadosdebúsquedayver losdocumentos. Tambiénpodemosverelnúmerodedocumentosque coinciden con laconsultadebúsquedayobtenerestadísticasdevalordecampo.

LapantalladeDiscoverestácompuestapor:

o SearchBaro Timefiltero FieldSelectoro DateHistogramo LogView

• TiempodeFiltrado:

El tiempo de filtrado restringe los resultados de búsqueda a un periodo detiempo específico. Así, se puede establecer un filtro de tiempo si el índice contieneeventosbasadoseneltiempoyuncampodehorasiestáconfiguradoparaelpatróndeíndice seleccionado. Por defecto, el filtro de tiempo se establece en los últimos 15minutos.

• Búsquedadeíndices:

Sepuedenbuscarlosíndicesquecoincidenconelpatrónactual,medianteunabúsquedaespecíficaqueseencuentraenlapáginaDiscover.Asísepuedenintroducircadenasdeconsultassimples,utilizandoelLucene,ousarlacompleta,basadaenJSON.

Page 29: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

30

• Visualización:

A través de “visualize”, se pueden diseñar las visualizaciones de datos. Sepuedenguardar,utilizardeformaindividualocombinarlasenuntablerodemandos.

Lavisualizaciónpuedebasarseenunodelossiguientestiposdefuentesdedatos:

o Unanuevabúsquedainteractiva.o Unabúsquedaguardada.o Unavisualizaciónguardadaexistente.

• Dashboard:

UnDashboard(Figura6)muestraunconjuntodevisualizacionesguardadosengruposquesepuedenorganizarlibremente.Puedeguardaruncuadrodemandosparacompartirovolveracargarenunmomentoposterior.

Figura6.EjemplodeunDashboard

2.3 Plataformas Cloud: Infrastructure, Platform and Software as a Service

La computación en la nube (cloud computing) es un término que muchosencuentranconfuso.Sinembargo,noestanconfusocomosuena.Dehecho,lamayorpartedelosquenocomprendenelconceptosonpartedelamayoríaquelautilizana

Page 30: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

31

diario.

Entérminossencillos,lacomputaciónenlanubeeselconceptoutilizadoparadescribir los distintos escenarios en los que los recursos de computación se ofrecencomounservicioatravésdeunaconexióndered(porlogeneral,setratadeInternet).

Porlotanto,lacomputaciónenlanubeesuntipodecomputaciónquesebasaen el intercambio de un conjunto de recursos físicos y/o virtuales, en lugar deimplementarhardwareysoftwarelocalopersonal.Nodejadesersinónimodeltérmino“utilitycomputing”yaquelosusuariossoncapacesdeaccederaunaofertaderecursosde computación en lugar de gestionar el equipo necesario para generarlos por símismos; de lamismamanera que un consumidor aprovecha el suministro eléctriconacional,envezdeejecutarsupropiogenerador.

Una de las características fundamentales de la computación en la nube es laflexibilidadqueofreceyellosesdebidoasuescalabilidad.Serefierealacapacidaddeunsistemaparaadaptarseyescalarloscambiosenlacargadetrabajo.Latecnologíaenlanubepermitedeformaautomáticaproveerydesproveerderecursoscomoycuandoseanecesario,asegurandoasíqueelnivelderecursosdisponiblesseamuysimilaralademanda requerida tanto como sea posible. Esto lo diferencia de otrosmodelos decomputación donde los recursos se entregarán en bloques (por ejemplo, servidoresindividuales,aplicacionesdesoftware,aplicacionesdedescargadesoftware),lamayoríaconcapacidadesfijasycostosiniciales.Mediantelacomputaciónenlanube,elusuariofinalpagasóloporlosrecursosqueconsuma,evitandoasílosgastoseineficienciadecualquierrecursoquenoutilice.

Sinembargo,nosolounadelasventajasdelanubeeslaflexibilidad.Laempresatambiénpuedebeneficiarse(endiversosgrados)delaseconomíasaescalacreadasporlacreacióndeserviciosenmasaconlosmismosentornosinformáticos,ylafiabilidaddealbergarserviciosfísicamenteatravésdemúltiplesservidoresenquelosfallosdelossistemasindividualesnoafectenalacontinuidaddelservicio.

CentrándonosenlasdistintasclasesdeCloud,podemosdistinguir:

§ Clientesquelausan§ Serviciosofrecidos

Enfuncióndelosclientesquelausan(Figura7),sedistinguen:

• NubePública:esunanubeenlaquelosserviciosylainfraestructuraestánalojadosenunaorganizaciónexternaygestionadosporellamisma.Enestetipodenubesemezclantantotipodedatoscomoprocesosdedistintosclientesen losdistintosservidores, sistemasdealmacenamientoyotrasinfraestructuras requeridas por la propia nube, accediendo a ellos elusuario finala travésdemaneraremota,como Internet.Elbeneficiodeestetipodenubeseselabanicodepreciosylaredundancia,sinembargo,sonmásvulnerablesquelasconfiguracionesdenubesprivadas,debidoasusaltosnivelesdeaccesibilidad.

Page 31: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

32

• Nubeprivada:lagrandiferenciarespetoalapúblicaeslaautogestióndela

misma,aumentandolosnivelesdecontrolyseguridad.Estorepercuteenlos costes, debido a la creación más personalizada de los serviciosdemandadosporelcliente(softwareyhardwareespecifico).

• NubeHíbrida:comosupropionombreindica,esunacombinacióndeambas(pública y privada). Esto permite al cliente maximizar su eficiencia,mediantelautilizacióndelanubepúblicaparalasoperacionesnosensiblesmientras que para las operaciones sensibles o críticas usaría la nubeprivada, asegurando así al cliente una configuración de computaciónacordeasusnecesidadesysinelevarloscostes.

Porotraparte,tenemoslaclasificaciónenfuncióndelosdistintosmodelosdeserviciosdecomputación,clasificadosen:

o IaaS(InfraestructuracomoServicio).o PaaS(PlataformacomoServicio).o SaaS(SoftwarecomoServicio).

CLOUDPRIVADO CLOUDHIBRIDO CLOUDPÚBLICO

• Mixdelosanteriores• Incertidumbressobre

calidad• Incertidumbressobre

seguridad• Adecuadoenescenarios

dedesbordamientoypococríticos

• Proyectosamedida(CloudExpertise)

• Mayorescala,costesmásbajos

• Difícilintegracióncon“Legacy”

• Incertidumbressobrecalidadyseguridad

• Mayorniveldeautogestión

• Modularyescalable

• MejoralaoperaciónITinterna

• Mejorasmodestasencostes

• Escalabilidadyflexibilidadlimitadas

• Riesgodeobsolescencia• Gestiónlimitadadepicos

dedemanda• Proyectosamedida(Cloud

Expertise) Figura7.ClasificacióndelasCloud

Page 32: Integración de un Sistema de Control para una Plataforma

Capítulo2.MarcodelDesarrollo

33

2.3.1 IaaS

Infraestructura como Servicio, es uno de los tresmodelos fundamentales en elcampodelascloudcomputing,proporcionandoaccesoarecursosinformáticossituadosenunentornovirtualizado,“lanube”,atravésdeunaconexiónpúblicaquesueleserInternet,abarcandoaspectoscomoelespacioenservidoresvirtuales, conexionesdered,anchodebanda,direccionesIPybalanceadoresdecarga.Podríamosdestacarcomoventajasuescalabilidad.

2.3.2 PaaS

PlataformacomoServicio,esunacategoríadeservicioscloudqueproporcionaunaplataformayunentornoquepermitenlacreacióndeaplicacionesyserviciosquefuncionanatravésdeInternet.

Los servicios se alojan en la nube y se puede acceder a ellos a través de unnavegador permitiendo crear aplicaciones de software utilizando las herramientassuministradasporelproveedor.Podemosdestacarcomoventajassuflexibilidadysuadaptabilidad.

2.3.3 SaaS

SoftwarecomoServicio,escualquierserviciocloud,enelquelosconsumidorespuedenaccederaaplicacionesdesoftwareatravésdeInternet.

Estasaplicacionesestánalojadasenlanubeypuedenutilizarseparaunaampliavariedaddetareas,tantoparaparticularescomoparaorganizaciones.Twitter,Facebooky Google, son algún ejemplo de Saas, en las que los usuarios pueden acceder a losserviciosatravésdecualquierdispositivoquepuedaconectarseaInternet.Estemodelo,es también conocido como “software a demanda”, y las aplicaciones se compran yutilizanatravésdeInternetylosarchivosseguardanenlanube,noenelordenadordelusuario.

Acontinuación,comosemuestraenelgráfico(Figura8),veremoslaseparacióndelasresponsabilidadesdeunabonadodelasdeunproveedordeservicios.

Page 33: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

34

SeparacióndeResponsabilidades

Figura8.SeparacióndeResponsabilidadesdelaComputaciónenlaNube

Page 34: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

35

SistemadeControldeInfraestructurasIoT

3.1 Arquitectura del Sistema Enlaactualidad,laInternetdelasCosas,vierteconstantementeinformaciónde

todotipoalared.Generacantidadesinmensasdedatos.PeroelInternetdelascosas,no alude únicamente a las distintas formas en las que pueden interconectarse losdispositivos en red, sino a “una transformación de la visión y aplicación delprocesamiento, análisis, almacenamiento y comunicación”. En efecto, esta ampliainformacióndemandamayoralmacenamientoyprocesamientodedatos.

EnestecapítulodescribiremoseldiseñoylaarquitecturadelsistemadecontrolquesehadesarrolladoenesteTFG.Así,comovemosenlaFigura9,ésteconstade3partesdiferenciadas:

El primer módulo representa la captación de datos, con dicha captura,simplificaremos todos los datos e información que recibimos de la infraestructurasubyacente. Se reciben múltiples entradas de distintos formatos, y mediante unosfiltros,sellegaráadarleunformatoúnico.

Posteriormente,estosdatos sonalmacenadosenunabasededatos, creandounas tablas con sus respectivos índices. Desplegaremos la tecnología adecuada paraagruparyanalizarestosdatosycrearunainformacióndevalor,coneldiseñodeunaarquitectura adecuadaparael almacenamientodedicha información, que facilite suposterioraccesoparasuanálisis.

Finalmente,atravésdesurepresentacióngráfica,ilustraremosypresentaremoseste conjunto de datos, de manera que se facilite su comprensión, comparación yanálisis.Conlarepresentacióngráficadeestosdatosofrecemosmensajesmásclaros,facilitandodeestemodolaextraccióndeconclusiones.

Figura9.ArquitecturadelSistema

Almacenamiento Representación

IoT

CaptacióndeDatos

Page 35: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

36

3.2 Acceso a las Observaciones de SmartSantander Talycomosehadescritoenlaanteriorsección,lafuentededatosdelsistema

desarrolladoen este TFG son las observacionesque se generanen la plataformadeSmartSantander.

Desde laperspectivadelusuario, lassuscripcionessonelelementobásicodelservicio asíncrono del sistema SmartSantander. Para recibir notificaciones push entiemporealdeSmartSantandersetienequeconfigurarelsistemamedianteelusodelassubscripcionesasíncronas.Estoinstruyealaplataformadequeenvíealsubscriptorlasobservacionesquecumplaconloscriteriosdefinidosenlasubscripción.

Para ello es necesario autenticarse. SmartSantander IO API es compatibleactualmentecondosmecanismosdeautenticacióndiferentes:

• EsquemadeautenticaciónbásicabasadaenlaprovisióndeunaclavedeAPIválida.

• EsquemadeautenticaciónmediantecertificadosPCKS#12.

En este Trabajo hemos empleado el primer método para subscribirnos a lasobservaciones.

Acontinuación,explicaremoslasistemáticaquehayqueseguirparalacreacióndeunasubscripción,asícomolaactivación,modificaciónoeliminacióndelamisma.

La Figura 10, muestra los diferentes estados por los que puede pasar unasubscripción.DesdeelestadoNon-existent,enelcuálbásicamentenohaysubscripción,sepuedegenerarunamedianteunapeticiónPOSTalAPI.Enestapeticiónseincluirácomopartedelbodyladescripcióndelasubscripción.PordefectolassubscripcionessecreaninactivasyesnecesarioactivarlasmedianteunapeticiónPATCH.Enestapetición

Figura10.GráficodelaSistemáticadeunaSubscripciónaSmartSantander

Page 36: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

37

PATCHesnecesarioincluirelidentificadordelasubscripciónquesehaobtenidoensucreación.LapeticiónPATCHpermiteactivarydesactivar la subscripción tantasvecescomosedesee.Porúltimo,sepuedeeliminarlasubscripcióndefinitivamentemedianteunapeticiónDELETE.

Creación(POST):

Figura11.CreacióndeunaSubscripción

EnlaFigura11,vemoslasdistintasopcionesenelenvíodelapeticiónPOSTparalacreacióndelasubscripción.

Enprimer lugar, nos encontramos conelmétodode autenticación, explicadoanteriormente.

Acontinuación,vemoslosparámetrosdelaconsulta:

• Profile:podemosactivarunperfildeusuarioespecialcuandosellamealmétododelaAPI,pordefecto,elcuadroestávacío.

• Status:permiteseleccionarsisedeseaonoactivarlasubscripcióndespuésdesucreación.Sinoleindicamosnada,dejándolovacío,lasubscripciónsecreará,peronoestaráactivada,teniendoqueactivarlaposteriormenteconelenvíodeunapeticiónHTTPPATCH.

Page 37: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

38

Yporúltimo,elcuerpodelapetición.Enélpodemosindicarlosparámetrosquequeremosquetenganuestrasubscripción,siempresiguiendoelformatodescritoenladocumentacióndeSmartSantander.

MediantelaFigura12,explicaremoslosaspectosbásicosdelageneracióndeunasubscripciónylasposibilidadesquesetienenparafijarloscriteriosquedebencumplirlasobservacionesquequeremosquenosseannotificados:

{ "target": { "technology": "http", "parameters": { "url": "[a valid endpoint]" } }, "query": { "what": { "format": "measurement", "_anyOf": [ { "phenomenon": "temperature:ambient", "filter": { "uom": "degreeCelsius", "value": { "_gt": 5 } } } ] }, "where": { "_anyOf": [ { "area": { "type": "Circle", "coordinates": [ -3.810011, 43.462403 ], "radius": 0.5, "properties": { "radius_units": "km" } } } ] } } }

Figura12.ElementosdeunaSubscripción

Page 38: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

39

Elelementotargetcontienelaespecificacióndelaformaenquesedeseaquelasobservacionesseannotificadas.EnnuestrocasohemosutilizadoeltargetdenominadoHTTPqueinstruyeelsistemaparaenenviarlasobservacionesembebidasenpeticionesHTTPPOSTalendpointespecífico.

Porsupartedentrodelaquerytenemos:

• “what”:enestecampoleindicaremosaquéqueremossubscribirnos.Enelcampo“format”tenemosdosposibilidades:measurementuobservation.Ladiferenciaradicaenquesielegimoslaprimera,measurement,nossuscribimosalasmedidasdelosdistintosfenómenosqueleindiquemosacontinuación,enelcampo“phenomenon”,sinembargosielegimoslasegunda,observation,nossubscribimosalaobservacióngeneradaporelsensor,quepuedecontenerunaomásmedidas.

• “where”:enestecampoleindicaremoseláreaquequeremosdelimitarparanuestrasubscripción,teniendomultituddeposibilidades:Point,Multipoint,Linestring,Multilinestring,Area…

Tambiénexistelaposibilidaddeespecificarlosidentificadoresdelosdispositivosdeloscualesqueremosobtenerlasmedidas,peroestaopciónsóloseempleódurantelafasedepruebas.

Las subscripciones tienenun tiempode vigenciapordefectodeuna semana,teniendoquereactivarlasmedianteunPATCHpasadoestetiempo.

Una vez enviada la peticiónPOST, recibiremosenel campo “status”un valorindicándonoslosiguiente:

• 201:lasubscripciónsehacreadoconéxito.• 400:elcuerpodelmensajenocontieneunadefinicióndesubscripción

válida• 401:lasolicitudnopuedeprocesarseporquenoestáautenticadoenel

sistema.• 403:lasolicitudnopuedeserprocesadadebidoaquenoselepermite

realizarestaoperación,debidoarestriccionesdeautorización.

También recibiremos un identificador de nuestra suscripción, que usaremoscomoyahemoscomentadoparasuactivación,modificaciónoeliminación.

Modificación(PUT):

ParalamodificaciónoactualizacióndelasubscripciónseutilizaelmétodoPUTdeHTTP.Estenomodificanielestadodelasubscripciónni lafechadecaducidad.ElcuerpodelasolicitudtienequeincluirladefinicióndesubscripciónJSONcompleta,en

Page 39: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

40

unformatosimilaralutilizadocuandosehacreadolasubscripciónoriginalatravésdela solicitud POST. También tendremos que indicarle el “id” de la subscripción amodificar.

Activación(PATCH):

LapeticiónPATCH,permitealusuariogestionarelciclodevidadelasubscripciónyaexistente.Estonoafectademodoalgunoalcontenidodelasubscripción.Elcuerpodelapeticiónnoseutilizayhadedejarsevacío.Encambio,elparámetro“action”sehadeutilizarparaespecificarlaoperaciónquesedesearealizar,teniendodosopciones,“renew”:pararenovarlasubscripciónunasemanamásy“expire”:paraqueexpirelasubscripción.

Otradelasfuncionalidadesdeestapeticiónesactivarlasubscripción,debiendoindicarleel“id”delasubscripción.

Estado(GET):

Mediante la solicitud GET, obtendremos la información relacionada con unasuscripción o varias, en función si le indicamos el “id” de la misma o lo omitimos(mostrando todas las subscripciones realizadas). Esto incluye todos los datos de lasuscripción,incluyendosuestadoytiempodecaducidad.

Eliminación(DELETE):

Medianteestapetición,elusuariopodráeliminarunasubscripciónyaexistente,indicandoel“id”delamisma.Silasubscripciónestuvieraactivada,sedesactivaríaantesdelaeliminación.

3.3 Módulo de Captación de Datos Enestasecciónvamosadetallar laherramientautilizadapara lacaptaciónde

datosennuestrosistema.

LaherramientautilizadaesLogstash,formapartedelaplataformaElasticsearch.Laeleccióndelamisma,hasidoporlaintegraciónquetieneconlasdemásherramientasimplementadas en este Trabajo. Es un potente motor de recopilación de datos,permitiéndonosunificar y estructurar losdatosprovenientesde SmartSantander, asícomohaciéndolosconvergeralmódulodealmacenamiento(Elasticsearch).

Page 40: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

41

En la Figura 13 mostramos las partes de las que se compone el archivo deconfiguración de nuestra herramienta de captación de datos, que explicaremos acontinuación.

Enelapartadoinputs,hayqueindicarleeltipodeentradadedatos.Enunprimerinstante, para familiarizarnos con la herramienta y ver de manera más legible lasistemáticautilizamos“stdin”,quenospermiteintroducirlosdatosporteclado.Unavezquevimoslaestructuraqueseguíanlosmismos,adecuamoselformatodeentradaaSmartSantander,permitiéndonosindicarelformatodepeticionesHTTP.ElusodeestetipodeentradapermiterecibireventosatravésdepeticionesHTTP(s).SmartSantanderenviaríaunasolicitudHTTPPOSTconelcuerpodelmensajeyLogstashseencargarádetransformarloaunformatocomúnparasuposteriorprocesamiento.

Como vemos en la Figura 14, hemos añadido a HTTP el plugin“additional_codecs” para indicarle el formato de entrada, para una correctadecodificaciónposteriormente.Enestecaso,dadoquelasobservacionesprovenientesde SmartSantander estaban serializadas en formato JSON, el tipoMIME indicado esapplication/json.

Input {

http {

additional_codecs => {“application/json” => “plain”}

}

}

Figura13.ArquitecturadeLogstash

Figura14.CódigodelInputdeLogstash

Page 41: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

42

Una vez configurada la entrada de nuestro sistema de captación de datos,procedemosaconfigurarlapartemásimportantedeestemódulo,elfiltro.

Enunprincipioseprobaronlasdistintasopcionesdeplug-indefiltradoquenospermiteLogstashconlasentradasdeobjetos“JSON10”.Deesteanálisisseconcluyóquela decodificación y conversión realizada no se adecuaba a la estructura dealmacenamiento necesaria para su posterior análisis. Investigando las distintasposibilidades de plug-ins, se decidió utilizar la posibilidad que permite Logstash deutilizarscriptsdeRubyparaconseguirunatransformacióndelosdatoscompletamenteprogramables.

A continuación, vemos en la Figura 15 y Figura 16, el código del filtroimplementado.

filter{ grok { match => [ "message",

"%{HTTPDATE:[@metadata][timestamp]}" ] } date { match => [ "[@metadata][timestamp]",

"dd/MMM/yyyy:HH:mm:ss Z" ] } ruby { init => " require 'json' def parse_json obj, pname=nill, event obj = JSON.parse(obj) unless obj.is_a? Hash obj = obj.to_hash unless obj.is_a? Hash obj.each {|k,v| p = pname.nil?? k : pname if v.is_a? Array v.each_with_index {|oo,ii| if oo.is_a? Numeric

parse_json_array_num(oo,ii,p,event) else parse_json_array(oo,ii,p,event) end } elsif v.is_a? Hash parse_json(v,p,event)

10 JSON: “ Java ScriptObjectNotation, es un formato de texto ligero para el intercambio dedatos”.

Page 42: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

43

else p = pname.nil?? k : [pname,k].join('.') event[p] = v end } end def parse_json_array obj, i,pname, event obj = JSON.parse(obj) unless obj.is_a? Hash pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end def parse_json_array_num obj, i,pname, event pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end }

Figura15.CódigodelFiltrodeLogstash

Page 43: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

44

else n = [pname_, i].join('.') event[n] = obj end end " code=>

"parse_json(event['message'].to_s,nil,event)if event['message'].to_s.include? ':'"

} ##cambiar el . por _ ruby { init => " def remove_dots hash new = Hash.new hash.each { |k,v| if v.is_a? Hash v = remove_dots(v) end new[ k.gsub('.','_') ] = v if v.is_a? Array v.each { |elem| if elem.is_a? Hash elem = remove_dots(elem) end new[ k.gsub('.','_') ] = elem } unless v.nil? end } unless hash.nil? return new end " code => "

event.instance_variable_set(:@data,remove_dots(event.to_hash))

" } mutate { add_field => [ "[geo]",

"%{[location][coordinates][0]}" ] add_field => [ "[geo]",

"%{[location][coordinates][1]}"] convert => [ "[geo]", "float" ] } }

Figura16.CódigodelFiltrodeLogstash

Page 44: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

45

Enprimer lugar,hemosutilizadoelplug-in “grok”parahacercorresponderel

timestampdenuestroeventoconeltimestampquesecreaalañadirloen lastablas.Posteriormente, seejecutael filtro “ruby”estructurandocadacampodelevento,endistintossubcampos.Debidoalaimposibilidaddeindexarlosdistintossubcamposconlaherramientaderepresentaciónutilizandoelseparador“.”,unsegundofiltro“ruby”nos permite cambiar los “.” Por “_” que si son válidos a la hora de hacer larepresentación. Finalmente, utilizamos el plug-in “mutate”, ya que la estructura delformatogeneradaporloseventosdelocalizacióndeSmartSantandernoescompatibleconelformatodenuestraherramientaderepresentación.

Por último, la última parte del código de configuración de Logstash es el“output”,indicandolosdistintosplug-insparadarleformatoalasalida.

output{ elasticsearch{ index=>"m" } stdout{ code=>rubydebug }

}Figura17.CódigodelaSalidadeLogstash

VemosenlaFigura17losdosplug-insquehemosutilizado.Porunaparte,elde“elasticsearch”, para almacenar los registros en la herramienta de almacenado(Elasticsearch), debiendo de indicarle el nombre del índice “index”, que deberá decoincidirconlasdosherramientasposteriores(ElasticsearchyKibana)parauncorrectofuncionamiento.Elotropulg-inutilizadoes“stdout”,conel“code”=>rubydebug,parapoderirviendolasalidaestructuradaporpantalla.

EnelAnexosepuedeencontrarelarchivo.confdeLogstashalcompleto.

3.4 Módulo de Almacenamiento Unavezquehemosvistoelmódulodecaptacióndedatos,pasaremosadescribir

en esta sección la herramienta para el almacenamiento de los mismos, llamadaElasticsearch.

Page 45: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

46

ElasticsearchesunpotentemotordebúsquedayanálisisdedatosentiemporealdecódigoabiertoconstruidoencimadeApacheLucene11.Eneste trabajo,nohemosmodificadoelarchivodeconfiguración,sehadejadopordefecto,yaquelamodificacióny creación de la estructura la hemos realizado en el filtrado de la herramienta decaptacióndedatos.Loquesíquehemostenidoquemodificar,eselmapeodelosdatosde localización y realizar unos ajustes, acordes con nuestros valores de Longitud yLatitud.

LosvaloresdelocalizacióndeSmartSantandersiguenlaestructuraindicadaenlaFigura18:

"location":{ "type":"Point", "coordinates":[Lon,Lat]

}Figura18.FormatoCoordenadasdeLocalizacióndeSmartSantander

Paralacorrectainterpretación,hemostenidoquerealizarelsiguientemapeo:

curl-XPUT'localhost:9200/x/_mapping/logs'-d'{"properties":{"geo":{"type":"geo_point","geohash":true}}}'

Figura19.MappingdeElasticSearch

El significado del mapeo, (Figura 19), es el de definir en Elasticsearch, laestructuradel campode localizaciónquehemosmodificadoenel filtrode Logstash,puesto que de origen no se ajusta con el que nos permite la herramienta derepresentación.

QuedándonosfinalmentelaestructuraenElasticSearchcomovemosenlaFigura20:

{ "m":{ "mappings":{ "logs":{ "properties":{ "@timestamp":{ "type":"date", "format":"strict_date_optional_time||epoch_millis" }, "@version":{

11ApacheLucene:“esunaAPIdecódigoabiertopararecuperacióndeinformación,originalmenteimplementadaenJAVAporDougCutting”.

Page 46: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

47

"type":"string" }, "geo":{ "type":"geo_point", "geohash":true }, "headers":{ "properties":{ "content_length":{ "type":"string" }, "content_type":{ "type":"string" }, "http_accept":{ "type":"string" }, "http_accept_charset":{ "type":"string" }, "http_accept_encoding":{ "type":"string" }, "http_accept_language":{ "type":"string" }, "http_authorization":{ "type":"string" }, "http_cache_control":{ "type":"string" }, "http_connection":{ "type":"string" }, "http_host":{ "type":"string" }, "http_if_modified_since":{ "type":"string" }, "http_pragma":{ "type":"string" }, "http_proxy_connection":{ "type":"string" }, "http_user_agent":{ "type":"string" }, "http_version":{ "type":"string" }, "request_method":{ "type":"string" }, "request_path":{ "type":"string" },

Page 47: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

48

"request_uri":{ "type":"string" } } }, "host":{ "type":"string" }, "location":{ "type":"geo_point", "geohash":true }, "location1":{ "type":"geo_point", "geohash":true }, "location_0":{ "type":"double" }, "location_1":{ "type":"double" }, "location_type":{ "type":"string" }, "message":{ "type":"string" }, "phenomenon":{ "type":"string" }, "timestamp":{ "type":"date", "format":"strict_date_optional_time||epoch_millis" }, "uom":{ "type":"string" }, "urn":{ "type":"string" }, "value":{ "type":"double" } } } } } }

Figura20.EstructuradeElasticSearch

Page 48: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

49

3.5 Módulo de Representación Para finalizar la explicación en detalle de la arquitectura del sistema

implementado,describiremoslapotenteherramientaderepresentaciónKibana.

KibanaesunaplataformadeanálisisyvisualizacióndecódigoabiertodiseñadoparatrabajarconElasticsearch.Seutilizaparabuscar,visualizare interactuarcon losdatos almacenados los índices de Elasticsearch. Puede realizar fácilmente avanzadosanálisisdedatosyvisualizacionesde losmismosenunaampliavariedaddegráficos,tablasymapas.Hacequeseamásfácilderepresentaryentendergrandesvolúmenesde datos. Su sencilla interfazWeb, le permite crear y compartir de forma rápida eintuitiva paneles dinámicos que muestran los cambios en las distintas consultas deElasticsearchatiemporeal.

ComovemosenlaFigura21,lainterfazWebdeKibanasecomponededistintoscampos,destacandolossiguientes:

§ Enlapartesuperiordeltablerodeinstrumentosvemos4opciones:o Discover:encontraremosinformaciónacercadelasbúsquedasy

elfiltradodelosdatos.

TiempodeFiltrado

Histograma

Tablade

Contenidos

BarradeHerramientas

Patrónde

Índices

Listadode

Campos

Figura21.InterfazWebdeKibana

TablerodeInstrumentos

Page 49: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

50

o Visualize:encontraremosinformaciónsobrelosdistintostiposdevisualizaciónqueofreceKibana.

o Dashboard: encontraremos las distintas opciones para crear yvisualizarlosmismos.

o Settings:encontraremoslosdistintoscamposdeconfiguracióndeKibana, así como la creación de índices, modificaciones debúsquedascreadas,etc.

§ TiempodeFiltrado:enélpodremosrestringirlosresultadosdebúsquedaespecificandounperiodode tiempoconcreto,pudiendoestablecerunfiltrodetiemposiel índicecontieneloseventosbasadoseneltiempo.Tambiénpodremosestablecerunfiltrodetiempoapartirdelhistograma,seleccionandolazonaconloseventosdeseados.Pordefecto,elfiltrodetiemposeestableceen15min.

§ BarradeHerramientas:enellapodremosgenerardistintasbúsquedasdeloseventos,modificándolas y guardándolasen funciónde los criteriosañadidos.

§ PatróndeÍndices:leindicaremoselíndicecreado,coincidiendoconeldeElasticSearch.

§ ListadodeCampos:enestacolumna,vemoslosdistintoscamposquesecreanalindexarloseventos,pudiendoseleccionarunoovariosparaverlainformacióndelosmismosenlatabladecontenidos.

§ Tabladecontenidos:enestaseccióndelainterfaz,vemosconmásdetallelainformacióndecadaevento.

Figura22.InterfazWebdeKibana(Visualize)

Page 50: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

51

EnlaFigura22,vemoslainterfazWebquecorrespondealapartedevisualizacióndeKibana.Enellapodemoscreardistintasvisualizaciones,desdetabladedatos,gráficode tablas, circulares hasta un mapa de localización. También nos permite crearvisualizacionesapartirdeunabúsquedarealizadaanteriormente,acotandolosdistintoscamposdelevento.

3.6 Despliegue del Sistema Unavezpresentadoslosdiseñoseimplementacióndelosdistintosmódulosdelsistema,procederemosenestasecciónadetallarcómosehallevadoacaboeldesplieguedelsistemasobreunaplataformaCloudreal.

Para comenzar, hemos utilizado Amazon Web Services para alojar todas lasherramientasde laplataformaElastic (Logstash,ElasticSearchyKibana). Elhechodeutilizar un servicio de cloud computing es por la escalabilidad que nos ofrece,permitiendounabuenaintegraciónconlaplataformaSmartSantander.HemosutilizadounsistemaLinuxde64bits,enelquehemosinstaladolasherramientasdelasiguientemanera:

1. InstalacióndeLogstash:enprimerlugar,debemoscomprobarlaversiónde Java de nuestro sistema, puesto que sólo funciona con Java 7 osuperior.InstalaremosmediantelosrepositoriosdisponiblesporAPTconlossiguientescomandos:

• Descargamoseinstalamoslaclavedefirmapública:wget-qO-https://packages.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd–

• AñadimoselrepositorioLogstash:

echo"debhttps://packages.elastic.co/logstash/2.4/debianstablemain"|sudotee-a/etc/apt/sources.list

• Por último, ejecutamos la siguiente línea de comandos y elrepositorioestarálistoparausarse:

sudoapt-getupdate&&sudoapt-getinstalllogstash

2. InstalacióndeElasticSearch:al igualqueocurreconLogstash,hayquecomprobarlaversióndeJava.Lospasosparalainstalaciónson:

Page 51: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

52

• DescargamoselficherodeElastic:

curl-L–Ohttps://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.1/elasticsearch-2.4.1.tar.gz

• Unavezextraido,estarálistoparasuutilización:

tar-xvfelasticsearch-2.4.1.tar.gz

3. InstalacióndeKibana:lasistemáticaeslamismaquehemosempleadoenLogstash:

• DescargamoseinstalamoslaFirmadeClavePública:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-keyadd-

• Añadimoselrepositorio:

echo "deb https://packages.elastic.co/kibana/4.6/debian stablemain" | sudotee-a/etc/apt/sources.list.d/kibana.list

• Por último, corremos apt-get y estará listo para un correctofuncionamiento:

sudoapt-getupdate&&sudoapt-getinstallkibana

Una vez explicados todos los pasos para la instalación, explicaremos acontinuaciónlasaccionesquehayquerealizarparaponerenfuncionamientotodoelSistema.

Enprimerlugar,realizaremosunasubscripciónaSmartSantandercomovimosenlaFigura11yFigura12,indicandoeneltargetdenuestrobody,laurlquecorrespondealservidorWebqueexportaLogstashatravésdelplug-inHTTP,asícomoloseventosalosquenosqueremossubscribir.

Después,pondremosacorrerElasticSearchyKibana:

§ cdelasticsearch-<version>

./bin/elasticsearch

§ cdkibana-<version>

./bin/kibana

Porúltimo,arrancamosnuestroarchivodeconfiguracióndeLogstash:

§ cdlogstash-<versión>bin/logstash–f<nombredelarchivo>.conf

Unavezrealizadostodosestospasos,debemosactivarlasubscripciónmediantelapeticiónPATCH(explicadoenelcapítulo3.2)ycomenzaremosaverporpantallalasalidadenuestrofiltroempleadoenLogstash,asícomoenKibanaveremoslosdistintoseventoscreados.

Page 52: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

53

3.7 Dashboards de Control En esta sección vamos a describir los distintos Dashboards creados para la

visualizacióndenuestrosistemadecontrol.

Para la creación de un dashboard, primero hay que crear las visualizacionesindividualmenteyposteriormente,dirigirsea lapestaña“dashboard”yañadirlasunaporuna,diseñandoelcuadrográficoacordeanuestrasnecesidades.

En este trabajo, de los distintos fenómenos que miden los sensores deSantander, hemos hecho un estudio para determinar cuál de estos fenómenosrepresentar,orientándoloalainformaciónmásútilparanuestraciudad.Llegandoalaconclusiónderepresentarinformaciónrelativaalossiguientesfenómenos:

§ Temperaturaambiente§ Niveldebateríadelossensores§ Luminosidad§ DióxidodeCarbono(CO2)§ Ozono(O3)§ DióxidodeNitrógeno(NO2)§ Niveldepartículasenelaire§ Nivelacústico§ Campoelectromagnético§ Niveldellenadodeloscontenedoresdebasura

Figura23.CapturadelDashboardGeneral

Page 53: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

54

EnlaFigura23vemosunacapturadeldashboardgeneraldenuestrosistema.Enél podemos diferenciar distintas partes, como un mapa de la ciudad de Santanderidentificandolaposicióndelosdistintossensores,asícomoasuizquierda,unlistadodetodos los sensores disponibles. Estas dos visualizaciones las veremos en todos losdashboards, tanto en el general como en los de cada fenómeno. Otros campos adestacar,sonlospequeñosbotonesverdesquevemosacontinuación,permitiéndonosestablecerdistintosfiltros.

Enesteejemplo,nosencontramosconunfiltro,quenosacotalossensorescuyamedidadelniveldebateríaesmenoral75%,otroqueacotalatemperatura,siendoestamenorde25°C,asícomootroquenospermitemostrarmúltiplessensorescreandounacomparativaentreambos.Siponemoselcursorencimadelosbotones,vemoslosiguiente:

• ActivarFiltro :siemprequeestéeltic,elfiltropermaneceráactivado,sino,elbotóndelfiltrotendráelcolorverdearayas.

• Pin :esteicononospermiteanclarelfiltroparatodoslosdashboards.

• Conmutador :haciendoclicsobreél,revertimoslaacción,quedandoelfiltrodecolorrojo.

• Eliminación :medianteél,eliminamoselfiltro.• Personalización :mostraráuncampodetextocomoenlaFigura

24,paramodificarlarepresentaciónJSONdelfiltroyañadirleunalias.

Figura24.PersonalizacióndelFiltrodelosDashboards

Page 54: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

55

Otrasvisualizacionesqueseveránenlosdistintosdashboardssonlassiguientes:

Consta de dos cuadros de información, uno de ellos con enlaces a otros

dashboards,conunatabladelossensores,detallandoelfenómeno,valoryunidaddemedidadecadaunadelasmedidasqueproveedichosensor.

Tantoelmapacomoellistado,soninteractivos,pudiendoenelmapaacotarunazona seleccionada sobre él, limitando el número de sensores mostrados, así comoseleccionarenellistado,elidentificadordeunosdelossensores,paramostrarloenelmapa.

Enestedashboardgeneral, comovemosen la Figura26,hemos realizadoungráficolinealdetodoslosfenómenos,mostrandoeneleje“X”eltimestampyeneleje“Y”elvalormedido.

Figura25.VisualizacionesdelDashboardGeneral

Figura26.GráficasdeLíneadelDashboardGeneral.(a)Niveldellenadodeloscontenedoresdebasura(b)Niveldecargadelasbaterías

a) b)

Page 55: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

56

En la Figura26a, vemoselnivelde llenadode losdistintos contenedoresdebasura distribuidos en Santander,por otra parte, en la Figura 26 b, nos muestra elporcentajedeniveldebateríarestantedelosdistintossensores.Estasdosgráficassonanálogas a las demás mostradas en el dashboard general sobre los diferentesfenómenos.

Una vez visto esto, profundizaremos en las gráficas más relevantes de losdistintosdashboardsespecíficos.

En la Figura 27, vemos un gráfico de área,mostrando la temperaturamediaacumuladadetodoslossensoresalolargodeunperiododetiempo.

Otroejemplodevisualización,es laquevemosenlaFigura28,mostrándonosunosgráficoscircularesenfuncióndelporcentajedebateríadelsensor,divididosen5franjasdebateríayasuvez,indicandolas10últimasmedidasdelossensores.

Figura27.GráficadeÁreadelaTemperaturaMedia

Figura28.GráficosCircularesyLinealesdelNiveldeBatería

Page 56: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

57

Otrarepresentacióncircular,respectoalfenómenodebateríasepuedeverenlaFigura29:

Estegráfico,dividoenlos5rangosdeporcentajedebateríaanteriores,nosindicaqué porcentaje de los nodos está en dichos rangos de batería, ayudándonos a veranomalías en las baterías y pudiendo detectar nodos que tengan problemas con sualimentacióneléctrica.

Porúltimo,destacarelgráficodelaFigura30enelcualsehadivididoeleje“y”encuatrovaloresdefrecuencia,mostrandounacomparativaalolargodeltiempodelcampo electromagnético para cada banda de frecuencias medida por los sensoresdesplegadosporlaciudad.

Figura30.GráficadelCampoElectromagnético

Figura29.GráficoCirculardelaBatería

Page 57: Integración de un Sistema de Control para una Plataforma

Capítulo4.DirectricesparalaExtensibilidaddelSistema

59

DirectricesparalaExtensibilidaddelSistema

UnavezexplicadotodoeldesarrolloeimplementacióndelSistemadeControlparaelcasoparticulardeSmartSantander,procederemosadefinirlaspautasquehabráqueseguirparaextenderoadaptarlaplataformaderepresentaciónaotromarcouotrasnecesidadesdentrodeSmartSantander.

Enprimerlugar,antesdeprocederconlacreacióndenuevasvisualizacionesydashboards,esrecomendablecrearenelapartado“Discover”,búsquedasenfunciónde losdistintosdatosquesepretenderepresentar,puestoqueposteriormenteen lapantalla“visualize”,existendosopcionesdegenerargráficos,laprimera,seleccionandolosdatosenfuncióndel“index”ylasegunda,enfuncióndelabúsquedapreviamenterealizada,acotandodeestamaneralosdatosarepresentar.

Enla(Figura32),vemoslasdistintasvisualizacionesquenospermiteKibana:• GráficosdeÁrea• Tabladetalladelosdiferentesfenómenos• GráficosdeLínea• Cuadrodetextoparaindicar,porejemplo,instrucciones• GráficosCirculares• MapaGeográfico• GráficosdeBarras

Figura31.CreacióndeBúsquedasenKibana

Figura32.OpcionesdeVisualizacióndeKibana

Page 58: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

60

Dentro de cada tipode gráfico, vemosdistintos campos, losmostrados en laFigura33:

1. Barra de herramientas: en ella podremos escribir los distintos

parámetrosdebúsquedaquequeremosacotar,parasuposteriorrepresentación.

2. Aggregation Builder: en ella nos encontramos los distintos

camposarellenar,tantoeleje“Y”,queeselprimeroquetenemosquedefinir,asícomolasdiferentesposibilidadeseneleje“X”.

3. Pre-visualización:enestapartede laherramienta,podremos ir

viendolasdistintasgráficassegúnsevacreando.

Una vez que hayamos generado la visualización acorde a nuestro sistema,deberemosguardarla,medianteelbotónqueseencuentraenlabarradeherramienta

conlasiguienteilustración: Para finalizar, explicaremos la creación de un dashboard que recoge las

visualizaciones generadas anteriormente. En la Figura 34 vemos la barra deherramientasdeldashboard.

Figura33.IlustracióndelosDistintosCamposenlaCreacióndeVisualizaciones

Figura34.BarradeCreacióndeDashboard

Page 59: Integración de un Sistema de Control para una Plataforma

Capítulo3.SistemadeControldeSmartSantander

61

• Con este botón añadiremos las visualizaciones al dashboard,pudiendoircolocandoyajustandoeltamañounaauna.

• Conestecrearemosnuevosdashboards.

• Porultimo,conestecompartiremoselenlacedenuestrodashboard.

Page 60: Integración de un Sistema de Control para una Plataforma

Capítulo5.Conclusionesyfuturaslíneasdetrabajo

63

Conclusionesyfuturaslíneasdetrabajo

5.1 Conclusiones El trabajo “Integración de un Sistema de Control para una plataforma de la

Internet de las Cosas” corresponde al trabajo de Fin de Grado en Ingeniería deTecnologíasdeTelecomunicaciónenlaUniversidaddeCantabria.

Eneste trabajohemos integradodiferentesherramientasdesarrolladaspor laplataformaElasticparalacaptación,almacenamientoyrepresentacióndelosdatos.ElresultadodetodoellohadadolugaralacreacióndediferentesdashboardsdecontrolparafacilitarlatareadegestióneinterpretacióndelosdiferentesdatosaportadosporlaplataformaSmartSantander.

Paravaloraryextraerlasconclusiones,debemosanalizarlosobjetivosquenospropusimosaliniciodelProyecto,ydeestemodopoderobtenerelniveldesatisfacciónlogradoyalcanzado,analizandotodoslospasosdadosparasuobtención.

Elobjetivoprincipaleraeldiseñoe implementacióndeunSistemadeControlque nos ofreciera una interfaz visual en el que concentráramos toda la informaciónrelativa a la infraestructura de dispositivos IoT desplegada en el ProyectoSmartSantander.

Laconsecucióndeesteobjetivohasidoposiblemediante:

• El conocimiento de la tipología de datos proporcionada por lossensores,llevandoacabounestudiodelmodelodedatosutilizadosporSmartSantander,yaqueeranecesarioconocerycomprenderelmodeladodelainformación.

• La captura de los datos que nos proporciona para proceder a suanálisis, evaluando las diferentes opciones permitidas por laPlataformaSmartSantanderyseleccionandolaquemejorseajustabaa las tecnologías empleadas por el Sistema de Control que se hadesarrollado.

• Estudiando y comprendiendo cada una de las herramientasintegradasenelSistemadeControl.Atravésdeesteestudiohemospodidoexplotarsusposibilidadesysuutilización, llevándonosasíaunaexitosapuestaenfuncionamientodeesteTrabajo.

Hemos conseguido integrar y desarrollar el Sistema de Control, iniciando elprocesoconlacaptacióndedatosconlaherramientaLogstash,alserésta,unpotentemotorderecopilacióndedatos,loquenoshapermitidounificaryestructurarlosdatos

Page 61: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

64

provenientes de SmartSantander. Pero quizá, la parte más importante haya sido laconfiguración del filtro de Logstash, de este modo e investigando las distintasposibilidadesdeplug-ins,decidimosutilizarelplug-inrubydeLogstashparaconseguirunatrasformacióndelosdatoscompletamenteprogramables.

SehaconseguidocrearlosdistintosDashboardsparalavisualizacióndenuestrosistemadecontrol.Destacandofundamentalmentelacreaciónde:

• Dashboarddelcampoelectromagnético• Dashboarddelatemperaturaambiente• Dashboarddelniveldebatería• Dashboarddelniveldellenadodeloscontenedoresdebasura• Dashboarddelniveldesonidoacústico

Porotraparte,lacompresióntantodelafilosofíadelaplataformaElasticcomodesusdiferentesseccionesesunobjetivoquesehalogradocumplir.Esnotorioeneltrabajoeltiempoquesehatenidoqueinvertirenlalecturaycomprensióndediferentesdocumentos albergados en la plataforma para conseguir llevar a cabo el trabajo.Además, en este documento se ha descrito de una forma clara aspectos de estaplataformaparaasífacilitar,enlamedidadeloposible,lacomprensióndelaplataformaElasticaloslectoresdelmismo.Unodelosinconvenientesquesepuederelacionarconesteobjetivoes laconstanteactualizacióndedocumentostécnicosquehasufrido laplataformaalolargodeestetrabajo.Puedequeestohayasidouninconvenientealahora del desarrollo, pero sin duda esto otorga mayor empaque al uso de estaplataforma,demostrandoqueeste trabajo seenmarcadentrodeunaplataformaencontinuaexpansiónycuentaconelapoyodegigantesdelastelecomunicaciones.

En relación con lasbases teóricas, sehaalcanzadoelobjetivodeadquirir losconocimientosnecesariosasícomounrepasodeaquellosquehabíamosestudiadoalolargo de estos años universitarios en el Grado de Ingeniería de Tecnologías deTelecomunicación.

La satisfacción de haber logrado crear una herramienta propia hace quemisobjetivos personales se hayan visto totalmente conseguidos, y se hayan vistocompensadalagrancantidaddehorasdeestudioydetrabajoquelohanhechoposible.

Page 62: Integración de un Sistema de Control para una Plataforma

Capítulo5.Conclusionesyfuturaslíneasdetrabajo

65

5.2 Futuras Líneas de Trabajo EnbasealasdistintasherramientasimplementadasenesteProyecto,sepueden

realizarmodificacionesen lasmismas,paraunaampliaciónymejorade losdistintosDashboardsdeControl.

Enprimerlugar,conlasconstantesactualizacionesymejorasquerecibenlastresherramientasporpartedeElastic,unadelasmejorasquehandesarrolladoactualmentees su propia nube, Elastic Cloud, por tanto, el uso de ella para la implementación ydespliegue de Logstash, Elasticsearch y Kibana, sería recomendable para unamayorsimplicidad,integraciónyconvergenciadelasmismas.

También,otradelasmejorashaimplementarenunfuturo,seríaañadirlelapiladeElastic,X-Pack,queincluyedistintasherramientasparalamejoraenloscamposdeseguridad, permitiendo la autenticación y la definición de roles y permisos, en lacreacióndealertas,pudiendodefinirdiferentespatronesdeavisosyenelmonitoreoatiempo real, para la creación de distintos informes sobre el correcto o nofuncionamientodelamismaeinformesgráficossobrelosdistintosdashboards.

Page 63: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

66

Bibliografía

[1] APIdeSmartSantander.https://api.smartsantander.eu.

[2] DocumentacióndeElasticSearch.https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html.

[3] DocumentacióndeKibana.https://www.elastic.co/guide/en/kibana/current/index.html.

[4] DocumentacióndeLogstash.https://www.elastic.co/guide/en/logstash/current/index.html.

[5] Domotys. SMART CITY, HACIA LA GESTIÓN INTELIGENTE. Madrid: Mancobo,2014.

[6] Fernández, Manu. DESCIFRAR LAS SMART CITIES: ¿QUE QUEREMOS DECIRCUANDOHABLAMOSDESMARTCITIES?Madrid:MEGUSTAESCRIBIR,2016.

[7] GitHubdeElastic.https://github.com/elastic.

[8] IE Businnes School, Gildo Seisdedos. «Informe sobre Smart Cities de PWC, IEBusinessSchoolyTelefónica.»

[9] InformaciónsobrelaspeticionesHTTP.http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-31177.

[10] Jorge Lanza, Pablo Sotres, Luis Sánchez, José Antonio Galache, JuanRamónSantana,VerónicaGutiérrez,LuisMuñoz.«ManagingLargeAmountofDataGeneratedbyaSmartCityInternetofThingsDeployment.»Internationaljournal on Semantic Web and information systems. Santander: InformationResourcesManagementAssociation,IGIGlobal,2016.

[11] Peterson,ArmandoFox&David.DesarrrollandoSoftwarecomoServicio.StrawberryCanyonLLC,2015.

[12] ECMA-404. ECMAScript® Language Specification. “The JSON DataInterchangeFormat”.Octubre2013.

Page 64: Integración de un Sistema de Control para una Plataforma

Anexo

67

Anexo1.ArchivodeconfiguracióndeLogstashinput {

http {

additional_codecs => {“application/json” => “plain”}

}

}

filter{ grok { match => [ "message",

"%{HTTPDATE:[@metadata][timestamp]}" ] } date { match => [ "[@metadata][timestamp]",

"dd/MMM/yyyy:HH:mm:ss Z" ] } ruby { init => " require 'json' def parse_json obj, pname=nill, event obj = JSON.parse(obj) unless obj.is_a? Hash obj = obj.to_hash unless obj.is_a? Hash obj.each {|k,v| p = pname.nil?? k : pname if v.is_a? Array v.each_with_index {|oo,ii| if oo.is_a? Numeric parse_json_array_num(oo,ii,p,event) else parse_json_array(oo,ii,p,event) end } elsif v.is_a? Hash parse_json(v,p,event) else p = pname.nil?? k : [pname,k].join('.') event[p] = v end } end def parse_json_array obj, i,pname, event obj = JSON.parse(obj) unless obj.is_a? Hash pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event)

Page 65: Integración de un Sistema de Control para una Plataforma

IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas

68

} elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end def parse_json_array_num obj, i,pname, event pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end " code => "parse_json(event['message'].to_s,nil,event) if

event['message'].to_s.include? ':'" } ##cambiar el . por _ ruby { init => " def remove_dots hash new = Hash.new hash.each { |k,v| if v.is_a? Hash v = remove_dots(v) end new[ k.gsub('.','_') ] = v if v.is_a? Array v.each { |elem| if elem.is_a? Hash elem = remove_dots(elem) end new[ k.gsub('.','_') ] = elem } unless v.nil? end } unless hash.nil?

Page 66: Integración de un Sistema de Control para una Plataforma

Anexo

69

return new end " code => "

event.instance_variable_set(:@data,remove_dots(event.to_hash)) " } mutate { add_field => [ "[geo]",

"%{[location][coordinates][0]}" ] add_field => [ "[geo]",

"%{[location][coordinates][1]}"] convert => [ "[geo]", "float" ] } } output{

elasticsearch { index => "m" } stdout { code => rubydebug }

}