IoT в моей жизни. Кейс №1 — Agile-gong | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+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

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

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

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

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

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!