Разработайте собственный адаптер
Адаптер — это программа на Node.js, которая запускает, отслеживает и настраивает ioBroker. Он подключает устройство, сервис или функцию к дереву объектов: создает объекты, записывает в них значения и реагирует на значения, записанные другими объектами.
Всё остальное — это просто технические знания. Любой, кто знаком с Node.js, может написать адаптер. Дополнительные знания, которые вам понадобятся, вполне посильны и рассматриваются в этой главе.
Чем отличается адаптер от других подобных устройств?
Адаптер — это npm-пакет с определённой структурой. Он состоит из четырёх файлов:
| файл | По какой причине |
|---|---|
package.json | Стандартный npm-манифест: зависимости, файл запуска, скрипты. |
io-package.json | Вся необходимая информация об адаптере для ioBroker: режим работы, интерфейс конфигурации, настройки по умолчанию, объекты, создаваемые для каждого экземпляра. См. io-package.json . |
main.js | Программа запускается ioBroker, выполняет вход в систему, работает и очищает ресурсы при завершении работы. |
admin/jsonConfig.json | Интерфейс конфигурации в панели администратора описывается в формате JSON, а не HTML. См. раздел «Конфигурация в формате JSON» . |
Сюда входят символ, переводы и файл readme.
Резюме учреждения
Адаптер выполняется не один раз, а как экземпляр . Может существовать несколько экземпляров одного и того же адаптера, каждый со своей конфигурацией и своей ветвью в дереве объектов.
Обычная процедура в программе:
readyЗапуск экземпляра. Конфигурация считывается здесь (this.config.<feld>), соединение было установлено, и были созданы собственные объекты пользователя.stateChangeКто-то записал значение, на которое подписан данный экземпляр. Обычно это команда, передаваемая устройству.messageДругой экземпляр или скрипт отправляет запрос. См. раздел «Межэкземплярный обмен сообщениями» .unloadЭкземпляр завершится. Остановите таймер, закройте соединения, затем вызовите функцию обратного вызова. Пропуск этого шага приведет к тому, что процессы не смогут завершиться.
Способ запуска экземпляра определяется...common.mode фиксированный: постоянно действующий (daemon ), согласно расписанию (schedule ), один раз (once ) и еще несколько особых случаев.
Путь от идеи к внедрению
1. Проверьте, существует ли уже такой адаптер. Незавершенный адаптер, нуждающийся в партнере, ценнее двенадцатой попытки создания того же устройства. Список адаптеров и запросы на адаптеры предоставляют эту информацию.
2. Создайте фреймворк. Adapter Creator запрашивает имя, тип и режим работы и предоставляет полный пакет, включая тесты и конфигурацию GitHub. То же самое можно сделать в командной строке с помощью
npx @iobroker/create-adapter@latest
Для работы требуется Node.js версии 18 или выше и npm версии 9 или выше. Путь к исполняемому файлу не должен содержать пробелов.
3. Разработка и тестирование. Для этого есть dev-сервер : небольшая установка ioBroker в папке проекта, которая перезапускает адаптер при каждом изменении кода. Никакой загрузки в производственную систему, никаких проблем с платформой.
4. Тестирование. В состав платформы входят тесты, которые запускают адаптер и проверяют, правильно ли он регистрируется и завершает работу. См. Тесты адаптера .
5. Опубликуйте. Сначала в npm, затем в репозиторий ioBroker. Требования для этого описаны в разделе «Публикация адаптеров» ; перед этим рекомендуется запустить проверку адаптеров (Adapter Checker ).
Порядок чтения
Если вы никогда раньше не писали адаптеры, лучше всего читать в следующем порядке:
- Рекомендации по разработке : принципы, отличающие адаптер от скрипта с именем адаптера.
- io-package.json : информация, которую ioBroker получает об адаптере.
- Роли состояния : как значение именуется и классифицируется, чтобы другие адаптеры могли его понять.
- JSON-Config : интерфейс конфигурации.
- Справочник по адаптерам : подробные описания вызовов.
Дополнительные инструменты
| Инструмент | По какой причине |
|---|---|
| Создатель адаптеров | Структура сайта, созданная с помощью веб-формы. |
| Проверка адаптера | Проверьте репозиторий на соответствие требованиям репозитория ioBroker. |
| Переводчик | Переводит текст адаптера на поддерживаемые языки. |
@iobroker/adapter-dev | Перевод и создание npm-скриптов в рамках проекта:npm run translate ,npm run build . |
| dev-сервер | Среда разработки находится в папке проекта. |
Вопросы, касающиеся разработки, следует задавать на форуме , а не в теме, посвященной другому адаптеру. Там общаются люди, которые уже столкнулись с теми же проблемами.