Intel Edison. Работа с облаком Intel IoT Analytics: создание правил и отправка уведомлений

в 15:11, , рубрики: diy или сделай сам, intel, Intel Edison, intel iot analytics platform, IoT, yocto, интернет-вещи, облачные сервисы, Разработка для интернета вещей

Intel IoT Analytics

Облако Intel IoT Analytics позволяет закладывать простую логику на выполнения определенного действия. Создание правил разделяется на два этапа. На первом этапе требуется указать выполняемые действия. На втором этапе указать набор условий, которые должны выполняться для выполнения действия. Например, значение температуры выше 28 C.
Действиями могут быть:

  • отправка уведомления на email;
  • отправка сформированной команды элементу Actuation. Управляющий элемент на конечном устройстве, например включение-выключение реле;
  • выполнение запроса GET HTTP с определенным набором параметрам. Отправка сообщения внешним системам;


Рассмотрим следующий сценарий: при достижение температуры 28 С, требуется:

  • отправить уведомление на email web@devdotnet.org
  • включить вентилятор для снижения температуры, путем включения реле. Необходимо учесть, что достижение температуры в 28 С может быть кратковременным колебанием. Поэтому, для избегания частого включения вентилятора, требуется установить интервал времени в 10 секунд на протяжение которого температура будет выше 28 С. Только в этом случае, вентилятор должен быть включен.
  • при опускания температуры ниже 28 С, вентилятор требуется выключить.

Правила создаются в разделе Rules. Каждое выполнение правило сопровождается формированием оповещения в системе, раздел Alerts.
Возьмем стенд из Intel Edison. Работа с облаком Intel IoT Analytics: регистрация и отправка данных.

Решение состоит из следующих пунктов:

  1. Формирование команд для отправки Actuation — реле
  2. Создание правил отправки уведомлений и включения/выключения реле
  3. Изменение Arduino-кода

1. Формирование команд для отправки Actuation — реле
Требуется создать команды Complex command, для этого перейдем в раздел Control.
Создадим команду на включение реле.
Выберем устройство edison habr, компонент relay1, действие значение 1, транспорт websocket, добавим команду Add action. Нажмем на кнопку Save as complex command и сохраним команду с именем relay1_ON
Intel IoT Analytics
Так же создадим команду на выключения, только выберем, действие значение 0, имя relay1_OFF
В разделе Complex commands отобразятся созданные команды
Intel IoT Analytics

2. Создание правил отправки уведомлений и включения/выключения реле
Перейдем в раздел Rules, добавим правило Add a rule
Заполним поля:
Name: Higth_temp_PowerOnRelay_and_send_to_web@devdotnet.org
Description: при достижение температуры 28 С, отправить уведомление на email web@devdotnet.org и включить реле
Priority: Medium — влияет только на очередность обработки, правило с значением Higth выполнится первым
Notifications type. Далее укажем тип уведомления.
Доступно:

  • отправка email
  • выполнение команды для Actuation
  • выполнение запроса GET HTTP

Для правила можно создавать несколько различных уведомлений/действий.
Выберем Email. В разделе Email notifications выберем из списка web@devdotnet.org.
Добавим второе действие Actuation. Из списка Actuation notifications выберем relay1_ON.
Intel IoT Analytics
Перейдем на следующую страницу, копка Next
На шаге выбора устройства выберем — edison habr

Следующий шаг — создание условий.
Условий может быть несколько. Для нескольких условий задается логическое правило:
Add Conditions

  • At least one condition is satisfield — должно быть выполнено(значение true) хотя бы бы одно условие
  • All condition are satisfield — все условия должны быть выполнены(значение true)

Параметр Enable Automatic Reset — влияет на многократное выполнение условия. Если его не отметить, то плавило один раз выполниться, и перейдет в статус Archive и в дальнейшем будет не активно. Поэтому в нашем случае требуется отметить этот пункт как true.
Требуется добавить два условия. Первое условие, сопоставление значения температуры, выражение: ">=28".

Поле Monitored Measure: temperature1 (Number) — из списка выберем нужный сенсор
Поле Trigger When содержит пункты:

  • Base Condition — базовое сравнение
  • Timenased Condition — сравнение должно выполнять в течение определенного времени (секунды, минусы, часы, недели, месяцы)
  • Statistics Based Condition -на основание статистического среднеквадратического отклонение всех значений в указанном выражении.

Выберем — Timenased Condition
Выражение: ">=28" за последние 10 секунд
Второе, состояние реле должно быть false т.е. выключено. Иначе, постоянно будут отправлять ся команды на включение реле, после каждого измерения температуры выше 28 C.
Поле Monitored Measure: relay1 (Boolean)
Поле Trigger When: Base Condition — базовое сравнение
Условие Eqal «0» — равно 0
Intel IoT Analytics
Сохраним, кнопка Done.

Создадим второе правило
Name: Low_temp_PowerOffRelay_and_send_to_web@devdotnet.org
Actuation notifications: relay1_OFF
Intel IoT Analytics
В результате будет создано два правила

Intel IoT Analytics

3. Изменение Arduino-кода
В предыдущем примере была допущена ошибка в отправки состояния реле. Вне зависимости от отправки команды, состояние реле всегда принимало значение false, оператор:

 iotkit.send("relay1", 0);

Ниже исправленный вариант кода:


if ((component != NULL)) {
    if (strcmp(component->valuestring, "relay1") == 0) {
      if ((command != NULL)) {
        if (strcmp(command->valuestring, "RELAY.v1.0") == 0 && strcmp(value->valuestring, "0") == 0) {
          Serial.println("Relay Off!");
          digitalWrite(9, false);
          //Send state Actiator
          iotkit.send("relay1", 0);
        }
        if (strcmp(command->valuestring, "RELAY.v1.0") == 0 && strcmp(value->valuestring, "1") == 0) {
          Serial.println("Relay on!");
          digitalWrite(9, true);
          //Send state Actiator
          iotkit.send("relay1", 1);
        }
      }
    }
  }

Теперь проведем тест, повысим температуру
График температуры
Intel IoT Analytics
Оповещение
Intel IoT Analytics
Письмо на email
Intel IoT Analytics

Охладим датчик
Intel IoT Analytics
Intel IoT Analytics

На этом создание правил закончено. При ожидание действий, следует учитывать временную задержку (до 1 минуты) от момента совпадения условий.
Как видно из статьи, заложен достаточно гибкий функционал формирования условий, и присутствуют основные действия. Запрос GET HTTP, можно использовать для отправки SMS сообщения через HTTP шлюзы отправки.
Небольшое дополнение. Агент отправки данных в облако автоматически по умолчанию не запускается при включение Intel Edison, поэтому его следует перевести в режим автостарта. Выполнить команду:
# systemctl enable iotkit-agent

Автор: devzona

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js