Control de Robot en Tiempo Real Desde el Navegador Con WebRTC

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
GithubProject website
Rate this content

¡Explora un mundo de hardware como nunca has visto antes! Esta presentación contendrá demostraciones en vivo utilizando tanto robots locales como aquellos en producción de todo el país. Aunque la tecnología utilizada es avanzada, el enfoque es accesible para cualquiera que haya usado JavaScript antes.

La charla cubre la arquitectura de WebRTC como un conjunto de tecnologías para habilitar la comunicación peer-to-peer, así como cómo se puede aprovechar para interactuar con hardware embebido y robótica desde el navegador, todo utilizando APIs de JavaScript. Mi objetivo es hacer que la programación de dispositivos sea más accesible para los desarrolladores web y demostrar una solución práctica para llevar proyectos de hobby de tu escritorio a producción.

This talk has been presented at JSNation 2025, check out the latest edition of this JavaScript Conference.

Nick Hehr
Nick Hehr
21 min
16 Jun, 2025

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Nick Hare, developer advocate en Veeam, aprendió robótica a partir de proyectos de código abierto. WebRTC facilita conexiones seguras entre máquinas. Implementar WebRTC implica usar Stun, candidatos ICE, servidores TURN y señalización. La señalización y las Llamadas a Procedimientos Remotos son cruciales para la comunicación peer-to-peer. Construir un prototipo con Notify implica mensajería PubSub y REST API. Establecer conexiones WebRTC y canales de datos permite mensajería directa. La transmisión de video y el control remoto se demuestran con una cámara web conectada a una Raspberry Pi. El desarrollo de robótica VM permite construir robots y máquinas inteligentes con soporte en la nube y SDK.

1. Understanding Robotics and WebRTC

Short description:

Nick Hare, defensor de desarrolladores en Veeam. Sin educación formal en robótica. Aprendió de proyectos de código abierto. Los robots ayudan a los humanos en varias tareas. Teleoperaciones para monitoreo remoto. WebRTC para conectar máquinas de forma segura. Tecnología basada en navegador para comunicación entre pares. Biblioteca Libpeer para soporte de WebRTC.

Hola, mi nombre es Nick Hare. Soy un defensor de desarrolladores senior en una empresa llamada Veeam, una plataforma para conectar a los desarrolladores de software con el mundo físico. Puedes encontrar mi handle y logo en línea en la mayoría de los lugares en Hipster Brown. Me gustaría comenzar diciendo que no tengo educación formal en ingeniería embebida, robótica, o incluso desarrollo de software. He aprendido de otros que han compartido su conocimiento a través de proyectos de código abierto, presentaciones en masterclasses locales y conferencias, y en línea a través de videos y publicaciones de blog, lo que me emociona mucho estar en una posición para compartir ese conocimiento con todos ustedes hoy y espero inspirarlos a construir su primer robot.

Ahora, cuando digo robot, ¿qué imagen viene a la mente? Al crecer, pensaba en robots como Rosie o C3PO y R2D2, o incluso Wall-E y Eve. Estos son ejemplos de máquinas autónomas, inteligentes, y a veces humanoides que existen en mundos imaginarios. Mirando el mundo hoy, hay algunos robots que coinciden con lo que hemos imaginado en varias formas, atlas, dígitos, incluso figura cero uno. Pero la mayoría de la producción de robótica está en forma de brazos industriales o rovers, o realmente solo varios actuadores y sensores combinados para realizar alguna tarea específica para ayudar y asistir a los humanos en completar sus trabajos para ser más eficientes, más seguros, y hacerlo desde cualquier lugar del mundo.

Y hay bastantes funciones robóticas que requieren monitoreo y control de esas máquinas desde lejos. Esto cae bajo la categoría de teleoperaciones o tele-op. Y esto podría incluir vigilar una flota autónoma de vehículos de entrega o coches autónomos y tomar el control si se pierden o entran en situaciones inesperadas. Podría ser pilotar vehículos que están en entornos que son inadecuados para la vida humana, como en las profundidades del mar, en el espacio, o en el desierto, o experiencias de telepresencia y telemedicina. También se puede usar para crear arte único como el telegarden. Incluso esos robots humanoides más avanzados actualmente dependen de un humano en el bucle para funcionar.

2. WebRTC Connectivity for Robots

Short description:

Los robots se comunican en diferentes redes. WebRTC para conexiones directas entre clientes. Legado en voz sobre IP y videoconferencias. Capacidades de WebRTC más allá de los pares humanos. Las APIs y protocolos permiten el intercambio de datos. Protocolos base IP y UDP para WebRTC.

Ahora, algunos robots se comunican con servidores remotos en entornos de nube. Algunos están confinados a la red local. Y otros se comunican directamente entre sí. Pero, ¿qué tipo de tecnología y protocolos podrían soportar la conexión a una máquina desde cualquier otro mundo sin exponerla a Internet público? Bueno, como se indica en el título de esta presentación, estamos hablando de WebRTC. Y probablemente hayas oído hablar de ello antes y lo hayas utilizado en alguna aplicación construida con él.

Ahora, como el nombre indica, fue construido alrededor de navegadores y proporcionando una plataforma para conectar a los clientes directamente sin necesidad de relays a través de algún tipo de aplicación de servidor central o compartido, que podría ser requerido al usar algo como WebSockets. Debido a su legado vinculado a voz sobre IP y videoconferencias, WebRTC se utiliza en gran medida para esa función exacta. Todos hemos pasado por nuestra buena parte de Skype, RIP y llamadas de Hangouts, Zoom y Teams a lo largo de los años. Algunos de nosotros incluso hemos pasado por un tutorial de mensajería de chat entre pares en el pasado también.

Pero esas son realmente solo las capacidades que WebRTC tiene para ofrecer. ¿Qué pasaría si un par no fuera otro humano, sino una máquina respondiendo la llamada? ¿Cómo podría esto ser posible? ¿El robot abre un navegador web y hace clic como algún tipo de agente de IA? Bueno, ¿y si pudiéramos usar las APIs y protocolos de WebRTC que típicamente se encuentran en el navegador, pero en un servidor, es decir, nuestro robot? WebRTC es realmente solo un conjunto de tecnologías acrónimas que permiten enviar audio, video y datos arbitrarios directamente entre dos clientes o pares. Y esto quiere decir que la mayoría de los dispositivos de computación y lenguajes de programación tienen alguna forma de trabajar con los protocolos base de IP y UDP.

3. Implementación y Conectividad de WebRTC

Short description:

Implementando WebRTC en diferentes entornos. Usando Stun para descubrir las IPs de los pares. Candidatos ICE para conexiones. Servidores TURN como respaldo. Señalización para el intercambio de información. Establecimiento de conexión cliente-servidor WebRTC.

Y así, las capas superiores solo necesitan ser implementadas para soportar el uso de WebRTC en esos entornos. Y existen varios proyectos para proporcionar eso hoy. A un nivel relativamente bajo, está la biblioteca libpeer escrita en C. Hay algunas opciones para Node.js y algunos proyectos maduros para Python, Go y Rust.

Genial. Así que parece que podemos usar WebRTC en el servidor, pero ¿cómo lo usamos realmente para conectar con nuestro robot? Bueno, para que WebRTC funcione, se requiere Stun para descubrir la dirección IP y el puerto de cada par desde la perspectiva de Internet público. Es como usar un satélite GPS para ver dónde estamos en relación con el mundo entero en lugar de solo lo que vemos a nuestro alrededor.

Durante este proceso, el cliente también puede reunir métodos potenciales para conectarse a cada par a través del Establecimiento de Conectividad Interactiva o candidatos ICE. Si no pueden conectarse directamente entre sí debido a restricciones como cortafuegos, los clientes pueden recurrir a usar TURN o servidores de retransmisión. Ahora, esta es una opción de último recurso ya que añade latencia a la conexión, costos de mantenimiento y un posible punto de falla para la experiencia. Durante este proceso de recopilación de información de Stun e ICE, dos pares necesitan la forma de compartir esa información entre sí antes de que se pueda establecer una conexión directa.

4. Signaling and Remote Procedure Calls

Short description:

Señalización para aplicaciones peer-to-peer. Rol del servidor de señalización en las conexiones. Formato estructurado para enviar comandos. Llamadas a Procedimientos Remotos para comunicación agnóstica. Establecimiento de canales de datos para comunicación adicional.

Y esto se conoce como señalización. Sin embargo, la especificación en sí no requiere ningún detalle sobre cómo llevar a cabo la señalización. Y así, esto es una especie de espada de doble filo al intentar construir una aplicación peer-to-peer. Así que la mayoría de ellos tendrán algún tipo de componente del lado del servidor que retransmite mensajes entre los pares usando web sockets o incluso llamadas HTTP simples. Cualquier método o tecnología que uses, solo necesita haber alguna forma para que dos o más pares establezcan una conexión e intercambien esa información inicial para que suceda.

Una vez que están conectados, entonces se puede usar un canal de datos compartido para una mayor negociación en el proceso. Entonces, ¿cómo funciona esto para un robot? Conceptualmente, tratamos nuestro servidor, como nuestro robot, como un respondedor listo para recibir llamadas. Un cliente, como nuestro navegador, es un llamador. El servidor de señalización empareja llamadores con respondedores para que puedan intercambiar información y esperar establecer una conexión. Así que cuando un robot está activo y en línea, informará al servidor de señalización cuando esté disponible para recibir llamadas. Cuando una aplicación cliente llama a un robot a través del servidor de señalización, entonces el programa en el robot aceptará esa oferta, proporcionará una respuesta y escuchará cualquier canal de datos que se abra para establecer esos patrones de comunicación adicionales.

Muy bien. Entonces, ¿qué hacemos una vez que tenemos esa corriente de datos disponible? Podríamos enviar mensajes de cadena arbitrarios, incluso stringify JSON, y asegurarnos de que nuestro robot sepa cómo responder a cada mensaje. Sin embargo, esto sería bastante tedioso y propenso a errores a medida que construimos tanto la lógica del robot como la aplicación web. Ayudaría tener algún tipo de formato estructurado para enviar comandos desde la aplicación cliente que se ejecuten en el robot sin especificar, ya sabes, qué son exactamente o incluso solo poder especificar la respuesta esperada para cada comando. Ahora, este es un caso de uso perfecto para llamadas a procedimientos remotos o RPC. Básicamente, esto proporciona una especificación de una forma agnóstica de comunicarse entre servidores y clientes que crea una especie de fachada que parece que estás llamando a un método en el cliente que se ejecuta en el servidor sin realmente preocuparte de cómo esos datos llegan allí y de vuelta.

5. Building a Proof of Concept with Notify

Short description:

Frameworks RPC explícitos e implícitos. Prueba de concepto de JavaScript de pila completa utilizando APIs integradas. Utilizando Notify para mensajería PubSub y API REST.

Es posible que hayas oído hablar de frameworks RPC explícitos como gRPC, tRPC y JSON-RPC, donde el servidor y los clientes están claramente definidos. Algunos usos implícitos de RPC están ganando popularidad para aplicaciones de JavaScript de pila completa llamados acciones o funciones del servidor, y estos están muy acoplados con HTTP. En nuestro caso, queremos algo que pueda adaptarse a nuestro canal de datos bidireccional, y esa es la transmisión que proviene de nuestra conexión peer-to-peer. Genial.

Con todos los requisitos establecidos, construyamos una prueba de concepto utilizando JavaScript de pila completa. Estableceremos esto y lo lograremos utilizando principalmente APIs integradas para el navegador y Node.js junto con algunos paquetes. Lo desglosaremos pieza por pieza antes de juntar todo, comenzando con la señalización. En lugar de construir y alojar un servicio personalizado para realizar esta tarea, quería centrarme solo en nuestro código peer. Así que, he optado por una solución suficientemente buena para la mensajería PubSub llamada Notify. Este es un servicio de código abierto que proporciona una API REST para enviar y recibir mensajes sobre temas específicos. No se requiere registro.

Y Notify tiene algunas formas programáticas de suscribirse a mensajes a través de su API, utilizando ya sea puntos finales HTTP o WebSockets. Puede parecer natural usar WebSockets, pero realmente solo se utilizan para suscribirse a temas en lugar de la conexión bidireccional para la que normalmente los usamos. Así que, esto es un poco más de sobrecarga de la que me gustaría para mi prueba de concepto. Me quedaré con uno de los puntos finales HTTP para adaptarse mejor a mis necesidades. Ahora, los eventos del lado del servidor son una buena manera nativa del navegador de suscribirse a mensajes a través de HTTP. Sin embargo, necesito algo más para Node.js si no quiero agregar otra dependencia más. ¿Qué tal los flujos JSON?

6. Estableciendo la Conexión WebRTC y el Canal de Datos

Short description:

Estableciendo la conexión WebRTC con la clase RTC peer connection. Usando servidores públicos para la conexión WebRTC. Creando un canal de datos para mensajería directa entre pares.

El objeto de respuesta de hacer una solicitud fetch puede tener una propiedad body que implementa un flujo de bytes. Y podemos canalizar ese flujo a través de algún tipo de transformación para convertirlo en texto UTF-8. Y podemos analizar esas cadenas JSON en los objetos de mensaje que están definidos por Notify. Y podemos envolver todo esto en una especie de clase notificador que proporciona todas las diferentes cosas relacionadas con suscribirse a mensajes, cancelar suscripciones e incluso publicarlas.

Y con nuestro método de señalización en su lugar, echemos un vistazo a establecer nuestra conexión WebRTC. Así que, necesitamos nuestra clase RTC peer connection de nuestro paquete Node.js o globalmente en el navegador. Y si solo necesitáramos conectarnos a dispositivos en la misma red, realmente no hay necesidad de servidores stun o turn bajo este conjunto de servidores ice que vemos cuando estamos creando nuestra nueva conexión peer. Pero eso no es muy útil para una demostración realista. Solo se necesita uno de estos servidores stern. Así que, la mayoría de las aplicaciones usarán los públicos de Twilio o Google.

Desde esa conexión peer, creamos nuestro canal de datos para enviar y recibir mensajes directamente entre cada par. Este canal de datos creativamente nombrado con la etiqueta de data está configurado como un canal negociado, donde el ID acordado se establece fuera de banda. Y lo que realmente significa es que está codificado en nuestro programa, ya que sabemos que siempre debería haber un solo canal con esta etiqueta. Y aquí es donde divergimos entre nuestro robot y nuestra aplicación web. Como se mencionó anteriormente, el cliente actúa como un llamador y el robot responde si está en línea. Así que, el cliente crea una oferta para conectarse. Y esto se establece como la descripción local antes de enviarlo al robot a través de nuestro servicio de señalización.

7. Configurando los Candidatos ICE y Construyendo el Marco RPC

Short description:

Configurando candidatos ICE y estableciendo conexión. Construyendo marco RPC. Controlando componentes de hardware de forma remota.

Y esto se establece como la descripción local antes de enviarlo al robot a través de nuestro servicio de señalización. Afortunadamente, la mayoría de los objetos en esta API tienen un método JSON dos para portabilidad a través de servicios de señalización. El robot recibe ese mensaje para establecerlo como su descripción remota antes de crear una respuesta para establecerla como su descripción local y luego enviarlo a nuestra aplicación web. Para completar esta parte del intercambio, la aplicación web maneja nuestra respuesta y la establece como su descripción remota. Durante todo esto, comenzamos a compartir y establecer candidatos ICE. Así que, la aplicación web llamadora escuchará este evento de candidato ICE que indica cuándo se ha identificado un nuevo candidato y se ha agregado a la conexión peer local. El llamador enviará esa información al robot a través de nuestro servicio de señalización. Y esto puede suceder varias veces a lo largo del proceso, hasta que nuestro estado de conexión ICE esté conectado. Y si un candidato es nulo en el objeto de evento, entonces esto indica que la recopilación de candidatos ICE está completa. En el robot, verifica este candidato en nuestro mensaje y lo agrega a la conexión peer local. Y esto señalará al proceso interno que intente conectarse utilizando esos detalles. Ahora, los pares utilizarán toda esta información para, con suerte, conectarse entre sí y llevar a un estado de conexión ICE de completado. Al mismo tiempo, esto debería alinearse con un evento abierto que ocurre en nuestro canal de datos para comenzar a permitir que los pares se comuniquen a través de ese transporte.

Con nuestra sesión WebRTC en su lugar, veamos cómo construir nuestro marco RPC a su alrededor. El paquete JSON RPC 2.0 proporciona nuestras clases de cliente y servidor agnósticas al transporte para enviar y recibir comandos, así como algunas interfaces de TypeScript para aquellos de nosotros que queremos asegurar cierta consistencia. Crearemos un servidor de robot y un cliente de robot y utilizaremos el canal de datos para enviar cualquier solicitud RPC a través de esa transmisión. El canal de datos puede escuchar nuevos mensajes para analizarlos como solicitudes RPC y reenviarlos a nuestro servidor y luego otras respuestas RPC para reenviarlas al cliente. Muy bien, y ahora tenemos nuestro marco de comunicación listo para funcionar. Ahora, solo necesitamos controlar nuestro hardware. Johnny 5 comenzó como una forma de escribir JavaScript para controlar varias placas Arduino a través de conexiones de puerto serie. Proporciona clases abstractas para controlar todo tipo de componentes físicos de la misma manera que jQuery proporcionó abstracciones sobre inconsistencias en las API de los navegadores. Desde su creación, el núcleo se ha ampliado a través de complementos de IO, extendiéndose para soportar todo tipo de plataformas de hardware, incluyendo computadoras de placa única basadas en Linux como la Raspberry Pi. Muy bien, creo que ahora tenemos todas las piezas que necesitamos para controlar nuestro robot en tiempo real desde el navegador. En mi escritorio a mi derecha, tengo una cámara sobre una Raspberry Pi con un LED conectado a ella. Podemos ver en nuestra aplicación web, tengo la capacidad de conectarme a un robot que he llamado Robot Dev. Ahora, el lado del servidor de nuestro proceso se está ejecutando en mi Raspberry Pi en Node.js, y esto se está ejecutando en GitHub pages en el navegador. Puedo presionar conectar y vemos que nos hemos conectado a nuestro robot. Puedo presionar conectar y vemos que nos hemos conectado a nuestro robot. Eso es bastante rápido y sin problemas. Pero podemos ver desde aquí todos los diferentes mensajes que ocurrieron para hacer que eso sucediera.

8. Video Streaming and Remote Control

Short description:

Enviando estados de señalización y comandos. Transmisión de video con cámara web conectada a Raspberry Pi.

Así que tenemos ofertas. Tenemos todos nuestros estados de señalización sucediendo, nuestros candidatos de recolección de ice. Podemos ver que los estamos enviando al servidor. Y eventualmente obteniendo algunas respuestas también. Con suerte, llevando a nuestros estados y conexiones de señalización estables, viendo que nos hemos conectado. Y eventualmente teniendo nuestro canal de datos abierto.

Y ahora que tenemos nuestro canal de datos, podemos enviar nuestro comando para parpadear el LED. Esto es básicamente el hello world del hardware, que es parpadear un LED. Lo vemos sucediendo en nuestra transmisión de cámara a nuestra derecha. Esto es genial. Me alegra poder verlo en la misma habitación que yo. Pero, ¿qué pasaría si quisiera verlo en otro lugar del mundo?

Bueno, usemos lo que WebRTC tiene para ofrecer, que es la transmisión de video. Tengo una cámara web conectada a nuestra Raspberry Pi a través de USB. Y así puedo comenzar a enviar esa transmisión de video desde la Raspberry Pi a mi navegador. Puedo iniciar mi video. Ahora podemos ver que lo mismo está sucediendo en nuestra cámara superior, directamente desde la cámara web USB conectada a la Raspberry Pi.

9. VM Robotics Development and Community Engagement

Short description:

Juego de garra con brazo robótico controlado por aplicación TypeScript. VM permite construir robots y máquinas inteligentes con soporte en la nube y SDK. Experimenta el control y la programación de robots en el navegador. Conéctate con la comunidad de VM en Discord y LinkedIn.

Esto es genial. Hemos terminado lo básico. Pero, ¿qué tal algo un poco más realista? Bueno, en la ciudad de Nueva York, la oficina de VM tiene un juego de garra. Y este juego de garra es un recinto que tiene una cámara arriba, adjunta al techo, así como una cámara web USB adjunta a la garra misma. Y este brazo robótico se puede usar para moverse y luego recoger bolas y dejarlas de nuevo en su lugar como cualquier otro juego de garra.

Y tenemos una aplicación web de TypeScript que se puede usar para controlarlo. Así que puedo ir y elegir una coordenada dentro de nuestra máquina de garra. Y podemos ver que sucede desde 20 millas de distancia que la garra comienza a moverse después de recibir esta solicitud. La cámara IP es un poco más lenta para actualizarse solo por las tasas de fotogramas. Y luego puedo solicitar que vaya y recoja una bola y regrese a la ubicación.

Y todo esto se extrae a través de APIs de TypeScript. Podemos ver que recoge una bola. Tuvimos un poco de suerte esta vez. Solo porque es un brazo robótico no significa que el juego de garra siempre tendrá éxito. Y traerlo de vuelta a nuestro contenedor. Y eventualmente dejarlo en su lugar. Ahora, puede que no te sorprenda saber que esta es exactamente la forma en que VM permite a los desarrolladores construir robots y otro tipo de máquinas inteligentes, junto con un montón de otras características.

El kit de desarrollo de robots es el núcleo de código abierto de este producto. Y está respaldado por los servicios en la nube para configurar, controlar y monitorear tus máquinas individuales o múltiples en el campo. El SDK tipo dos, como lo demostré con esa aplicación web, se utiliza para controlar máquinas activas, flujos de cámara o incluso consultar datos de sensores desde el navegador o entornos de Node JS. Cuando termines de revisar el código, puedes probar VM en el navegador sin necesidad de hardware en mano.

Puedes alquilar un rover gratis por un corto período de tiempo. Obtienes la experiencia de controlar, programar o incluso entrenar un robot desde la comodidad de tu computadora. Espero que estés suficientemente motivado para construir un robot para ti mismo. Así que la documentación de VM es una gran manera de inspirarte y aprender cómo hacer realidad tu idea. O explora nuestros laboratorios de código para tutoriales de extremo a extremo de todo tipo de conceptos, desde automatización de hardware hasta visión por computadora y control por voz. Puedes explorar el código de demostración de esta charla en GitHub. Gracias por escuchar. Y puedes ver lo que la comunidad desarrolladora de VM está construyendo uniéndote a nuestro Discord. Escanea el código QR para mantenerte al día con lo que estamos trabajando en VM, junto con las últimas noticias de la industria. Puedes conectarte conmigo en LinkedIn en Nick Hur o en Hips Around Most Anywhere Else. Feliz construcción.

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

El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
React Summit US 2023React Summit US 2023
28 min
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
Top Content
The speaker discusses the whimsical and detailed work of Stripe, particularly their interactive and dynamic pages. They explain the use of React for building whimsical details and tracking mouse position. The speaker introduces React Spring for smooth animation and React3 Fiber for creating a 3D egg model. They also mention the use of Framer Motion and React server components for animating CSS properties.
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
React Day Berlin 2022React Day Berlin 2022
28 min
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
Today's Talk discussed the importance of UI animations in React, both functional and emotional. Examples were given using CSS and Framer Motion, with a focus on user feedback and accessibility. Design guidelines and animation usage were highlighted, as well as the consideration of negative emotions in animations. The Talk also touched on designing 404 error pages and concluded with gratitude to the audience and organizers.
JavaScript Haikus: Mis Aventuras en la Programación Mínima
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
JavaScript Haikus: Mis Aventuras en la Programación Mínima
This Talk is about writing super tiny JavaScript programs, known as tiny code. It explores the concept of code golf and the use of a live editor for instant feedback. The Talk discusses various ways to share tiny code, including Twitter.net. It also covers creating graphics, games, and sound in a small space. The speaker highlights inspiring tweets and showcases examples of tiny code, including asemic writing. The future of tiny code includes new techniques, better browser support, and AI-assisted programming.
La Guía del Autoestopista para Arquitecturas Basadas en Eventos
Node Congress 2025Node Congress 2025
30 min
La Guía del Autoestopista para Arquitecturas Basadas en Eventos
Premium
Today's Talk introduced event-driven architectures with Node.js. The event loop in Node.js enables non-blocking interaction between components. The event emitter class is used to handle events synchronously. Redis and Apache Kafka are popular tools for event handling, with Kafka providing scalability and persistence. Kafka.js is a JavaScript library that supports transactions and compression. Server-sent events are used to send events to the client. A plugin and library are used to convert an event emitter to an async iterator. The client displays emojis and updates the vote count.
Cómo he estado utilizando JavaScript para automatizar mi casa
JSNation 2022JSNation 2022
22 min
Cómo he estado utilizando JavaScript para automatizar mi casa
The Talk covers various experiments with JavaScript and C++, including controlling lights and creating a car control system. The speaker shares his experiences with home automation and the challenges of hiding wires. He explores using JavaScript with Esperino for face recognition and discusses the benefits and limitations of the platform. The Talk concludes with suggestions for using JavaScript in hardware projects and learning opportunities.
Construyendo una Aplicación IoT con InfluxDB, JavaScript y Plotly.js
JSNation 2023JSNation 2023
20 min
Construyendo una Aplicación IoT con InfluxDB, JavaScript y Plotly.js
This Talk introduces building an IoT app with InfluxDB, JavaScript, and PlotlyJS, highlighting the benefits of time series databases for handling high ingestion rates and data manipulation. It provides instructions for setting up IoT devices and connecting sensors, along with data cleaning and transformation techniques. The Talk covers creating a bucket in InfluxDB, using JavaScript client libraries for data read and write, querying and graphing data with InfluxDB and Plotly.js, creating dashboards, and available learning resources. Overall, it offers a comprehensive overview of building IoT applications with InfluxDB.

Workshops on related topic

Construye una aplicación IoT con InfluxDB
JSNation Live 2021JSNation Live 2021
105 min
Construye una aplicación IoT con InfluxDB
Workshop
Miroslav Malecha
Miroslav Malecha
InfluxDB es una base de datos de series temporales de código abierto que permite a los desarrolladores construir software para IoT, análisis y monitoreo. Está diseñada específicamente para manejar los volúmenes masivos y las innumerables fuentes de datos con marca de tiempo producidos por sensores, aplicaciones e infraestructura.
Este masterclass muestra una aplicación de muestra completamente funcional llamada IoT Center que está construida sobre InfluxDB. Esta aplicación demuestra las capacidades de la plataforma InfluxDB para desarrollar una aplicación basada en series de tiempo habilitada para JavaScript. Recopila, almacena y muestra un conjunto de valores que incluyen temperatura, humedad, presión, concentración de CO2, calidad del aire, así como proporciona coordenadas GPS de un conjunto de dispositivos IoT. Con estos datos almacenados en InfluxDB, la aplicación puede consultar estos datos para mostrarlos y también escribir datos de nuevo en la base de datos.
Este masterclass práctico mostrará a los estudiantes cómo instalar este código de código abierto para aprender a consultar y escribir en InfluxDB utilizando el cliente JavaScript de InfluxDB, y familiarizarse con el lenguaje de consulta Flux que está diseñado para consultar, analizar y actuar sobre datos de series de tiempo. Y finalmente, recopilar y visualizar datos de rendimiento de la aplicación Node.js.
Masterclass de IoT Center por InfluxData
Node Congress 2021Node Congress 2021
131 min
Masterclass de IoT Center por InfluxData
Workshop
Miroslav Malecha
Miroslav Malecha
InfluxDB es una base de datos de series temporales de código abierto que permite a los desarrolladores construir software de IoT, análisis y monitoreo. Está diseñado específicamente para manejar los volúmenes masivos y las innumerables fuentes de datos con marca de tiempo producidos por sensores, aplicaciones e infraestructura. En esta masterclass se presenta una aplicación de muestra completamente funcional llamada IoT Center que se basa en InfluxDB. Esta aplicación demuestra las capacidades de la plataforma InfluxDB para desarrollar una aplicación basada en series de tiempo habilitada para JavaScript. Recopila, almacena y muestra un conjunto de valores que incluyen temperatura, humedad, presión, concentración de CO2, calidad del aire, así como proporciona coordenadas GPS de un conjunto de dispositivos IoT. Con estos datos almacenados en InfluxDB, la aplicación puede consultar estos datos para mostrarlos y también escribir datos en la base de datos.
En esta masterclass práctica, los estudiantes aprenderán cómo instalar este código de código abierto para aprender a consultar y escribir en InfluxDB utilizando el cliente JavaScript de InfluxDB, y familiarizarse con el lenguaje de consulta Flux que está diseñado para consultar, analizar y actuar sobre datos de series de tiempo. Y finalmente, recopilar y visualizar datos de rendimiento de la aplicación Node.js.
Requisitos previos
Cuenta gratuita registrada en InfluxDB Cloud en https://cloud2.influxdata.comTres opciones disponibles (a través de cuenta de Google, a través de cuenta de Microsoft o a través de correo electrónico)Probar inicio de sesión después del registro y guardar las credenciales para la masterclassInstalación de la herramienta git (por ejemplo, desde https://git-scm.com/downloads)Clonar IoT CenterEjecutar: git clone https://github.com/bonitoo-io/iot-center-v2Instalar nodejs (desde https://nodejs.org/en/download)Instalar el gestor de paquetes yarn (desde https://classic.yarnpkg.com/en/docs/install)Instalar los paquetes requeridosEn el directorio clonadoEjecutar: cd appEjecutar: yarn install