Методы скрипта для выполнения системных действий
Информирование
Информирование — отправка сообщений через различные каналы — email, sms, telegram, …
this.info(канал информирования, кому, сообщение)
Write
Пример:
this.info(‘teleram’, ‘admin’, ‘Что-то пошло не так!’)
this.info(’email’, ‘electro’, ‘Показания счетчика ‘+Meter1.value)
Запись в журнал
this.log('Запись в пользовательский журнал')
Write
this.syslog('Запись в системный журнал ')
Write
Запуск команды плагина
this.pluginCommand({unit:'megad1', command:{...}})
Write
Структура ‘command’ определяется плагином, которому посылается команда
Групповые операции с устройствами
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’)
Получение времени
Получение времени, определяемого name (закат, восход, граница следующего часа)
this.getSysTime(name, date)
Write
name — ‘sunrise’ || ‘sunset’ || ‘hourly’
date — объект Date или строка ( ‘today’ || ‘tomorrow’) или дата в формате timestamp
(если не определено, то ‘today’)
Пример:
his.getSysTime(‘sunset’) — вернет время заката сегодня
this.getSysTime(‘sunrise’,’tomorrow’) — вернет время восхода завтра
this.getSysTime(‘sunrise’, new Date(2018,11,31)) — вернет время восхода 31 декабря 2018 года
Глобальные переменные
В любом сценарии доступен объект 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’))
Команды операционной системы
Выполнение команд операционной системы на сервере
this.execOS(команда ОС);
Write
Пример:
this.execOS(`aplay /home/sound/ding.wav`);
Выдать звуковое сообщение командой aplay
Важно!!! Команда this.execOS потенциально опасна. Не рекомендуем выполнять ее без особой необходимости.
Работа с базой данных
Чтение из БД
this.dbread();
Read
script({
start() {
this.dbread({dbtable:'records_200821'}, 'onRead');
},
onRead(result) {
// Эта функция получит массив данных за весь день:
// result = [{"id":317,"ts":1597975711568,"dn":"STEMP1","val":"10.2"}, ...]
this.log('RESULT length='+result.length);
}
});
// Получить все данные за день по трем датчикам
this.dbread({dbtable:'records_200821', dn:'STEMP1,SHUMIDITY2,POWER42'}, 'onRead');
// также за период с 3:00 до 8:30
const start = new Date(2020, 7, 21, 3).getTime();
const end = new Date(2020, 7, 21, 8, 30).getTime();
this.dbread({dbtable:'records_200821', dn:'STEMP1,SHUMIDITY2,POWER42', start, end }, 'onRead');
// С начала дня до 8:30
this.dbread({dbtable:'records_200821', dn:'STEMP1,SHUMIDITY2', end }, 'onRead');
// С 3:00 до конца дня
this.dbread({dbtable:'records_200821', dn:'STEMP1,SHUMIDITY2', start}, 'onRead');