Video Summary and Transcription
Esta charla introduce la construcción de una aplicación IoT con InfluxDB, JavaScript y PlotlyJS, destacando los beneficios de las bases de datos de series temporales para manejar altas tasas de ingestión y manipulación de datos. Proporciona instrucciones para configurar dispositivos IoT y conectar sensores, junto con técnicas de limpieza y transformación de datos. La charla cubre la creación de un bucket en InfluxDB, el uso de bibliotecas de cliente de JavaScript para leer y escribir datos, consultar y graficar datos con InfluxDB y Plotly.js, crear paneles de control y recursos de aprendizaje disponibles. En general, ofrece una visión general completa de la construcción de aplicaciones IoT con InfluxDB.
1. Introducción a InfluxDB y Datos de IoT
Hola, y bienvenidos a mi presentación. Hoy, hablaré sobre cómo construir una aplicación de IoT con InfluxDB, JavaScript y PlotlyJS. Los datos de series temporales son diferentes de otros tipos de datos, y para nuestro proyecto, los datos de IoT se consideran datos métricos. Las bases de datos de series temporales son ideales para almacenar datos de IoT, ya que pueden manejar altas tasas de ingestión y permiten la manipulación de datos a lo largo del tiempo. Proporcionamos la biblioteca de complementos Telegraph para la adquisición de datos, pero también puedes usar nuestra biblioteca de cliente de JavaScript. Siéntete libre de consultar el enlace del proyecto para seguirlo y implementar el proyecto por tu cuenta.
Hoy hablaré sobre cómo construir una aplicación de IoT con InfluxDB, JavaScript y PlotlyJS. Mi nombre es Zoe Steinkamp. Soy una defensora del desarrollo en InfluxData, lo que significa que soy una persona a la que le gusta educar a los desarrolladores sobre algunas de nuestras características, pero también escuchar a nuestra comunidad de código abierto y hablar con ellos sobre diferentes cosas que les gustaría ver y, ya sabes, obtener comentarios y ayudar a las personas.
Si tienes alguna pregunta, no dudes en contactarme en LinkedIn después de esta charla y en general. Así que la agenda de hoy, repasaré la descripción general de InfluxDB solo para darte una idea de algunas de las herramientas que estamos utilizando, la configuración de hardware de IoT, la configuración de ingestión de datos, la solicitud de datos y luego la base de código de GitHub. Y nuevamente, siéntete libre de contactarme con preguntas en LinkedIn.
Así que introducción a InfluxDB. Lo primero que debes entender es que los datos de series temporales son un poco diferentes de algunos de los datos con los que probablemente estés más acostumbrado a trabajar. Y para nuestro proyecto, los datos de IoT se consideran datos métricos. Son valores que se recopilan regularmente a lo largo del tiempo. Por ejemplo, como descubrirás en este proyecto, para la planta, monitoreamos cosas como la humedad del aire, la cantidad de agua en el suelo, el contenido de humedad general. Estos serán datos donde los sensores nos enviarán un punto de datos aproximadamente cada segundo, dependiendo del sensor que uses y cómo estructures tus datos. Pero eso es más o menos lo que esperaríamos. Hay otros tipos de datos de series temporales, como eventos que se generan con más regularidad y también cosas como trazas. Como mencioné antes, las bases de datos de series temporales son un lugar bastante bueno para poner tus datos de IoT. Descubrirás que en la mayoría de Internet, si comienzas a construir tus propios proyectos de IoT, la mayoría de las personas mencionarán el hecho de que realmente quieres elegir una base de datos que pueda manejar la tasa de ingestión más alta, pero también asegurarte de poder hacer cosas como reducir la resolución o manipular tus datos, especialmente a lo largo del tiempo. Cosas como quiero saber en este período de tiempo qué estaba sucediendo con la planta. Es un poco más difícil hacer eso en otros tipos de bases de datos, especialmente en una base de datos SQL, que no está diseñada para ese tipo de consultas normalmente.
Y cuando se trata de métodos de adquisición de datos, una cosa a tener en cuenta es que nos encargamos de la biblioteca de complementos Telegraph, que es una biblioteca de complementos de código abierto específicamente para datos de series temporales. Tiene muchas opciones de complementos diferentes. Tiene más de 300. Y algunos de estos podrían funcionar para tu caso de uso, dependiendo del dispositivo IoT con el que estés trabajando. Para el proyecto, estoy usando un microcontrolador de partículas Boron que es muy específico en cómo funciona y cómo obtengo datos de él. Así que estoy usando la biblioteca de cliente, específicamente nuestra biblioteca de cliente de JavaScript, para obtener esos datos. Pero también podrías usar Telegraph dependiendo del dispositivo que tengas. Así que, voy a enlazar el proyecto aquí. Así que ve y toma este enlace. Esto te permitirá seguirlo y también implementar este proyecto por tu cuenta.
2. Configuración de dispositivos IoT y componentes necesarios
En general, proporciona el código, las instrucciones y las explicaciones para cosas en las que posiblemente no me adentraré tanto durante mis 20 minutos aquí. Entonces, configurar tus dispositivos IoT. Básicamente, cómo funciona esto es que el microcontrolador lee los datos de tus sensores IoT. A partir de ahí, pasa a través de la biblioteca de cliente JS y se almacena en InfluxDB Cloud. Necesitarás una planta, preferiblemente viva. Un microcontrolador Particle Boron u otro microcontrolador compatible. Si eliges usar algo como una Raspberry Pi para este proyecto, tendrás que hacer mucho para que funcione. Las diferentes marcas de microcontroladores hacen las cosas ligeramente diferentes en cuanto a la capacidad que te brindan para obtener los datos.
En general, proporciona el código, las instrucciones y las explicaciones para cosas en las que posiblemente no me adentraré tanto durante mis 20 minutos aquí. Y sabes, es solo un buen enlace para obtener. No repetiré este enlace, así que lo dejaré aquí por solo un segundo más. Muy bien. Y probablemente pueda publicarlo. Si tenemos un chat o algo así, cuando esto se publique, lo publicaré allí.
Entonces, configurar tus dispositivos IoT. Un poco de antecedentes rápidos. Básicamente, cómo funciona esto es que el microcontrolador lee los datos de tus sensores IoT. Así como dije, eso serán cosas como un sensor de luz, humedad, temperatura del suelo. Todo esto en el contexto de una planta. Estas son todas cosas que a las plantas les importan. Si hicieras un proyecto de IoT que no estuviera basado en plantas, tal vez estés monitoreando algo como la elaboración de cerveza o un acuario, tus sensores serán ligeramente diferentes, por eso los categoricé como dispositivos IoT.
A partir de ahí, los envías, al menos para mi uso personal, los enviamos a través de un servidor, normalmente mi Wi-Fi doméstico. Y desde allí, el servidor de la aplicación, que normalmente es mi computadora. Básicamente, mi computadora tiene un USB conectado que lee los datos de mi microcontrolador. No es una configuración ideal. En el futuro, creo que me gustaría enrutarlo a través de algo como una Raspberry Pi u otro tipo de servidor de aplicaciones que pueda usar. Algo que no sea mi computadora portátil, pero por ahora, así es como funciona esta configuración. A partir de ahí, pasa a través de la biblioteca de cliente JS y se almacena en InfluxDB Cloud. También podrías almacenarlo en InfluxDB de código abierto. Tendremos ejemplos para ambos en el proyecto de GitHub, para que puedas elegir tu propia aventura y decidir dónde quieres almacenar tus datos.
Necesitarás, en ningún orden en particular, como puedes ver en mi hermosa configuración fotográfica aquí, una planta, preferiblemente viva. Lo he hecho con una planta falsa. No funciona muy bien. Un microcontrolador Particle Boron u otro microcontrolador compatible. También tenemos el código para un Arduino, por lo que puedes consultarlo. Si eliges usar algo como una Raspberry Pi para este proyecto, tendrás que hacer mucho, ¿cuál es la palabra aquí? Código de dificultad. Tendrás que hacer mucho para que funcione, pero diré que hay toneladas y toneladas de recursos en línea sobre cómo hacer que una Raspberry Pi haga algo similar a esto, pero ten en cuenta que las diferentes marcas de microcontroladores, diferentes marcas en general cuando se trata de estos tipos de dispositivos IoT, hacen las cosas ligeramente diferentes en cuanto a la capacidad que te brindan para obtener los datos. Algunos de ellos te brindan muchas capacidades.
3. Configuración de dispositivos IoT y ingestión de datos
Particle ofrece APIs y opciones para sensores IoT. Puedes elegir los sensores que necesitas, comprarlos en línea y seguir los esquemas proporcionados para conectarlos a una protoboard. El proyecto en GitHub incluye ejemplos de conexión de sensores de luz, temperatura, humedad del suelo y humedad a un microcontrolador a través de USB.
Por ejemplo, Particle me ofrece APIs y cosas, que no estoy aprovechando durante esto, pero esa fue una opción que podría haber utilizado. Al menos un sensor IoT para tu planta. Habrá enlaces en el proyecto que incluirán dónde puedes comprarlos en Amazon si te encuentras en Estados Unidos, así como versiones para la Unión Europea también.
Una cosa a tener en cuenta es que puedes elegir lo que desees. Solo asegúrate de leer las reseñas de Amazon. No compres algo que sabes que se romperá dos días después. Una protoboard con cables de puente y tiras de terminales. Nuevamente, se pueden comprar en internet. Puedes encontrarlos en todas partes. También proporcionamos los esquemas para los sensores.
Entonces, lo que esto básicamente te permite hacer es conectar estos cuatro sensores, que nuevamente, estaré proporcionando los enlaces. Así que puedes comprar los mismos tipos exactos si así lo deseas. Eso ciertamente te facilitaría mucho las cosas. O algo similar que lea un conjunto de datos similar, como si fueras a medir la humedad del suelo, utiliza ese sensor de humedad del suelo o uno muy similar. Luego puedes conectarlos a la protoboard de esta manera. Y esos son los puertos por los que esperamos que ingresen y salgan estos data. Ahora, obviamente, puedes cambiar el código. Así que puedes, ya sabes, agregar más sensores aquí, puedes cambiar dónde se conectan. Pero esto es obviamente genial para personas que no se sienten muy cómodas, sabes, configurando algo así. Lo hace mucho más fácil y prácticamente sin intervención. Puedes seguir los esquemas y comenzar tu proyecto. Y nuevamente, esto está dentro del proyecto en GitHub, así que no tienes que preocuparte. Ah, y muy rápido, para mi proyecto tenía un sensor de luz, temperatura, humedad del suelo, y mi temperatura y humedad estaban combinadas. Era un sensor doble. Entonces, configuración de ingestión de data. Conexión al microcontrolador, así que ya hablé un poco de esto, que es que para cada persona, será ligeramente diferente. Tengo código en el proyecto que básicamente se ejecuta en mi dispositivo microcontrolador y le indica que envíe los data a través del USB. Y eso funciona bien para mí, pero es algo que escribí personalizado para que lo haga. Nuevamente, dependiendo del controlador que estés utilizando, es posible que debas hacer versiones ligeramente diferentes de esto.
4. Limpieza y Transformación de Datos
Cuando se reciben datos de sensores IoT, es común que los datos necesiten ser limpiados. Los valores pueden no estar en un formato legible, como Celsius o Fahrenheit. Hay ejemplos de código y recursos disponibles en línea que proporcionan funciones y ecuaciones para transformar los datos en un formato más legible para los humanos.
Pero en general, lo que quiero que tengan en cuenta es básicamente lo que estoy haciendo aquí es que lo estoy llamando desde ese puerto USB en mi terminal y estoy recibiendo data. Ahora, una cosa que pueden notar aquí es que los data se ven un poco extraños, como fuera de los ceros aquí. Son números un poco extraños. Eso es algo a tener en cuenta, a veces estos datos de los sensores data deben ser limpiados un poco. La forma en que llegan, no están completamente normalizados a lo que esperaríamos, por ejemplo. Como la temperatura puede llegar y no estar en un valor legible en Celsius o Fahrenheit. Así que también tengo algo de código aquí que los limpia. Y la mayoría de los sensores en línea, hay documentación y blogs y demás donde la gente habla sobre una vez que obtienes los data, estas son las funciones que se ejecutan en ellos o las ecuaciones matemáticas que se ejecutan en ellos para obtener un resultado más legible para los humanos.
5. Creación de un Bucket en InfluxDB
Este video muestra cómo crear un bucket en InfluxDB. Un bucket es una base de datos utilizada para almacenar datos. Puedes crear un bucket en la interfaz de usuario en la nube o en la interfaz de usuario de código abierto. Después de crear el bucket, puedes establecer el período de retención de datos y obtener un token de API. Se recomienda crear un token de lectura y escritura para buckets específicos en lugar de un token de acceso completo. Este token te permite enviar y recuperar datos de InfluxDB.
Este es un video rápido que voy a mostrar muy rápido. Básicamente, lo que hace es mostrarte cómo crear un bucket. Esto puede ser en la interfaz de usuario en la nube o en la interfaz de usuario de código abierto. Se ven prácticamente iguales. Pero básicamente lo que haces es crear tu bucket. Para mí, he creado un bucket llamado PlantBuddy. Y supongo que una cosa a aclarar aquí, un bucket es una base de datos. Así que esto es simplemente la creación de la base de datos para almacenar mis datos. Estoy configurando que retendrá los datos durante los próximos siete días. Y después de eso, estoy obteniendo un token de API para ese bucket. Puedes crear un token de acceso completo. Te advertirá que no lo hagas, como se ve aquí, básicamente porque otorga acceso a todos los buckets. Y si este es el único proyecto que planeas hacer, no es realmente un gran problema en sí crear el token de acceso completo, pero si eres el tipo de persona que tiene más de uno, sabes, un bucket aquí, más de un conjunto de datos, puedes hacer solo una lectura y escritura y seleccionar los buckets de los que deseas leer y escribir. Y con ese token, tendrás la capacidad de enviar tus datos a Influx y recuperarlos. Básicamente, eso es lo básico para configurar el almacenamiento.
6. JavaScript Client Libraries and Writing Data
Ahora hablaré sobre las bibliotecas de cliente de JavaScript para consultar y escribir datos en InfluxDB. Hay dos paquetes principales, uno para Node.js y otro para las API de cliente de InfluxDB. La nueva biblioteca, que se lanzará pronto, es similar a la biblioteca original. Para instalar el cliente, utiliza npm o Yarn y proporciona credenciales para escribir y consultar datos. Los datos deben incluir una marca de tiempo, el nombre del sensor y el valor. Se pueden agregar etiquetas adicionales para el usuario y el ID del dispositivo para mayor escalabilidad. Un ejemplo de tabla muestra los puntos de datos resultantes. A continuación, cubriré las solicitudes de datos y la visualización.
Así que ahora hablaré sobre las bibliotecas de cliente de JavaScript. Hay dos paquetes principales, uno para Node.js y otro para las API de cliente de InfluxDB. No hablaré mucho sobre las API de cliente. Estas son más para las personas que desean administrar sus buckets, sus autorizaciones y cosas similares desde la biblioteca de cliente. Pero nos enfocaremos en consultar y escribir esos datos. Una cosa a tener en cuenta es que esta es nuestra biblioteca de cliente original que utiliza nuestro lenguaje de consulta interno llamado flux, pero mi ejemplo de proyecto utilizará la nueva biblioteca que se lanzará aproximadamente en la próxima semana. Tendré que proporcionar un enlace actualizado ya que actualmente el repositorio es privado, pero explicaré cómo funciona. Es muy similar a la antigua en el sentido de que simplemente la instalas y luego consultas y escribes desde ella.
Obviamente, necesitarás instalar algunos paquetes. Esto se extrae literalmente de la documentación. Es bastante sencillo, básicamente solo debes hacer la instalación con npm o Yarn, según prefieras. Básicamente, solo instala el cliente. A partir de ahí, deberás proporcionarle credenciales para comenzar a escribir y consultar. Este es un ejemplo del proyecto para escribir en Influx con nuestros datos de sensores. Obviamente, aquí tengo etiquetas y campos flotantes. Lo más importante cuando se trata de escribir datos es lo que esperamos ver: una marca de tiempo que indique cuándo se recibieron los datos, el nombre del sensor y un valor para ese sensor. Por ejemplo, el valor de luz en este momento era del 100% o algo así. También puedes agregar etiquetas de usuario e ID de dispositivo. La idea es que, si deseas escalar este proyecto, podrías tener varias personas usándolo o varios dispositivos, básicamente varias plantas, en teoría, siendo monitoreadas. Si no deseas agregar eso, está bien. Puedes optar por lo básico: solo el nombre del sensor, el valor y también la temperatura, así como la hora. Esa también sería una opción que podrías elegir. Es un poco más simple, pero esto también está disponible en el código. Puedes cambiarlo como desees. Este es un ejemplo de tabla de los puntos de datos resultantes que esperaríamos ver. Sí, tenemos nuestra medición de datos del sensor. Como puedes ver, hay luz, un valor y una hora. He hecho esto más legible para los humanos en esta presentación al eliminar, si hicieras scroll, verías los otros valores de etiqueta, pero esto es básicamente la esencia de lo que esperamos ver. Ahora pasemos a las solicitudes de datos y la visualización. Como dije, es muy sencillo poner esto en marcha.
7. Consultar y Graficar Datos con InfluxDB
Esta herramienta te permite consultar datos de Influx utilizando SQL y obtenerlos en un formato de marco de datos para graficar con Plotly.js. Puedes personalizar la consulta para diferentes sensores y asegurar intervalos de tiempo consistentes. El gráfico resultante muestra los valores a lo largo del tiempo y puedes cambiar variables como el ID del dispositivo. Para ejecutar este proyecto, se requiere una instancia de InfluxDB y ejecutar el proyecto en localhost.
Esta es una excelente herramienta para ingresar tus datos y luego obtenerlos nuevamente. Aquí estamos utilizando SQL para consultar a Influx y obtener nuestros datos.
Por ejemplo, lo estamos haciendo donde el tiempo es las últimas 24 horas, o lo siento, las últimas dos horas a partir de ahora. Así que desde ahora hasta dos horas atrás, adelante y dame todos los datos del sensor donde el ID del dispositivo sea igual a esto y el nombre del sensor sea igual a esto. Y la razón por la que tenemos estos dos valores, que puedes insertarlos y sacarlos, es que son variables flexibles. Ahí vamos, esa es la palabra correcta para esto. De esa manera, puedes reutilizar esta consulta para diferentes sensores. Podrías usar esta consulta para el sensor de luz, usar esta consulta para el sensor de humedad, con la idea de que, al menos para nuestro proyecto, siempre querrías que los intervalos de tiempo sean los mismos para los sensores. No quieres ver las últimas 24 horas para la luz y las últimas dos horas para la temperatura. Es extraño si así es como estás viendo los datos.
Básicamente, lo que obtienes es un marco de datos que luego puedes usar en Plotly.js para graficar tus valores. También puedes obtenerlo en otros tipos de formatos. No tienes que usar un marco de datos, pero nuevamente, este proyecto utilizaba Plotly.js, por lo que era la forma más sencilla de formatear los datos para que Plotly los ingiera.
Como puedes ver, así es como se ve la representación gráfica de los datos. Como mencioné antes, ahora puedes entender a qué me refería con esas variables flexibles. Por ejemplo, estamos llamando exactamente la misma consulta pero estamos cambiando el suelo, el aire y luego el graph.defaultDeviceID. Eso es solo un valor que he codificado en la parte superior del archivo porque solo estoy monitoreando una planta, así que solo tengo un ID de dispositivo. No tengo varios. Pero nuevamente, si quisieras, podrías cambiarlo según sea necesario. Y luego esta representación gráfica aquí abajo básicamente crea un gráfico de línea donde el valor X será el tiempo y el valor Y será el valor, ya sea humedad o temperatura del aire. Y también le hemos dado un título. Como puedes ver, no capitalicé humedad. Es un proyecto divertido, así que no siempre será perfecto. Tal vez lo corrija. Y así es como se vería si ejecutaras esto en tu localhost. Básicamente, lo que harías es ejecutar tu instancia local de InfluxDB, o estás ejecutando la... o estás usando la nube. Cualquiera que decidas hacer. Y a partir de ahí, puedes ejecutar eso. Tendrías eso en una pestaña de localhost y luego, en tu otra pestaña de localhost, estarías ejecutando este proyecto.
8. Creación de Paneles de Control y Recursos de Aprendizaje
Ejecutarías los comandos de NPM para comenzar. Y luego tendrías tus paneles de control para ver. Este es nuestro panel de luz. Combinamos la temperatura del suelo y del aire. La humedad de la habitación tiende a aumentar cuando respiro cerca de la planta. La humedad del suelo casi siempre es bastante consistente. Este gráfico está muy compactado. Tenemos más proyectos disponibles en nuestra comunidad de InFlux. Puedes probar más cosas por ti mismo. Únete a nuestra comunidad de Slack para obtener ayuda. Echa un vistazo a nuestro sitio web y otros recursos.
Ejecutarías los comandos de NPM para comenzar. Perdón, los comandos de NodeJS para comenzar. Y luego tendrías tus paneles de control para ver. Estos son paneles de control bastante básicos, pequeños de Plotly. Obviamente, puedes hacer que se vean mucho más bonitos, bastante más bonitos, pero por ahora, esto fue una excelente manera de mostrar el proyecto sin tener que pensar demasiado al respecto.
Este es nuestro panel de luz. Y luego combinamos la temperatura del suelo y del aire. Durante este período de tiempo, la planta... no fue un tiempo muy largo, y la planta simplemente estaba en mi comedor, así que realmente no hubo variación aquí. Entonces, si te preguntas por qué la temperatura del suelo y del aire no cambió, es porque yo no las cambié, simplemente estaban en reposo. Aunque curiosamente, la luz claramente subía y bajaba, pero solo afirmo que nuestro sensor de luz es muy sensible, también probablemente soy yo pasando. Y finalmente, la humedad de la habitación y la humedad del suelo, la humedad tiende a aumentar cuando respiro cerca de la planta, así que probablemente ahí es donde provienen esas fluctuaciones. Y luego la humedad del suelo casi siempre es bastante consistente, tardará un poco en comenzar a disminuir cuando la planta se seque un poco más. Pero sí, esto te da una idea. Una cosa que podrías notar de inmediato, sin embargo, es el hecho de que sí, estos datos pueden ser un poco fluctuantes, un poco extraños. Hemos estado trabajando en suavizarlos un poco, pero es un poco complicado. Y en aras de la honestidad, este gráfico está muy compactado, es muy pequeño, obviamente, si lo escalas de cero a 100, las fluctuaciones no se verían tan intensas como aquí. Pero en aras de la honestidad, una planta que vive dentro de mi sala de estar tiene métricas relativamente consistentes. Está, ya sabes, dentro de una casa con control de humedad.
En cuanto a los recursos de aprendizaje, más allá de seguir obviamente el proyecto en GitHub y seguirlo, puedes probar más cosas por ti mismo. Tenemos más proyectos disponibles en nuestra comunidad de InFlux. Puedes ver Plant Buddy allí mismo. Esa es la versión original en Python. Estamos trabajando en la versión de Javascript, pero también hay otros proyectos interesantes que puedes consultar. Y luego, además, tenemos nuestro sitio web, influxdata.com. Y estos son solo algunos recursos adicionales. No sería un buen dev rel si no les dijera que se unan a nuestra comunidad de Slack. Ahí es donde definitivamente puedes obtener ayuda tanto de los defensores del desarrollador como de otras personas. El Getting Started es básicamente el enlace de cloud. El GitHub Influx Community, que mencioné anteriormente.
9. Conclusion and Resources
La documentación y los blogs son excelentes recursos para comenzar. InfluxDB University ofrece cursos gratuitos sobre diversos temas. No dudes en contactarnos en LinkedIn o Slack. Puedes contribuir al proyecto a través de solicitudes de extracción. Gracias por asistir.
La documentación y los blogs pueden ser excelentes recursos para comenzar y ponerse en marcha. Y finalmente, InfluxDB University, que es una plataforma gratuita de aprendizaje a tu propio ritmo. Por lo tanto, puedes aprender más y tomarte todo el tiempo que necesites personalmente, y hay muchos cursos diferentes sobre muchas cosas diferentes.
Y eso es prácticamente el resumen de mi presentación. Y también eres bienvenido, por supuesto, a contactarme, como dije, en LinkedIn. Puedes encontrarme en Slack. Si sientes que el proyecto necesita un poco de, supongo que podrías decir, cariño, y quieres hacer algunos cambios, siéntete libre de hacer una solicitud de extracción. No me importa. De eso se trata el código abierto.
Y muchas gracias por venir. Gracias. Lo aprecio. Gracias.
Comments