Мультисценарий - один сценарий для нескольких групп устройств

Рассмотрим ситуацию, когда у вас в доме около десятка датчиков задымления. 

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

Код этого сценария показан ниже:

Таким образом мы сделали сценарий для группы конкретных устройств: SFIRE_1_1, SOCKET1 и VENT1

Что делать, когда таких групп много? Можно сделать отдельный сценарии для каждой группы. Будем иметь кучу однотипных сценариев. В случае необходимости внести изменения в код, придется это сделать во всех сценариях.

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

Немного изменим код сценария: 

/** 
* @name Smoke  
* @desc Send message when smoke  
* @version 4 
*/

const d_smoke = Device("SensorD","Smoke Detector");
const a_socket = Device("ActorD","Socket");
const a_vent = Device("ActorD","Fan");

startOnChange([d_smoke]);

script({
  start() { 
    if (d_smoke.isOn()) {
      a_socket.off();
      a_vent.on();
      this.info("email","OWNER",`Attention! Smoke! \n ${d_smoke.placeName}/${d_smoke.zoneName}`);
    }
  }
})

В чем отличие? 
Мы заменили конкретные устройства переменными и классами устройств.
Вместо SFIRE_1_1 поставили переменную d_smoke.
Вместо Device(«SFIRE_1_1«) написали Device(«SensorD«,»Датчик дыма»).
Аналогично и для других устройств (SOCKET1, VENT1)

Кроме этого в строку передачи сообщения опционально можно вписать наименования уровня и зоны: 
this.info(«email»,»OWNER»,`Attention! Smoke! \n ${d_smoke.placeName} ${d_smoke.zoneName}`);

Мультисценарий подготовили. Теперь его можно привязать к группам устройств:

Выбираем пункт «Запустить для устройств». Кнопкой «+» добавляем группу устройств для нашего сценария и заполняем поля, которые были определены в коде сценария: Smoke DetectorSocket и Fan.
Аналогично добавляем другие группы устройств.

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

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

Закрыть меню