Introduction
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.
Comment tester un Edge Driver personnalisé en utilisant une carte de développement ESP32 et un capteur de température et d'humidité DHT22.
Ce dont vous aurez besoin (pré-requis):* LOLIN S3 Mini exécutant CircuitPython* Votre IDE (Environnement de Développement Intégré) de choix - Visual Studio Code* Node.js et NPM
Dans ce guide, nous allons voir un exemple de construction et de test d'un Edge Driver personnalisé pour une carte de développement ESP32 et un capteur de température et d'humidité DHT22.
Préparation du matériel
Pour cet exemple, nous utiliserons une carte de développement LOLIN S3 Mini (basée sur le microcontrôleur ESP32-S3) avec CircuitPython pour lire les données d'un capteur de température et d'humidité DHT22.
Câblage du capteur DHT22 à l'ESP32
La connexion du capteur DHT22 au S3 Mini est simple : 1. GND (-) sur le DHT22 → GND pin sur le S3 Mini2. VCC (+) sur le DHT22 → broche 3V3 sur le S3 Mini3. OUT (S) sur DHT22 → D1 pin sur le S3 Mini (ou tout autre IO pin disponible)
Lecture des données du capteur
Voici un lien pour configurer CircuitPython.
Ci-dessous se trouve un script CircuitPython simple qui lit les valeurs de température et d'humidité du capteur DHT22 toutes les secondes et imprime les données au format JSON via l'interface série USB. Nous ajoutons également le texte "ESP :" avant chaque message, afin que notre pilote puisse ignorer les autres messages série tels que les logs et les informations de démarrage.
Sauvegardez ce script en tant que sur le lecteur CIRCUITPY, et il commencera automatiquement à envoyer des données sur le port série:``import adafruit_dhtimport boardimport timeimport json
dht = adafruit_dht.DHT22(board.D1)
while True : print("ESP :", json.dumps( { "temperature" : dht.temperature, "humidity" : dht.humidity, } ), ) time.sleep(1)````
Création d'un pilote Edge
Pour créer un pilote Edge personnalisé, vous devez installer Node.js et NPM. Si vous n'avez pas installé Node.js et NPM, suivez ce guide.
Création d'un nouveau projet Edge Driver
Exécutez la commande suivante pour créer un nouveau projet Edge Driver:npx @tulip/create-edge-driver
Suivez les instructions pour configurer votre pilote. Pour cet exemple, nous nommerons notre pilote "esp32-diy-sensor" et activerons le service Serial pour lire les données du S3 Mini via son interface USB.
Une fois l'installation terminée, naviguez dans le répertoire de votre projet et lancez:npm run buildCette
commande va :* Valider le fichier manifest.json.* Compiler le code TypeScript.* Regrouper le pilote dans un fichier JavaScript qui peut être chargé dans Tulip Player.
Mise à jour du fichier manifest.json
Tout d'abord, nous devons définir les événements et les fonctions implémentés par notre pilote. Les événements de l'appareil peuvent être utilisés comme déclencheurs de logique dans Tulip Apps. Par exemple, vous pouvez mettre en place un déclencheur d'application comme :
"Lorsque mon capteur déclenche un événement de mesure, stocker les données de température dans la variable 'Température de l'atelier'.
Les pilotes peuvent également mettre en œuvre des fonctions d'appareil, qui peuvent être exécutées en réponse à des déclencheurs dans une application. Par exemple : "Lorsque je clique sur ce bouton, appeler la variable 'température de l'atelier'" :
"Lorsque je clique sur ce bouton, j'appelle la fonction 'Toggle Light' de mon appareil."
Dans cet exemple, notre pilote n'aura pas de fonctions, mais déclenchera un événement appelé "data" lorsque notre capteur prendra une mesure. Mettez à jour la section functions dans votre fichier src/manifest.json en la laissant vide ou en la supprimant complètement :
json... "functions" :``[],...
Ensuite, mettez à jour la section events pour définir la forme de l'événement "data". Cet événement sera un objet avec deux propriétés flottantes, "temperature" et "humidity":json... "events" : [ { "name" : "data", "schema" : { "type" : "object", "properties" : { "temperature" : { "type" : "float" }, "humidity" : { "type" : "float" }, "humidité" : { "type" : "float" } : "float" } } } } ],...
Mise à jour
Nous allons maintenant écrire le code du pilote qui utilise le Edge Driver SDK pour trouver et se connecter au port série USB du S3 Mini, lire les données série entrantes, analyser les messages JSON et déclencher l'événement "data" à l'aide de fireEvent(). Remplacez le code de l'exemple dans votre fichier src/index.ts par ce nouveau code :
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();});``Dans cet exemple, nous essayons automatiquement de trouver le périphérique en utilisant l'ID de produit du périphérique USB lorsque le pilote démarre pour la première fois. Cependant, le SDK Edge Driver prend également en charge la configuration des pilotes pour qu'ils soient lancés lorsque de nouveaux périphériques sont détectés par le système, ce qui permet de créer des pilotes de production plus robustes.
### Construction et exécution du pilote
Après avoir mis à jour le code du pilote et le manifest.json, compilez à nouveau le pilote`:npm run buildCeci`générera le fichier JavaScript compilé et regroupé ainsi qu'une copie du manifeste validé dans le répertoire **dist**.
{height="" width=""}
### Tester votre pilote dans Tulip Player
Par défaut, Tulip Player fonctionne avec des pilotes intégrés qui sont prêts à l'emploi. Cependant, vous pouvez également exécuter votre pilote personnalisé localement dans Tulip Player, même sans instance Tulip. Pour ce faire, vous pouvez lancer Tulip Player à partir de la ligne de commande avec le chemin d'accès au répertoire dist de votre pilote. Téléchargez et installez **Tulip Player** [ici](https://download.tulip.co/).
Sous Windows, cela se fait en utilisant la commande `set` dans le terminal pour définir la variable d'environnement `TULIP_PLAYER_CUSTOM_DRIVERS_PATH`, puis en lançant "Tulip Player.exe" à partir du même 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"`
Une fois le lecteur démarré, ouvrez **Browser Developer Tools** dans l'application Player et allez dans l'onglet Console.{height="" width=""}
Filtrez les messages avec "[CED]" pour voir les journaux de votre pilote.
{height="" width=""}
Si vous réussissez, vous devriez voir des événements "data" enregistrant les valeurs de température et d'humidité en temps réel.
### Utilisation de votre conducteur dans une application Tulip
Bientôt, vous pourrez télécharger des pilotes personnalisés dans votre instance Tulip. En attendant, nous pouvons importer un exemple de pilote prédéfini.
Allez dans la bibliothèque Tulip et installez n'importe quel pilote ayant un bouton d'installation comme [celui-ci](https://library.tulip.co/devices/espressif-esp32).
Installez le pilote lorsque vous y êtes invité. Créez une nouvelle application Tulip et ajoutez un trigger "Machines & devices" à votre étape.
{height="" width=""}
Vous devriez voir le capteur de température et d'humidité ESP32 importé dans la liste des appareils.
{Vous devriez voir le capteur de température et d'humidité ESP32 importé dans la liste des périphériques.}
Maintenant, vous pouvez créer un déclencheur qui met à jour certaines variables de l'application avec les données du capteur en temps réel.
{Vous pouvez maintenant créer un déclencheur qui met à jour certaines variables de l'application à l'aide des données du capteur en temps réel.}
Créez des widgets qui utilisent ces variables dans votre étape afin de pouvoir visualiser les données de température et d'humidité dans votre application.
{height="" width=""}
### Exécution de l'application Tulip
Une fois votre application configurée, lancez-la dans Tulip Player. Si tout est configuré correctement, vous devriez voir les valeurs des capteurs se mettre à jour en temps réel dans votre application !
{height="" width=""}
Et c'est tout ! Vous avez construit, testé et intégré avec succès un Edge Driver personnalisé dans Tulip !