Введение
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.
Как протестировать пользовательский драйвер Edge Driver, используя плату разработки ESP32 и готовый датчик температуры и влажности DHT22.
Что вам понадобится (предварительные условия):* LOLIN S3 Mini под управлением CircuitPython* Ваша IDE (интегрированная среда разработки) на выбор - Visual Studio Code* Node.js и NPM
В этом руководстве мы рассмотрим пример создания и тестирования пользовательского драйвера Edge Driver для платы ESP32 и готового датчика температуры и влажности DHT22.
Подготовка оборудования
В этом примере мы будем использовать плату разработки LOLIN S3 Mini (на базе микроконтроллера ESP32-S3) под управлением CircuitPython для считывания данных с датчика температуры и влажности DHT22.
Подключение датчика DHT22 к ESP32
Подключение датчика DHT22 к S3 Mini осуществляется просто:1. GND (-) на DHT22 → GND контакт на S3 Mini2. VCC (+) на DHT22 → контакт 3V3 на S3 Mini3. OUT (S) на DHT22 → вывод D1 на S3 Mini (или любой доступный вывод ввода-вывода).
Считывание данных с датчика
Вот ссылка на настройку CircuitPython.
Ниже представлен простой скрипт CircuitPython, который считывает значения температуры и влажности с датчика DHT22 каждую секунду и печатает данные в формате JSON через последовательный интерфейс USB. Мы также добавляем текст "ESP:" перед каждым сообщением, чтобы наш драйвер мог игнорировать другие последовательные сообщения, такие как журналы и информация о загрузке.
Сохраните этот скрипт как на диске CIRCUITPY, и он автоматически начнет отправлять данные через последовательный порт:``import adafruit_dhtimport boardimport timeimport json
dht = adafruit_dht.DHT22(board.D1)
while True: print( "ESP:", json.dumps( { "температура": dht.temperature, "влажность": dht.humidity, } ), ) time.sleep(1)```
Создание драйвера Edge
Чтобы создать пользовательский драйвер Edge, вам потребуется установить Node.js и NPM. Если вы еще не установили Node.js и NPM, следуйте этому руководству.
Создание нового проекта драйвера Edge
Выполните следующую команду, чтобы создать новый проект Edge Driver:npx @tulip/create-edge-driver
Следуйте подсказкам, чтобы настроить драйвер. В этом примере мы назовем наш драйвер "esp32-diy-sensor" и включим службу Serial для считывания данных с S3 Mini через его USB-интерфейс.
После завершения настройки перейдите в каталог проекта и выполните:npm run buildЭта
команда:* Проверит файл manifest.json.* Скомпилирует код TypeScript.* Соберет драйвер в JavaScript-файл, который можно загрузить в Tulip Player.
Обновление файла manifest.json
Во-первых, нам нужно определить события и функции, реализуемые нашим драйвером. События устройства можно использовать в качестве триггеров для логики в Tulip Apps. Например, вы можете настроить триггер приложения следующим образом:
"Когда мой датчик выдает событие измерения, сохраните данные о температуре в переменной 'Температура в цеху'".
Драйверы также могут реализовывать функции устройства, которые могут выполняться в ответ на триггеры в приложении. Например:
"Когда я нажму на эту кнопку, вызовите функцию 'Toggle Light' на моем устройстве".
В этом примере наш драйвер не будет иметь функций, но будет вызывать событие "data", когда наш датчик произведет измерение. Обновите раздел functions в файле src/manifest.json, оставив его пустым или удалив полностью:
json... "functions":``[],...
Затем обновите секцию events, чтобы определить форму события "data". Это событие будет представлять собой объект с двумя float-свойствами, "температура" и "влажность":json... "events": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "float" }, "humidity": { "type": "float" } } } } ],...
Обновление
Теперь мы напишем код драйвера, который использует Edge Driver SDK для поиска и подключения к последовательному порту USB S3 Mini, считывает входящие последовательные данные, разбирает сообщения JSON и запускает событие "data" с помощью fireEvent(). Замените код примера в файле src/index.ts этим новым кодом:
``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();});``В этом примере мы автоматически пытаемся найти устройство, используя Product ID USB-устройства при первом запуске драйвера. Однако Edge Driver SDK также поддерживает настройку драйверов на запуск при обнаружении системой новых устройств, что может помочь создать более надежные производственные драйверы.
Сборка и запуск драйвера
После обновления кода драйвера и файла manifest.json снова выполните сборку драйвера:npm run buildЭто
сгенерирует скомпилированный и собранный JavaScript-файл, а также копию проверенного манифеста в каталоге dist.
Тестирование драйвера в Tulip Player
По умолчанию Tulip Player запускается со встроенными драйверами, которые работают из коробки. Однако вы также можете запустить свой собственный драйвер локально в Tulip Player, даже без экземпляра Tulip. Для этого вы можете запустить Player из командной строки, указав путь к директории dist вашего драйвера. Скачать и установить Tulip Player можно здесь.
В Windows это делается с помощью команды set
в терминале, чтобы установить переменную окружения TULIP_PLAYER_CUSTOM_DRIVERS_PATH
, а затем запустить "Tulip Player.exe" из того же терминала:
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"
После запуска плеера откройте Browser Developer Tools в приложении Player и перейдите на вкладку Console.
Отфильтруйте сообщения с помощью "[CED]", чтобы увидеть журналы драйверов.
В случае успеха вы должны увидеть события "data", регистрирующие значения температуры и влажности в реальном времени.
Использование вашего водителя в приложении Tulip
Скоро вы сможете загружать пользовательские драйверы в свой экземпляр Tulip. А пока мы можем импортировать готовый пример драйвера.
Перейдите в библиотеку Tulip и установите любой драйвер, у которого есть кнопка установки, как у этого.
Установите драйвер при появлении соответствующего запроса. Создайте новое приложение Tulip App и добавьте триггер "Машины и устройства" в ваш шаг.
В списке устройств вы должны увидеть импортированный датчик температуры и влажности ESP32.
Теперь вы можете создать триггер, который будет обновлять некоторые переменные приложения с помощью данных датчика.
Создайте несколько виджетов, использующих эти переменные на вашем шаге, чтобы вы могли визуализировать данные о температуре и влажности в вашем приложении.
Запуск приложения Tulip
После того как приложение настроено, запустите его в Tulip Player. Если все настроено правильно, вы должны увидеть обновление значений датчиков в реальном времени в вашем приложении!
Вот и все! Вы успешно создали, протестировали и интегрировали пользовательский драйвер Edge Driver в Tulip!