Категории и списки
Категории объединяют устройства и данные в группы: по помещениям, по функциям или по заданному пользователем критерию. В дереве объектов они называютсяenum В более старых текстах и в документации к адаптеру для этой цели также используются термины «перечисления» и «enums» .
Преимущество заключается в том, что сценарии, визуализации и голосовое управление работают с группой в целом, а не с отдельными точками данных. При замене или добавлении устройства изменяется только назначение. Сценарий и визуализация остаются неизменными.
Категории создаются и поддерживаются на вкладке «Категории» в административной панели.
Каждая точка данных связана с комнатой и ее назначением. Только вместе эти два параметра позволяют сделать выбор в пользу «освещения в гостиной» однозначным.
Три типа
| объект | Значение | Примеры |
|---|---|---|
enum.rooms | Комнаты | Гостиная, кухня, спальня |
enum.functions | Функции, ранее – торговля | Освещение, отопление, окна, безопасность |
enum.<eigener Name> | Самостоятельно созданные группы | enum.custom.batterie ,enum.custom.heimkino |
Помещения и функции предопределены, поскольку их оценивает множество адаптеров. Пользовательские категории могут свободно называться и предназначены для всего, что нельзя описать ни как помещение, ни как функцию.
Можно назначать устройства, каналы и точки данных. Для голосового управления и большинства оценочных адаптеров назначение должно быть связано с точкой данных . В противном случае непонятно, какое значение следует считывать или переключать.
В чём смысл всего этого?
- Простота в обслуживании. Замененное устройство получает те же задачи; все остальное остается без изменений.
- Масштабируемость. Новые устройства интегрируются без изменения каких-либо скриптов.
- Четко и лаконично. Даже при наличии нескольких сотен точек данных сохраняется четкая структура.
- Независима от производителя. Группа описывает, что делает точка данных, а не от кого она получена.
Создавайте и назначайте категории.
Три пути ведут к одному и тому же результату:
- На вкладке «Категории» создайте категорию и выберите участников.
- На вкладке «Объекты» назначьте столбцы «Комнаты» и «Функции» непосредственно соответствующей точке данных.
- С помощью скрипта, если необходимо создать много назначений одновременно.
Использовать в скриптах
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 получают информацию о местоположении и функциях через облачные адаптеры. Только тогда команды, такие как «Включить свет в гостиной», могут понять, к каким именно данным они относятся. Без этой информации остается только название конкретного устройства.
Рекомендации
- Сохраняйте согласованность пространств и функций, даже если изначально они нужны только одному скрипту. Позже к ним будут обращаться и другие адаптеры.
- Присвойте осмысленные имена. Эти имена будут отображаться в голосовом управлении и в визуализации.
- Создавайте собственные категории только там, где недостаточно места и функциональности.
- Если над системой работает несколько человек, кратко опишите ее структуру.