Treiber Beispiel & Komplettlösung

Prev Next

Einführung

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.

Testen eines benutzerdefinierten Edge-Treibers mit einem ESP32-Entwicklungsboard und einem leicht erhältlichen DHT22-Temperatur- und Luftfeuchtigkeitssensor.

Was Sie benötigen (Voraussetzungen):* LOLIN S3 Mini mit CircuitPython* Ihre IDE (Integrierte Entwicklungsumgebung) der Wahl - Visual Studio Code* Node.js und NPM

In diesem Leitfaden werden wir ein Beispiel für den Bau und das Testen eines benutzerdefinierten Edge-Treibers für ein ESP32-Entwicklungsboard und einen leicht erhältlichen DHT22-Temperatur- und Luftfeuchtigkeitssensor durchgehen.

Vorbereiten der Hardware

Für dieses Beispiel verwenden wir ein LOLIN S3 Mini Entwicklungsboard (basierend auf dem ESP32-S3 Mikrocontroller), auf dem CircuitPython läuft, um Daten von einem DHT22 Temperatur- und Feuchtigkeitssensor zu lesen.

Verkabelung des DHT22-Sensors mit dem ESP32

Der Anschluss des DHT22-Sensors an den S3 Mini ist ganz einfach:1. GND (-) am DHT22 → GND-Pin am S3 Mini2. VCC (+) am DHT22 → 3V3 Pin am S3 Mini3. OUT (S) am DHT22 → D1-Pin am S3 Mini (oder jeder andere verfügbare IO-Pin)

Lesen von Sensordaten

Hier ist ein Link zur Einrichtung von CircuitPython.

Nachfolgend finden Sie ein einfaches CircuitPython-Skript, das die Temperatur- und Luftfeuchtigkeitswerte des DHT22-Sensors jede Sekunde ausliest und die Daten als JSON über die serielle USB-Schnittstelle ausgibt. Wir fügen auch den Text "ESP:" vor jeder Nachricht ein, damit unser Treiber andere serielle Nachrichten wie Protokolle und Boot-Informationen ignorieren kann.

Speichern Sie dieses Skript als auf dem Laufwerk CIRCUITPY, und es wird automatisch beginnen, Daten über die serielle Schnittstelle zu senden:```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)```

Erstellen Ihres Edge-Treibers

Um einen eigenen Edge-Treiber zu erstellen, müssen Sie Node.js und NPM installieren. Wenn Sie Node.js und NPM nicht installiert haben, folgen Sie dieser Anleitung.

Erstellen eines neuen Edge-Treiber-Projekts

Führen Sie den folgenden Befehl aus, um ein neues Edge-Treiber-Projekt zu erstellen:npx @tulip/create-edge-driver

Folgen Sie den Aufforderungen zur Konfiguration Ihres Treibers. In diesem Beispiel nennen wir unseren Treiber "esp32-diy-sensor" und aktivieren den seriellen Dienst, um Daten vom S3 Mini über seine USB-Schnittstelle zu lesen.SDK

Sobald die Einrichtung abgeschlossen ist, navigieren Sie zu Ihrem Projektverzeichnis und führen Sie aus:npm run buildDieserBefehl wird:* die Datei manifest.json validieren.* den TypeScript-Code kompilieren.* den Treiber in eine JavaScript-Datei bündeln, die im Tulip Player geladen werden kann.

Manifest.json aktualisieren

Zuerst müssen wir die Ereignisse und Funktionen definieren, die von unserem Treiber implementiert werden. Geräteereignisse können als Auslöser für Logik in Tulip Apps verwendet werden. Sie können zum Beispiel einen App-Trigger wie folgt einrichten:

"Wenn mein Sensor ein Messereignis auslöst, speichere die Temperaturdaten in der Variable 'Shop Floor Temperature'."

Treiber können auch Gerätefunktionen implementieren, die als Reaktion auf Auslöser innerhalb einer App ausgeführt werden können. Zum Beispiel:

"Wenn ich auf diese Schaltfläche klicke, rufe die Funktion 'Toggle Light' auf meinem Gerät auf."

In diesem Beispiel hat unser Treiber keine Funktionen, sondern löst ein Ereignis namens "data" aus, wenn unser Sensor eine Messung vornimmt. Aktualisieren Sie den Abschnitt functions in Ihrer src/manifest.json-Datei, indem Sie ihn entweder leer lassen oder ganz entfernen:

json... "functions":``[],...Dann aktualisieren Sie den Abschnitt events, um die Form des Ereignisses "data" zu definieren. Dieses Ereignis wird ein Objekt mit zwei Float-Eigenschaften sein, "temperature" und "humidity": json... "events": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Aktualisieren von

Jetzt schreiben wir den Treibercode, der das Edge Driver SDK verwendet, um den seriellen USB-Anschluss des S3 Mini zu finden und sich mit ihm zu verbinden, eingehende serielle Daten zu lesen, die JSON-Nachrichten zu parsen und das Ereignis "data" mit fireEvent() auszulösen. Ersetzen Sie den Beispielcode in Ihrer Datei src/index.ts durch diesen neuen 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();});```In diesem Beispiel wird automatisch versucht, das Gerät anhand der Produkt-ID des USB-Geräts zu finden, wenn der Treiber zum ersten Mal gestartet wird. Das Edge Driver SDK unterstützt jedoch auch die Konfiguration von Treibern, die gestartet werden, wenn neue Geräte vom System erkannt werden, was zur Erstellung robusterer Produktionstreiber beitragen kann.


### Erstellen und Ausführen des Treibers


Nachdem Sie den Treibercode und die manifest.json aktualisiert haben, bauen Sie den Treiber erneut`: npm run buildDies`erzeugt die kompilierte und gebündelte JavaScript-Datei sowie eine Kopie des validierten Manifests im **dist-Verzeichnis**.


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


### Testen Ihres Treibers in Tulip Player


Standardmäßig läuft Tulip Player mit eingebauten Treibern, die sofort funktionieren. Sie können Ihren benutzerdefinierten Treiber jedoch auch lokal in Tulip Player ausführen, sogar ohne eine Tulip-Instanz. Dazu können Sie Tulip Player von der Kommandozeile aus mit dem Pfad zum Dist-Verzeichnis Ihres Treibers starten. Laden Sie den **Tulip Player** [hier](https://download.tulip.co/) herunter und installieren Sie ihn. 


Unter Windows geschieht dies, indem Sie mit dem Befehl `set` im Terminal die Umgebungsvariable `TULIP_PLAYER_CUSTOM_DRIVERS_PATH` setzen und dann die "Tulip Player.exe" aus demselben Terminal starten:


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


Sobald der Player gestartet ist, öffnen Sie die **Browser-Entwicklertools** in der Player-App und wechseln Sie zur Registerkarte Konsole.![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.26%20AM.png){height="" width=""}


Filtern Sie Meldungen mit "[CED]", um Ihre Treiberprotokolle anzuzeigen.


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


Wenn Sie erfolgreich waren, sollten Sie "Daten"-Ereignisse sehen, die Temperatur- und Feuchtigkeitswerte in Echtzeit protokollieren.


### Verwendung Ihres Treibers in einer Tulip-App


Bald werden Sie in der Lage sein, eigene Treiber in Ihre Tulip-Instanz hochzuladen. Bis dahin können wir einen vordefinierten Beispieltreiber importieren.


Gehen Sie zur Tulip-Bibliothek und installieren Sie einen beliebigen Treiber, der eine Installationsschaltfläche wie diese hat.


Installieren Sie den Treiber, wenn Sie dazu aufgefordert werden. Erstellen Sie eine neue Tulip-App und fügen Sie einen "Maschinen & Geräte"-Trigger zu Ihrem Schritt hinzu.


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


Sie sollten den importierten ESP32 Temperatur- und Luftfeuchtigkeitssensor in der Geräteliste sehen.


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


Jetzt können Sie einen Trigger erstellen, der einige App-Variablen mit Live-Sensordaten aktualisiert.


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


Erstellen Sie einige Widgets, die diese Variablen in Ihrem Schritt verwenden, so dass Sie die Temperatur- und Luftfeuchtigkeitsdaten in Ihrer App visualisieren können.


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


### Ausführen Ihrer Tulip-App


Sobald Ihre Anwendung eingerichtet ist, führen Sie sie im Tulip Player aus. Wenn alles richtig konfiguriert ist, sollten Sie sehen, dass die Sensorwerte in Ihrer App in Echtzeit aktualisiert werden!


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


Und das war's! Sie haben erfolgreich einen benutzerdefinierten Edge-Treiber in Tulip erstellt, getestet und integriert!