Ejemplo de controlador y recorrido

Prev Next

Introducción

Version Compatibility

Users will not be able to have a driver run in an app until the Edge Driver Page is added. Please reach out to developer@tulip.co in the meantime.

Cómo probar un Edge Driver personalizado utilizando una placa de desarrollo ESP32 y un sensor de temperatura y humedad DHT22 fácilmente disponible.

Qué necesitarás (requisitos previos):* LOLIN S3 Mini ejecutando CircuitPython* Tu IDE (Entorno de Desarrollo Integrado) de elección - Visual Studio Code* Node.js y NPM

En esta guía, vamos a caminar a través de un ejemplo de construcción y prueba de un controlador Edge personalizado para una placa de desarrollo ESP32 y un sensor de temperatura y humedad DHT22 fácilmente disponible.

Preparación del hardware

Para este ejemplo, utilizaremos una placa de desarrollo LOLIN S3 Mini (basada en el microcontrolador ESP32-S3) que ejecuta CircuitPython para leer datos de un sensor de temperatura y humedad DHT22.

Cableado del sensor DHT22 al ESP32

Conectar el sensor DHT22 al S3 Mini es sencillo:1. GND (-) en DHT22 → GND pin en el S3 Mini2. VCC (+) en DHT22 → pin 3V3 en el S3 Mini3. OUT (S) en DHT22 → pin D1 en el S3 Mini (o cualquier pin IO disponible)

Lectura de los datos del sensor

Aquí hay un enlace para configurar CircuitPython.

A continuación se muestra un sencillo script de CircuitPython que lee los valores de temperatura y humedad del sensor DHT22 cada segundo e imprime los datos como JSON a través de la interfaz serie USB. También estamos añadiendo el texto "ESP:" antes de cada mensaje, así nuestro driver puede ignorar otros mensajes serie como logs e información de arranque.

Guarda este script como en la unidad CIRCUITPY, y automáticamente empezará a enviar datos a través del puerto serie:```import adafruit_dhtimport boardimport timeimport json

dht = adafruit_dht.DHT22(board.D1)

while True: print( "ESP:", json.dumps( { "temperatura": dht.temperatura, "humedad": dht.humedad, } ), ) time.sleep(1)```

Creación del controlador Edge

Para crear un Edge Driver personalizado, necesitarás tener instalado Node.js y NPM. Si no has instalado Node.js y NPM, sigue esta guía.

Creación de un nuevo proyecto de controlador Edge

Ejecuta el siguiente comando para crear un nuevo proyecto Edge Driver:npx @tulip/create-edge-driver

Siga las instrucciones para configurar su controlador. Para este ejemplo, llamaremos a nuestro controlador "esp32-diy-sensor" y habilitaremos el servicio Serial para leer datos del S3 Mini a través de su interfaz USB.SDK

Una vez completada la configuración, navega al directorio de tu proyecto y ejecuta:npm run buildEstecomando:* Validará el archivo manifest.json.* Compilará el código TypeScript.* Empaquetará el driver en un archivo JavaScript que puede ser cargado en Tulip Player.

Actualización de manifest.json

En primer lugar, tenemos que definir los eventos y funciones implementadas por nuestro controlador. Los eventos del dispositivo se pueden utilizar como disparadores para la lógica en Tulip Apps. Por ejemplo, puedes configurar un disparador de App como:

"Cuando mi sensor dispara un evento de medición, almacena los datos de temperatura en la variable 'Shop Floor Temperature'".

Los controladores también pueden implementar funciones de dispositivo, que pueden ejecutarse en respuesta a disparadores dentro de una app. Por ejemplo:

"Cuando haga clic en este botón, llama a la función 'Alternar luz' de mi dispositivo".

En este ejemplo, nuestro driver no tendrá funciones, pero disparará un evento llamado "data" cuando nuestro sensor tome una medida. Actualiza la sección functions en tu archivo src/manifest.json dejándola vacía o eliminándola por completo:

json... "functions":``[],...A continuación actualiza la sección events para definir la forma del evento "data". Este evento será un objeto con dos propiedades flotantes, "temperatura" y "humedad":json... "eventos": [ { "name": "data", "schema": { "type": "object", "properties": { "temperatura": { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Actualizando

Ahora vamos a escribir el código del controlador que utiliza el SDK Edge Driver para encontrar y conectarse al puerto serie USB del S3 Mini, lee los datos serie entrantes, analiza los mensajes JSON, y dispara el evento "data" utilizando fireEvent(). Sustituye el código de ejemplo en tu archivo src/index.ts por este nuevo código:



serial.onData((data) => { try { const decoder = new TextDecoder(); const stringData = decoder.decode(new Uint8Array(data)); const espData = JSON.parse(stringData.split("ESP: ")[1]); edgeDriverSdk.fireEvent("data", espData); } catch (error) { console.error(error); } });


serial.open();});```En este ejemplo, intentamos encontrar automáticamente el dispositivo utilizando el ID de producto del dispositivo USB cuando el controlador se inicia por primera vez. Sin embargo, el SDK de Edge Driver también permite configurar los controladores para que se inicien cuando el sistema detecte nuevos dispositivos, lo que puede ayudar a crear controladores de producción más robustos.


### Creación y ejecución del controlador


Después de actualizar el código del controlador y manifest.json, construya el controlador de nuevo`:npm run buildEsto`generará el archivo JavaScript compilado y empaquetado, así como una copia del manifiesto validado dentro del directorio **dist**.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.19%20AM.png){height="" width=""}


### Probando tu driver en Tulip Player


Por defecto, Tulip Player se ejecuta con controladores integrados que funcionan de forma inmediata. Sin embargo, también puede ejecutar su controlador personalizado localmente en Tulip Player, incluso sin una instancia de Tulip. Para ello, puedes iniciar Player desde la línea de comandos con la ruta al directorio dist de tu driver. Descarga e instala **Tulip Player** desde [aquí](https://download.tulip.co/). 


En Windows, esto se hace utilizando el comando `set` en el terminal para establecer la variable de entorno `TULIP_PLAYER_CUSTOM_DRIVERS_PATH`, y luego ejecutando el "Tulip Player.exe" desde el mismo terminal:


`batC:\Users\Bob> set "TULIP_PLAYER_CUSTOM_DRIVERS_PATH=C:\Users\Bob\Documents\esp32-diy-sensor\dist "C:\Users\Bob> "C:\Users\Bob\AppData\Local\tulip-player-desktop\Tulip Player.exe"`


Una vez iniciado el reproductor, abre **Browser Developer Tools** en la aplicación Player y ve a la pestaña Console.![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.26%20AM.png){height="" width=""}


Filtra los mensajes con "[CED]" para ver los registros de tu controlador.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.30%20AM.png){height="" width=""}


Si tiene éxito, debería ver los eventos "data" que registran los valores de temperatura y humedad en tiempo real.


### Uso de su controlador en una aplicación Tulip


Pronto, podrás subir controladores personalizados a tu instancia de Tulip. Hasta entonces, podemos importar un controlador de ejemplo predefinido.


Ve a la biblioteca de Tulip e instala cualquier driver que tenga un botón de instalación como [este](https://library.tulip.co/devices/espressif-esp32).


Instala el driver cuando se te pida. Crea una nueva Tulip App y añade un trigger "Machines & devices" a tu paso.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.41%20AM.png){height="" width=""}


Deberías ver el sensor de temperatura y humedad ESP32 importado en la lista de dispositivos.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.46%20AM.png){height="" width=""}


Ahora, puedes crear un disparador que actualice algunas variables de la aplicación con los datos en tiempo real del sensor.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.51%20AM.png){height="" width=""}


Crea algunos widgets que utilicen esas variables en tu paso para que puedas visualizar los datos de temperatura y humedad en tu app.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.58%20AM.png){height="" width=""}


### Ejecutando tu Tulip App


Una vez que tu app esté configurada, ejecútala en Tulip Player. Si todo está configurado correctamente, deberías ver los valores de los sensores en tiempo real actualizándose en tu aplicación.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.13.05%20AM.png){height="" width=""}


¡Y eso es todo! ¡Has construido, probado e integrado con éxito un Edge Driver personalizado en Tulip!