Сценарии — новая версия API сценариев (version 4)
Начиная с версии v4.4.5 в системе intraHouse изменена система команд для сценариев.
При этом предыдущая система команд остается работоспособной. Все старые сценарии продолжат работать.
В новых сценариях рекомендуется использовать новую систему команд.

Примечание:
Для работы сценария с новой системой команд необходимо в заголовке сценария добавить строку: * @version 4 

/**
* @name Свет по датчику движения 
* @desc Включить свет по датчику движению
* @version 4
*/

Синтаксис команд в системе intraHouse

Для устройств

1.1.1 Динамические свойства устройства (Read):

1.1.2 Статические свойства устройства (Read):

1.2.1 Состояние устройства (Read):

1.2.2 Изменение свойств устройства (Read):

1.2.3 Параметры устройства (Read):

1.3.1 Управление устройством с отключением Auto (Write):

1.3.2 Управление устройством без отключения Auto (Write):

1.3.3 Изменение параметров (Write):

1.3.4 Сохранение/восстановление параметров (Read/Write):

Для сценариев

Системные

2.1 Свойства и методы сценариев (Read/Write):

2.2 Свойства и методы для работы с таймерами (Read/Write):

2.3 Методы слушателей событий (Write):

3.1 Информирование (Write):

3.2 Запись в журнал (Write):

3.3 Запуск команды плагина (Write):

3.4 Групповые операции с устройствами (Write):

3.5 Дата, время (Read):

3.6 Глобальные переменные (Read/Write):

3.7 Команды операционной системы (Write):

1. Свойства и методы устройств

1.1 Свойства устройств

1.1.1 Динамические свойства устройств

x.value

Number || String

Read

Текущее значение

Назначение:

Для всех устройств

Примеры:

temp.value,
dimmer.value,
lamp.value,
motion.value

x.state

Number

Read

Номер состояния устройства

Назначение:

Для всех устройств

Примеры:

ups.state

x.setpoint

Number

Read

Уставка

Назначение:

Для аналоговых сенсоров и актуаторов

Пример:

if (temp.value > temp.setpoint)

x.error

Number || String

Read

Ошибка

Назначение:

Для всех устройств

Может быть установлена
— плагином,
— системой (если задан диапазон допустимых значений)
— сценарием

x.auto

Boolean

Read

флаг AUTO

Назначение:

Только для актуаторов

x.blk

Boolean

Read

флаг блокировки датчика

Назначение:

Только для датчиков

1.1.2 Статические свойства устройств, задаваемые через Project Manager (PM)

x.id

String

Read

Идентификатор устройства

x.name

String

Read

Название устройства

x.placeName

String

Read

Название уровня

x.zoneName

String

Read

Название зоны

x.fullName

String

Read

Полное название устройства, включая при наличии уровень и зону.

x.stateName

String

Read

Название состояния устройства.

1.2 Методы устройств

1.2.1 Методы определения текущего состояния устройства.

x.isOn()

Boolean

Read

Включено?

Пример:

if (Vent1.isOn()) Lamp1.on()
Включить светильник Lamp1 если включен вентилятор Vent1

x.isOff()

Boolean

Read

Выключено?

x.isError()

Boolean

Read

Ошибка?

x.isNoError()

Boolean

Read

Нет ошибки?

1.2.2 Методы отслеживания изменений свойств

x.isChanged()

Boolean

Read

True, если с момента последнего вызова сценария основное значение (value) изменилось

x.isChanged(имя свойства)

Boolean

Read

True, если с момента последнего вызова сценария значение свойства изменилось

1.2.3 Параметры любого устройства могут быть получены при использовании функции:

x.getParam(имя свойства)

Number || String || Boolean

Read

Это могут быть статические и динамические свойства, а также свойства, добавленные сценарием или плагином
Для статических свойств список шире чем 1.1.2, т к включает свойства, доступные в таблице устройств PM

Примеры:

temp.getParam(‘type’),
temp.getParam(‘name’),
temp.getParam(‘t1’)

1.3 Управление устройствами

1.3.1 Методы управление устройством с отключением Auto.

x.on()

Write

Включить устройство x

Пример:

Lamp1.on()
Включить светильник Lamp1

x.off()

Write

Выключить устройство x

Пример:

Vent2.off()
Выключить вентилятор Vent2

x.toggle()

Write

Переключить устройство x

Пример:

Lamp2.toggle()
Переключить светильник Lamp2.
Если светильник был в состоянии «включено», он перейдет в состояние «выключено»

x.setValue()

Number

Write

Установить значение  устройству x

Пример:

Dimm1.setValue(40)
Установить яркость светильника Dimm1 в значение 40

1.3.2 Управление устройством без отключения Auto.
Для актуаторов, имеющих автоматический режим - действия с сохранением параметра Auto:

x.turnOnSaveAuto()

Write

Включить устройство x, сохранить параметр Auto

Пример:

Lamp1.turnOnSaveAuto()
Включить светильник Lamp1, параметр Auto не отключать

x.turnOffSaveAuto()

Write

Выключить устройство x, сохранить параметр Auto

Пример:

Lamp1.turnOffSaveAuto()
Выключить светильник Lamp1, параметр Auto не отключать

x.toggleSaveAuto()

Write

Переключить устройство x, сохранить параметр Auto

Пример:

Lamp1.toggleSaveAuto()
Переключить светильник Lamp1, параметр Auto не отключать

1.3.3 Методы изменения параметров и настроек

x.setSetpoint()

Number

Write

Задать значение уставки

Пример:

Temp1.setSetpoint(20)
Задать значение уставки — 20

x.setAuto()

Boolean

Write

Установить параметр Auto

Примеры:

Lamp1.setAuto(true)
Перевести светильник Lamp1 в автоматический режим

Lamp1.setAuto(false)
Отключить автоматический режим у светильника Lamp1

x.setBlk()

Boolean

Write

Установить/Снять блокировку датчика

Примеры:

SensorW1.setBlk(true)
Заблокировать датчик протечки SensorW1

SensorW1.setBlk(false)
Разблокировать датчик протечки SensorW1

x.setParam("имя параметра", значение)

Write

Для работы с дополнительными параметрами устройства

В сценариях любому устройству можно задать дополнительные параметры, которые можно настраивать в пользовательском интерфейсе в окне свойств устройства. Для работы с этими параметрами из сценария можно использовать функцию x.setParam

Пример:

Lamp1.setParam(«TimeWithoutMotion»,15)
Установить время работы светильника Lamp1 при отсутствии движения = 15 сек.

1.3.4 Методы сохранения и восстановления параметров

x.save(имя параметра)

String

Write

Сохранить параметр

x.restore(имя параметра)

String

Read

Восстановить параметр

Пример:

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

if (guard.isChanged()) {
     switch (guard.value) {
     case 1: vent.save(‘auto’); break;
     case 0: vent.restore(‘auto’); break;
     }
}

2. Свойства и методы скрипта (сценария)

2.1 Свойства и методы связанные с работой сценария

this.exit()

Write

Завершение сценария

this.__laststart

Timestamp

Read

Время последнего запуска данного сценария

this.__qstarts

Number

Read

Общее количество запусков сценария после перезагрузки сервера

Более подробно:  О сценариях

2.2 Свойства и методы для работы с таймерами

2.2.1 Состояния таймеров

this.timer

Object

Read

Состояние таймера

После создания хотя бы одного таймера у скрипта появляется свойство — объект this.timer, которое будет содержать имена таймеров и их состояния:
‘off’ — сброшен
‘on’ — запущен .
‘done’- закончил

Состояния таймеров можно использовать в условных выражениях

Пример:

if (this.timer.T1 == ‘on’)

2.2.2 Объявление и запуск таймера:

this.startTimer(<имя таймера>, <время сек>, 'строка-имя функции')

Write

Пример:

this.startTimer(‘T1’, 5.5, ‘turnAllOff’)

2.2.3 Останов (сброс) таймера

this.stopTimer(<имя таймера>)

Write

Пример:

this.stopTimer(‘T1’)

2.2.4 Объявление без запуска. Таймер остается в состоянии "off".

this.addTimer(<имя таймера>)

Write

Используется, если таймер проверяется в условном выражении до выполнения команды startTimer

2.3 Слушатели событий

2.3.1 Зарегистрировать слушателя

this.addListener(<устройство>, <строка-имя функции>)

Write

2.3.2 Удалить слушателя

this.removeListener(<устройство>, <строка-имя функции>)

Write

Используется редко, так как при завершении сценария таймеры и сценарии удаляются автоматический.

Более подробно: О сценариях

3. Методы скрипта для выполнения системных действий

3.1 Информирование

Информирование - отправка сообщений через различные каналы - email, sms, telegram, ...

this.info(канал информирования, кому, сообщение)

Write

Примеры:

this.info(‘teleram’, ‘admin’, ‘Что-то пошло не так!’)
this.info(’email’, ‘electro’, ‘Показания счетчика ‘+Meter1.value)

3.2 Запись в журнал

this.log('Запись в пользовательский журнал')

Write

this.syslog('Запись в системный журнал ')

Write

3.3 Запуск команды плагина

this.pluginCommand({unit:'megad1', command:{...}})

Write

Структура ‘command’ определяется плагином, которому посылается команда

3.4 Групповые операции с устройствами

this.doAll(filter, action)

Write

Примеры:

this.doAll({place:1, subs:1}, ‘on’)
this.doAll({place:1, subs:1}, ‘setAuto’)
this.doAll({place:1, subs:1, prop:’auto’}, ‘save’)
this.doAll({place:1, subs:1, prop:’auto’}, ‘restore’)

3.5 Получение времени, определяемого name (закат, восход, граница следующего часа)

this.getSysTime(name, date)

Timestamp

Read

name — ‘sunrise’ || ‘sunset’ || ‘hourly’
date — объект Date  или строка  ( ‘today’ || ‘tomorrow’) или дата в формате timestamp
(если не определено, то ‘today’)

Примеры:

this.getSysTime(‘sunset’) — вернет время заката сегодня
this.getSysTime(‘sunrise’,’tomorrow’) — вернет время восхода завтра
this.getSysTime(‘sunrise’, new Date(2018,11,31)) — вернет время восхода 31 декабря 2018 года

3.6 Глобальные переменные

В любом сценарии доступен объект global:

global.set('name',value)

Write

global.get('name')

Read

global.remove('name')

Write

Пример:

global.set(‘Armed’, true); // Поставили на охрану

В другом сценарии:
if (global.get(‘Armed’)) {.. }

или проверка при запуске сценария:
startOnChange(motion, global.get(‘Armed’))

3.7 Команды операционной системы

Выполнение команд операционной системы на сервере

this.execOS(команда ОС);

Write

Примеры:

this.execOS(`aplay /home/sound/ding.wav`);
Выдать звуковое сообщение командой aplay

Важно!!! Команда this.execOS потенциально опасна. Не рекомендуем выполнять ее без особой необходимости.

Закрыть меню