Устройство
В проекте Smart Home объект “Entity” является основной единицей и главным объектом, который хранит состояние и настройки устройства.
“Entity” представляет собой абстракцию конкретного устройства в умном доме. Он содержит информацию о типе устройства, его идентификаторе, текущем состоянии и других настройках.
Основные атрибуты “Entity” включают:
-
Тип устройства: Определяет категорию или класс устройства, например, “светильник”, “термостат”, “дверной замок” и т.д. Это позволяет классифицировать устройства и определить доступные для них операции и настройки.
-
Идентификатор: Уникальный идентификатор, присвоенный устройству, который позволяет однозначно идентифицировать его в системе умного дома. Это может быть числовое значение, строка или другой формат идентификации.
-
Состояние устройства: Содержит информацию о текущем состоянии устройства, например, “включено/выключено”, “открыто/закрыто”, “температура” и т.д. Состояние может изменяться в результате операций или событий, связанных с устройством.
-
Настройки устройства: Включает в себя различные параметры и настройки, связанные с конкретным устройством. Например, это могут быть параметры освещенности для светильника, предпочитаемая температура для термостата и т.д.
“Entity” является основной абстракцией устройства в проекте Smart Home и обеспечивает единый интерфейс для работы с различными типами устройств. Это позволяет удобно управлять состоянием и настройками устройств, а также создавать гибкие сценарии автоматизации и взаимодействия между устройствами в вашем умном доме.
свойства объекта Entity
{
"id": "sensor.device1",
"type": "sensor",
"name": "",
"description": "device description",
"icon": null,
"image_url": null,
"actions": [
{
"name": "ENABLE",
"description": "включить",
"image_url": null,
"icon": null
},
{
"name": "DISABLE",
"description": "выключить",
"image_url": null,
"icon": null
}
],
"states": [
{
"name": "ENABLED",
"description": "enabled state",
"image_url": null,
"icon": null
},
{
"name": "DISABLED",
"description": "disabled state",
"image_url": null,
"icon": null
}
],
"state": {
"name": "ENABLED",
"description": "enabled state",
"image_url": null,
"icon": null
},
"attributes": {},
"area": null,
"metrics": [],
"hidden": false
}
методы объекта Entity
EntitySetState(ENTITY_ID, attr)
EntitySetStateName(ENTITY_ID, stateName)
EntityGetState(ENTITY_ID)
EntitySetAttributes(ENTITY_ID, attr)
EntitySetMetric(ENTITY_ID, name, value)
EntityCallAction(ENTITY_ID, action, args)
EntityCallScene(ENTITY_ID, args)
EntityGetSettings(ENTITY_ID)
EntityGetAttributes(ENTITY_ID)
Абстрактный объект “Entity” в проекте Smart Home предоставляет следующие методы:
-
EntitySetState(ENTITY_ID, attr)
: Этот метод используется для установки состояния конкретной сущности (ENTITY_ID
) путем предоставления набора атрибутов (attr
). С его помощью, скорее всего, можно обновлять состояние сущности новыми значениями атрибутов.const attrs = { foo: bar, } const stateName = 'connected' EntitySetState(ENTITY_ID, { new_state: stateName, attribute_values: attrs, storage_save: true });
-
EntitySetStateName(ENTITY_ID, stateName)
: Этот метод устанавливает состояние сущности (ENTITY_ID
) в определенное именованное состояние (stateName
). Он используется, когда необходимо изменить состояние сущности на предопределенное.const stateName = 'connected' EntitySetStateName(ENTITY_ID, stateName);
-
EntityGetState(ENTITY_ID)
: Этот метод извлекает текущее состояние указанной сущности (ENTITY_ID
). Он позволяет запрашивать текущее состояние сущности.const currentState = EntityGetState(ENTITY_ID); print(marshal(homeState)) // out: {"name":"connected","description":"connected","image_url":null,"icon":null}
-
EntitySetAttributes(ENTITY_ID, attr)
: АналогичноEntitySetState
, этот метод устанавливает атрибуты для определенной сущности (ENTITY_ID
). Он может использоваться, когда нужно обновить атрибуты без изменения состояния.const attrs = { foo: bar, } const stateName = 'connected' EntitySetAttributes(ENTITY_ID, attrs);
-
EntitySetMetric(ENTITY_ID, name, value)
: Этот метод устанавливает метрику для указанной сущности (ENTITY_ID
). Метрики часто используются для измерения и записи различных аспектов поведения или производительности сущности.const attrs = { foo: bar, } const metricName = 'counter' EntitySetMetric(ENTITY_ID, name, attrs);
-
EntityCallAction(ENTITY_ID, action, args)
: Этот метод используется для вызова или выполнения определенного действия (action
), связанного с сущностью (ENTITY_ID
), и предоставления необходимых аргументов (args
) для этого действия.const attrs = { foo: bar, } const action = 'ENABLE' EntityCallAction(ENTITY_ID, action, attrs);
-
EntityCallScene(ENTITY_ID, args)
: ПодобноEntityCallAction
, этот метод используется для вызова или выполнения сцены, связанной с сущностью (ENTITY_ID
), и предоставления необходимых аргументов (args
) для этой сцены.const attrs = { foo: bar, } EntityCallScene(ENTITY_ID, attrs);
-
EntityGetSettings(ENTITY_ID)
: Этот метод извлекает настройки или конфигурацию для указанной сущности (ENTITY_ID
). Он позволяет получать доступ к настройкам, связанным с сущностью.const settings = EntityGetSettings(ENTITY_ID); print(marshal(settings)) // out: {"username":"zigbee2mqtt","cleanSession":false,"keepAlive":15,"direction":"in","topics":"owntracks/#","pingTimeout":10,"connectTimeout":30,"qos":0}
-
EntityGetAttributes(ENTITY_ID)
: Этот метод извлекает все атрибуты, связанные с определенной сущностью (ENTITY_ID
). Он предоставляет способ получения подробной информации о атрибутах сущности.const attrs = EntityGetAttributes(ENTITY_ID); print(marshal(attrs)) // out: {"username":"zigbee2mqtt","cleanSession":false,"keepAlive":15,"direction":"in","topics":"owntracks/#","pingTimeout":10,"connectTimeout":30,"qos":0}
Методы объекта “Entity” предоставляют удобные возможности для управления состоянием, атрибутами, метриками и выполнения действий на устройстве. Вы можете использовать эти методы для создания логики управления устройствами в вашем проекте Smart Home.