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

Материал из HOMEd Wiki
 
(не показаны 34 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{DISPLAYTITLE:Custom: База данных}}
{{DISPLAYTITLE:Custom: База данных}}
{{Breadcrumbs|[[Custom]] > База данных}}
{{Breadcrumbs|[[Custom]] > База данных}}
Строка 14: Строка 13:
     {
     {
       "active": true,
       "active": true,
      "id": "myCustomDevice1",
      "name": "My Custom Device",
      "real": false,
       "cloud": true,
       "cloud": true,
       "discovery": true,
       "discovery": true,
Строка 23: Строка 25:
       {
       {
         ...
         ...
       },
       }
      "id": "myCustomDevice1",
      "name": "My Custom Device",
      "real": false
     },
     },
     {
     {
       "active": true,
       "active": true,
      "id": "myCustomDevice2",
      "name": "Other Custom Device",
      "real": true,
       "cloud": true,
       "cloud": true,
       "discovery": true,
       "discovery": true,
Строка 36: Строка 38:
         ...
         ...
       ],
       ],
       "id": "myCustomDevice2",
       "bindings":
       "name": "Other Custom Device",
      {
       "real": true
        ...
      },
       "availabilityTopic": "myCustomDevice/isOnline",
       "availabilityPattern": "{{ online if value == true else offline }}"
     }
     }
   ]
   ]
Строка 48: Строка 53:
=== <code>active</code> ===
=== <code>active</code> ===
Включение/выключение устройства.
Включение/выключение устройства.
=== <code>id</code> ===
Уникальный идентификатор устройства.


=== <code>name</code> ===
=== <code>name</code> ===
Название автоматизации, чтобы было проще отличать автоматизации друг от друга.
Уникальное читаемое имя устройства.


=== <code>debounce</code> ===
=== <code>real</code> ===
Минимальный допустимый интервал между срабатываниями автоматизации в секундах.
Если значение этого поля установлено как <code class="value">false</code>, устройство будет считаться виртуальным и данные из топика <code class="value">homed/td/custom/...</code> будут автоматически дублироваться в топик <code class="value">homed/fd/custom/...</code>, в противном случае сервис будет ожидать данных от реального устройства или другого сервиса.


=== <code>restart</code> ===
=== <code>cloud</code> ===
В случае, когда автоматизация содержит действия [[Automation/Database/Actions#Действие "delay"|задержки]] выполения, автоматизация будет "перезапущена", если значение этого поля установлено как <code class="value">true</code>. В противном случае повторное срабатывание триггеров будет проигнорировано до истечения времени задержки.
Включение/выключение проброса устройств в [https://alice.yandex.ru/smart-home Умный дом Яндкса] при помощи [[Cloud|HOMEd Cloud]].


=== <code>triggers</code> ===
=== <code>discovery</code> ===
Массив [[Automation/Database/Triggers|триггеров]] автоматизации. Триггеры это события, которые вызывают срабатывание автоматизации, такие как изменение состояния устройства или выход какого-то параметра за заданный предел.
Включение/выключение функуии [https://www.home-assistant.io/integrations/mqtt/#mqtt-discovery Home Assistant MQTT Discovery] для устройства.


=== <code>conditions</code> ===
=== <code>exposes</code> ===
Массив [[Automation/Database/Conditions|условий]] автоматизации. Автоматизация сработает только в случае, если заданные условия выполнены. Данное поле не является обязательным.
Массив [[Common/Exposes|способностей]] устройства.


=== <code>actions</code> ===
=== <code>options</code> ===
Массив [[Automation/Database/Actions|действий]] автоматизации. Действия это итоговый результат автоматизации, например, действие может изменить состояние устройства или отправить сообщение в Telegram.
Объект с [[Common/Options|опциями]] устройства.


== Состояния ==
=== <code>bindings</code> ===
Состояния это способ обмена данными между автоматизациями. У каждого состояния есть название. Состояния могут быть установлены или удалены соответсующими [[Automation/Database/Actions#Действие "state"|действиями]] и могут использоваться в [[Automation/Database/Conditions#Условие "state"|условиях]]. В базе данных состояния сохраняются во вложенном объекте <code>"states"</code>:
Объект с [[Custom/Database/Bindings|биндингами]] устройства. Актуально только для устройств с включенным параметром <code>real</code>.
<syntaxhighlight lang="json">
{
  "states":
  {
    "windowIsOpen": true,
    "mySpecialState": "hello",
    "numericData": 24.2,
    ...
  }
}
</syntaxhighlight>


== Примеры ==
=== <code>availabilityTopic</code> ===
<syntaxhighlight lang="json">
MQTT-топик для определения доступности устройства. Если этот параметр отсутствует, устройство всегда будет считаться доступным. Актуально только для устройств с включенным параметром <code>real</code>.
{
  "automations":
  [
    {
      "active": true,
      "name": "управление лампой на столе",
      "triggers":
      [
        {
          "type": "property",
          "endpoint": "zigbee/freePad/1",
          "property": "action",
          "equals": "singleClick"
        }
      ],
      "conditions":
      [
        {
          "type": "property",
          "endpoint": "zigbee/roomLight/2",
          "property": "status",
          "equals": "off"
        }
      ],
      "actions":
      [
        {
          "type": "property",
          "endpoint": "zigbee/tableLight",
          "property": "status",
          "value": "toggle"
        }
      ]
    },


    {
=== <code>availabilityPattern</code> ===
      "active": true,
Шаблон для определения доступности устройства. Шаблон должен возвращать строку <code class="value">"online"</code> в случае, если устройство доступно, иначе устройство будет считаться недоступным. Подробнее о шаблонах можно почитать [[Custom/Database/Bindings#Шаблоны|здесь]]. Актуально только для устройств с включенным параметром <code>real</code>.
      "name": "управление светом в комнате",
      "triggers":
      [
        {
          "type": "property",
          "endpoint": "zigbee/freePad/2",
          "property": "action",
          "equals": "singleClick"
        },
        {
          "type": "telegram",
          "message": "включи свет в комнате"
        }
      ],
      "actions":
      [
        {
          "type": "property",
          "endpoint": "zigbee/roomLight/2",
          "property": "status",
          "value": "on"
        }
      ]
    },


    {
      "active": true,
      "name": "уведомление о похолодании",
      "triggers":
      [
        {
          "type": "property",
          "endpoint": "zigbee/outdoorTemperature",
          "property": "temperature",
          "below": 10
        }
      ],
      "actions":
      [
        {
          "type": "telegram",
          "message": "на улице холодно"
        }
      ]
    }
  ]
}
</syntaxhighlight>


[[Category:Custom]]
[[Category:Custom]]

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

HOMEd > Custom > База данных

Файл базы данных

База данных это файл, в котором хранится описание устройств. По умолчанию это /opt/homed-custom/database.json. Путь к файлу базы данных может быть изменен в конфигурации. Не обязательно редактировать базу данных автоматизаций вручную, намного проще настраивать устройства через веб-интерфейс.

Структура базы данных

База данных HOMEd Сustom это JSON-объект. Общая структура базы данных выглядит так:

{
  "devices":
  [
    {
      "active": true,
      "id": "myCustomDevice1",
      "name": "My Custom Device",
      "real": false,
      "cloud": true,
      "discovery": true,
      "exposes":
      [
        ...
      ],
      "options":
      {
        ...
      }
    },
    {
      "active": true,
      "id": "myCustomDevice2",
      "name": "Other Custom Device",
      "real": true,
      "cloud": true,
      "discovery": true,
      "exposes":
      [
        ...
      ],
      "bindings":
      {
        ...
      },
      "availabilityTopic": "myCustomDevice/isOnline",
      "availabilityPattern": "{{ online if value == true else offline }}"
    }
  ]
}

Параметры устройств

active

Включение/выключение устройства.

id

Уникальный идентификатор устройства.

name

Уникальное читаемое имя устройства.

real

Если значение этого поля установлено как false, устройство будет считаться виртуальным и данные из топика homed/td/custom/... будут автоматически дублироваться в топик homed/fd/custom/..., в противном случае сервис будет ожидать данных от реального устройства или другого сервиса.

cloud

Включение/выключение проброса устройств в Умный дом Яндкса при помощи HOMEd Cloud.

discovery

Включение/выключение функуии Home Assistant MQTT Discovery для устройства.

exposes

Массив способностей устройства.

options

Объект с опциями устройства.

bindings

Объект с биндингами устройства. Актуально только для устройств с включенным параметром real.

availabilityTopic

MQTT-топик для определения доступности устройства. Если этот параметр отсутствует, устройство всегда будет считаться доступным. Актуально только для устройств с включенным параметром real.

availabilityPattern

Шаблон для определения доступности устройства. Шаблон должен возвращать строку "online" в случае, если устройство доступно, иначе устройство будет считаться недоступным. Подробнее о шаблонах можно почитать здесь. Актуально только для устройств с включенным параметром real.