Introduzione
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.
Una volta completata la configurazione, spostarsi nella cartella del progetto ed eseguire:npm run buildQuesto
comando:* 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 buildQuesto
genererà il file JavaScript compilato e distribuito in bundle, nonché una copia del manifest convalidato all'interno della directory dist.
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.
Filtrare i messaggi con "[CED]" per visualizzare i log dei driver.
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.
Dovreste vedere il sensore di temperatura e umidità ESP32 importato nell'elenco dei dispositivi.
Ora è possibile creare un trigger che aggiorna alcune variabili dell'applicazione con i dati del sensore in tempo reale.
Creare alcuni widget che utilizzano queste variabili sul proprio passo, in modo da poter visualizzare i dati di temperatura e umidità nella propria applicazione.
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!
E questo è tutto! Avete costruito, testato e integrato con successo un driver Edge personalizzato in Tulip!