Esempio di driver e guida a piedi

Prev Next

Introduzione

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.

Come testare un Edge Driver personalizzato utilizzando una scheda di sviluppo ESP32 e un sensore di temperatura e umidità DHT22 facilmente reperibile.

Cosa vi serve (prerequisiti):* LOLIN S3 Mini con CircuitPython* L'IDE (ambiente di sviluppo integrato) di vostra scelta - Visual Studio Code* Node.js e NPM

In questa guida, illustreremo un esempio di costruzione e test di un driver Edge personalizzato per una scheda di sviluppo ESP32 e un sensore di temperatura e umidità DHT22 facilmente reperibile.

Preparazione dell'hardware

Per questo esempio, utilizzeremo una scheda di sviluppo LOLIN S3 Mini (basata sul microcontrollore ESP32-S3) con CircuitPython per leggere i dati da un sensore di temperatura e umidità DHT22.

Cablaggio del sensore DHT22 all'ESP32

Il collegamento del sensore DHT22 all'S3 Mini è semplice: 1. GND (-) sul DHT22 → pin GND sull'S3 Mini2. VCC (+) su DHT22 → pin 3V3 su S3 Mini3. OUT (S) sul pin DHT22 → D1 dell'S3 Mini (o qualsiasi altro pin IO disponibile)

Lettura dei dati del sensore

Ecco un link per configurare CircuitPython.

Di seguito è riportato un semplice script CircuitPython che legge i valori di temperatura e umidità dal sensore DHT22 ogni secondo e stampa i dati come JSON attraverso l'interfaccia seriale USB. Aggiungiamo anche il testo "ESP:" prima di ogni messaggio, in modo che il nostro driver possa ignorare altri messaggi seriali come i log e le informazioni di avvio.

Salvate questo script come sull'unità CIRCUITPY e inizierà automaticamente a inviare i dati sulla porta seriale:```import adafruit_dhtimport boardimport timeimport json

dht = adafruit_dht.DHT22(board.D1)

while True: print( "ESP:", json.dumps( {"temperature": dht.temperature, "humidity": dht.moisture, } ), ) time.sleep(1)```

Creazione del driver Edge

Per creare un driver Edge personalizzato, è necessario installare Node.js e NPM. Se non avete installato Node.js e NPM, seguite questa guida.

Creare un nuovo progetto di driver Edge

Eseguite il seguente comando per creare un nuovo progetto Edge Driver:npx @tulip/create-edge-driver

Seguire le indicazioni per configurare il driver. Per questo esempio, chiameremo il nostro driver "esp32-diy-sensor" e abiliteremo il servizio Serial per leggere i dati dall'S3 Mini attraverso la sua interfaccia USB.SDK

Una volta completata la configurazione, spostarsi nella cartella del progetto ed eseguire:npm run buildQuestocomando:* convalida il file manifest.json.* compila il codice TypeScript.* impacchetta il driver in un file JavaScript che può essere caricato in Tulip Player.

Aggiornamento di manifest.json

Per prima cosa, dobbiamo definire gli eventi e le funzioni implementate dal nostro driver. Gli eventi del dispositivo possono essere usati come trigger per la logica delle applicazioni Tulip. Ad esempio, è possibile impostare un trigger dell'applicazione come:

"Quando il mio sensore genera un evento di misurazione, memorizza i dati sulla temperatura nella variabile 'Shop Floor Temperature'".

I driver possono anche implementare funzioni del dispositivo, che possono essere eseguite in risposta a trigger all'interno di un'app. Ad esempio:

"Quando faccio clic su questo pulsante, richiama la funzione 'Toggle Light' sul mio dispositivo".

In questo esempio, il nostro driver non avrà funzioni, ma attiverà un evento chiamato "data" quando il nostro sensore effettua una misurazione. Aggiornare la sezione functions nel file src/manifest.json, lasciandola vuota o rimuovendola completamente:

json... "functions":``[],...Quindi aggiornare la sezione events per definire la forma dell'evento "data". Questo evento sarà un oggetto con due proprietà float, "temperatura" e "umidità":json... "eventi": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Aggiornamento

Ora scriveremo il codice del driver che utilizza l'Edge Driver SDK per trovare e connettersi alla porta seriale USB dell'S3 Mini, leggere i dati seriali in arrivo, analizzare i messaggi JSON e lanciare l'evento "data" utilizzando fireEvent(). Sostituire il codice di esempio nel file src/index.ts con questo nuovo codice:

``jsedgeDriverSdk.SerialPort.listAvailablePorts().then((ports) => { const esp32port = ports.find((port) => port.productId === 33128); const serial = new edgeDriverSdk.SerialPort(esp32port.path, { baudRate: 115200, });

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 questo esempio, cerchiamo automaticamente di trovare il dispositivo utilizzando l'ID prodotto del dispositivo USB quando il driver viene avviato per la prima volta. Tuttavia, l'SDK Edge Driver supporta anche la configurazione dei driver da avviare quando il sistema rileva nuovi dispositivi, il che può aiutare a creare driver di produzione più robusti.

Creazione ed esecuzione del driver

Dopo aver aggiornato il codice del driver e il manifest.json, costruire nuovamente il driver:npm run buildQuestogenererà il file JavaScript compilato e distribuito in bundle, nonché una copia del manifest convalidato all'interno della directory dist.

SDK

Testare il driver in Tulip Player

Per impostazione predefinita, Tulip Player viene eseguito con i driver integrati che funzionano immediatamente. Tuttavia, è possibile eseguire il proprio driver personalizzato localmente in Tulip Player, anche senza un'istanza Tulip. A tale scopo, è possibile lanciare Player dalla riga di comando con il percorso della directory dist del driver. Scaricare e installare Tulip Player da qui.

In Windows, questo si fa usando il comando set nel terminale per impostare la variabile d'ambiente TULIP_PLAYER_CUSTOM_DRIVERS_PATH, quindi eseguendo "Tulip Player.exe" dallo stesso terminale:

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 volta avviato il player, aprire Browser Developer Tools nell'applicazione Player e andare alla scheda Console.SDK

Filtrare i messaggi con "[CED]" per visualizzare i log dei driver.

SDK

In caso di successo, si dovrebbero vedere gli eventi "data" che registrano i valori di temperatura e umidità in tempo reale.

Utilizzo dell'autista in un'applicazione Tulip

Presto sarà possibile caricare driver personalizzati sulla propria istanza Tulip. Fino ad allora, possiamo importare un driver di esempio predefinito.

Andate nella libreria di Tulip e installate qualsiasi driver che abbia un pulsante di installazione come questo.

Installare il driver quando viene richiesto. Creare una nuova applicazione Tulip e aggiungere un trigger "Macchine e dispositivi" al passo.

SDK

Dovreste vedere il sensore di temperatura e umidità ESP32 importato nell'elenco dei dispositivi.

SDK

Ora è possibile creare un trigger che aggiorna alcune variabili dell'applicazione con i dati del sensore in tempo reale.

SDK

Creare alcuni widget che utilizzano queste variabili sul proprio passo, in modo da poter visualizzare i dati di temperatura e umidità nella propria applicazione.

SDK

Esecuzione dell'applicazione Tulip

Una volta configurata l'applicazione, eseguirla in Tulip Player. Se tutto è stato configurato correttamente, si dovrebbe vedere l'aggiornamento dei valori dei sensori in tempo reale nella propria app!

SDK

E questo è tutto! Avete costruito, testato e integrato con successo un driver Edge personalizzato in Tulip!