Категории и списки

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

Преимущество заключается в том, что сценарии, визуализации и голосовое управление работают с группой в целом, а не с отдельными точками данных. При замене или добавлении устройства изменяется только назначение. Сценарий и визуализация остаются неизменными.

Категории создаются и поддерживаются на вкладке «Категории» в административной панели.

Datenpunkte, ihre Zuordnung zu Raum und Funktion und was daraus folgt

Каждая точка данных связана с комнатой и ее назначением. Только вместе эти два параметра позволяют сделать выбор в пользу «освещения в гостиной» однозначным.

Три типа

объектЗначениеПримеры
enum.roomsКомнатыГостиная, кухня, спальня
enum.functionsФункции, ранее – торговляОсвещение, отопление, окна, безопасность
enum.<eigener Name>Самостоятельно созданные группыenum.custom.batterie ,enum.custom.heimkino

Помещения и функции предопределены, поскольку их оценивает множество адаптеров. Пользовательские категории могут свободно называться и предназначены для всего, что нельзя описать ни как помещение, ни как функцию.

Можно назначать устройства, каналы и точки данных. Для голосового управления и большинства оценочных адаптеров назначение должно быть связано с точкой данных . В противном случае непонятно, какое значение следует считывать или переключать.

В чём смысл всего этого?

  • Простота в обслуживании. Замененное устройство получает те же задачи; все остальное остается без изменений.
  • Масштабируемость. Новые устройства интегрируются без изменения каких-либо скриптов.
  • Четко и лаконично. Даже при наличии нескольких сотен точек данных сохраняется четкая структура.
  • Независима от производителя. Группа описывает, что делает точка данных, а не от кого она получена.

Создавайте и назначайте категории.

Три пути ведут к одному и тому же результату:

  1. На вкладке «Категории» создайте категорию и выберите участников.
  2. На вкладке «Объекты» назначьте столбцы «Комнаты» и «Функции» непосредственно соответствующей точке данных.
  3. С помощью скрипта, если необходимо создать много назначений одновременно.

Использовать в скриптах

JavaScript-адаптер выбирает объекты с помощью селектора. Категории заключаются в круглые скобки , всё остальное — в квадратные скобки:

"name[commonAttr=wert](enumName=wert){nativeName=wert}[id=filter][state.id=filter]"

Примеры:

// Alle Lichter im Wohnzimmer ausschalten
$('channel[role=switch][state.id=*.STATE](rooms=Wohnzimmer)').setState(false);

// Alle Fensterkontakte protokollieren
$('channel[state.id=*.STATE](functions=Fenster)').each((id) => log(id));

// Alle Datenpunkte der eigenen Kategorie "enum.custom.batterie" überwachen
$('state(custom=batterie)').on(obj => {
    if (obj.state.val < 20) {
        sendTo('telegram', 'Batterie schwach: ' + obj.id);
    }
});

Имя в скобках — это имя первого уровня ниже...enum Суть в том, что за этим стоит сама категория.enum.custom.batterie следовательно станет(custom=batterie) Полное описание селектора можно найти в документации JavaScript-адаптера .

При добавлении устройства достаточно просто присвоить ему категорию. Никаких изменений в скрипт вносить не нужно.

Использование в визуализации

Адаптеры, такие как адаптер Devices или Lovelace, читаютenum.rooms иenum.functions Они извлекают данные и на их основе строят свои представления. Пространства становятся страницами, функции — группами внутри них. Затем новая назначенная точка данных автоматически появляется в нужном месте.

Использование в голосовом управлении

Alexa и Google Home получают информацию о местоположении и функциях через облачные адаптеры. Только тогда команды, такие как «Включить свет в гостиной», могут понять, к каким именно данным они относятся. Без этой информации остается только название конкретного устройства.

Рекомендации

  • Сохраняйте согласованность пространств и функций, даже если изначально они нужны только одному скрипту. Позже к ним будут обращаться и другие адаптеры.
  • Присвойте осмысленные имена. Эти имена будут отображаться в голосовом управлении и в визуализации.
  • Создавайте собственные категории только там, где недостаточно места и функциональности.
  • Если над системой работает несколько человек, кратко опишите ее структуру.