гаджеты и прочие приборы,  Документация,  Переводы,  софт

Элементы (Items)

Eclipse SmartHome имеет строгое разделение между физическим миром («вещами», см. ниже) и приложением, которое построено вокруг понятия» предметы » (также называемого виртуальным слоем).

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

В настоящее время доступны следующие типы элементов (в алфавитном порядке):

Элемент Описание Типы команд
Color Информация о цвете (RGB) OnOff, Increase/Decrease, Percent, HSB
Contact Элемент, хранящий состояние, например, контактов двери/окна OpenClosed
DateTime Дата и время
Dimmer Элемент содержащий значение регулятора уровня (dimmer) OnOff, IncreaseDecrease, Percent
Group Элемент для размещения других элементов что бы собирать и отображать их как группы
Image Изображение в двоичном виде
Location GPS-координаты Point
Number Сохраняет значения в числовом формате, принимает необязательный размер Decimal
Number:<dimension> Подобно Number, но содержит дополнительную информацию о размерности величины Quantity
Player Позволяет управлять воспроизведением, например, музыки PlayPause, NextPrevious, RewindFastforward
Rollershutter Обычно используется для жалюзи UpDown, StopMove, Percent
String Текст String
Switch Обычно используется для освещения (ВКЛ/ВЫКЛ) OnOff

Групповые элементы (Group Items)

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

Пример элемента группы как простой коллекции других элементов:

    Group groundFloor
    Switch kitchenLight (groundFloor)
    Switch livingroomLight (groundFloor)

Производное состояние группы (Derive Group State from Member Items)

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

Доступные групповые функции:

Функция Параметры Базовый элемент Описание
EQUALITY <all> Устанавливается в состояние компонентов, если все имеют равное состояние. В противном случае оно устанавливается UNDEF. В компоненте DSL равенство по умолчанию и может быть опущено.
AND, OR, NAND, NOR <activeState>, <passiveState> <all> (must match active & passive state) Устанавливает <activeState> если значение одного из элементов <activeState> принимает логическое значение true. Иначе устанавливается <passiveState>.
SUM, AVG, MIN, MAX Number Задает состояние в соответствии с арифметической функцией для всех компонентов группы.
COUNT <regular expression> Number Число компонентов группы соответствующих данному регулярному выражению с их состояниями.
LATEST, EARLIEST DateTime Устанавливает самое раннее или позднее значение из значение всех компонентов группы.

Примеры производных состояний для компонентов группы при объявлении в DSL:

  • Group:Number:COUNT(".*") счётчик числе компонентов группы удовлетворяющих шаблону, в данном случае любому набору символов (просто счётчик компонентов).
  • Group:Number:AVG вычисляет среднее значение всех компонентов группы, которое интерпретируется как DecimalTypes.
  • Group:Switch:OR(ON,OFF) устанавливает состояние группы в значение ON если любой их компонентов имеет состояние ON, OFF если все компоненты в состоянии OFF.
  • Group:Switch:AND(ON,OFF) устанавливает состояние группы в ON если все компоненты группы находятся в состоянии ON, OFF если любой компонент группы имеет состояние отличное от ON.
  • Group:DateTime:LATEST устанавливает состояние группы по последнему состоянию компонентов группы.

Форматирование состояний и команд (State and Command Type Formatting)

Строка (StringType)

Объекты типа StringType сохраняются как простые строки в Java.

Дата-Время (DateTimeType)

  • Объект DateTimeType разбирается Java методом SimpleDateFormat.parse() с использованием первого совпадающего шаблону значения:
  1. yyyy-MM-dd'T'HH:mm:ss.SSSZ
  2. yyyy-MM-dd'T'HH:mm:ss.SSSz
  3. yyyy-MM-dd'T'HH:mm:ss.SSSX
  4. yyyy-MM-dd'T'HH:mm:ssz
  5. yyyy-MM-dd'T'HH:mm:ss
СимволЗначениеПример
zОбычное описание часовой зоныPacific Standard Time; PST; GMT-08:00
Zзапись согласно RFC 822-8000
Xзапись по ISO 8601-08; -0800; -08:00

Десятичные числа и проценты (DecimalType, PercentType)

Объекты типов DecimalType и PercentType используют конструктор Java BigDecimal для преобразований. PercentType имеет допустимые значения от 0 до 100.

Количество (QuantityType)

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

Оттенок-Насыщенность-Яркость HSBType

Строка содержащая разделённые запятыми значения оттенка (hue) (0-360°), насыщенности (saturation) (0-100%) и яркости (0-100%), например, 240,100,100 — описание синего цвета.

Координаты (PointType)

Строки PointType состоят из трех десятичных чисел, разделенных запятыми, указывающих широту и долготу в градусах и высоту в метрах соответственно.

Enum Types

ТипДопустимые значения
IncreaseDecreaseTypeINCREASE, DECREASE
NextPreviousTypeNEXT, PREVIOUS
OnOffTypeON, OFF
OpenClosedTypeOPEN, CLOSED
PlayPauseTypePLAY, PAUSE
RewindFastforwardTypeREWIND, FASTFORWARD
StopMoveTypeSTOP, MOVE
UpDownTypeUP, DOWN

Примечание (A note on Items which accept multiple state data types)

Существует ряд элементов, которые принимают несколько типов данных состояния, например DimmerItem, который принимает OnOffType и PercentType, RollershutterItem, который принимает PercentType и UpDownType или ColorItem, который принимает HSBType, OnOffType и PercentType. Поскольку элемент имеет одно состояние, эти несколько типов данных можно считать различными представлениями для этого состояния. Тип данных, содержащий больше всего информации о состоянии, обычно используется для сохранения внутреннего состояния элемента, а другие типы данных преобразуются из этого основного типа данных. Этот основной тип данных обычно является первым элементом в списке, возвращаемом Item.getAcceptedDataTypes ().

Небольшая табличка с примерами:

Item Name Main Data Type Additional Data Types Conversions
Color HSBType OnOffTypeOFF if the brightness level in the HSBType equals 0, ON otherwise
PercentType — the value for the brightness level in the HSBType
Dimmer PercentType OnOffTypeOFF if the brightness level indicated by the percent type equals 0, ON otherwise
Rollershutter PercentType UpDownTypeUP if the shutter level indicated by the percent type equals 0, DOWN if it equals 100, and UnDefType.UNDEF for any other value

Метаданные (Item Metadata)

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

Такие метаданные могут быть присоединены к элементам с помощью дизъюнктных пространств имен, чтобы они не конфликтовали друг с другом. Каждая запись метаданных имеет основное значение и необязательно дополнительные пары ключ / значение. К элементу могут быть присоединены метаданные для необходимого количества пространств имен, как в следующем примере:

Switch "My Fan" { homekit="Fan.v2", alexa="Fan" [ type="oscillating", speedSteps=3 ] }

Метаданные могут поддерживаться через выделенную конечную точку REST и включаться в ответы EnrichedItemDTO.

Расширения, которые могут автоматически выводить некоторые метаданные, должны реализовать и зарегистрировать службу MetadataProvider, чтобы сделать их доступными для системы. Они могут предоставлять их из любого источника, а также динамически удалять или добавлять данные. Они также не ограничены одним пространством имен.

MetadataRegistry предоставляет доступ для всех расширений, которые должны считывать метаданные элемента программно. Это центральное место, где хранится дополнительная информация о Вещах (Items).

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Спасибо!

Теперь редакторы в курсе.