Bevezetés
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.
Hogyan tesztelhetünk egy egyedi Edge Driver-t egy ESP32 fejlesztői kártya és egy könnyen elérhető DHT22 hőmérséklet- és páratartalom-érzékelő segítségével.
Amire szükséged lesz (előfeltételek):* LOLIN S3 Mini CircuitPython futtatásával* Az általad választott IDE (integrált fejlesztőkörnyezet) - Visual Studio Code* Node.js és NPM
Ebben az útmutatóban egy példán keresztül fogunk végigmenni egy ESP32 fejlesztőlaphoz és egy könnyen elérhető DHT22 hőmérséklet- és páratartalom-érzékelőhöz készült egyedi Edge Driver építésén és tesztelésén.
A hardver előkészítése
Ehhez a példához egy LOLIN S3 Mini fejlesztői lapot fogunk használni (amely az ESP32-S3 mikrokontrollerre épül), amelyen CircuitPython fut, hogy adatokat olvassunk be egy DHT22 hőmérséklet- és páratartalom-érzékelőből.
A DHT22 érzékelő csatlakoztatása az ESP32-hez
A DHT22 érzékelő csatlakoztatása az S3 Minihez egyszerű:1. GND (-) a DHT22-n → GND pin az S3 Minin2. VCC (+) a DHT22-n → az S3 Mini 3V3 csapja3. OUT (S) a DHT22-n → D1 csap az S3 Minin (vagy bármely rendelkezésre álló IO csap).
Az érzékelő adatainak leolvasása
Itt van egy link a CircuitPython beállításához.
Az alábbiakban egy egyszerű CircuitPython szkript található, amely másodpercenként olvassa a hőmérséklet és a páratartalom értékeit a DHT22 érzékelőből, és az adatokat JSON-ként kinyomtatja az USB soros interfészen keresztül. Minden üzenet előtt az "ESP:" szöveget is hozzáadjuk, így az illesztőprogramunk figyelmen kívül hagyhatja a többi soros üzenetet, például a naplófájlokat és a rendszerindítási információkat.
Mentsük ezt a szkriptet néven a CIRCUITPY meghajtóra, és automatikusan elkezd adatokat küldeni a soros porton keresztül:```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)```
Az Edge driver felépítése
Az egyéni Edge-illesztőprogram létrehozásához telepített Node.js és NPM szükséges. Ha még nem telepítette a Node.js-t és az NPM-et, kövesse ezt az útmutatót.
Új Edge Driver projekt létrehozása
Az új Edge Driver projekt létrehozásához futtassa a következő parancsot:npx @tulip/create-edge-driver
Kövesse az utasításokat az illesztőprogram konfigurálásához. Ebben a példában az "esp32-diy-sensor" nevet adjuk az illesztőprogramunknak, és engedélyezzük a Serial szolgáltatást, hogy adatokat olvasson az S3 Miniről annak USB-interfészén keresztül.
Ha a beállítás befejeződött, navigáljon a projekt könyvtárába, és futtassa:npm run buildEz a
parancs:* Érvényesíti a manifest.json fájlt.* Lefordítja a TypeScript kódot.* Az illesztőprogramot egy JavaScript fájlba csomagolja, amely betölthető a Tulip Playerben.
A manifest.json frissítése
Először is meg kell határoznunk az illesztőprogramunk által megvalósított eseményeket és funkciókat. Az eszközesemények a Tulip Apps logikájának kiváltójaként használhatók. Például beállíthat egy App-triggert, például így:
"Amikor az érzékelőm mérési eseményt lő, tárolja a hőmérsékleti adatokat a 'Shop Floor Temperature' változóban".
A meghajtók eszközfüggvényeket is implementálhatnak, amelyek az alkalmazáson belüli triggerek hatására hajthatók végre. Például:
"Amikor rákattintok erre a gombra, hívja meg a 'Fény kapcsolása' funkciót az eszközömön."
Ebben a példában az illesztőprogramunknak nem lesznek funkciói, de egy "data" nevű eseményt fog tüzelni, amikor az érzékelőnk mérést végez. Frissítse a functions részt az src/manifest.json fájlban, vagy hagyja üresen, vagy távolítsa el teljesen:
json... "functions":``[],...
Ezután frissítsük az események részt, hogy meghatározzuk az "data" esemény alakját. Ez az esemény egy objektum lesz két float tulajdonsággal, "hőmérséklet" és "páratartalom":json... "events": [ { { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "}, "humidity": { "type": "float" } } } } ],...
A frissítése
Most megírjuk az illesztőprogram kódját, amely az Edge Driver SDK segítségével megkeresi az S3 Mini USB soros portját és csatlakozik hozzá, bejövő soros adatokat olvas, elemzi a JSON üzeneteket, és a fireEvent() segítségével kiírja az "data" eseményt. Cserélje ki a src/index.ts fájlban lévő példakódot erre az új kódra:
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();});````Ebben a példában automatikusan megpróbáljuk megtalálni az eszközt az USB eszköz termékazonosítója alapján, amikor az illesztőprogram először indul. Az Edge Driver SDK azonban támogatja az illesztőprogramok konfigurálását is, hogy azok akkor induljanak el, amikor a rendszer új eszközt észlel, ami segíthet a robusztusabb gyártósori illesztőprogramok elkészítésében.
### Az illesztőprogram építése és futtatása
Az illesztőprogram kódjának és a manifest.json állománynak a frissítése után építse újra az illesztőprogramot`:npm run buildEz`létrehozza a lefordított és csomagolt JavaScript fájlt, valamint az érvényesített manifeszt másolatát a **dist** könyvtáron belül.
{height="" width=""}
### Az illesztőprogram tesztelése a Tulip Playerben
Alapértelmezés szerint a Tulip Player beépített illesztőprogramokkal fut, amelyek azonnal működnek. Azonban az egyéni illesztőprogramot helyileg is futtathatja a Tulip Playerben, akár Tulip példány nélkül is. Ehhez elindíthatja a Playert a parancssorból az illesztőprogram dist könyvtárának elérési útvonalával. Töltse le és telepítse **a Tulip Playert** [innen](https://download.tulip.co/).
Windowson ez úgy történik, hogy a terminálban a `set` paranccsal beállítja a `TULIP_PLAYER_CUSTOM_DRIVERS_PATH` környezeti változót, majd ugyanebből a terminálból elindítja a "Tulip Player.exe" programot:
`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"`
Miután a lejátszó elindult, nyissa meg a **Browser Developer Tools-t** a Player alkalmazásban, és lépjen a Console fülre.{height="" width=""}
Szűrje az üzeneteket a "[CED]" szóval, hogy láthassa az illesztőprogram naplóit.
{height="" width=""}
Ha sikeres, akkor látnia kell az "data" eseményeket, amelyek valós időben naplózzák a hőmérséklet és a páratartalom értékeit.
### Az illesztőprogram használata egy Tulip alkalmazásban
Hamarosan lehetőséged lesz egyéni illesztőprogramok feltöltésére a Tulip-példányodba. Addig is importálhatunk egy előre definiált példa illesztőprogramot.
Menjünk a Tulip könyvtárba, és telepítsünk bármelyik olyan illesztőprogramot, amelynek van egy telepítő gombja, [mint](https://library.tulip.co/devices/espressif-esp32) ez.
Telepítse az illesztőprogramot, amikor erre felszólítják. Hozzon létre egy új Tulip alkalmazást, és adjon hozzá egy "Gépek és eszközök" kiváltót a lépéshez.
{height="" width=""}
Látnia kell az importált ESP32 hőmérséklet- és páratartalom-érzékelőt az eszközlistában.
{height="" width=""}
Most létrehozhat egy olyan trigger-t, amely az alkalmazás néhány változóját frissíti az érzékelő élő adataival.
{height="" width=""}
Hozzon létre néhány widgetet, amelyek ezeket a változókat használják a lépésben, hogy megjeleníthesse a hőmérséklet- és páratartalom-adatokat az alkalmazásban.
{height="" width=""}
### A Tulip alkalmazás futtatása
Ha az alkalmazásodat elkészítetted, futtasd a Tulip Playerben. Ha minden helyesen van beállítva, akkor látnia kell, hogy az alkalmazásban frissülnek a valós idejű érzékelőértékek!
{height="" width=""}
És ennyi! Sikeresen elkészített, tesztelt és integrált egy egyéni Edge Driver-t a Tulipba!