Методы скрипта для выполнения системных действий
Информирование
Информирование — отправка сообщений через различные каналы — 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');