объекты

В ioBroker существует два типа информации, и разница между ними объясняет почти все остальное:

  • Объекты описывают , что что-то собой представляет. Они редко меняются: название, единица измерения, указание на то, можно ли что-то прочитать или написать.
  • Указанные значения — это сами величины: 23,5 °C.true «Гостиная». Условия постоянно меняются. Они указаны на отдельной странице: Условия .

Термометр — это не просто "21,3". Это предмет, который говорит: вот число, оно имеет единицу измерения °C, оно читаемо, но не поддается описанию, и называется "температура в гостиной". Значение 21,3 связано именно с этим.

Адрес: ID

Каждый объект имеет идентификатор (ID). Он имеет иерархическую структуру и разделяется точками — как путь к файлу, только вместо косых черт используются точки.

hm-rpc.1.ABC110022.2.VALUE
ЧастьЗначение
hm-rpcадаптер
1его экземпляр — второй, отсчет начинается с 0.
ABC110022адрес устройства
2канал
VALUEточка данных

Все, что создаёт адаптер, находится в его собственном пространстве имён.<adapter>.<instanz>. Кроме того, существуют некоторые фиксированные пространства имен:

пространство именСодержание
system.всё, что касается самого ioBroker
system.adapter.конфигурация адаптеров и их экземпляров
system.host.компьютеры, на которых запущен ioBroker
system.user. ,system.group.Пользователи и группы
enum.Комнаты, ремесла и другие группы
alias.Псевдонимы — пользовательские, стабильные имена для внешних точек данных.
0_userdata.0.Место для ваших личных вещей — см. ниже.
scripts.js.скрипты адаптера JavaScript

Идентификаторы могут иметь длину до 240 байт. Следующие символы не допускаются:[ ] * , ; ' " ` < > \ ? ; от^ $ ( ) / Это не рекомендуется. Тем, кто создает собственные данные, лучше всего использовать буквы, цифры, подчеркивания и точки.

Структура объекта

Каждый объект имеет четыре поля:

ПолеЧто в нём содержится
_idадрес, указанный выше
typeКакой это тип объекта (см. ниже)?
commonПредставление ioBroker: Имя, тип, единица измерения, роль, права на чтение и запись.
nativeПерспектива целевой системы: всё, что понимает только подключенное устройство или сервис.
Ein Geraet im Objekt-Editor: oben common, darunter native

На изображении показан дверной замок Homematic.common В нем указано то, что ioBroker должен знать об этом — название и символ.native Устройство обладает определенными характеристиками: адрес, прошивка, радиоадрес, тип устройства. ioBroker ничего из этого не считывает; адаптеру необходима вся эта информация.

Разделениеcommon иnative Именно поэтому виджет в визуализации может обрабатывать данные Homematic так же хорошо, как и данные Zigbee: все необходимое для ioBroker всегда находится в одном и том же месте.common Что касается самого устройства, то оно остается в пределах нормы.native и никому не мешает.

Типы объектов

В повседневной жизни вы будете сталкиваться в основном с первыми пятью:

типЧто это такое
stateТочка данных — место, где хранится значение.
channelсуммирует несколько взаимосвязанных точек данных.
deviceобъединяет каналы в одно устройство
folderпапка, исключительно для организации информации.
enumгруппировка: комната, торговля, собственная категория
adapterшаблон установленного адаптера
instanceего работающая копия
hostкомпьютер, на котором запущен ioBroker
user ,groupПользователи и группы
scriptсценарий
metaРедко изменяющаяся дополнительная информация об адаптере
configнастройки, например system.config
chartописание диаграммы

Устройства, каналы и точки данных не образуют обязательной иерархии — некоторые адаптеры создают устройства и каналы, другие — только точки данных в папках. Допускаются оба варианта.

Где вы можете их увидеть

В панели администратора, в разделе «Объекты» , структура дерева выглядит следующим образом: каждый уровень между двумя точками представляет собой строку. Значок инструмента в конце строки позволяет редактировать объект, а значок лупы позволяет просмотреть исходное содержимое — которое зачастую более информативно, чем любое описание.

Der Objektbaum: Adapter, Instanz, Geraet, Kanal, Datenpunkte

Изображение следует читать сверху вниз следующим образом:hm-rpc это адаптер0 по его просьбе,LEQ0903185 устройство («замок»), включающее два канала, и в канале1 Там расположены точки данных. Столбец «Тип» указывает тип объекта для каждой строки, столбец « Роль» объясняет, что представляет собой точка данных, а текущее значение отображается в крайнем правом углу.

Пространство именsystem. Эта функция видна только в экспертном режиме (переключатель в верхней части панели инструментов). Это сделано намеренно: там нет ничего, что использовалось бы в повседневных ситуациях.

Объекты, созданные адаптером, принадлежат этому адаптеру. Внесение изменений вручную приведет к их перезаписи при следующем запуске экземпляра. Если точке данных необходимо присвоить постоянное имя или сущность, правильным решением будет использование псевдонима .

Собственные объекты:0_userdata.0

Для объектов, не являющихся результатом работы адаптера — маркера для скрипта, самоподдерживающейся заданной точки, буфера обмена между двумя автоматизациями — существует отдельное пространство имен:0_userdata.0 .

Оно не принадлежит ни одному адаптеру и не перезаписывается ни одним из них. Именно поэтому это подходящее место. Точки данных, размещенные в пространстве имен адаптера, могут исчезнуть при следующем запуске экземпляра.

Они создаются в административной панели в разделе «Объекты» с помощью знака плюса или с помощью скрипта — там же указывается полный ID:

createState('0_userdata.0.Heizung.Sollwert', 21, { type: 'number', unit: '°C', read: true, write: true });

Без полного прохождения маршрута, этоcreateState точка данных ниже экземпляра скрипта (javascript.0.… Это работает, но данные в этом случае остаются на адаптере, который ими не владеет.

Где расположены объекты

Объекты и состояния хранятся в двух отдельных базах данных — поэтому они иногда отображаются отдельно в пользовательском интерфейсе. Обе управляются контроллером js-приложения и доступны в нескольких версиях:

Подача документовЗа что
jsonlфайлы по умолчанию, начиная с js-controller 4objects.jsonl иstates.jsonl в каталоге данных
fileстарый формат файлов, который до сих пор встречается в более старых версиях программ.
redisбаза данных в оперативной памяти для больших систем

Обе базы данных настраиваются отдельно . Поэтому возможно, и даже является обычным подходом, хранить в Redis только состояния, а объекты — в...jsonl Допускается следующее: состояния постоянно меняются, объекты — почти никогда.iobroker status показывает, что используется в данный момент.

Для подавляющего большинства установок эта настройка является правильной. Рассматривать Redis стоит только в том случае, если js-контроллер постоянно потребляет много вычислительного времени и система работает медленно.

Эти две базы данных хранят только текущее состояние. Значение точки данных неизвестно вчера. Если вам нужна историческая запись, например, для графика, необходимо включить запись данных; см. раздел «Запись данных» .

Читать далее