IoT и ViaLatM. Автоматизация посылки команд на объекты «Интернет вещей»
В данной статье описывается как с помощью языка сценариев, встроенных в сервис VIALATM автоматизировать посылку команд на объекты из сферы «Интернет Вещей». Базовые сведения о языке сценариев давались в предыдущих статьях.
Описание последней версии языка сценариев (добавлены новые команды, операторы, процедуры) будет опубликовано в ближайшее время. Пока можно познакомиться с языком сценариев по ссылке Язык сценариев ViaLatM.
Посылка команд на объекты
В текущей реализации программа языка сценариев выполняется при получении сообщений от объекта (в следующей версии язык сценариев будет допускать вызов программ по более расширенным алгоритмами: по расписанию, через заданные интервалы, при отсутствии сообщений от объекта в течении заданного времени).
В системе есть два оператора посылки команд: безусловный и условный.
Формат безусловного оператора:
COMMAND (UNIT.ZTEMPER_SETTER,12);
С помощью этого оператора на текущий объект (для которого выполняется сценарий), отправляется команда установки атрибута ZTEMPER_SETTER в значение 12.
Формат условного оператора:
COMMANDIF (UNIT.ROOM_TEMPER>20,UNIT.ZTEMPER_HEATER,OFF);
С помощью этого оператора на текущий объект отправляется команда выключения нагревателя (OFF) в том случае, если датчик температуры в комнате (ROOM_TEMPER) более 20 градусов.
Все числовые значения в выше приведенных примерах можно определить в виде констант или предварительно вычисляемых переменных. Объекты должны публиковать на сервис соответствующие атрибуты и быть подписаны на обработку команд (ZTEMPER_SETTER,ZTEMPER_HEATER).
Команды работы с несколькими объектами сервиса
Наиболее интересной возможностью языка сценариев является работа с несколькими объектами.
Допустим к сервису подключено транспортное средство и объект, который осуществляет обогрев дома. В таком случае можно создать отправку команды включения обогрева, когда ваш транспорт приблизился к нему на заданное расстояние. Пример такого скрипта:
CONST HEAT_ON = 1;
CONST HEAT_OFF = 0;
CONST NEAR_HOME = 20000 # 20km
DIST_TO_HOME = DISTANCE(L,UNIT(«IOT_HOME»).L);
COMMANDIF(DIST_TO_HOME<NEAR_HOME,UNIT(«IOT_HOME»).HEATER,HEAT_ON);
Комментарий:
В начале скрипта определяются константы, задающие включение и выключение нагревателя. И константа, определяющая при каком приближении объекта к дому следует посылать команду.
Скрипт выполняется для объекта — транспортное средство, которое должно быть оснащено GPS слежением (автомобильный или персональный трекер) и подключено к сервису. При приходе в сервис сообщений от этого объекта, вычисляется расстояние до дома.
Далее в зависимости от вычисленного расстояния применяется условный оператор посылки команды на объект.
Объекты, которые находятся вне выполняемого сценария задаются функцией UNIT(«OBJECT_ID»). Для трекеров, в качестве OBJECT_ID следует задавать IMEI, для объектов «Интернет Вещей» — корневую тему (HOME) и для этих объектов теме всегда должен предшествовать префикс «IOT_».
Заключение
Помимо работ над упомянутыми выше расширениями языка сценариев, наиболее важной представляется работа над упрощением языка. Создается надстройка в виде работы с макросами, которая позволит использовать язык людям далеким от программирования.
В следующей статье будет рассказано как создавать уведомления по событиям и состояниям объектов из сферы интернет вещей.