В данной статье описывается как с помощью языка сценариев, встроенных в сервис 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_».

Заключение


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

В следующей статье будет рассказано как создавать уведомления по событиям и состояниям объектов из сферы интернет вещей.
Поделиться с друзьями
-->

Комментарии (3)


  1. boramod
    12.07.2016 15:48

    Вопрос о подключаемых к сервису объектах.
    1. Как происходит авторизация и аутентификация подключаемых к сервису объектов управления?
    2. Как происходит авторизация и аутентификация сервиса, выполняющего скрипты на объекте управления?
    3. На сколько я понял, для связи «сервис — объект управления» используется открытый протокол, без какого-либо шифрования?
    4. Что будет в случае, если злоумышленники взломают ваш сервис, и выполнят скрипты на подключенных пользовательских устройствах обогрева:
    CONST HEATER_TEMP = 200;
    CONST HEATER_IGNORE_EMERGENCY_SWITCH_OFF = 1;
    CONST HEATER_ON = 1;

    5. Кто будет отвечать за устроенный гриль в масштабе квартиры в случае взлома вашего сервиса?


    1. Euler2012
      12.07.2016 17:07
      +1

      1. Как происходит авторизация и аутентификация…
      Владелец учетной записи задает пароль (ид пользователя формируется автоматически), под которым объекты присылают сообщения и с которым отправляются команды.

      2. Как происходит авторизация и аутентификация сервиса…
      При приходе сообщений они проходят авторизацию и аутентификацию. Скрипт выполняется от имени владельца учетной записи.

      3. На сколько я понял, для связи «сервис — объект управления»…
      В принципе, сервис и сайт работают по протоколу HTTPS (через некоторое время поддержка работы по HTTP будет полностью прекращена). Для протоколов MQTT и CoAP возможна работа по защищенному протоколу. В ближайшее время будет открыт доступ по протоколу CoAP и мы планировали опубликовать номера портов для SSL (после Вашего комментария возможно мы будем сообщать эти данные непосредственно клиентам, а не в общедоступной публикации)

      4. Что будет в случае, если злоумышленники взломают ваш сервис…
      Опять же спасибо Вам, поднятый вопрос привел к решению внедрения в сервис доп. подтверждений на принятие скрипта (при их создании/модификации). Полностью это не спасет (злоумышленник может сделать это рядом с вами, с помощью паяльника), но риск уменьшит.

      5. Кто будет отвечать за устроенный гриль в масштабе квартиры в случае взлома вашего сервиса?
      Развернутый юридически грамотный ответ я дать не готов. Вопрос важный и требует дополнительной проработки. Планируется подготовка коробочного решения для полной установки сервиса на площадках клиентов (срок назвать не готов: не раньше чем в сентябре, но в этом году точно). Клиент при этом сам может обеспечить шифрованные туннели и каналы передачи данных, провести полные тесты. Но это полностью нас не спасает. Если «дыра» в нашем софте, то виноваты мы. Все эти проблемы весьма серьезно стоят в тематике IoT. Медицинские датчики и приборы тоже в этой теме, а здесь уже более фатальные чем гриль случаи могут возникнуть.

      Еще раз спасибо Вам за комментарий. Он действительно очень ВАЖНЫЙ!!!


      1. boramod
        12.07.2016 18:59

        Большое спасибо за развернутый ответ!