Skip to content

Latest commit

 

History

History
61 lines (41 loc) · 4.17 KB

File metadata and controls

61 lines (41 loc) · 4.17 KB

Сценарий управления устройствами devices-control

Позволяет управлять светом соединив один или несколько выключателей с одним или несколькими световыми приборами Удобен для реализации разных случаев:

  • Мастер выключателя - один выключатель выключает весь свет в помешениях
  • Проходной выключатель - несколько выключателей управляют одним световым прибором
  • Управление шторами

Конфигурация выглядит следующим образом

alt text

Каждому сценарию создается виртуальное устройство

virtual-device

Добавление новых типов поведения

Поведение это событие/действие просто названное одним словом.

Для добавления новых типов отслеживаемых событий или действий над контролом - нужно

  1. Изменить WEBUI

Добавить в файл схемы wb-scenarios.schema.json новый тип события/действия в соответствующий выпадающий список

  • Для событий: inControls.items.properties.behaviorType
  • Для действий: outControls.items.properties.behaviorType
  1. Реализовать логику обработки

Описания событий и действий находятся в отдельных файл с таблицами:

  • Для событий: table-handling-events.mod.js
  • Для действий: table-handling-actions.mod.js

Процесс добавления выглядит следующим образом:

  • Добавить в таблицу событие или действие с тем же названием enum которое выбрали в схеме
  • Описать функцию хендлер которая
    • Событие - вернет тру если событие произошло
    • Действие - вернет новое значение параметра в зависимости от логики действия

Таблицы событий и действий

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

  • ключ, который соответствует типу события/действия и включает параметры:
  • @param {Array} reqCtrlTypes - Required Control Types Разрешенные типы контрол топиков MQTT для данного события/действия
  • @param {function} handler - Функция обработчика события или действия При изменении состояния любого из входных топиков, согласно настроенным событиям, все выходные топики изменяют своё состояние в соответствии с настроенным действием.

Хендлер события должен содержать логику обработки события и отвечать на вопрос - произошел ли данный тип события Возвращать должна для ясности переменную с именем isEventTriggered

Хендлер действия должен содержать логику вычисления нового значения контрола и отвечать на вопрос - какое новое значение контрола нужно записать в соответствии с данным типом действия Возвращать должна для ясности переменную с именем newControlValue