WebBluetooth: El eslabón perdido

Rate this content
Bookmark

La API de WebBluetooth finalmente cierra la brecha entre el navegador y los dispositivos que nos rodean. Y eso de repente abre un agujero de conejo, en el que inevitablemente nos encontramos con algunos obstáculos: la historia de un desarrollador frontend que se adentra en el mundo de IoT.

24 min
16 Jun, 2022

Video Summary and Transcription

Esta charla presenta la API de Web Bluetooth y su papel en la conexión entre navegadores y dispositivos periféricos. Cubre cómo interactuar con dispositivos utilizando la API, explora la creación de dispositivos BLE como un zumbador y un pequeño automóvil, y discute las limitaciones y disponibilidad de la API de Web Bluetooth. La charla también destaca el potencial de la API de Web Audio para el desarrollo de hardware y menciona la falta de soporte actual para la API de Web Bluetooth en dispositivos iOS.

Available in English

1. Introducción a la API Web Bluetooth

Short description:

Por favor, denle la bienvenida a Nicole. Hoy estoy aquí para llevarlos a través de mi experiencia con la API Web Bluetooth. Los navegadores siempre han sido excelentes para renderizar datos, pero era difícil interactuar con dispositivos junto al navegador. Con las aplicaciones web progresivas y el proyecto Fugu, nuevas API como web USB, web serial API, web HID API, llenan la brecha entre el navegador y los dispositivos periféricos. Bluetooth es un estándar de tecnología inalámbrica que intercambia datos a corta distancia. BLE, Bluetooth de baja energía, es un nuevo estándar para dispositivos IoT. Web Bluetooth utiliza BLE. Bluetooth funciona con un dispositivo central y dispositivos periféricos. GATT es la forma en que un dispositivo periférico expone sus datos. Los servicios y características GATT se identifican mediante UUID. Los valores GATT son estructuras de datos de bajo nivel. La API web es sencilla.

Hola a todos. Mi nombre es Nicole. Hoy llegué un poco tarde porque estuve muy ocupada en el trabajo y pasé demasiado tiempo libre jugando con todas las nuevas tecnologías web y API de navegador, y hoy estoy aquí para llevar a través de mi experiencia con la API Web Bluetooth.

Los navegadores se han construido en torno a la idea de que solicitarían datos de un servidor y los renderizarían. Por lo tanto, los navegadores siempre han sido excelentes para renderizar datos. Pero siempre fue bastante difícil interactuar con dispositivos que estaban junto al navegador. Ahora, con todo el movimiento de aplicaciones web progresivas, con el proyecto Fugu, hemos visto un par de nuevas API, hemos visto web USB, web serial API, web HID API, y así sucesivamente, y todas intentan llenar esta brecha entre el navegador y los dispositivos periféricos.

Ahora, veamos algunos conceptos básicos. Bluetooth es una tecnología inalámbrica estándar para intercambiar datos que utiliza la misma frecuencia que LAN inalámbrica, pero envía cantidades muy pequeñas de datos a distancias bastante cortas. Si ahora piensas en esa experiencia antigua, defectuosa y frustrante que tuviste con tus primeros teléfonos inteligentes o tus primeros teléfonos móviles, tengo muy buenas noticias para ti, porque eso era el antiguo Bluetooth, Bluetooth 4.0. También tenemos BLE, que significa Bluetooth de baja energía, y ese es un estándar completamente nuevo que se construyó específicamente para dispositivos IoT, por lo que es muy eficiente en energía y también funciona a distancias bastante largas. Y con Web Bluetooth, siempre hablamos de BLE, porque es un estándar que se implementó. Entonces, Bluetooth normalmente funciona así. Tendrías un dispositivo central que es el dispositivo más capaz en términos de CPU y uso de batería, y luego tendrías dispositivos periféricos. Ahora, también nos referimos a ellos como el cliente y el servidor, y es muy importante que puedas conectar un dispositivo central a varios dispositivos periféricos, pero un dispositivo periférico solo puede estar conectado a un dispositivo central al mismo tiempo. Esa también es la razón por la que, por ejemplo, no puedes conectar tus auriculares y tu reloj inteligente al mismo teléfono inteligente, pero no puedes conectar tus auriculares a dos teléfonos inteligentes al mismo tiempo. Eso simplemente no es posible. Ahora, como parte de BLE, el grupo de interés especial de Bluetooth introdujo GATT, el perfil genérico de atributos, y básicamente es la forma en que el dispositivo periférico expone sus datos al cliente. Tendrías el servidor GATT que contiene una lista de servicios GATT, cada servicio es simplemente un grupo de características, y ahora, una característica identifica un valor y también define qué operaciones se pueden realizar en ese valor. Por ejemplo, si tienes un nivel de batería, tiene sentido que puedas leer el nivel de batería y también quieres ser notificado cuando el nivel de batería cambie en el dispositivo, pero no tiene sentido que sea escribible porque no puedes simplemente sobrescribir el nivel de batería y esperar que sea mágicamente 100 por ciento, si ese fuera el caso, nuestros problemas de energía, problemas de cambio climático se resolverían. Pero no es así. Pero si tienes la dirección de vuelo de un dron, por ejemplo, ahí sí tiene sentido o es crucial que puedas controlar la dirección, que no puedas controlar tu dron. Necesita ser escribible. Ahora, un valor GATT es una estructura de datos de bajo nivel, es solo un conjunto de bytes. Si ahora miras el lado derecho, aquí tengo la implementación de un servidor GTT del Playbulb Sphere, que es una bombilla de luz BLE, y tenemos los servicios, tenemos las características, y es muy importante mencionar que los servicios y características no se identifican realmente por sus nombres, sino por UUID. Hay una lista de UUID estándar mantenidos por el grupo de interés especial de Bluetooth que cubren casos de uso comunes como información sobre el dispositivo o niveles de batería, por lo que sabemos que en cada dispositivo, el servicio, o digamos el servicio 180F, sería el servicio de batería, pero también tenemos servicios no estándar como en ese ejemplo el servicio de luz y la característica de luz, y ahí podemos utilizar UUID de 128 bits, por lo que son largos y únicos, o podemos elegir UUID de 16 bits que aún no están especificados, en ese caso tenemos FF0F para el servicio de luz y FFFC para la característica. La parte complicada ahora es cómo se estructuran esos valores. Los dos primeros son bastante básicos, es básicamente una cadena codificada en UTF-8. El nivel de batería es la representación decimal de nuestro byte, por lo que 5a sería el 90 por ciento, y ahora para las características personalizadas, tenemos que recurrir a la documentación, y en la mayoría de los casos no hay documentación, pero en nuestro caso, tenemos documentación, por lo que sabemos que el Playbulb Sphere tiene cuatro bytes, cuatro LED dentro de la bombilla de luz, y con el valor de cada byte, puedes controlar la intensidad de uno de esos LED, y lo interesante ahora es que con rojo, verde y azul, básicamente podemos crear cualquier color que tengamos en el espacio de color RGB. Ahora que tenemos los conceptos básicos, veamos la API web. La API web es bastante sencilla.

2. Interactuando con dispositivos utilizando la API Web Bluetooth

Short description:

Para interactuar con dispositivos utilizando la API Web Bluetooth, debes solicitar un dispositivo, especificar los servicios y características, y conectarte al servidor. Puedes leer valores obteniendo el servicio y la característica utilizando UUID, y escribir valores llamando a la función de escritura de valores. Además, puedes escuchar cambios en los valores de las características y recibir notificaciones sobre la eficiencia de la batería. Luego, puedes probar la API conectándote a un dispositivo Playbop Sphere y seleccionando servicios para leer y escribir valores.

Primero debes solicitar un dispositivo, pasar un conjunto de filtros, necesitamos especificar los servicios que usaremos más adelante, y cuando se ejecute ese código, el usuario verá esta ventana emergente, allí podemos seleccionar uno de todos los dispositivos que coincidan con los filtros que hemos definido.

En nuestro caso, queremos filtrar por el nombre Playbop Sphere, y por lo tanto podemos seleccionar el Playbop Sphere, una vez que el usuario se conecta a él, podemos llamar a device.connect para conectarnos al servidor.

Para leer el valor, podemos obtener el servicio utilizando el UUID y también la característica utilizando el UUID. Ahora, en la característica, podemos llamar a characteristic.readValue para leer el valor, y en ese caso, recibiremos una vista de datos y ahora estamos interesados en el primer byte de la vista de datos en formato decimal, así que en este momento solo queremos imprimir en la consola el nivel de batería de la característica del dispositivo.

Dado que la característica de la batería también permite la operación de notificación, podemos agregar un event listener para el cambio de valor de la característica, y eso se activará cada vez que el nivel de batería cambie en el dispositivo. Es muy importante aquí también que necesitamos llamar a notifications porque, por eficiencia de la batería, esos eventos no se envían de forma predeterminada.

Para escribir valores, nuevamente necesitamos solicitar el servicio y la característica, esta vez para el servicio de luz. Ahora podemos leer el valor como antes, pero ahora estamos interesados en el valor RGB. Así que el segundo, el tercer y el cuarto valor. Y ahora, para escribir un valor, podemos llamar a la función writeValue sin respuesta o con respuesta. Eso depende del dispositivo que estés utilizando. Pero ambas funciones aceptan una nueva vista de datos. Así que en ese caso, simplemente sobrescribiremos la vista de datos actual y eso cambiará la característica en el dispositivo.

Ahora comencemos con una pequeña demostración. En primer lugar, mis diapositivas se ejecutan en el navegador. Lo que puedo hacer es abrir la consola. Y estos son exactamente los comandos que has visto antes. En primer lugar, copiemos esto. No soy una persona de trackpad, pero creo que funcionará. Ahora podemos conectarnos al Playbop Sphere. En el dispositivo, podemos seleccionar el servidor. En el servidor, podemos seleccionar el servicio de diapositivas. Y en el servicio de luz, ahora podemos escribir un nuevo valor. Así que en nuestro caso, queremos sobrescribir ese valor y esperamos que la bombilla de luz se encienda. Sí, OK. Lo siento, olvidé obtener la característica. Intentémoslo de nuevo. Aquí vamos. No, lo siento. Espera.

3. Explorando Web Bluetooth y Creando un Zumbador BLE

Short description:

Conectémonos al servicio y a la característica y veamos si se vuelve azul. Web Bluetooth nos permite controlar cualquier dispositivo BLE, pero la ingeniería inversa de dispositivos Bluetooth puede ser desafiante debido a la falta de estándares. Exploré el mundo de los Arduinos y Raspberry Pis, y creé un Zumbador BLE utilizando un Arduino Nano RP2040. El zumbador tiene un chip Bluetooth y una característica que cambia de cero a 255. Mi aplicación web escucha este cambio y muestra la siguiente diapositiva.

OK, intentémoslo de nuevo. Siempre es agradable hacer codificación en vivo o demostraciones en una conferencia. Así que vamos de nuevo. Conectémonos. Servicio. Ahora. Característica. Y ahora el momento de la verdad. ¿Se pondrá azul? Sí, lo hará.

OK. Entonces, al final, con Web Bluetooth, básicamente ahora podemos controlar cualquier dispositivo BLE que tengamos a nuestro alrededor. Pero hay un problema. La ingeniería inversa de dispositivos Bluetooth es un gran dolor de cabeza. Antes de encontrar el Play Bulbsphere, probé un par de bombillas de luz RGB diferentes. Y el problema es que, como no hay un estándar para la luz, cada fabricante tiene su propio conjunto de características, sus propios UUID. Y yo estaba allí tratando de darle sentido a esto. Y eso fue una gran pérdida de tiempo y energía.

Por otro lado, hay todo un nuevo mundo justo afuera de la ventana, el mundo de los Arduinos, Raspberry Pis, PICOs, hardware. Quiero decir, soy un desarrollador front-end. Nunca tuve contacto con hardware en ningún momento de mi carrera. Pero pensé, bueno, vamos a embarcarnos en una aventura. Y resultó que la aventura fue un agujero de conejo bastante profundo. Y todavía estoy en algún lugar por ahí. Pero logré crear este Zumbador BLE, que es un Arduino Nano RP2040, que es el último chip o módulo de Arduino, debo decir. Y también hay un chip Bluetooth en la placa.

Entonces, lo que tengo aquí, básicamente, es solo un servidor, un servicio, una característica que tiene un byte. Y ese byte puede ser cero cuando está en estado predeterminado, o puede ser 255 cuando se presiona. Y ahora, mi aplicación web utiliza el Bluetooth para escuchar el evento de cambio de valor de esa característica. Y cada vez que cambia de cero a 255, simplemente mostraré la siguiente diapositiva.

4. Construyendo Ruedas de Velocidad y Explorando la Plataforma Web

Short description:

Construí un pequeño coche llamado Speed Wheels utilizando un Arduino Nano conectado a motores y un anillo LED RGB. Debido a mi limitado conocimiento de C++, trasladé la lógica pesada a JavaScript y utilicé una característica con dos bytes para controlar las ruedas izquierda y derecha. Demostré la funcionalidad conectando dos Speed Wheels y utilizando el giroscopio de un smartphone. Además, exploré el potencial de la plataforma web, incluyendo la API de orientación del dispositivo y TensorFlow.js para el aprendizaje automático con un modelo de gestos de mano.

Lo siguiente, lo estoy usando todo el tiempo, pero el problema es que tal vez no lo veas. Bueno, lo siguiente que construí es este pequeño coche. Es nuevamente un Arduino Nano. Se llama Speed Wheels. No es muy rápido, pero mi hijo sugirió el nombre y estoy bien con eso. Así que es un Arduino Nano conectado a esos motores y a un anillo LED RGB.

El problema que tuve aquí es que mi conocimiento de C++ es muy, muy limitado. Y todavía es muy limitado. Y mis ideas eran enormes. Así que lo que tuve que hacer es mantener la parte del dispositivo muy pequeña, muy fácil. Y mover toda la lógica pesada al cliente, a JavaScript, donde me siento cómodo. Entonces, lo que hice básicamente es tener una función que acepta dos valores, uno para la rueda izquierda y otro para la rueda derecha, entre 0, que sería la máxima velocidad hacia atrás, 100, que sería detenerse, y 200, máxima velocidad hacia adelante. Y como esos valores están en el rango de un byte, ahora podemos usar una característica con dos bytes, uno para la rueda izquierda y otro para la rueda derecha.

También tengo una demostración. Y esperemos que esta vez funcione como se espera. También, como tengo mi escenario aquí para que todos lo vean, como una aplicación web es multiplataforma por defecto, puedo usar mi smartphone con la misma aplicación web que tengo en mi escritorio. Ahora puedo conectar dos Speed Wheels. Y ahora puedo. ¡Woo! ¡Woo! ¡Woo! ¡Woo! ¡Ok, funcionó. Pero el problema es que las teclas de flecha son geniales, pero son muy aburridas. Así que se me ocurrió, o intenté aprovechar todo el potencial de la plataforma web. Por ejemplo, tenemos un giroscopio en el smartphone. Así que ahora puedo usar la API de orientación del dispositivo para convertir el movimiento de mi, ah, no. Ok. Todavía está funcionando, así que sí funciona. Pero quiero decir, la orientación del dispositivo es genial, pero tenemos cosas interesantes en la web. Por ejemplo, tenemos el aprendizaje automático. Y como sabrás, podemos usar TensorFlow.js dentro del navegador. Y lo que hice fue tomar un modelo de gestos de mano. Aquí vamos.

5. Explorando las Limitaciones de la API Web Bluetooth

Short description:

Analizo la entrada de video y convierto los gestos de mano en eventos característicos. Tenemos poderosas APIs que se pueden conectar al máximo potencial de la plataforma web. ¿Podemos conectar múltiples dispositivos a una sola aplicación web? No encontré ningún límite.

Y ahora realmente espero que la luz esté bien. Lo que hago básicamente es analizar la entrada de video proporcionada, y trato de convertir los gestos de mano en eventos característicos correctos. Y tiene cierto retraso, pero funciona. En resumen, tenemos estas nuevas y poderosas APIs. Podemos conectarlas al máximo potencial de la plataforma web. Y me pregunto, ¿hasta dónde podemos llegar? Quiero decir, tenemos, o dije al principio que podemos conectar múltiples dispositivos periféricos a un dispositivo central. Pero, ¿también podemos conectar múltiples dispositivos a una sola aplicación web? Si es así, ¿dónde están los límites? Y no encontré ningún límite.

QnA

Demo de la API Web Audio y Preguntas y Respuestas

Short description:

Creé una demostración utilizando la API Web Audio para analizar la entrada de audio e interactuar con ella. La aplicación web envía comandos a mis dispositivos, incluyendo una bombilla y matrices de LED. Si eres un desarrollador web interesado en el desarrollo de hardware, ahora es el momento perfecto. Hay algunas preguntas sobre cómo controlar múltiples dispositivos y usar Bluetooth a distancia.

Así que yo y mis pequeños amigos aquí, creamos una pequeña demostración donde estoy utilizando la API Web Audio para analizar una entrada de audio dada. Y allí puedo interactuar con el audio. Y por ejemplo, puedo obtener el volumen de una frecuencia dada o el ritmo y todo. Y esperemos que el audio también esté encendido. Eso debería ser todo. No quería hacerlo en una demostración en vivo porque hay tantas cosas que necesitan funcionar correctamente.

Podemos conectar la bombilla. Tengo dos pequeñas matrices de LED donde puedo establecer el valor de cada uno de esos LED. Necesito acelerar un poco el proceso porque lleva demasiado tiempo. Pero una vez que todos los dispositivos están conectados, podemos llevarte un poco atrás en el tiempo. Y... Entonces, al final, todo lo que has visto en el video es la aplicación web que analiza la entrada de audio y luego envía muchos pequeños comandos a mis dispositivos.

Eso fue todo de mi parte. Fue genial estar aquí. Tengo algo que decir. Si eres un desarrollador web, si eres un desarrollador front-end, y creo que la mayoría de ustedes lo son, y alguna vez has querido adentrarte en el desarrollo de hardware, ahora es el momento perfecto. Muchas gracias. Mis diapositivas están en línea, así que tendrás todos los enlaces a los hilos de Twitter y los perfiles de GitHub también. Y si hay alguna pregunta, creo que tenemos un par de minutos. ¡Hay algunas preguntas! Vamos a tomar nuestros lugares aquí, MC, orador, y le pido amablemente a nuestro equipo de AV que ponga las preguntas en la pantalla grande.

Sí, entonces, en realidad, ¿cómo controlas dos dispositivos si eso es posible en absoluto? Bueno, es posible. Tal vez hayas visto las dos matrices de LED, tienen el mismo nombre, y simplemente puedes conectarte a ellas y luego tienes dos instancias de ese dispositivo. Así que al final, eso está perfectamente bien, sin problema. Genial. Bueno, esa es una pregunta muy interesante. ¿Puedes usar Bluetooth para controlar tu dispositivo si estás lejos de él? Bueno, por supuesto, debe estar dentro del rango, en el rango de Bluetooth, porque no puedes conectarte de otra manera. Creo que esta no es una pregunta muy simple. Quiero decir, sí, por supuesto, no es posible por Bluetooth, ¿verdad? Porque el punto principal de Bluetooth es estar cerca. Pero ¿por qué no crear algún tipo de biblioteca para proporcionar un respaldo? Entonces, si estás fuera del alcance de Bluetooth, tal vez puedas intentar suerte con alguna conexión cloud y enviar comandos desde tu centro de control a través de otros canales. Además, Bluetooth, el alcance no es tan pequeño, porque con Bluetooth 5.0, he leído que debería ser posible comunicarse a más de 100 metros o más.

Disponibilidad y Soporte Multiplataforma

Short description:

La API Web Bluetooth no está disponible en todos los navegadores, ya que actualmente solo es compatible con los navegadores basados en Chromium. Esto significa que no se puede utilizar en dispositivos iOS, ya que estos dependen del motor WebKit. Sin embargo, existe la esperanza de un soporte futuro, ya que los cambios regulatorios pueden obligar a Apple a permitir otros motores de navegadores en iOS. Además, ha habido desarrollos recientes en el ecosistema de WebKit, como la introducción de notificaciones push, lo que puede indicar un cambio potencial en su postura hacia las API de hardware. Mientras tanto, se recomienda el uso de mejoras progresivas y detección de características para trabajar con la API Web Bluetooth.

Así que está bastante bien, diría yo. No estoy seguro de cuánto tiempo llevará, pero debería ser posible. Sí, solo piensa que este tipo de biblioteca de respaldo podría ser al menos un nominado para el próximo año en una de estas nominaciones. Tal vez, no lo sé. El proyecto más divertido o más emocionante. De acuerdo.

Sin embargo, la última pregunta, o en realidad no la última, así que profundicemos dos minutos más. Primero, una pregunta sencilla. ¿Esta API está disponible en todos los navegadores y qué hay del soporte multiplataforma? Bueno, no lo está. El problema es que ya está disponible en todos los navegadores basados en Chromium desde 2017. No está disponible, por ejemplo, en WebKit. Eso también significa que no podemos usarlo en iOS, porque todos los navegadores necesitan utilizar WebKit en el fondo, pero hay alguna esperanza porque creo que ahora hay algunos cambios regulatorios donde tal vez Apple se vea obligado a permitir otros motores de navegadores en iOS, y también he visto últimamente algún movimiento en todo el ecosistema de WebKit, así que ahora que permitirán notificaciones push, tal vez también cambien de opinión sobre todas las API de hardware, porque ese también es el caso de WebUSB, WebSerial, todas esas cosas geniales, pero por ahora, está disponible en navegadores basados en Chromium. Sí, y diría que las mejoras progresivas y la detección de características son tus mejores amigos.

Muchas gracias, Niko. Dame cinco. Sí, muchas gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

JSNation 2023JSNation 2023
25 min
Pushing the Limits of Video Encoding in Browsers With WebCodecs
High quality video encoding in browsers have traditionally been slow, low-quality and did not allow much customisation. This is because browsers never had a native way to encode videos leveraging hardware acceleration. In this talk, I’ll be going over the secrets of creating high-quality videos in-browsers efficiently with the power of WebCodecs and WebAssembly. From video containers to muxing, audio and beyond, this talk will give you everything you need to render your videos in browsers today!
JSNation 2022JSNation 2022
22 min
How I've been Using JavaScript to Automate my House
Software Programming is naturally fun but making something physical, to interact with the world that you live in, is like magic. Is even funnier when you can reuse your knowledge and JavaScript to do it. This talk will present real use cases of automating a house using JavaScript, Instead of using C++ as usual, and Espruino as dev tools and Microcontrollers such as Arduino, ESP8266, RaspberryPI, and NodeRed to control lights, doors, lockers, and much more.
JSNation 2022JSNation 2022
28 min
MIDI in the Browser... Let's Rock the Web!
If you own an electronic music instrument made in the last 3 decades, it most likely supports the MIDI protocol. What if I told you that it is possible to interact with your keytar or drum machine directly from your beloved browser? You would go crazy, right? Well, prepare to do so…With built-in support in Chrome, Firefox and Opera, this possibility is now a reality. This talk will introduce the audience to the Web MIDI API and to my own WEBMIDI.js library so you can get rockin' fast.Web devs, man your synths!
JSNation 2023JSNation 2023
11 min
Web Push Notifications Done Right
Finally, Web Push API is available in all major browsers and platforms. It's a feature that can take your users' experience to the next level or... ruin it! In my session, after a tech intro about how Web Push works, we'll explore implementing smart permission request dialogues, various types of notifications themselves, and communicating with your app for more sophisticated scenarios - all done right, with the best possible UX.

Workshops on related topic

Node Congress 2022Node Congress 2022
57 min
Writing Universal Modules for Deno, Node and the Browser
Workshop
This workshop will walk you through writing a module in TypeScript that can be consumed users of Deno, Node and the browsers. I will explain how to set up formatting, linting and testing in Deno, and then how to publish your module to deno.land/x and npm. We’ll start out with a quick introduction to what Deno is.
JSNation Live 2021JSNation Live 2021
105 min
Build an IoT App With InfluxDB
Workshop
InfluxDB is an open source time series database that empowers developers to build IoT, analytics and monitoring software. It is purpose-built to handle the massive volumes and countless sources of time-stamped data produced sensors, applications and infrastructure.
This workshop showcases a fully functional sample application called IoT Center that is built on InfluxDB. This application demonstrates the capabilities of the InfluxDB platform to develop a JavaScript-enabled time-series-based application. It collects, stores and displays a set of values that include temperature, humidity, pressure, CO2 concentration, air quality, as well as provide GPS coordinates from a set of IoT devices. With this data stored in InfluxDB, the application can query this data for display as well as write data back into the database.
This hands-on workshop will show students how to install this open source code to learn how to query and write to InfluxDB using the InfluxDB JavaScript client, and gain familiarity with the Flux lang query language which is designed for querying, analyzing, and acting on time series data. And finally, collect and visualize performance data of the Node JS application.
Node Congress 2021Node Congress 2021
131 min
IoT Center Workshop by InfluxData
Workshop
InfluxDB is an open source time series database that empowers developers to build IoT, analytics and monitoring software. It is purpose-built to handle the massive volumes and countless sources of time-stamped data produced sensors, applications and infrastructure. This workshop showcases a fully functional sample application called IoT Center that is built on InfluxDB. This application demonstrates the capabilities of the InfluxDB platform to develop a JavaScript-enabled time-series-based application. It collects, stores and displays a set of values that include temperature, humidity, pressure, CO2 concentration, air quality, as well as provide GPS coordinates from a set of IoT devices. With this data stored in InfluxDB, the application can query this data for display as well as write data back into the database.
This hands-on workshop will show students how to install this open source code to learn how to query and write to InfluxDB using the InfluxDB JavaScript client, and gain familiarity with the Flux lang query language which is designed for querying, analyzing, and acting on time series data. And finally, collect and visualize performance data of the Node JS application.
Prerequisites
Registered free InfluxDB Cloud account at https://cloud2.influxdata.comThree options available (via Google account, via Microsoft account or via email)Test login after the registration and save credentials for the workshopInstallation of the git tool (e.g. from https://git-scm.com/downloads)IoT Center cloneRun: git clone https://github.com/bonitoo-io/iot-center-v2Installed nodejs (from https://nodejs.org/en/download)Installed yarn package manager (from https://classic.yarnpkg.com/en/docs/install)Installed required packagesIn the cloned directoryRun: cd appRun: yarn install