github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/doc/content/ru/docs/javascript/entity.md (about)

     1  ---
     2  title: "Устройство"
     3  linkTitle: "entity"
     4  date: 2021-11-20
     5  description: >
     6  
     7  ---
     8  
     9  В проекте **Smart Home** объект "Entity" является основной единицей и главным объектом, который хранит состояние и настройки устройства.
    10  
    11  "Entity" представляет собой абстракцию конкретного устройства в умном доме. Он содержит информацию о типе устройства, его идентификаторе, текущем состоянии и других настройках.
    12  
    13  Основные атрибуты "Entity" включают:
    14  
    15  1. Тип устройства: Определяет категорию или класс устройства, например, "светильник", "термостат", "дверной замок" и т.д. 
    16  Это позволяет классифицировать устройства и определить доступные для них операции и настройки.
    17  
    18  2. Идентификатор: Уникальный идентификатор, присвоенный устройству, который позволяет однозначно идентифицировать его в 
    19  системе умного дома. Это может быть числовое значение, строка или другой формат идентификации.
    20  
    21  3. Состояние устройства: Содержит информацию о текущем состоянии устройства, например, "включено/выключено", 
    22  "открыто/закрыто", "температура" и т.д. Состояние может изменяться в результате операций или событий, связанных с устройством.
    23  
    24  4. Настройки устройства: Включает в себя различные параметры и настройки, связанные с конкретным устройством. Например, 
    25  это могут быть параметры освещенности для светильника, предпочитаемая температура для термостата и т.д.
    26  
    27  
    28  "Entity" является основной абстракцией устройства в проекте **Smart Home** и обеспечивает единый интерфейс для работы с 
    29  различными типами устройств. Это позволяет удобно управлять состоянием и настройками устройств, а также создавать гибкие
    30  сценарии автоматизации и взаимодействия между устройствами в вашем умном доме.
    31  
    32  ### свойства объекта Entity
    33  ```coffeescript
    34  {
    35    "id": "sensor.device1",
    36    "type": "sensor",
    37    "name": "",
    38    "description": "device description",
    39    "icon": null,
    40    "image_url": null,
    41    "actions": [
    42      {
    43        "name": "ENABLE",
    44        "description": "включить",
    45        "image_url": null,
    46        "icon": null
    47      },
    48      {
    49        "name": "DISABLE",
    50        "description": "выключить",
    51        "image_url": null,
    52        "icon": null
    53      }
    54    ],
    55    "states": [
    56      {
    57        "name": "ENABLED",
    58        "description": "enabled state",
    59        "image_url": null,
    60        "icon": null
    61      },
    62      {
    63        "name": "DISABLED",
    64        "description": "disabled state",
    65        "image_url": null,
    66        "icon": null
    67      }
    68    ],
    69    "state": {
    70      "name": "ENABLED",
    71      "description": "enabled state",
    72      "image_url": null,
    73      "icon": null
    74    },
    75    "attributes": {},
    76    "area": null,
    77    "metrics": [],
    78    "hidden": false
    79  }
    80  ```
    81  
    82  ### методы объекта Entity
    83  
    84  ```coffeescript
    85  EntitySetState(ENTITY_ID, attr)
    86  EntitySetStateName(ENTITY_ID, stateName)
    87  EntityGetState(ENTITY_ID)
    88  EntitySetAttributes(ENTITY_ID, attr)
    89  EntitySetMetric(ENTITY_ID, name, value)
    90  EntityCallAction(ENTITY_ID, action, args)
    91  EntityCallScene(ENTITY_ID, args)
    92  EntityGetSettings(ENTITY_ID)
    93  EntityGetAttributes(ENTITY_ID)
    94  ```
    95  
    96  Абстрактный объект "Entity" в проекте **Smart Home** предоставляет следующие методы:
    97  
    98  1. `EntitySetState(ENTITY_ID, attr)`: Этот метод используется для установки состояния конкретной сущности (`ENTITY_ID`) путем предоставления набора атрибутов (`attr`). С его помощью, скорее всего, можно обновлять состояние сущности новыми значениями атрибутов.
    99  
   100      ```javascript
   101      const attrs = {
   102          foo: bar,
   103      }
   104      const stateName = 'connected'
   105      EntitySetState(ENTITY_ID, {
   106          new_state: stateName,
   107          attribute_values: attrs,
   108          storage_save: true
   109      });
   110      ```
   111  
   112  2. `EntitySetStateName(ENTITY_ID, stateName)`: Этот метод устанавливает состояние сущности (`ENTITY_ID`) в определенное именованное состояние (`stateName`). Он используется, когда необходимо изменить состояние сущности на предопределенное.
   113  
   114      ```javascript
   115      const stateName = 'connected'
   116      EntitySetStateName(ENTITY_ID, stateName);
   117      ```
   118  
   119  3. `EntityGetState(ENTITY_ID)`: Этот метод извлекает текущее состояние указанной сущности (`ENTITY_ID`). Он позволяет запрашивать текущее состояние сущности.
   120  
   121      ```javascript
   122    
   123      const currentState = EntityGetState(ENTITY_ID);
   124      print(marshal(homeState))
   125      // out: {"name":"connected","description":"connected","image_url":null,"icon":null}
   126      ```
   127     
   128  4. `EntitySetAttributes(ENTITY_ID, attr)`: Аналогично `EntitySetState`, этот метод устанавливает атрибуты для определенной сущности (`ENTITY_ID`). Он может использоваться, когда нужно обновить атрибуты без изменения состояния.
   129  
   130      ```javascript
   131      const attrs = {
   132          foo: bar,
   133      }
   134      const stateName = 'connected'
   135      EntitySetAttributes(ENTITY_ID, attrs);
   136      ```
   137  
   138  5. `EntitySetMetric(ENTITY_ID, name, value)`: Этот метод устанавливает метрику для указанной сущности (`ENTITY_ID`). Метрики часто используются для измерения и записи различных аспектов поведения или производительности сущности.
   139  
   140      ```javascript
   141      const attrs = {
   142          foo: bar,
   143      }
   144      const metricName = 'counter'
   145      EntitySetMetric(ENTITY_ID, name, attrs);
   146      ```
   147  
   148  6. `EntityCallAction(ENTITY_ID, action, args)`: Этот метод используется для вызова или выполнения определенного действия (`action`), связанного с сущностью (`ENTITY_ID`), и предоставления необходимых аргументов (`args`) для этого действия.
   149  
   150      ```javascript
   151      const attrs = {
   152          foo: bar,
   153      }
   154      const action = 'ENABLE'
   155      EntityCallAction(ENTITY_ID, action, attrs);
   156      ```
   157  
   158  7. `EntityCallScene(ENTITY_ID, args)`: Подобно `EntityCallAction`, этот метод используется для вызова или выполнения сцены, связанной с сущностью (`ENTITY_ID`), и предоставления необходимых аргументов (`args`) для этой сцены.
   159  
   160      ```javascript
   161      const attrs = {
   162          foo: bar,
   163      }
   164      EntityCallScene(ENTITY_ID, attrs);
   165      ```
   166     
   167  8. `EntityGetSettings(ENTITY_ID)`: Этот метод извлекает настройки или конфигурацию для указанной сущности (`ENTITY_ID`). Он позволяет получать доступ к настройкам, связанным с сущностью.
   168  
   169      ```javascript
   170      const settings = EntityGetSettings(ENTITY_ID);
   171      print(marshal(settings))
   172      // out: {"username":"zigbee2mqtt","cleanSession":false,"keepAlive":15,"direction":"in","topics":"owntracks/#","pingTimeout":10,"connectTimeout":30,"qos":0}
   173  
   174      ```
   175  
   176  9. `EntityGetAttributes(ENTITY_ID)`: Этот метод извлекает все атрибуты, связанные с определенной сущностью (`ENTITY_ID`). Он предоставляет способ получения подробной информации о атрибутах сущности.
   177  
   178      ```javascript
   179      const attrs = EntityGetAttributes(ENTITY_ID);
   180      print(marshal(attrs))
   181      // out: {"username":"zigbee2mqtt","cleanSession":false,"keepAlive":15,"direction":"in","topics":"owntracks/#","pingTimeout":10,"connectTimeout":30,"qos":0}
   182  
   183      ```
   184  
   185  Методы объекта "Entity" предоставляют удобные возможности для управления состоянием, атрибутами, метриками и выполнения 
   186  действий на устройстве. Вы можете использовать эти методы для создания логики управления устройствами в вашем проекте 
   187  **Smart Home**.
   188  
   189  
   190