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