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

Материал из HOMEd Wiki
 
(не показана 151 промежуточная версия этого же участника)
Строка 1: Строка 1:
{{DISPLAYTITLE:Возможности устройств}}
{{DISPLAYTITLE:Cпособности устройств}}
{{Breadcrumbs|Возможности устройств}}
{{Breadcrumbs|Cпособности устройств}}


== Общие сведения ==
== Общие сведения ==
После долгих дискуссий было решено, что <code class="value">возможности</code> это максимально подходящее по смыслу слово русского языка, способное заменить слово <code class="value">exposes</code> в контексте описания сервисов HOMEd и других систем умного дома.
После долгих дискуссий было решено, что <code class="value">"способности"</code> это максимально подходящее по смыслу слово русского языка, которое может заменить слово <code class="value">"exposes"</code> в контексте описания сервисов ''HOMEd'' и других систем умного дома.


Возможности устройств это абстрактные сущности, на которых основана работа функции [https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery Home Assistant MQTT Discovery], работа сервиса [[Cloud|HOMEd Cloud]], а так же работа [[Web|веб-интерфейса]]. Например, возможность <code class="value">"temperature"</code> указывает на наличие датчика темературы, а <code class="value">"light"</code> описывает осветительный прибор.
Cпособности устройств это абстрактные сущности, на которых основана работа функции [https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery Home Assistant MQTT Discovery], работа сервиса [[Cloud|HOMEd Cloud]], а так же работа [[Web|веб-интерфейса]]. Например, способность <code class="value">"temperature"</code> указывает на наличие датчика темературы, а <code class="value">"light"</code> описывает осветительный прибор.


== Типовые возможности ==
== Типовые способности ==
Типовые возможности устройств делятся на 6 основных категорий:
Типовые способности устройств могут иметь произвольные названия и делятся на 6 категорий:
* Бинарный сенсорор (binary)
* Бинарный сенсорор (binary)
* Сенсор (sensor)
* Сенсор (sensor)
Строка 16: Строка 16:
* Триггер (button)
* Триггер (button)


Категоря возможности, как и прочие параметры, настраивается при помощи [[Common/Options|опций]].
Каждая типовая способность добавляет ''одноименное'' свойство. Категория типовой способности, как и прочие параметры, настраивается при помощи [[Common/Options|опций]].


=== Бинарный сенсорор ===
{{Warning|Типовым способностям можно давать любые названия, однако есть небольшие ограничения - название не может содержать проблелы, а символ нижнего подчеркивания <code>"_"</code> можно использовать только для разделения нескольких одинаковых способностей, например <code>"temperature_1"</code> и <code>"temperature_2"</code>. В случае, когда название способности состоит из нескольких слов, рекомендуется использовать формат ''camelCase'', например, <code>"waterLeak"</code> или <code>"childLock"</code>.}}
Данная возможность описывает сенсоры, имеющие всего два состояния, такие, как датчик протечки воды или датчик двидежения.


Обязаьельные опции:
=== Бинарный сенсор (binary) ===
Данная способность описывает сенсоры, имеющие всего два состояния (активен/не активен), например, датчик протечки воды или датчик движения. Данная способность ''не предполагает'' возможности установки значения. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["myBinary"],
  "options":
  {
    "myBinary": {"type": "binary"}
  }
  ...
}
</syntaxhighlight>


=== Сенсор ===
=== Сенсор (sensor) ===
Данная способность описывает любые сенсоры, такие, как датчик температуры или силы тока. Показания сенсора могут быть как числовыми, так и строковыми. Данная способность ''не предполагает'' возможности установки значения. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["mySensor"],
  "options":
  {
    "mySensor": {"type": "sensor", "unit": "°C", "round": 2}
  }
  ...
}
</syntaxhighlight>


=== Переключатель ===
Необязательные параметры:<br>
<code>"unit"</code> - единица измерения<br>
<code>"round"</code> - округление числового значения (количество знаков после запятой)


=== Диапазон ===
=== Переключатель (toggle) ===
Данная способность описывает органы управления или настройки устройства, имеющие два состояния (включено/выключено). Данная способность ''предполагает'' возможность установки значения. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["myToggle"],
  "options":
  {
    "myToggle": {"type": "toggle"}
  }
  ...
}
</syntaxhighlight>


=== Селектор ===
=== Диапазон (number) ===
Данная способность описывает органы управления или настройки устройства, имеющие числовой дипазон значений. Данная способность ''предполагает'' возможность установки значения. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["myNumber"],
  "options":
  {
    "myNumber": {"type": "number", "min": 0, "max": 100, "step": 0.1, "unit": "%"}
  }
  ...
}
</syntaxhighlight>


=== Триггер ===
Обязательные параметры:<br>
<code>"min"</code> - минимальное возможное значение<br>
<code>"max"</code> - максимальное возможное значение


=== Общие опции ===
Необязательные параметры:<br>
<code>"step"</code> - минимальный шаг изменения значения<br>
<code>"unit"</code> - единица измерения


== Специальные возможности ==
=== Селектор (select) ===
Данная способность описывает органы управления или настройки устройства, имеющие несколько строковых значений. Данная способность ''предполагает'' возможность установки значения. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["mySelect"],
  "options":
  {
    "mySelect": {"type": "select", "enum": ["toggle", "momentary", "multifunction"]}
  }
  ...
}
</syntaxhighlight>
Или
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["mySelect"],
  "options":
  {
    "mySelect": {"type": "select", "enum": {"0": "off", "1": "on", "2": "toggle", "255": "previous"}}
  }
  ...
}
</syntaxhighlight>
 
Обязательные параметры:<br>
<code>"enum"</code> - массив или объект со значениями
 
=== Триггер (button) ===
Данная способность описывает сущность, необходимую для вызова какого-либо действия со стороны устройства, например для запуска калибровки или сброса настроек. С точки зрения пользовательского интерфейса это просто кнопка. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["myButton"],
  "options":
  {
    "myButton": {"type": "button"}
  }
  ...
}
</syntaxhighlight>
 
=== Параметры для Home Assistant ===
Следующие параметры способностей используются для функции [https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery Home Assistant MQTT Discovery]:<br>
<code>"icon"</code> - иконка из набора [https://pictogrammers.com/library/mdi/ Material Design Icons], применимо ко всем типовым способностям<br>
<code>"class"</code> - класс устройства, применимо к способностям <code class="value">"binary"</code> и <code class="value">"sensor"</code><br>
<code>"state"</code> - способ ведения статистики, возможные значения: <code class="value">"measurement"</code> или <code class="value">"total_increasing"</code>, применимо к способности <code class="value">"sensor"</code>
 
== Специальные способности ==
Специальные способности устройств имеют фиксированные имена и делятся на 5 категорий:
* Выключатель (switch)
* Замок (lock)
* Осветительный прибор (light)
* Штора (cover)
* Термостат (thermostat)
 
Эти способности отличаются от типовых тем, что имеют фиксированные имена свои уникальные наборы опций.
 
=== Выключатель (switch) ===
Данная способность описывает возможность устройства быть включенным или выключенным, например, если это реле или выключатель, и добавляет  специальное свойство <code class="value">"status"</code>. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["switch"],
  "options":
  {
    "switch": "outlet"
  }
  ...
}
</syntaxhighlight>
 
Опции для Home Assistant:<br>
<code>"switch"</code> - тип выключателя, возможные значения: <code class="value">"outlet"</code><br>
 
=== Замок (lock) ===
Данная способность описывает механизм, который может быть открыт или закрыт, например, замок или кран, а так же, как и способность <code class="value">"switch"</code>, добавляет свойство <code class="value">"status"</code>. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["lock"],
  "options":
  {
    "lock": "valve"
  }
  ...
}
</syntaxhighlight>
 
Опции для Home Assistant:<br>
<code>"lock"</code> - тип замка, возможные значения: <code class="value">"valve"</code><br>
 
=== Осветительный прибор (light) ===
Данная способность описывает любые осветительные приборы, такие как лампочки или контроллеры светодиодных лент. По умолчанию данная способность добавляет только свойство <code class="value">"status"</code>, так же, как это делают способности <code class="value">"switch"</code> и <code class="value">"lock"</code>, остальные свойства добавляются при помощи одноименной опции. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["light"],
  "options":
  {
    "light": ["level", "colorTemperature"],
    "colorTemperature": {"min": 200, "max": 400}
  }
  ...
}
</syntaxhighlight>
 
Необязательные опции:<br>
<code>"level"</code> - набор дополнительных свойств, возможные значения: <code class="value">"level"</code>, <code class="value">"color"</code>, <code class="value">"colorTemperature"</code>, <code class="value">"colorMode"</code><br>
<code>"colorTemperature"</code> - минимальное и максимальное значения для свойства <code class="value">"colorTemperature"</code>
 
=== Штора (cover) ===
Данная способность описывает шторы, рольставни или жалюзи, и добавляет специальные свойства <code class="value">"cover"</code> и <code class="value">"position"</code>. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["cover"],
  "options":
  {
    "invertCover": true,
    "cover": "blind"
  }
  ...
}
</syntaxhighlight>
 
Необязательные опции:<br>
<code>"invertCover"</code> - инверсия значения положения шторы
 
Опции для Home Assistant:<br>
<code>"cover"</code> - тип шторы, возможные значения: <code class="value">"blind"</code><br>
 
=== Термостат (thermostat) ===
Данная способность описывает устройства для контроля и управления климатом, и добавляет свойство <code class="value">"temperature"</code>, а так же дополнительные свойства, набор которых зависит от опций. Пример описания:
<syntaxhighlight lang="json">
{
  ...
  "exposes": ["thermostat"],
  "options":
  {
    "systemMode": {"enum": ["off", "heat"]},
    "operationMode": {"enum": ["manual", "comfort"]},
    "targetTemperature": {"min": 10, "max": 40},
    "runningStatus": true
  }
  ...
}
</syntaxhighlight>
 
Необязательные опции:<br>
<code>"systemMode"</code> - основные режимов работы, добавляет одноименное свойство, возможные значения: <code class="value">off</code>, <code class="value">auto</code>, <code class="value">cool</code>, <code class="value">heat</code>, <code class="value">dry</code>, <code class="value">fan</code><br>
<code>"operationMode"</code> - дополнительные режимов работы, добавляет одноименное свойство<br>
<code>"targetTemperature"</code> -  минимальное и максимальное значения установки целевой температуры, добавляет одноименное свойство<br>
<code>"runningStatus"</code> - индикатор текущего состояния (работа/простой), добавляет свойство <code class="value">running</code>


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

Текущая версия от 17:56, 27 февраля 2025

HOMEd > Cпособности устройств

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

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

Cпособности устройств это абстрактные сущности, на которых основана работа функции Home Assistant MQTT Discovery, работа сервиса HOMEd Cloud, а так же работа веб-интерфейса. Например, способность "temperature" указывает на наличие датчика темературы, а "light" описывает осветительный прибор.

Типовые способности

Типовые способности устройств могут иметь произвольные названия и делятся на 6 категорий:

  • Бинарный сенсорор (binary)
  • Сенсор (sensor)
  • Переключатель (toggle)
  • Диапазон (number)
  • Селектор (select)
  • Триггер (button)

Каждая типовая способность добавляет одноименное свойство. Категория типовой способности, как и прочие параметры, настраивается при помощи опций.

Типовым способностям можно давать любые названия, однако есть небольшие ограничения - название не может содержать проблелы, а символ нижнего подчеркивания "_" можно использовать только для разделения нескольких одинаковых способностей, например "temperature_1" и "temperature_2". В случае, когда название способности состоит из нескольких слов, рекомендуется использовать формат camelCase, например, "waterLeak" или "childLock".

Бинарный сенсор (binary)

Данная способность описывает сенсоры, имеющие всего два состояния (активен/не активен), например, датчик протечки воды или датчик движения. Данная способность не предполагает возможности установки значения. Пример описания:

{
  ...
  "exposes": ["myBinary"],
  "options":
  {
    "myBinary": {"type": "binary"}
  }
  ...
}

Сенсор (sensor)

Данная способность описывает любые сенсоры, такие, как датчик температуры или силы тока. Показания сенсора могут быть как числовыми, так и строковыми. Данная способность не предполагает возможности установки значения. Пример описания:

{
  ...
  "exposes": ["mySensor"],
  "options":
  {
    "mySensor": {"type": "sensor", "unit": "°C", "round": 2}
  }
  ...
}

Необязательные параметры:
"unit" - единица измерения
"round" - округление числового значения (количество знаков после запятой)

Переключатель (toggle)

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

{
  ...
  "exposes": ["myToggle"],
  "options":
  {
    "myToggle": {"type": "toggle"}
  }
  ...
}

Диапазон (number)

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

{
  ...
  "exposes": ["myNumber"],
  "options":
  {
    "myNumber": {"type": "number", "min": 0, "max": 100, "step": 0.1, "unit": "%"}
  }
  ...
}

Обязательные параметры:
"min" - минимальное возможное значение
"max" - максимальное возможное значение

Необязательные параметры:
"step" - минимальный шаг изменения значения
"unit" - единица измерения

Селектор (select)

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

{
  ...
  "exposes": ["mySelect"],
  "options":
  {
    "mySelect": {"type": "select", "enum": ["toggle", "momentary", "multifunction"]}
  }
  ...
}

Или

{
  ...
  "exposes": ["mySelect"],
  "options":
  {
    "mySelect": {"type": "select", "enum": {"0": "off", "1": "on", "2": "toggle", "255": "previous"}}
  }
  ...
}

Обязательные параметры:
"enum" - массив или объект со значениями

Триггер (button)

Данная способность описывает сущность, необходимую для вызова какого-либо действия со стороны устройства, например для запуска калибровки или сброса настроек. С точки зрения пользовательского интерфейса это просто кнопка. Пример описания:

{
  ...
  "exposes": ["myButton"],
  "options":
  {
    "myButton": {"type": "button"}
  }
  ...
}

Параметры для Home Assistant

Следующие параметры способностей используются для функции Home Assistant MQTT Discovery:
"icon" - иконка из набора Material Design Icons, применимо ко всем типовым способностям
"class" - класс устройства, применимо к способностям "binary" и "sensor"
"state" - способ ведения статистики, возможные значения: "measurement" или "total_increasing", применимо к способности "sensor"

Специальные способности

Специальные способности устройств имеют фиксированные имена и делятся на 5 категорий:

  • Выключатель (switch)
  • Замок (lock)
  • Осветительный прибор (light)
  • Штора (cover)
  • Термостат (thermostat)

Эти способности отличаются от типовых тем, что имеют фиксированные имена свои уникальные наборы опций.

Выключатель (switch)

Данная способность описывает возможность устройства быть включенным или выключенным, например, если это реле или выключатель, и добавляет специальное свойство "status". Пример описания:

{
  ...
  "exposes": ["switch"],
  "options":
  {
    "switch": "outlet"
  }
  ...
}

Опции для Home Assistant:
"switch" - тип выключателя, возможные значения: "outlet"

Замок (lock)

Данная способность описывает механизм, который может быть открыт или закрыт, например, замок или кран, а так же, как и способность "switch", добавляет свойство "status". Пример описания:

{
  ...
  "exposes": ["lock"],
  "options":
  {
    "lock": "valve"
  }
  ...
}

Опции для Home Assistant:
"lock" - тип замка, возможные значения: "valve"

Осветительный прибор (light)

Данная способность описывает любые осветительные приборы, такие как лампочки или контроллеры светодиодных лент. По умолчанию данная способность добавляет только свойство "status", так же, как это делают способности "switch" и "lock", остальные свойства добавляются при помощи одноименной опции. Пример описания:

{
  ...
  "exposes": ["light"],
  "options":
  {
    "light": ["level", "colorTemperature"],
    "colorTemperature": {"min": 200, "max": 400}
  }
  ...
}

Необязательные опции:
"level" - набор дополнительных свойств, возможные значения: "level", "color", "colorTemperature", "colorMode"
"colorTemperature" - минимальное и максимальное значения для свойства "colorTemperature"

Штора (cover)

Данная способность описывает шторы, рольставни или жалюзи, и добавляет специальные свойства "cover" и "position". Пример описания:

{
  ...
  "exposes": ["cover"],
  "options":
  {
    "invertCover": true,
    "cover": "blind"
  }
  ...
}

Необязательные опции:
"invertCover" - инверсия значения положения шторы

Опции для Home Assistant:
"cover" - тип шторы, возможные значения: "blind"

Термостат (thermostat)

Данная способность описывает устройства для контроля и управления климатом, и добавляет свойство "temperature", а так же дополнительные свойства, набор которых зависит от опций. Пример описания:

{
  ...
  "exposes": ["thermostat"],
  "options":
  {
    "systemMode": {"enum": ["off", "heat"]},
    "operationMode": {"enum": ["manual", "comfort"]},
    "targetTemperature": {"min": 10, "max": 40},
    "runningStatus": true
  }
  ...
}

Необязательные опции:
"systemMode" - основные режимов работы, добавляет одноименное свойство, возможные значения: off, auto, cool, heat, dry, fan
"operationMode" - дополнительные режимов работы, добавляет одноименное свойство
"targetTemperature" - минимальное и максимальное значения установки целевой температуры, добавляет одноименное свойство
"runningStatus" - индикатор текущего состояния (работа/простой), добавляет свойство running