Common/Options: различия между версиями

Материал из HOMEd Wiki
 
(не показано 16 промежуточных версий этого же участника)
Строка 3: Строка 3:


== Общие сведения ==
== Общие сведения ==
Опции устройств это дополнительные настройки, позволяющие управлять поведением устройств и их [[Common/Exposes|возможностями]]. Примеры использования опуий в коде HOMEd можно посмотреть [https://github.com/search?q=user%3Au236+language%3AC%2B%2B+option%28+OR+options%28&type=code здесь].
Опции устройств это дополнительные настройки, позволяющие управлять поведением устройств и их [[Common/Exposes|способностями]]. Примеры использования различных опций в коде HOMEd можно посмотреть [https://github.com/search?q=user%3Au236+language%3AC%2B%2B+option%28+OR+options%28&type=code здесь].


== Опции возможностей (exposes) ==
== Опции способностей (exposes) ==
Опции для большинства часто-используемых возможностей описаны в файле <code>/usr/share/homed-common/expose.json</code>. Это сделано для того, чтобы не дублировать одни и те же опции для каждогого типового случая описания таких возможностей, как температура, влажность, напряжение и так далее.
Опции для большинства часто используемых [[Common/Exposes|способностей]] описаны в файле <code>/usr/share/homed-common/expose.json</code>. Это сделано для того, чтобы не дублировать одни и те же опции для каждого типового случая описания таких способностей, как температура, влажность, напряжение, сила тока и так далее. Актуальная версия файла всегда доступна на [https://github.com/u236/homed-service-common/blob/master/deploy/data/usr/share/homed-common/expose.json GitHub].


Опции указанные непосредственно в описании устройств имеют приоритет над опциями из файла <code>expose.json</code> и позволяют переопределять необходимые параметры, например, единицы измерения.


Набор опций для каждой способности это вложенный JSON-объект, имя которого должно ''полностью'' совпадать с именем способности, например:


<syntaxhighlight lang="json">
# опции для каждого expose это вложенный json-объект, имя которого должно полностью совпадать с именем expose:
{
  ...
  "exposes": ["pressure", "temperature", "myCustomExpose"],
  "options":
  {
    "pressure": {"unit": "mmHg"},
    "myCustomExpose": {"type": "sensor", "other": "option"}
  }
  ...
}
</syntaxhighlight>


Приведенный выше пример демонстрирует способ переопределения опции <code>unit</code> для способности <code>pressure</code>. Исходные опции:
<syntaxhighlight lang="json">
{
  "type": "sensor",
  "class": "pressure",
  "state": "measurement",
  "unit": "kPa",
  "round": 1
}
</syntaxhighlight>


 
Итоговое описание способности:
exposes:
<syntaxhighlight lang="json">
pressure, temperature, bla_1235_xfff_fuck
 
options:
{
{
   "pressure": {"unit": "mmhg"}},
   "type": "sensor",
   "bla_1235_xfff_fuck": {"type": "senosor", "other": "option"}
  "class": "pressure",
   "state": "measurement",
  "unit": "mmHg",
  "round": 1
}
}
 
</syntaxhighlight>
 
# опции для большинства часто-используемых expose собраны в кучу и хранятся в файле /usr/share/homed-common/expose.json (https://github.com/u236/homed-service-common/blob/master/deploy/data/usr/share/homed-common/expose.json), это нужно для того, чтобы не писать одни и те же опции для каждого градусника, датчики протечки и прочих типовых случаев
 
 
# опции указанные в описании устройств имеют приоритет над опциями из файла expose.json, например, предположим, что у нас есть кастом-устройство с expose температуры и нам нужно заменить единицу измерения:
 
исходное описание expose температуры:
https://github.com/u236/homed-service-common/blob/12d4c31929a808c687df13b5bf9c8a01653612bc/deploy/data/usr/share/homed-common/expose.json#L51
 
exposes нашего устройства:
temperature
 
options нашего устройства:
{"temperature": {"unit": "BLA"}}
 
итоговое описание устройства, которое будет использовано в expose-топиках и discovery-топиках:
{"type": "sensor", "class": "temperature", "state": "measurement", "unit": "BLA", "round": 1}
 
 
#howto
 
 
 


[[Category:Common]]
[[Category:Common]]
[[Category:Custom]]
[[Category:Custom]]
[[Category:ZigBee]]
[[Category:ZigBee]]

Текущая версия от 12:31, 5 сентября 2024

HOMEd > Опции устройств

Общие сведения

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

Опции способностей (exposes)

Опции для большинства часто используемых способностей описаны в файле /usr/share/homed-common/expose.json. Это сделано для того, чтобы не дублировать одни и те же опции для каждого типового случая описания таких способностей, как температура, влажность, напряжение, сила тока и так далее. Актуальная версия файла всегда доступна на GitHub.

Опции указанные непосредственно в описании устройств имеют приоритет над опциями из файла expose.json и позволяют переопределять необходимые параметры, например, единицы измерения.

Набор опций для каждой способности это вложенный JSON-объект, имя которого должно полностью совпадать с именем способности, например:

{
  ...
  "exposes": ["pressure", "temperature", "myCustomExpose"],
  "options":
  {
    "pressure": {"unit": "mmHg"},
    "myCustomExpose": {"type": "sensor", "other": "option"}
  }
  ...
}

Приведенный выше пример демонстрирует способ переопределения опции unit для способности pressure. Исходные опции:

{
  "type": "sensor",
  "class": "pressure",
  "state": "measurement",
  "unit": "kPa",
  "round": 1
}

Итоговое описание способности:

{
  "type": "sensor",
  "class": "pressure",
  "state": "measurement",
  "unit": "mmHg",
  "round": 1
}