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

Материал из HOMEd Wiki
мНет описания правки
Метка: отменено
мНет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
{{DISPLAYTITLE:Automation: База данных}}
{{DISPLAYTITLE:Automation: База данных}}
{{Breadcrumbs|[[Automation]] > База данных}}
{{Breadcrumbs|[[Automation]] > База данных}}


== Файл базы данных ==
== Файл базы данных ==
База данных это файл, в котором хранятся автоматизации, по умолчанию это <code>/opt/homed-automation/database.json</code>. Путь к файлу базы данных может быть изменен в [[Automation/Configuration|конфигурации]]. Не обязательно редактировать базу данных автоматизаций вручную, намного проще настраивать автоматизации через [[Web|веб-интерфейс]].
База данных это файл, в котором хранится описание автоматизаций. По умолчанию это <code>/opt/homed-automation/database.json</code>. Путь к файлу базы данных может быть изменен в [[Automation/Configuration|конфигурации]]. Не обязательно редактировать базу данных автоматизаций вручную, намного проще настраивать автоматизации через [[Web|веб-интерфейс]].


== Элементы автоматизаций ==
== Элементы автоматизаций ==
Строка 15: Строка 14:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
   "devices": [
   "automations":
  [
    {
      "active": true,
      "name": "my automation 1",
      "triggers":
      [
        ...
      ],
      "conditions":
      [
        ...
      ],
      "actions":
      [
        ...
      ]
    },
     {
     {
       "active": true,
       "active": true,
       "cloud": false,
       "name": "my automation 2",
       "discovery": false,
      "debounce": 10,
       "exposes": [
       "restart": true,
         "temperature", "humidity"
       "triggers":
      [
         ...
       ],
       ],
       "options":
       "actions":
       {
       [
         "temperature": {"unit": "F"}
         ...
      },
       ]
       "id": "ds18b20",
      "name": "DS18B20",
      "real": false
     }
     }
   ]
   ],
  "states":
  {
    ...
  }
}
}
</syntaxhighlight>
</syntaxhighlight>


== Параметры устройств ==
== Параметры автоматизаций ==


=== <code>active</code> ===
=== <code>active</code> ===

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

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

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

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

Элементы автоматизаций

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

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

{
  "automations":
  [
    {
      "active": true,
      "name": "my automation 1",
      "triggers":
      [
        ...
      ],
      "conditions":
      [
        ...
      ],
      "actions":
      [
        ...
      ]
    },
    {
      "active": true,
      "name": "my automation 2",
      "debounce": 10,
      "restart": true,
      "triggers":
      [
        ...
      ],
      "actions":
      [
        ...
      ]
    }
  ],
  "states":
  {
    ...
  }
}

Параметры автоматизаций

active

Включение/выключение автоматизации.

name

Название автоматизации, чтобы было проще отличать автоматизации друг от друга.

debounce

Минимальный допустимый интервал между срабатываниями автоматизации в секундах.

restart

В случае, когда автоматизация содержит действия задержки выполения, автоматизация будет "перезапущена", если значение этого поля установлено как true. В противном случае повторное срабатывание триггеров будет проигнорировано до истечения времени задержки.

triggers

Массив триггеров автоматизации. Триггеры это события, которые вызывают срабатывание автоматизации, такие как изменение состояния устройства или выход какого-то параметра за заданный предел.

conditions

Массив условий автоматизации. Автоматизация сработает только в случае, если заданные условия выполнены. Данное поле не является обязательным.

actions

Массив действий автоматизации. Действия это итоговый результат автоматизации, например, действие может изменить состояние устройства или отправить сообщение в Telegram.

Состояния

Состояния это способ обмена данными между автоматизациями. У каждого состояния есть название. Состояния могут быть установлены или удалены соответсующими действиями и могут использоваться в условиях. В базе данных состояния сохраняются во вложенном объекте "states":

{
  "states":
  {
    "windowIsOpen": true,
    "mySpecialState": "hello",
    "numericData": 24.2,
    ...
  }
}

Примеры

{
  "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"
        }
      ]
    },

    {
      "active": true,
      "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": "на улице холодно"
        }
      ]
    }
  ]
}