Разработайте собственный адаптер

Адаптер — это программа на 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 ).

Порядок чтения

Если вы никогда раньше не писали адаптеры, лучше всего читать в следующем порядке:

  1. Рекомендации по разработке : принципы, отличающие адаптер от скрипта с именем адаптера.
  2. io-package.json : информация, которую ioBroker получает об адаптере.
  3. Роли состояния : как значение именуется и классифицируется, чтобы другие адаптеры могли его понять.
  4. JSON-Config : интерфейс конфигурации.
  5. Справочник по адаптерам : подробные описания вызовов.

Дополнительные инструменты

ИнструментПо какой причине
Создатель адаптеровСтруктура сайта, созданная с помощью веб-формы.
Проверка адаптераПроверьте репозиторий на соответствие требованиям репозитория ioBroker.
ПереводчикПереводит текст адаптера на поддерживаемые языки.
@iobroker/adapter-devПеревод и создание npm-скриптов в рамках проекта:npm run translate ,npm run build .
dev-серверСреда разработки находится в папке проекта.

Вопросы, касающиеся разработки, следует задавать на форуме , а не в теме, посвященной другому адаптеру. Там общаются люди, которые уже столкнулись с теми же проблемами.