Публикация адаптера
Прежде чем выпускать адаптер, его следует предложить для тестирования в тестовой теме на форуме . Если тесты пройдут успешно и адаптер будет работать стабильно, его следует временно добавить в репозиторий с последними обновлениями.
Если адаптер стабильно работает в определенной версии, его можно переместить в стабильный репозиторий. Для этого требуется собственная оценка разработчика с учетом отзывов пользователей.
Дополнительные текущие требования можно найти здесь: https://github.com/ioBroker/ioBroker.repositories/blob/master/README.md
Требования к последней версии репозитория
-
Для проверки репозитория адаптера используйте https://adapter-check.iobroker.in/ .
-
В названии репозитория адаптера на GitHub буква ioBroker должна быть заглавной, тогда как в файле package.json она должна быть строчной, потому что
npmЗаглавные буквы не допускаются. -
В файле io-package.json заголовок не должен содержать это слово.
ioBrokerи не словоAdapterсодержать. -
Он
titleАтрибут в файле io-package.json (common) — это сокращенное название адаптера на английском языке. Во времяtitleLangпереводыtitleВключены атрибуты. (Расширение "Lang" означает языки.) -
Адаптер должен содержать инструкции в виде файла README.md. Они должны быть доступны как минимум на английском языке. Дополнительные языки приветствуются. Этот пример может послужить источником вдохновения.
-
Для работы адаптера требуется лицензия. Это указано как в файле io-package.json, так и в отдельном файле в репозитории GitHub.
Пример файла io-package.json:
{ "common": { "license": "MIT" } } -
Он
wwwкаталог, а такжеwidgetКаталоги следует удалять, когда они не используются. -
Файл io-package.json должен содержать
typeВ разделе «Общие» будет создан атрибут. Из этого списка следует выбрать наиболее подходящую категорию. -
В файле io-package.json должны содержаться следующие данные:
connectionTypeиdataSourceАтрибуты создаются в разделе «Общие». Из этого списка следует выбрать наиболее подходящую категорию подключения. -
Состояния, создаваемые адаптером, должны содержать достоверную информацию о своих ролях .
roleв рамках общего. Использование роли.stateСледует избегать. -
Адаптер должен запускать тесты из фреймворка через GitHub Actions , как минимум тесты пакетов и интеграционные тесты (т.е., тесты установки и запуска). Рабочие процессы для этого уже включены в Adapter Creator и находятся в соответствующей папке.
.github/workflowsДополнительную информацию можно найти в разделе «Тесты адаптера» .
Разработчик может расширить область применения теста.
-
В файле io-package.json должна содержаться как минимум одна запись в разделе common для атрибута.
authorsЭто необходимо сделать. Атрибут также должен быть...authorЭтот параметр необходимо заполнить в файле package.json. При желании можно указать нескольких авторов для npm, добавив соответствующий атрибут в файл package.json.contributorsиспользуется. -
Адаптер необходимо опубликовать в виде пакета на npmjs.com . В следующем разделе объясняется, как это сделать.
-
Организация ioBroker должна быть совладельцем пакета npm :
npm owner add bluefox iobroker.<adaptername>Это не просто формальность. Это гарантирует, что пакет будет продолжать поддерживаться, даже если у разработчика больше не будет на это времени. Без этой записи адаптер не будет включен.
Требования к стабильному репозиторию
- Адаптер успешно добавлен в репозиторий "Последние версии".
- На форуме есть тема, посвященная тестированию адаптера, в которой уже были оставлены отзывы пользователей.
- Необходимо реализовать функцию обнаружения. Это функция внутри адаптера обнаружения , которая автоматически определяет, может ли пользователь использовать экземпляр адаптера. Запрос на добавление этой функции следует отправить в репозиторий адаптера обнаружения .
Опубликовать на npm
Прежде чем адаптер можно будет добавить в репозиторий ioBroker, он должен быть доступен в npm. Администратор получает его оттуда во время установки, а не из GitHub.
В состав фреймворка Adapter Creator входит скрипт выпуска , предназначенный для этой цели:
npm run release patch # Fehlerbehebungen
npm run release minor # neue Funktionen, abwärtskompatibel
npm run release major # Änderungen, die Bestehendes brechen
Эта команда за один шаг выполняет то, что обычно происходит по отдельности: она увеличивает версию в обоих файлах.package.json иio-package.json , переносит изменения из журнала изменений вcommon.news Программа проверяет лицензию, устанавливает тег Git и отправляет все изменения на GitHub.
Рабочий процесс в.github/workflows Затем, как только наступит нужный день, он публикует изменения в npm. Это также можно сделать вручную:
npm publish
Для публикации из GitHub Actions больше не требуется токен npm в репозитории. npm теперь поддерживает доверенную публикацию : пакет связывается с репозиторием GitHub в npm, а аутентификация в процессе осуществляется через OpenID Connect. Это устраняет необходимость в постоянном секретном ключе в настройках репозитория.
После публикации версия является окончательной. Версия на npm не может быть перезаписана, иnpm unpublish Это возможно только в течение первых 72 часов, и даже в этом случае номер версии становится непригодным для использования. Лучше иметь одну запасную версию, чем неработающую в обращении.
Добавление адаптера в официальный репозиторий.
Списки находятся в репозитории ioBroker.repositories . Файлы не редактируются вручную; вместо этого используются скрипты для размещения записи в нужном месте и немедленной проверки.
-
Создайте форк репозитория и клонируйте его локально.
-
Сгенерируйте запись:
npm run addToLatest -- --name <adaptername> --type <kategorie> npm run addToStable -- --name <adaptername> --version <version>Категория — одна из списка ниже ; версия в разделе «Стабильная» — это номер версии, которая должна стабильно работать.
-
Внесите изменения в файл и отправьте запрос на слияние.
-
При добавлении проекта в стабильный репозиторий необходимо указать номер версии. Этот номер необходимо обновлять по мере дальнейшей разработки адаптера.
-
В файле io-package.json адаптер должен иметь атрибут типа list.
docsУкажите, где найти инструкции на соответствующем языке. Язык указывается в качестве ключа, а путь к файлу Markdown — в качестве значения. Инструкции на английском языке обязательны (в случае необходимости можно обратиться к стандартному файлу README). Инструкции на немецком языке также желательны, поскольку большая часть пользователей говорит по-немецки, но это необязательно. Подробные инструкции могут сэкономить разработчику много времени на форуме. Пример можно найти здесь .Пример:
{ "common": { "docs": { "de": "docs/de/README.md" } } }
Последний
Файлsources-dist.json Требуется редактирование:
Пример:
"admin": {
"meta": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/io-package.json",
"icon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"published": "2017-04-10T17:10:21.690Z",
"type": "general"
}
Онpublished Указанная дата представляет собой дату первой публикации и не подлежит изменению.
Стабильный
Файлsources-dist-stable.json Требуется редактирование:
Пример:
"admin": {
"meta": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/io-package.json",
"icon": "https://raw.githubusercontent.com/ioBroker/ioBroker.admin/master/admin/admin.png",
"version": "2.0.7",
"published": "2017-04-10T17:10:21.690Z",
"type": "general"
}
Онpublished Указанная дата представляет собой дату первой публикации и не подлежит изменению.
Управление версиями адаптеров
Текущий номер версии адаптера указывается как в файле io-package.json, так и в файле package.json. Эти две записи должны совпадать. Номер версии разделяется на три части двумя точками.
"version": "1.7.6"
Где первая часть (слева направо)Major Part представляет собой вторую частьminor Часть и последняяmicro Часть. Номера версий следует увеличивать в соответствии со следующим списком:
- micro : Были исправлены только ошибки.
- Незначительное изменение : Добавлены новые функции, но версия совместима с предыдущими версиями.
- Крупные изменения : Значительные изменения, приводящие к потере обратной совместимости со старыми версиями.
В файл io-package.json также следует включить следующее:news Этот атрибут необходимо поддерживать. Это позволит пользователям устанавливать любую из перечисленных версий (при условии, что она опубликована на npm) через административный интерфейс. Номер версии и внесенные изменения должны быть зафиксированы. Изменения могут быть задокументированы для каждого поддерживаемого языка, но должны быть указаны как минимум на английском языке.
Пример:
"news": {
"1.7.6": {
"en": "Configuration dialog was corrected",
"de": "Konfigurationsdialog wurde korrigiert",
"ru": "Диалог конфигурации был исправлен",
"pt": "A caixa de diálogo de configuração foi corrigida",
"nl": "Configuratiedialoog is gecorrigeerd",
"fr": "La boîte de dialogue de configuration a été corrigée",
"it": "La finestra di configurazione è stata corretta",
"es": "Se corrigió el diálogo de configuración",
"pl": "Okno dialogowe konfiguracji zostało poprawione"
},
"1.7.5": {
"en": "The roles were tuned",
"de": "Die Rollen waren abgestimmt",
"ru": "Роли были настроены",
"pt": "Os papéis foram afinados",
"nl": "De rollen zijn afgestemd",
"fr": "Les rôles ont été réglés",
"it": "I ruoli erano sintonizzati",
"es": "Los roles fueron sintonizados",
"pl": "Role zostały dostrojone"
}
}
Категории адаптеров
alarm- Системы безопасностиclimate-control- Кондиционеры, воздушные фильтры, обогреватели и многое другоеcommunication- Предоставление данных для других адаптеров, например, через REST.date-and-time- например, календариenergy- Мониторинг электропитания, солнечные системы, инверторы и многое другое.metering- Другие системы измерения (например, воды, газа, нефти)garden- например, газонокосилки, системы поливаgeneral- Общие адаптеры, такие как Admin, Web, Discoverygeoposition- Геолокация объектов или людейhardware— Различное многофункциональное оборудование, такое как Arduino, ESP, Bluetooth и др.health- Артериальное давление, частота сердечных сокращений, масса тела, ...household- Кухонная техника, пылесосы и т. д.infrastructure- Сеть, сетевые хранилища (NAS), принтеры, телефоныiot-systems- Другие системы «умного дома» (аппаратное и программное обеспечение)lighting- Освещениеlogic- Правила, скрипты, парсеры и т. д.messaging- Адаптер для отправки и получения сообщений, например, по электронной почте, Telegram и т. д.misc-data- Экспорт и импорт данных, конвертер валют и т. д.multimedia- Телевизоры, AV-ресиверы, колонки, голосовые помощники и т. д.network— Пинг, обнаружение сети, UPnP, ...protocols- Протоколы связи, например, MQTTstorage- Ведение журналов, хранение данных, например, в реляционных базах данных, ...utility- Поддержка адаптеров, таких как резервные копии.vehicle- Автомобилиvisualization- Адаптеры визуализации, такие как vis и т. д.visualization-icons- Иконки для визуализацииvisualization-widgets- iobroker.vis Виджетыweather- Информация о погоде, качестве воздуха, экологическая информация
Тип подключения адаптера
ОпределятьconnectionType вcommon Частьio-package.json как:
local- Обеспечивает прямую связь с устройством или концентратором.cloud— Данное устройство интегрировано через облако и требует активного подключения к интернету.
ОпределятьdataSource вcommon как:
poll— Проверка статуса означает, что обновление может быть замечено позже.push- ioBroker будет уведомлен, как только появится новый статус.assumption- Невозможно определить состояние устройства. ioBroker определяет состояние на основе последней команды ioBroker.