IoT в моей жизни. Кейс №1 — Agile-gong | OTUS

Курсы

Программирование
PHP Developer. Basic
-50%
Специализация PHP Developer iOS Developer. Professional Golang Developer. Professional Python Developer. Basic iOS Developer. Basic Архитектура и шаблоны проектирования MS SQL Server Developer Highload Architect Специализация C++ Developer Cloud Solution Architecture Специализация Java-разработчик Android Developer. Professional Программист С Специализация Fullstack developer VR/AR - разработчик Microservice Architecture Software Architect Team Lead Web-разработчик на Python Rust Developer NoSQL C# Developer. Professional Разработчик программных роботов (RPA) на базе UiPath и PIX Kotlin Backend Developer React.js Developer Node.js Developer Flutter Mobile Developer Symfony Framework C# Developer. Basic Unreal Engine Game Developer Groovy Developer
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

IoT в моей жизни. Кейс №1 — Agile-gong

В 2020-м году все мы знаем что такое Интернет Вещей, и для чего он нужен. Но как много из нас знакомы с облачными платформами, которые представляют один из наиболее значимых пластов в IoT? Давайте разбираться.

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

В платформе, которую я обычно использую для своих задач, уже реализовано взаимодействие с устройствами, работающими по таким протоколам, как MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus и некоторыми другими.

Помимо использования представленных протоколов, для устройств, которые не имеют выхода в Интернет, есть возможность написания программных агентов – некоторых посредников между оборудованием и платформой, которые устанавливаются на другом устройстве (например, Raspberry Pi) и соединяются с этим оборудованием.

Допустим, вам требуется обеспечить взаимодействие с устройством, работающим по одному из представленных протоколов. В таком случае будет достаточно совершить три шага:

  • сконфигурировать модель с желаемыми параметрами и командами;
  • создать объект с уникальным идентификатором в платформе;
  • сконфигурировать устройство для подключения к платформе.

Разберем несколько кейсов и посмотрим, как же всё это подключается.

Кейс №1 Agile-gong

Начну с того, что однажды наша команда всерьез задумалась о том, чтобы автоматизировать рабочие процессы в офисе.

Так, в соответствии с Agile-концепцией, в полдень рабочего дня все сотрудники собираются на Daily meeting. Уведомление в Slack о предстоящем собрании в процессе работы легко пропустить, да и отвлекаться на часы не очень удобно… Так родилась идея создать Agile-gong – систему автоматизированного звукового оповещения.

Как реализовано? Железо – это NodeMCU (миниатюрный аналог Arduino со встроенным Wi-Fi-модулем), сервопривод и конденсатор. Каждый будний день в 12 часов нужно обеспечить поворот выходного вала сервопривода с ударным оборудованием на конце на угол, достаточный для того, чтобы гонг прозвенел и уведомил всех о подъеме.

Схема подключения железа довольно простая:

kh8qa8erjm2iearjtbbl_ocxz0a_1-1801-c452d0.png

Код, зашитый на NodeMCU, обеспечивает:

  • установку Wi-Fi-соединения и подключения к платформе по протоколу MQTT;
  • установку начального положения сервопривода в 0 градусов;
  • публикацию сообщений с данными о текущем положении;
  • подписку на команды и поворот сервопривода на угол по команде.
#include "Arduino.h"
#include "EspMQTTClient.h" /* https://github.com/plapointe6/EspMQTTClient */
// Servo library
#include <Servo.h>

// Object Servo with name myservo
Servo myservo;
int pos;

EspMQTTClient client(
  "<wifi-ssid>",
  "<wifi-password>",

  "<MQTT Broker server ip>",
  "<ric-mqtt-client-id>"
  );


void setup() {
  Serial.begin(9600);
  move(0);
}

void onConnectionEstablished() {
  Serial.println("connected");
  client.subscribe("move", [] (const String& payload)  {
    int angle = payload.toInt();
    if (angle != pos) {
    move(angle);
    }
    client.publish("position", payload);
  });
}

void loop() {
  client.loop();
}

void move(const int angle)
{
    myservo.attach(5);
    myservo.write(angle);
    delay(800);
    myservo.detach();
    pos = angle;
}

На стороне платформы разработана модель устройства. В ней описываются параметры, которые можно получать от устройства, и команды, которые можно на него отправлять. В интерпретации MQTT-команды – это сообщения для клиента с определенным топиком и данными, в нашем случае в данных находится необходимый угол поворота.

aoadfoj20jn56wmflbpcsbkxeoa_1-1801-f5879c.png

Затем был создан объект с идентификатором, по которому происходит авторизация на платформе. После подключения отображение выглядит следующим образом:

hmopu69xol_vspvafpfoe12ooew_1-1801-8b783b.png

В командах есть вариант отправки команды поворота на угол 0 и 90 градусов.

sk6tfrj_xrg3c4rvxq5upk_qyle_1-1801-9f2757.png

Теперь необходимо добавить сценарии автоматизации. Создадим автомат, который при наступлении нужного времени будет переходить в состояние поворота на 90 градусов, затем в цикле на конфигурируемое количество повторов совершит необходимое количество ударов и вернется в исходное состояние ожидания 12 часов.

Каждый сценарий автоматизации – это некая блок-схема, задающая логику поведения объекта. Прописав подобный сценарий, можно учитывать все изменения, которые происходят с устройством, и на основании того, какие именно изменения произошли, устройство сможет выполнять соответствующие действия автоматически, без отправки команды пользователем.

Полученный автомат можно использовать не только для конкретно одного устройства.

Например, можно сделать точно такую же систему с гонгом и установить ее еще в одном кабинете вашего офиса. Тогда у вас будет одна и та же модель, два разных объекта и один автомат, запущенный на двух объектах.

_q8p5mhg1pepi4xq5efrmc54ewm_1-1801-4e27c3.png

На этом пока всё, другие полезные решения вы увидите в следующих заметках. Следите за новостями!

Все статьи на эту тему: - "IoT в моей жизни. Кейс №1 — Agile-gong"; - "IoT в моей жизни. Кейс №2 — Датчик углекислого газа"; - "IoT в моей жизни. Кейс №3 — СКУД"; - "IoT в моей жизни. Кейс №4 — Умный огород".

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться