Вещи (Things)

Вещи (Things) — это сущности, которые физически могут быть добавлены в систему и которые потенциально могут обеспечить множество функций в одной вещи. Важно отметить, что вещи не обязательно должны быть устройствами, но они также могут представлять собой веб-службу или любой другой управляемый источник информации и функциональности. С точки зрения пользователя они актуальны для процесса установки и конфигурирования, но не для управления системой.

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

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

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

Особый тип вещей — «мост». Мосты — это вещи, которые необходимо добавить в систему, чтобы получить доступ к другим вещам. Типичным примером моста является IP-шлюз для какой-либо системы домашней автоматизации на основе не IP-протокола (KNX, RS-485, ModBus, Z-Wave и т.п.) или конфигурации веб-службы с информацией проверки подлинности, которая может понадобиться каждой вещи из этой веб-службы.

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

Состояние вещей (Thing Status) Каждая вещь имеет статус объекта, который помогает выявить возможные проблемы с устройством или сервисом. В следующей таблице представлен обзор различных статусов:

Состояние Описание
UNINITIALIZED Это начальный статус вещи, когда она добавляется или запускается система. Этот статус также присваивается, если процесс инициализации завершился неудачно или привязка недоступна. Команды, которые отправляются на каналы, обрабатываться не будут.
INITIALIZING Это состояние назначается, когда привязка инициализирует вещь. Это зависит от привязки, сколько времени занимает процесс инициализации. Команды, которые отправляются на каналы, обрабатываться не будут.
UNKNOWN Обработчик полностью инициализирован, но из-за характера представленного устройства/службы он еще не может сказать, находится ли вещь в сети или в автономном режиме. Поэтому вещь потенциально может работать правильно уже и может или не может обрабатывать команды. Но система позволяет отправлять команды, потому что некоторые устройства на основе радио могут выходить в интернет, если команда отправляется им. Обработчик должен позаботиться о том, чтобы переключить вещь в онлайн или офлайн как можно скорее.
ONLINE Предполагается, что устройство/служба, представленная вещью, работает правильно и может обрабатывать команды.
OFFLINE Предполагается, что устройство/служба, представленная вещью, работает неправильно и не может обрабатывать команды. Но система позволяет отправлять команды, потому что некоторые устройства на основе радио могут вернуться в онлайн, если команда отправляется им.
REMOVING Устройство / служба, представленная вещью, должна быть удалена, но привязка еще не подтвердила удаление. Некоторые привязки должны взаимодействовать с устройством, чтобы отключить его от системы. Устройство наверняка не работает, и команды не могут быть обработаны.
REMOVED Этот статус указывает, что устройство/служба, представленная вещью, была удалена из внешней системы после удаления, инициированного платформой. Обычно этот статус является промежуточным, так как вещь удаляется из базы данных после назначения этого статуса.

Эта схема показывает возможные переходы между состояниями.

Начальное состояние вещи UNINITIALIZED. От UNINITIALIZED вещь переходит к инициализации (INITIALIZING). Если инициализация не удается, вещь возвращается к UNINITIALIZED. Если инициализация прошла успешно, привязка устанавливает состояние объекта в UNKNOWN, ONLINE или OFFLINE, что означает, что обработчик объекта полностью инициализирован. Из одного из этих состояний вещь может вернуться в UNINITIALIZED, REMOVING или REMOVED. Состояния REMOVING и REMOVED также может быть достигнуто из любого другого состояния.

Состояние подробно описано далее с объектом Status detail. В следующей таблице перечислены различные сведения о состоянии для каждого статуса:

UNINITIALIZED NONE Никаких дополнительных сведений о статусе.
HANDLER_MISSING_ERROR Не удается инициализировать обработчик, так как ответственная привязка недоступна или запущена.
HANDLER_REGISTERING_ERROR Сбой обработчика на этапе регистрации службы.
HANDLER_CONFIGURATION_PENDING Обработчик зарегистрирован, но не может быть инициализирован из-за отсутствия параметров конфигурации.
HANDLER_INITIALIZING_ERROR Сбой обработчика на этапе инициализации.
BRIDGE_UNINITIALIZED Мост, связанный с этой вещью, не инициализирован.
DISABLED Вещь отключена.
INITIALIZING NONE Никаких дополнительных сведений о статусе.
UNKNOWN NONE Никаких дополнительных сведений о статусе.
ONLINE NONE Никаких дополнительных сведений о статусе.
CONFIGURATION_PENDING Вещь ждет, чтобы передать информацию о конфигурации на устройство. Некоторые привязки должны взаимодействовать с устройством, чтобы убедиться, что конфигурация принята.
OFFLINE NONE Никаких дополнительных сведений о статусе.
COMMUNICATION_ERROR Ошибка связи с устройством. Эта ошибка может быть временной.
CONFIGURATION_ERROR Проблема с конфигурацией вещи препятствует общению с представленным устройством или сервисом. Эта проблема может быть решена путем перенастройки Вещи.
BRIDGE_OFFLINE Из-за отключенного моста считается, что и Вещь отключена.
FIRMWARE_UPDATING В настоящее время происходит обновление прошивки.
DUTY_CYCLE В настоящее время Вещь находится в состоянии DUTY_CYCLE, использование заблокировано.
GONE Вещь была удалена из моста или из сети, в которой находилась и более недоступна для использования. Пользователь может удалить вещь из системы.
REMOVING NONE Никаких дополнительных сведений о статусе.
REMOVED NONE Никаких дополнительных сведений о статусе.

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

При помощи метода getStatusInfo () можно получать текущее состояние Вещи. В следующем коде показано, как распечатать состояние каждой вещи в консоли:

Collection<Thing> things = thingRegistry.getAll();
for (Thing thing : things) {
    ThingStatusInfo statusInfo = thing.getStatusInfo();
    switch (statusInfo.getStatus()) {
        case ONLINE:
            System.out.println("Вещь доступна.");
            break;
        case OFFLINE:
            System.out.println("Вещь недоступна.");
            break;
        default:
            System.out.println("Вещь в состоянии " + statusInfo.getStatus());
            break;
    }
    System.out.println("Подробности состояния Вещи: " + statusInfo.getStatusDetail());
    System.out.println("Описание состояния Вещи: " + statusInfo.getDescription());
}

Источник: https://ae11.me/archives/7348

Оригинал: https://www.openhab.org/docs/concepts/things.html

  • sw/openhab/docs/concepts/things.txt
  • Последнее изменение: 2023/01/02 03:30
  • lazygatto