Comunicación presentada al IV Congreso Ciudades Inteligentes:
Autores
- Jorge Chacón García, Data Analyst, Geographica
- Héctor José García Fernández, CEO y Fundador, Geographica
Resumen
El proyecto Urbo nace en 2016 como una solución de Dashboard para Smart Cities basado en el denominado Internet de las cosas (IoT). Urbo tiene como objetivo mejorar la eficiencia, optimizar recursos y reducir el impacto ambiental en grandes ciudades. El Dashboard de Urbo permite analizar datos en tiempo real provenientes de sensores de estacionamiento, gestión de residuos, alumbrado público, gestión del agua, datos medioambientales, alertas urbanas, etc. En el portal privado, los técnicos de los ayuntamientos pueden visualizar los datos de una manera muy intuitiva, una vez que éstos han sido procesados y analizados mediante técnicas de Big Data y Business Intelligence. Uno de los puntos más destacados es la inclusión de técnicas de Machine Learning que permiten a la aplicación establecer predicciones y dar recomendaciones a los técnicos, con la que reducir el tiempo de decisión y mejorar exponencialmente la optimización de recursos.
Palabras clave
Smart Cities, IoT, Machine Learning, Modelo de Prediciones
Introducción
La aplicación del paradigma del IoT a un contexto urbano es cada vez más demandado, ya que responde al fuerte impulso de muchos gobiernos nacionales para adoptar soluciones de TIC en la gestión de los asuntos públicos, realizando así el concepto de Smart City (Schaffers et. al, 2011). Aunque aún no existe una definición formal y ampliamente aceptada de Smart City, el objetivo final es hacer un mejor uso de los recursos públicos, aumentando la calidad de los servicios ofrecidos a los ciudadanos, mientras se reducen los costos operativos del público.
Este objetivo puede perseguirse mediante el despliegue de un IoT urbano, es decir, una infraestructura de comunicación que proporciona acceso unificado, simple y económico a una gran cantidad de servicios públicos, liberando así sinergias potenciales y aumentando la transparencia para los ciudadanos. Un IoT urbano, de hecho, puede traer una serie de beneficios en la gestión y optimización de los servicios públicos tradicionales, tales como transporte y estacionamiento, iluminación, vigilancia y mantenimiento de áreas públicas, preservación del patrimonio cultural y recolección de basura. Además, la disponibilidad de diferentes tipos de datos, recopilados por una IoT urbana generalizada, también puede ser explotada para aumentar la transparencia y promover las acciones del gobierno local hacia los ciudadanos, aumentar la conciencia de la gente sobre el estado de su ciudad, estimular la participación activa de los ciudadanos en la gestión de la administración pública, y también estimular la creación de nuevos servicios a los proporcionados por el IoT (Cuff et. al, 2008). Por lo tanto, la aplicación del paradigma de la IoT a Smart City es particularmente atractiva para las administraciones locales y regionales que pueden convertirse en las primeras en adoptar dichas tecnologías, actuando, así como catalizadores para la adopción del paradigma de la IoT a una escala más amplia (Zanella et. al, 2014).
Esta aplicación del paradigma de la IoT a Smart Cities se hace efectiva en Urbo, ya que en la actualidad es uno de los proyectos más ambiciosos de Smart Cities que se está llevando a cabo a nivel nacional. Se trata del desarrollo de un modelo de Dashboards para Smart Cities que se está aplicando de manera piloto en diferentes ciudades españolas. A través de dicho Dashboard, en los que ha trabajado conjuntamente Geographica, Telefónica, la Plataforma FIWARE y CARTO, se pretende mejorar la calidad de vida de los ciudadanos, aportándoles información en tiempo real sobre aspectos de interés general como el tráfico, la calidad del aire, sobre gestión de residuos etc. Por otro lado, se busca optimizar los recursos de las diferentes administraciones públicas, así como fomentar la exactitud y agilidad en el proceso de tomas de decisiones, a través de paneles de control donde toda la información proveniente de múltiples sensores se presenta de manera sencilla y visual.
Para cubrir las necesidades del proyecto, se desarrolló una solución para procesar datos en tiempo real procedentes de los sensores y que vuelca la información con diferentes niveles de acceso y de publicación de la información.
En el portal privado, que es aquel en el que se muestra toda la información, se ha desarrollado un cuadro de mando para la gestión y monitorización de los resultados, a la vez que se generan informes esenciales de KPI´s para los directivos, gestores y técnicos. De hecho, Urbo incluye procesamientos de Machine Learning, por lo que el sistema es capaz de interpretar y aprender del comportamiento del histórico de datos.
Por otro lado, el portal para los ciudadanos, ofrece información en tiempo real sobre diferentes variables relacionadas con la movilidad, el bienestar y otros muchos aspectos como la calidad del aire.
Descripción de la solución
Arquitectura de la solución
Urbo está diseñado con la premisa de ser un sistema descentralizado y tener un buen escalamiento horizontal, es decir, que no hay un solo superordenador de alto rendimiento, sino varios servidores de menor rendimiento. Esto proporciona ventajas como el crecimiento lineal de infraestructura o una mayor velocidad
A diferencia de las aplicaciones web clásicas (donde un solo servidor se conecta a la base de datos, renderiza HTML y recibe solicitudes de los clientes), Urbo se basa en una arquitectura orientada a servicios donde cada elemento se comunica con el resto a través de una API.
El conjunto de conectores crea, mantiene y actualiza las suscripciones a las entidades de la plataforma IoT. A través de cada suscripción activa, la plataforma IoT envía datos al conector, teniendo cuidado de almacenarlos en una base de datos relacional PostgreSQL y CartoDB (carácter de información geográfica). La tecnología utilizada por el conector es Node.js, para comunicaciones que utilizan la API REST NGSI10 expuesta por Orion Context Broker.
Las aplicaciones cliente acceden a los datos almacenados en PostgreSQL y CartoDB a través de un API REST desarrollado con Node.js.
Por otro lado, los clientes (sitios web, dispositivos móviles, etc.) son responsables de presentar los contenidos. Estos clientes solo reciben datos del servidor y son responsables de generar todo el HTML que el usuario ve. Además de guardar el trabajo en el servidor, tener datos en el cliente aumenta exponencialmente las capacidades dinámicas de la plataforma. La interacción de datos con el usuario es mucho más directa e instantánea.
Para distribuir contenido estático (código de aplicación del cliente, imágenes, etc.) se utiliza una CDN. Específicamente utilizamos AWS CloudFront Amazon que tiene nodos en muchas partes del mundo.
Para el almacenamiento de datos se ha usado la base de datos relacional PostgreSQL. En Urbo, no todos los usuarios usan el mismo PostgreSQL, cada usuario tiene su propia base de datos que se almacena en diferentes servidores. Las razones por las cuales se ha elegido PostgreSQL son:
- Información estructurada, más ordenada con mejores análisis.
- Mejor integración con otras plataformas de BI.
- Mejor conexión con otras bases de datos.
Metodología
La metodología seguida para el desarrollo de Urbo es la siguiente:
En una primera fase se estableció la arquitectura para el almacenamiento y relación de datos basado en 5 data stores:
- Plataforma Telefónica IoT: Los dispositivos, a través de IoT Agents, envían datos a Orion Context Broker, que almacena información en un modelo de datos no estructurados (base de datos MongoDB).
- PostgreSQL: Base de datos con un modelo de datos relacionales e información de la plataforma Telefónica IoT.
- CartoDB: La información geométrica se almacena en la plataforma CartoDB, siguiendo un modelo de datos relacionales (PostgreSQL / PostGIS).
- Amazon S3: Almacenar contenido estático y más pesado.
- Redis. Se usa como caché para almacenar los resultados de las consultas API.
En una segunda fase se desarrolló el backend de Urbo. Éste es el encargado de tratar con los datos. El sistema está desarrollado en NodeJS. La interfaz del backend al exterior, su forma de comunicación, se realizó mediante una API REST.
En esta fase se incluye también las labores de Data Science. Se establecieron todas las técnicas matemáticas necesarias para el análisis de datos. Uno de los principales modelos implementados es el modelo predictivo. Este modelo basado en Big Data y Machine Learning analiza datos en tiempo real e históricos de indicadores urbanos para hacer predicciones acerca del futuro o acontecimientos no conocidos.
En una última fase se desarrolló el frontend. Sobre el diseño gráfico establecido y el backend se construye una aplicación HTML5 que involucra las siguientes tecnologías: Javascript, BackboneJS, LESS.
Resultados
Urbo se divide en una primera página que permite la selección de las ciudades en las que se está implantando el proyecto y los verticales disponibles. Cada uno de los verticales contiene todos los datos, funcionalidades y análisis asociados a un indicador urbano como: residuos, iluminación, calidad del aire, aparcamientos, etc. Actualmente hay disponible más de 6 verticales diferentes.
Dentro del Dashboard de cada vertical se accede a un conjunto de funcionalidades como:
- Estado general: Muestra un resumen de la situación general del indicador urbano como el consumo total en las últimas 24 horas (vertical de consumo de agua) o el estado de llenado de los contenedores (vertical de residuos).
- Mapa en tiempo real: Muestra en tiempo real los datos analizados de cada sensor localizado en contenedores, aparcamientos, farolas, etc.
- Widgets de Indicadores: Indicadores generales del funcionamiento del servicio. En función de los parámetros a seguir desde la pantalla principal, se configura la visualización de ese indicador.
- Filtros dinámicos: Permiten un mayor movimiento por el mapa para analizar el consumo por zonas. Por ejemplo, se puede ver en el vertical de iluminación cuáles son las horas de consumo más elevadas en un barrio, ver cuál es la energía total consumida o la intensidad.
- Alertas: Automáticamente se visualizan los elementos que han tenido alguna incidencia, anomalía o fallo. Se podrán aplicar alertas que notificarán a los usuarios del sistema.
Para un conjunto de verticales se ha profundizado en la aplicación de funcionalidades avanzadas como:
- Análisis histórico: Permite medir las variaciones temporales para detectar máximos, mínimos, anomalías y variaciones extremas.
- Filtro espacial: Una de las capacidades más interesantes de Urbo es que se basa en una base de datos espacial, esto lo hace capaz de aplicar operaciones espaciales a la información, no solo a mapas sino también a gráficos.
- Ranking de ineficiencia: En esta sección se construye un indicador sintético para determinar si, por ejemplo, un contenedor o una farola es eficiente o ineficiente. Es un algoritmo que castiga, por ejemplo, los contenedores que se recogen muy llenos y los contenedores que se recogen vacíos.
- Posición de flotas: Esta sección es un mapa en tiempo real que muestre la posición de los vehículos. Estos vehículos aparecen en un mapa.
- Modelo de predicciones: Mediante un conjunto de técnicas estadísticas inferenciales basadas en la relación entre variables, Urbo es capaz de predecir el estado de llenado de contendores o la calidad de aire en una zona en las próximas horas, pudiendo dar al técnico del ayuntamiento recomendaciones para corregir esa situación a tiempo.
Conclusiones
Actualmente Urbo se está implantando en 6 ciudades españolas con más de 12 verticales. Los resultados iniciales son muy alentadores y muestra de ello, es la gran aceptación nacional e internacional que está teniendo.
Urbo es una solución escalable y totalmente adaptable a cualquier realidad urbana, es por ello que los conceptos de Smart City e IoT pasan a ser una realidad tanto para el sector privado como para las administraciones públicas.
Referencias
- Cuff, D., Hansen, M. & Kang, J., 2008, Urban sensing: Out of the woods, Commun. ACM, vol. 51, no. 3, pp. 24-33.
- Schaffers, H., Komninos, N., Pallot, M., Trousse, B., Nilsson, M. & Oliveira, A., 2011, Smart cities and the future internet: Towards cooperation frameworks for open innovation», The Future Internet Lect. Notes Comput. Sci., vol. 6656, pp. 431-446.
- Zanella, A., Bui, N., Castellani, A., Vangelista, L. & Zorzi, M., 2014, Internet of Things for Smart Cities, in IEEE Internet of Things Journal, vol. 1, no. 1, pp. 22-32.