{"id":44661,"date":"2024-06-04T16:26:03","date_gmt":"2024-06-04T15:26:03","guid":{"rendered":"https:\/\/keepler.io\/?p=44661"},"modified":"2024-06-04T16:26:03","modified_gmt":"2024-06-04T15:26:03","slug":"asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks","status":"publish","type":"post","link":"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/","title":{"rendered":"As\u00ed desplegamos una plataforma de datos integrando AWS IoT Core y LoRaWan Networks"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Recientemente el equipo de Keepler para Madrile\u00f1a Red de Gas, despleg\u00f3 una plataforma de datos en AWS para la recolecci\u00f3n de informaci\u00f3n proveniente de contadores de gas inteligentes empleando, por primera vez a nivel mundial, la <\/span><a href=\"https:\/\/aws.amazon.com\/it\/about-aws\/whats-new\/2024\/04\/aws-iot-core-lorawan-public-network-support-spain\/\"><span style=\"font-weight: 400;\">integraci\u00f3n nativa del servicio<\/span> <span style=\"font-weight: 400;\">de AWS IoT Core<\/span><\/a><span style=\"font-weight: 400;\"> en combinaci\u00f3n con redes p\u00fablicas de LoRaWAN, <\/span><span style=\"font-weight: 400;\">junto con el operador Everynet<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nuestro cliente, Madrile\u00f1a Red de Gas, es una compa\u00f1\u00eda l\u00edder en la distribuci\u00f3n de gas natural. De acuerdo a las nuevas pol\u00edticas gubernamentales que marcan la agenda 2030, las distribuidoras de gas deber\u00e1n contar con lectura telem\u00e9trica en sus contadores; esto supondr\u00e1 para Madrile\u00f1a Red de Gas instalar cerca de 900.000 dispositivos adicionales a los que ya dispone.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">El reto: dise\u00f1ar el Smart Metering del futuro<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">El objetivo del proyecto consist\u00eda en desplegar una arquitectura IoT en la nube p\u00fablica de AWS, agn\u00f3stica a los diferentes fabricantes de dispositivos, que centralice en una <\/span><b>\u00fanica plataforma de datos escalable y din\u00e1mica<\/b> <b>la informaci\u00f3n enviada por los Smart Meters de m\u00faltiples proveedores<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Esta soluci\u00f3n innovadora desarrollada por Keepler sobre la nube p\u00fablica de AWS, es capaz de <\/span><b>recibir, ingestar y procesar los datos <\/b><span style=\"font-weight: 400;\">enviados por los contadores de gas inteligentes (Smart Meters) mediante el uso de la tecnolog\u00eda LoRaWAN a trav\u00e9s de redes p\u00fablicas, para posteriormente <\/span><b>analizar y hacer disponible la informaci\u00f3n \u00fatil <\/b><span style=\"font-weight: 400;\">a los equipos de negocio y equipos t\u00e9cnicos de planta mediante las herramientas de anal\u00edtica de datos y Business Intelligence nativas de AWS.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La arquitectura es <\/span><b>modular y escalable<\/b><span style=\"font-weight: 400;\"> lo que permite y facilita la incorporaci\u00f3n de nuevos Smart Meters de manera \u00e1gil y din\u00e1mica, adaptando \u00fanicamente las piezas necesarias para procesar, almacenar y decodificar la informaci\u00f3n enviada por cada dispositivo.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Un proyecto pionero en el uso de LoRaWAN<\/span><\/h3>\n<p><a href=\"https:\/\/aws.amazon.com\/es\/blogs\/iot\/introducing-support-for-public-networks-with-aws-iot-core-for-lorawan\/\"><span style=\"font-weight: 400;\">AWS anunci\u00f3 en 2023<\/span><\/a><span style=\"font-weight: 400;\"> el soporte para redes p\u00fablicas LoRaWAN de forma nativa a trav\u00e9s del operador Everynet, lo que convierte este proyecto de colaboraci\u00f3n a tres entre <\/span><b>Keepler<\/b><span style=\"font-weight: 400;\">, <\/span><b>Madrile\u00f1a Red de Gas<\/b><span style=\"font-weight: 400;\"> y <\/span><b>AWS<\/b><span style=\"font-weight: 400;\">, ha sido <\/span><b>pionero en emplear esta funcionalidad en un entorno real<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"44673\" data-permalink=\"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan\/\" data-orig-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan.jpg?fit=2056%2C914&amp;ssl=1\" data-orig-size=\"2056,914\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan.jpg?fit=1024%2C455&amp;ssl=1\" class=\"aligncenter wp-image-44673 size-large\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan.jpg?resize=1024%2C455&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"455\" srcset=\"https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan-980x436.jpg 980w, https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/keepler-aws-madrilena-red-de-gas-collaboration-pioneers-lorawan-480x213.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Utilizar LoRaWAN a trav\u00e9s de redes p\u00fablicas directamente integrado en los servicios de AWS permite al cliente un <\/span><b>ahorro significativo en el mantenimiento de la infraestructura de red<\/b><span style=\"font-weight: 400;\"> relativa a LoRaWAN, ya que se elimina la necesidad de desplegar, mantener y gestionar gateways privados, utiliz\u00e1ndose \u00fanicamente aquellos que el proveedor de red actual tenga ya instalados (<\/span><i><span style=\"font-weight: 400;\">gateways<\/span><\/i><span style=\"font-weight: 400;\"> p\u00fablicos). Adem\u00e1s, permite <\/span><b>unificar los costes<\/b><span style=\"font-weight: 400;\"> en un \u00fanico panel centralizado a trav\u00e9s del propio servicio de <\/span><i><span style=\"font-weight: 400;\">billing<\/span><\/i><span style=\"font-weight: 400;\"> de AWS.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">La soluci\u00f3n t\u00e9cnica<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">La soluci\u00f3n combina e <\/span><b>integra el mundo f\u00edsico de los dispositivos<\/b><span style=\"font-weight: 400;\"> o Smart Meters, <\/span><b>con el mundo de nube p\u00fablica<\/b><span style=\"font-weight: 400;\">, a trav\u00e9s de la integraci\u00f3n de los contadores inteligentes de gas con AWS IoT Core.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/aws.amazon.com\/es\/iot-core\/lorawan\/\"><span style=\"font-weight: 400;\">AWS IoT Core for LoRAWAN<\/span><\/a><span style=\"font-weight: 400;\"> act\u00faa como LNS (LoRAWAN Network Server) recibiendo y descifrando los mensajes de los distintos dispositivos desplegados. Una vez se reciben mensajes de los Smart Meters, el enrutado de los mismos se hace por medio de reglas que se configuran dentro del propio servicio AWS IoT Core permitiendo definir la l\u00f3gica de enrutamiento asociada a cada mensaje, como por ejemplo enviar los datos para su almacenamiento y\/o procesamiento a otros servicios de AWS como S3 y Kinesis Firehose.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cada regla se ha configurado con dos acciones fundamentales: la <\/span><b>primera<\/b><span style=\"font-weight: 400;\"> es la encargada de enviar los datos a Kinesis Firehose para su procesamiento en tiempo real y, la <\/span><b>segunda<\/b><span style=\"font-weight: 400;\">, se encarga de almacenar los datos en bruto (raw) directamente en S3 para almacenamiento a largo plazo; lo que nos habilita opciones como: auditor\u00edas, an\u00e1lisis de seguridad, posibles reprocesados, anal\u00edtica avanzada, detecci\u00f3n de anomal\u00edas, etc.<\/span><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"44675\" data-permalink=\"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/multi-branch-architecture-multiple-physicaldevice-manufacturers\/\" data-orig-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/multi-branch-architecture-multiple-physicaldevice-manufacturers.jpg?fit=1864%2C1090&amp;ssl=1\" data-orig-size=\"1864,1090\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"multi-branch-architecture-multiple-physicaldevice-manufacturers\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/multi-branch-architecture-multiple-physicaldevice-manufacturers.jpg?fit=1024%2C599&amp;ssl=1\" class=\"aligncenter wp-image-44675 size-large\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/multi-branch-architecture-multiple-physicaldevice-manufacturers.jpg?resize=1024%2C599&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"599\" srcset=\"https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/multi-branch-architecture-multiple-physicaldevice-manufacturers-980x573.jpg 980w, https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/multi-branch-architecture-multiple-physicaldevice-manufacturers-480x281.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/p>\n<p style=\"text-align: center;\"><em><span style=\"font-weight: 400;\">Arquitectura multi-rama con soporte para m\u00faltiples fabricantes de dispositivos f\u00edsicos (Smart Meters) desde la ingesta del dato hasta su consumo por parte de las unidades de negocio<\/span><\/em><\/p>\n<p><span style=\"font-weight: 400;\">Dise\u00f1ar la soluci\u00f3n para procesar los datos en tiempo real o cercano a tiempo real (<\/span><i><span style=\"font-weight: 400;\">near real time<\/span><\/i><span style=\"font-weight: 400;\">), permite tener<\/span> <span style=\"font-weight: 400;\">disponibles los datos de cada Smart Meter para su revisi\u00f3n y an\u00e1lisis con la <\/span><b>menor latencia<\/b><span style=\"font-weight: 400;\"> posible entre el env\u00edo, recepci\u00f3n y procesamiento. Este procesamiento en <\/span><i><span style=\"font-weight: 400;\">near real time<\/span><\/i><span style=\"font-weight: 400;\"> (nRT) se lleva a cabo utilizando la integraci\u00f3n nativa entre <\/span><b>Kinesis Firehose<\/b><span style=\"font-weight: 400;\"> y <\/span><b>AWS Lambda<\/b><span style=\"font-weight: 400;\">. Cuando un mensaje llega a la plataforma a trav\u00e9s del LNS (AWS IoT Core), se enruta mediante una regla de <\/span><b>IoT Core<\/b><span style=\"font-weight: 400;\"> hacia <\/span><b>Kinesis Firehose<\/b><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">que est\u00e1 configurado <\/span><span style=\"font-weight: 400;\">para pre-procesar los datos mediante una funci\u00f3n Lambda que decodifica el payload (binario o textual) y devuelve los datos en formato JSON de vuelta a Kinesis Firehose. Firehose volcar\u00e1 los datos a S3 en un formato columnar \u00f3ptimo para su an\u00e1lisis y procesamiento como es <\/span><a href=\"https:\/\/parquet.apache.org\/\"><span style=\"font-weight: 400;\">Parquet<\/span><\/a><span style=\"font-weight: 400;\">. Una vez los datos se encuentran en S3, AWS Glue nos permitir\u00e1 definir el modelo de datos bajo que regir\u00e1 los datos almacenados en las diferentes capas o <\/span><i><span style=\"font-weight: 400;\">buckets<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Con todos los datos almacenados en S3 y actualiz\u00e1ndose en nRT, junto con el modelo de datos definido y el cat\u00e1logo de datos almacenado en <\/span><b>AWS Glue<\/b><span style=\"font-weight: 400;\">, tenemos ya definida nuestra arquitectura base est\u00e1ndar de DataLake.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Explotar la informaci\u00f3n de un DataLake en AWS es una tarea que se lleva a cabo de una manera muy eficiente en rendimiento y coste utilizando el servicio de <\/span><b>AWS Athena<\/b><span style=\"font-weight: 400;\">. Este servicio nos va a permitir lanzar <\/span><b><i>queries<\/i><\/b><b> SQL<\/b><span style=\"font-weight: 400;\"> sobre las diferentes capas de nuestro DataLake que contienen los datos de los diferentes Smart Meters y, adem\u00e1s, nos va a servir para definir los DataSets que ser\u00e1n consumidos posteriormente por cada uno de los Dashboards dise\u00f1ados y definidos en QuickSight (herramienta de BI nativa de AWS).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La gran versatilidad y potencia que aporta definir una <\/span><b>arquitectura de tipo Data Lake para soluciones IoT<\/b><span style=\"font-weight: 400;\"> es que podemos centralizar diversas fuentes de datos en una \u00fanica plataforma que nos permita cruzar, explorar y analizar conjuntos de datos diversos y heterog\u00e9neos, generando nueva informaci\u00f3n que aporte valor tanto t\u00e9cnico como de negocio. Para esta soluci\u00f3n de Smart Meter de gas, incorporamos al Data Lake una fuente de datos abierta como es la informaci\u00f3n meteorol\u00f3gica proveniente de la AEMET. De esta forma, en los Dashboards de <\/span><b>QuickSight<\/b><span style=\"font-weight: 400;\"> podemos mostrar informaci\u00f3n proporcionada por los dispositivos (como consumos acumulados de gas, pron\u00f3stico de consumo para las pr\u00f3ximas fechas, estado de las bater\u00edas de los dispositivos) incluyendo datos clim\u00e1ticos provenientes de AEMET, los cuales enriquecen los datos de pron\u00f3stico de tiempo de acuerdo a las temperaturas.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La plataforma est\u00e1 dise\u00f1ada para ser <\/span><b>multi-fabricante<\/b><span style=\"font-weight: 400;\">, permitiendo a Madrile\u00f1a Red de Gas tener diferentes proveedores de contadores inteligentes (Smart Meters) desplegados bajo la misma red, <\/span><b>unificando<\/b><span style=\"font-weight: 400;\"> de este modo en una \u00fanica <\/span><b>plataforma de datos<\/b><span style=\"font-weight: 400;\">, toda la variedad requerida de dispositivos. Debido a que cada fabricante puede utilizar un mecanismo de codificaci\u00f3n y cifrado propio para los mensajes de sus dispositivos, en IoT Core se configura una regla dedicada para cada fabricante, que a su vez, invoca a una funci\u00f3n Lambda espec\u00edficamente dise\u00f1ada para decodificar el payload correspondiente. Es en IoT Core donde se registran y establecen las relaciones entre las reglas, los topics de mensajes y los contadores inteligentes asociados.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Retos t\u00e9cnicos del proyecto<\/span><\/h3>\n<h4><span style=\"font-weight: 400;\">Seguridad<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Para garantizar la <\/span><b>seguridad de los datos y la integridad de la informaci\u00f3n de extremo a extremo<\/b><span style=\"font-weight: 400;\">, se han implementado varios mecanismos de cifrado en reposo y al vuelo, que permiten garantizar que los datos permanecen seguros en todas las fases del ciclo de vida.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para los dispositivos IoT conectados mediante la red LoRaWAN los datos se cifran utilizando claves privadas generadas al vuelo gracias a la configuraci\u00f3n OTAA y las <\/span><a href=\"https:\/\/lora-alliance.org\/security\/\"><span style=\"font-weight: 400;\">especificaciones<\/span><\/a><span style=\"font-weight: 400;\"> del propio protocolo de comunicaci\u00f3n. AWS IoT Core se encarga de actuar como LNS y descifrar los mensajes de cada Smart Meter.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para mantener la seguridad del dato en reposo se ha habilitado el cifrado en los distintos elementos de la arquitectura usando <\/span><b>KMS con claves gestionadas por AWS<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">M\u00faltiples fabricantes<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Inicialmente, la arquitectura se dise\u00f1\u00f3 para emplear los contadores inteligentes de un \u00fanico fabricante, de manera que solo se decodificar\u00eda un <\/span><i><span style=\"font-weight: 400;\">payload<\/span><\/i><span style=\"font-weight: 400;\"> \u00fanico y el esquema de los datos a tratar en toda la arquitectura vendr\u00eda dado por los campos de este <\/span><i><span style=\"font-weight: 400;\">payload<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">No obstante, se detect\u00f3 la <\/span><b>necesidad de incorporar tambi\u00e9n los contadores inteligentes de nuevos fabricantes<\/b><span style=\"font-weight: 400;\">, con lo que se hizo necesario evolucionar la soluci\u00f3n hacia una arquitectura multi-rama (o multi-branch) que permita decodificar varios tipos de payloads. Para ello, hubo que <\/span><b>evolucionar<\/b><span style=\"font-weight: 400;\"> junto con el diagrama de arquitectura, <\/span><b>los esquemas de los datos<\/b><span style=\"font-weight: 400;\">, as\u00ed como dinamizar la creaci\u00f3n de los diferentes componentes involucrados en la recepci\u00f3n y decodificaci\u00f3n de cada mensaje.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La arquitectura se adapt\u00f3 con una <\/span><b>regla de IoT Core para cada fabricante<\/b><span style=\"font-weight: 400;\">, las cuales se emplearon como destino a la hora de dar de alta a los contadores inteligentes. De este modo se genera una arquitectura escalable a modo de ramas para soportar m\u00faltiples fabricantes con m\u00faltiples protocolos de codificaci\u00f3n y cifrado.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">IaC (Infrastructure as Code)<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Toda la arquitectura presentada previamente se despliega siguiendo las <\/span><b>buenas pr\u00e1cticas definidas para IaC<\/b><span style=\"font-weight: 400;\">. En este caso se utiliza Terraform para escribir todo el c\u00f3digo de infraestructura necesario. El mayor reto, ha sido <\/span><b>preparar los <\/b><b><i>scripts<\/i><\/b><b> de Terraform din\u00e1micos<\/b><span style=\"font-weight: 400;\">, de modo que puedan generar los componentes de infraestructura de forma din\u00e1mica en funci\u00f3n del n\u00famero de proveedores de Smart Meters que haya en cada momento y que facilite la adici\u00f3n o eliminaci\u00f3n de de un proveedor determinado de manera \u00e1gil y din\u00e1mica, cuando la infraestructura se encuentre desplegada.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">Enriquecimiento de datos\u00a0<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">No solo se quiso mostrar un pron\u00f3stico basado en el consumo de gas de cada usuario y datos t\u00e9cnicos proveniente de los sensores o los servicios de AWS, sino que se opt\u00f3 por <\/span><b>a\u00f1adir datos de una fuente externa como AEMET<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">De este modo, se dise\u00f1\u00f3 un <\/span><b>proceso de extracci\u00f3n de datos<\/b><span style=\"font-weight: 400;\"> para obtener informaci\u00f3n clim\u00e1tica y cruzarla con los datos de consumo con tal de ofrecer un pron\u00f3stico mucho m\u00e1s preciso para detectar patrones de consumo en funci\u00f3n del clima meteorol\u00f3gico y predecir posibles aver\u00edas y anomal\u00edas en funci\u00f3n de las condiciones clim\u00e1ticas.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Dashboards con los KPIs m\u00e1s relevantes<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">El dashboard tiene la finalidad de contestar a dos requerimientos principales: <\/span><b>estado en el que se encuentra cada dispositivo<\/b><span style=\"font-weight: 400;\"> y <\/span><b>consumo de GAS<\/b><span style=\"font-weight: 400;\">. Adem\u00e1s se ha enriquecido con datos abiertos de AEMET para aportar m\u00e1s valor facilitando as\u00ed el an\u00e1lisis y toma de decisiones para los equipos de negocio.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se pueden destacar tres visualizaciones de todo el conjunto: <\/span><i><span style=\"font-weight: 400;\">Accumulated gas consumption and forecast<\/span><\/i><span style=\"font-weight: 400;\">, <\/span><i><span style=\"font-weight: 400;\">Last device upload<\/span><\/i><span style=\"font-weight: 400;\"> y<\/span><i><span style=\"font-weight: 400;\"> Temperature Forecast (AEMET)<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"44677\" data-permalink=\"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/accumulated-consumption-visualization-quicksight-ml-forecasting\/\" data-orig-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/accumulated-consumption-visualization-quicksight-ml-forecasting.jpg?fit=2420%2C466&amp;ssl=1\" data-orig-size=\"2420,466\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"accumulated-consumption-visualization-quicksight-ml-forecasting\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/accumulated-consumption-visualization-quicksight-ml-forecasting.jpg?fit=1024%2C197&amp;ssl=1\" class=\"aligncenter wp-image-44677 size-large\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/accumulated-consumption-visualization-quicksight-ml-forecasting.jpg?resize=1024%2C197&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"197\" srcset=\"https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/accumulated-consumption-visualization-quicksight-ml-forecasting-980x189.jpg 980w, https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/accumulated-consumption-visualization-quicksight-ml-forecasting-480x92.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Esta es una visualizaci\u00f3n que adem\u00e1s de <\/span><b>informar del consumo acumulado<\/b><span style=\"font-weight: 400;\"> de todos los dispositivos diariamente, muestra <\/span><b>m\u00e9tricas futuras basadas en aprendizaje autom\u00e1tico<\/b><span style=\"font-weight: 400;\"> utilizando las capacidades que tiene integradas Quicksight de Machine Learning Forecasting. En este caso se ha configurado <\/span><i><span style=\"font-weight: 400;\">Periods forward<\/span><\/i><span style=\"font-weight: 400;\"> para mostrar la previsi\u00f3n de consumo de los<\/span><i><span style=\"font-weight: 400;\"> pr\u00f3ximos 3 d\u00edas<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h4><span style=\"font-weight: 400;\">Last device upload<\/span><\/h4>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"44679\" data-permalink=\"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/device-status-visualization\/\" data-orig-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/device-status-visualization.jpg?fit=2428%2C546&amp;ssl=1\" data-orig-size=\"2428,546\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"device-status-visualization\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/device-status-visualization.jpg?fit=1024%2C230&amp;ssl=1\" class=\"aligncenter wp-image-44679 size-large\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/device-status-visualization.jpg?resize=1024%2C230&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"230\" srcset=\"https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/device-status-visualization-980x220.jpg 980w, https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/device-status-visualization-480x108.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/p>\n<p><span style=\"font-weight: 400;\">En esta visualizaci\u00f3n se recoge el <\/span><b>estado de de cada dispositivo<\/b><span style=\"font-weight: 400;\">, mostrando el \u00faltimo env\u00edo de cada dispositivo donde se informa del: Id del dispositivo (<\/span><i><span style=\"font-weight: 400;\">Device<\/span><\/i><span style=\"font-weight: 400;\">), el timestamp del env\u00edo (<\/span><i><span style=\"font-weight: 400;\">Upload time<\/span><\/i><span style=\"font-weight: 400;\">), el estado de la bater\u00eda (<\/span><i><span style=\"font-weight: 400;\">Battery level<\/span><\/i><span style=\"font-weight: 400;\">), el voltaje consumido en el env\u00edo (<\/span><i><span style=\"font-weight: 400;\">Battery voltage<\/span><\/i><span style=\"font-weight: 400;\">), si el contador ha sido manipulado (<\/span><i><span style=\"font-weight: 400;\">magnetic<\/span><\/i><span style=\"font-weight: 400;\">), el estado de la v\u00e1lvula de entrada de gas (<\/span><i><span style=\"font-weight: 400;\">Valve status<\/span><\/i><span style=\"font-weight: 400;\">), si el reloj interno est\u00e1 sincronizado (<\/span><i><span style=\"font-weight: 400;\">Time sync<\/span><\/i><span style=\"font-weight: 400;\">) y el consumo de gas (<\/span><i><span style=\"font-weight: 400;\">Gas volume<\/span><\/i><span style=\"font-weight: 400;\">) medido por cada dispositivo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Adem\u00e1s se han a\u00f1adido una serie c\u00f3digos de colores e iconos para mostrar indicaciones dependiendo del valor de los distintos campos:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un <\/span><b>aspa<\/b><span style=\"font-weight: 400;\"> granate en el campo Device informa que hace m\u00e1s de 4 horas del \u00faltimo env\u00edo de se\u00f1al (ventana de detecci\u00f3n de env\u00edo configurable)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un valor \u201cnormal\u201d en el campo Battery level se muestra con un <\/span><b>pulgar<\/b> <b>hacia<\/b> <b>arriba<\/b><span style=\"font-weight: 400;\"> en verde. Valores por debajo de \u201cnormal\u201d se muestran con un c\u00edrculo granate.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un valor \u201cnormal\u201d en el campo <\/span><b>Magnetic<\/b><span style=\"font-weight: 400;\">, se muestra con un pulgar hacia arriba en verde.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Un valor distinto de \u201csync\u201d en el campo <\/span><b>Time sync<\/b><span style=\"font-weight: 400;\"> se muestra con la tipograf\u00eda roja.<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">Temperature forecast (AEMET)<\/span><\/h4>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"44683\" data-permalink=\"https:\/\/keepler.io\/es\/2024\/06\/04\/asi-desplegamos-una-plataforma-de-datos-integrando-aws-iot-core-y-lorawan-networks\/temperature-visualization-open-data-catalog-aemet\/\" data-orig-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/temperature-visualization-open-data-catalog-aemet.jpg?fit=2428%2C494&amp;ssl=1\" data-orig-size=\"2428,494\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"temperature-visualization-open-data-catalog-aemet\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/temperature-visualization-open-data-catalog-aemet.jpg?fit=1024%2C208&amp;ssl=1\" class=\"aligncenter wp-image-44683 size-large\" src=\"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/temperature-visualization-open-data-catalog-aemet.jpg?resize=1024%2C208&#038;ssl=1\" alt=\"\" width=\"1024\" height=\"208\" srcset=\"https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/temperature-visualization-open-data-catalog-aemet-980x199.jpg 980w, https:\/\/keepler.io\/wp-content\/uploads\/2024\/06\/temperature-visualization-open-data-catalog-aemet-480x98.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/p>\n<p><span style=\"font-weight: 400;\">En esta visualizaci\u00f3n mostramos las temperaturas m\u00e1ximas y m\u00ednimas en <\/span><i><span style=\"font-weight: 400;\">Pozuelo de Alarc\u00f3n<\/span><\/i><span style=\"font-weight: 400;\"> para los pr\u00f3ximos tres d\u00edas (configurable para cualquier ciudad\/comunidad de Espa\u00f1a), as\u00ed como el estado del cielo, la cota de nieve o la probabilidad de precipitaci\u00f3n en %. Estos datos se han obtenido del <\/span><b>cat\u00e1logo de datos abiertos<\/b><span style=\"font-weight: 400;\"> que pone a disposici\u00f3n la AEMET. Adem\u00e1s de temperaturas m\u00e1xima y m\u00ednima, tenemos humedad relativa, precipitaciones, sensaci\u00f3n t\u00e9rmica, nieve y una descripci\u00f3n del estado del cielo.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Esta informaci\u00f3n de fuentes abiertas de terceros, <\/span><b>ayuda a complementar la informaci\u00f3n que se recibe de los sensores y ayuda a detectar y catalogar posibles anomal\u00edas<\/b><span style=\"font-weight: 400;\"> que puedan producirse en la producci\u00f3n y consumo de gas motivadas, por ejemplo, por una climatolog\u00eda adversa.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Impacto de negocio<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Con este desarrollo, Madrile\u00f1a Red de Gas dispone de una Plataforma de Datos <\/span><b>centralizada<\/b><span style=\"font-weight: 400;\"> y <\/span><b>agn\u00f3stica<\/b><span style=\"font-weight: 400;\"> a cualquier fabricante de Smart Meters que va a permitir recibir y procesar los datos de los dispositivos\u00a0 independientemente de su origen, verificando que es factible disponer de soluciones fiables de ingesta y procesamiento en tiempo real para dispositivos que se conectan a redes de baja potencia. Esto habilita trabajar sobre redes LoraWan y sobre redes NB-IoT a futuro, facilitando la adopci\u00f3n de ambos tipos de redes al cliente de manera sencilla.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u2139\ufe0f Una red NB-IoT forma parte de las redes de tipo LPWA, conocidas como redes de Bajo Consumo y \u00c1rea Extensa, que permiten operar en lugares de dif\u00edcil acceso y conectividad menos estable, ya que est\u00e1 dise\u00f1ada espec\u00edficamente para la comunicaci\u00f3n de dispositivos IoT con capacidades de env\u00edo de informaci\u00f3n espec\u00edficas en volumen y tiempo.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Lecciones aprendidas<\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">La soluci\u00f3n se ha dise\u00f1ado como una <\/span><b>arquitectura multi rama<\/b><span style=\"font-weight: 400;\">, lo que permite a\u00f1adir nuevos fabricantes de distintas marcas con diferentes tipos de datos sin tener que modificar los fabricantes anteriores, lo que garantiza la retrocompatibilidad y escalabilidad de la soluci\u00f3n.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>No es posible automatizar al 100% el despliegue<\/b><span style=\"font-weight: 400;\"> de la soluci\u00f3n ya que hay que realizar un desarrollo ad-hoc para cada nuevo fabricante que se quiera incorporar, debido a que para poder recibir datos hay que adaptar los diferentes esquemas y mecanismos de codificaci\u00f3n y cifrado siguiendo las especificaciones de cada fabricante.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Las soluciones de IoT desarrollan una <\/span><b>estrecha relaci\u00f3n con el <\/b><b><i>firmware<\/i><\/b><b> de los dispositivos<\/b><span style=\"font-weight: 400;\">; si se actualizan es posible que haya que modificar los <\/span><i><span style=\"font-weight: 400;\">scripts<\/span><\/i><span style=\"font-weight: 400;\"> de descifrado de los mensajes de los dispositivos, por lo que hay que estar siempre atento a nivel de soporte.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Es importante tener una <\/span><b>comunicaci\u00f3n fluida con los fabricantes<\/b><span style=\"font-weight: 400;\"> para que se proporcione una buena especificaci\u00f3n actualizada, ya que dependemos totalmente de su documentaci\u00f3n para saber c\u00f3mo decodificar cada mensaje (sobre todo en los dispositivos que env\u00edan los mensajes en formato binario).<\/span><\/li>\n<\/ul>\n<h3><span style=\"font-weight: 400;\">Evoluci\u00f3n de la Plataforma de IoT<\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">IA\/ML aplicada para vac\u00edos en el dato y que pueda generarse el dato de forma artificial en base a variables como:<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Vecinos del dispositivo afectado<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Hist\u00f3rico del dispositivo afectado.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Incorporaci\u00f3n de procesos de IA\/ML avanzados:<\/span>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Detecci\u00f3n de patrones y\/o anomal\u00edas<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">Predicci\u00f3n del consumo en base al hist\u00f3rico de demanda<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Implementaci\u00f3n de un pipeline de CICD para desplegar componentes de arquitectura o dar de alta nuevos dispositivos IoT de manera autom\u00e1tica<\/span><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Recientemente el equipo de Keepler para Madrile\u00f1a Red de Gas, despleg\u00f3 una plataforma de datos en AWS para la recolecci\u00f3n de informaci\u00f3n proveniente de contadores de gas inteligentes empleando, por primera vez a nivel mundial, la integraci\u00f3n nativa del servicio de AWS IoT Core en combinaci\u00f3n con redes p\u00fablicas de LoRaWAN, junto con el operador [&hellip;]<\/p>\n","protected":false},"author":134360239,"featured_media":44652,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"This is How We Deployed a Data Platform Integrating AWS IoT Core and LoRaWan Networks","_seopress_titles_desc":"The Keepler team developed an innovative data platform for Madrile\u00f1a Red de Gas, integrating AWS IoT Core with public LoRaWAN networks to streamline gas meter data collection.","_seopress_robots_index":"","_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_crdt_document":"","content-type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[226],"tags":[265,412],"class_list":["post-44661","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data","tag-iot-es","tag-manufacturing-es"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/keepler.io\/wp-content\/uploads\/2024\/06\/AWS-IoT-Core-and-LoRaWan-Networks-1.jpg?fit=1280%2C450&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p9CeZw-bCl","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/44661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/users\/134360239"}],"replies":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/comments?post=44661"}],"version-history":[{"count":7,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/44661\/revisions"}],"predecessor-version":[{"id":44685,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/posts\/44661\/revisions\/44685"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/media\/44652"}],"wp:attachment":[{"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/media?parent=44661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/categories?post=44661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/keepler.io\/es\/wp-json\/wp\/v2\/tags?post=44661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}