Разработка с использованием dev-сервера

Худший способ разработки адаптера - это создание его на собственной системе домашней автоматизации. Каждая неудачная попытка парализует работающую систему, каждое изменение необходимо загружать в систему, а приостановка работы адаптера в отладчике означает, что в это время ничего не контролируется.

dev-server решает эту проблему. Он устанавливает собственную небольшую версию ioBroker в папку проекта, которая распознает только этот один адаптер. У него есть собственная административная панель, собственный каталог, собственные объекты, и он ни с чем не конфликтует.

Меблировать

Сервер разработки запускается в папке адаптера, то есть там, где находится файл io-package.json.

npm install --global @iobroker/dev-server
dev-server setup

В процессе установки загружаются JS-контроллер и файл административной панели, которые помещаются в подпапку .dev-server. В первый раз это занимает несколько минут, но в последующие разы - нет.

Полезная информация для настройки:

  • --adminPort <номер>: на случай, если значение по умолчанию указано неверно.

столкнулся с чем-то ещё.

  • --jsController <version> и --admin <version>: для защиты от конкретной версии.

разработать версию, например, самую старую, которую должен поддерживать адаптер.

  • --backupFile <file>: настраивает среду на основе резервной копии ioBroker.

Это позволяет воспроизвести ошибку, о которой сообщил пользователь.

Папка .dev-server находится в .gitignore. В среде, созданной с помощью Adapter Creator, она уже присутствует.

Работа

КомандаЭффект
dev-server watchЗапускает все процессы и перезапускает адаптер при каждом изменении кода. Нормальное поведение во время разработки.
dev-server debugЗапускает адаптер для подключения отладчика. При использовании --wait он ожидает, пока отладчик не будет подключен.
dev-server uploadПередает текущее состояние в среду. Необходимо после изменений в io-package.json, поскольку оно считывается только во время загрузки.
dev-server updateОбновляет js-контроллер и административную панель среды до последней версии.
dev-server updateОбновляет js-контроллер и административную панель среды до последней версии.

Журнал событий отображается в терминале. Это позволяет сразу увидеть, что делает ваш сетевой адаптер, без необходимости искать журнал в панели администратора.

После изменения параметра io-package.json перезапуск недостаточен. Только изменение параметра dev-server upload вводит в среду новые объекты экземпляра, измененные параметры конфигурации или новый режим работы.

Множественные среды

Профили позволяют запускать несколько сред одновременно, например, одну с самым старым поддерживаемым js-контроллером, а другую с самым новым.

dev-server profile

Эта команда отображает список существующих профилей. Остальные команды принимают имя профиля и затем работают в этой среде.

Предварительные условия и ограничения

Сервер разработки работает на Windows, Linux и macOS и требует как минимум Node.js 14. Все открываемые им порты ограничены 127.0.0.1, поэтому среда недоступна извне.

Это не заменяет собой реальное тестирование на исправной системе. Зато заменяет необходимость двадцатикратной загрузки данных между проверками.

Остальная часть ящика с инструментами

Помимо dev-сервера, в проект входит @iobroker/adapter-dev. Он предоставляет скрипты для компиляции и сборки:

npm run translate          # übersetzt neue englische Texte in alle Sprachen
npm run build              # baut TypeScript und React-Oberflächen

Оба компонента уже включены в структуру Adapter Creator. См. io-package.json для обработки переводов и Тесты адаптера для включенных тестов.