0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В 2020-м году все мы знаем что такое Интернет Вещей, и для чего он нужен. Но как много из нас знакомы с<strong>облачными платформами</strong>, которые представляют один из наиболее значимых пластов в IoT? Давайте разбираться.</p>
1
<p>В 2020-м году все мы знаем что такое Интернет Вещей, и для чего он нужен. Но как много из нас знакомы с<strong>облачными платформами</strong>, которые представляют один из наиболее значимых пластов в IoT? Давайте разбираться.</p>
2
<p>Не секрет, что разношерстность протоколов существенно усложняет процессы подключения умных устройств, их конфигурирования и обработки данных. Подобные проблемы решаются благодаря облачным платформам Интернета Вещей. Сегодня на примере одной из российских платформ Интернета вещей я покажу, как легко подключить устройства с разными протоколами, а также использовать полученную информацию для построения процессов автоматизации.</p>
2
<p>Не секрет, что разношерстность протоколов существенно усложняет процессы подключения умных устройств, их конфигурирования и обработки данных. Подобные проблемы решаются благодаря облачным платформам Интернета Вещей. Сегодня на примере одной из российских платформ Интернета вещей я покажу, как легко подключить устройства с разными протоколами, а также использовать полученную информацию для построения процессов автоматизации.</p>
3
<p>В платформе, которую я обычно использую для своих задач, уже реализовано взаимодействие с устройствами, работающими по таким протоколам, как MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus и некоторыми другими.</p>
3
<p>В платформе, которую я обычно использую для своих задач, уже реализовано взаимодействие с устройствами, работающими по таким протоколам, как MQTT, Wialon Combine, Wialon IPS, Galileosky, Modbus и некоторыми другими.</p>
4
<p>Помимо использования представленных протоколов, для устройств, которые не имеют выхода в Интернет, есть возможность написания программных агентов - некоторых посредников между оборудованием и платформой, которые устанавливаются на другом устройстве (например, Raspberry Pi) и соединяются с этим оборудованием.</p>
4
<p>Помимо использования представленных протоколов, для устройств, которые не имеют выхода в Интернет, есть возможность написания программных агентов - некоторых посредников между оборудованием и платформой, которые устанавливаются на другом устройстве (например, Raspberry Pi) и соединяются с этим оборудованием.</p>
5
<p>Допустим, вам требуется обеспечить взаимодействие с устройством, работающим по одному из представленных протоколов. В таком случае будет достаточно совершить три шага:</p>
5
<p>Допустим, вам требуется обеспечить взаимодействие с устройством, работающим по одному из представленных протоколов. В таком случае будет достаточно совершить три шага:</p>
6
<ul><li>сконфигурировать модель с желаемыми параметрами и командами;</li>
6
<ul><li>сконфигурировать модель с желаемыми параметрами и командами;</li>
7
<li>создать объект с уникальным идентификатором в платформе;</li>
7
<li>создать объект с уникальным идентификатором в платформе;</li>
8
<li>сконфигурировать устройство для подключения к платформе.</li>
8
<li>сконфигурировать устройство для подключения к платформе.</li>
9
</ul><p>Разберем несколько кейсов и посмотрим, как же всё это подключается.</p>
9
</ul><p>Разберем несколько кейсов и посмотрим, как же всё это подключается.</p>
10
<h2>Кейс №1 Agile-gong</h2>
10
<h2>Кейс №1 Agile-gong</h2>
11
<p>Начну с того, что однажды наша команда всерьез задумалась о том, чтобы<strong>автоматизировать рабочие процессы</strong>в офисе.</p>
11
<p>Начну с того, что однажды наша команда всерьез задумалась о том, чтобы<strong>автоматизировать рабочие процессы</strong>в офисе.</p>
12
<p>Так, в соответствии с Agile-концепцией, в полдень рабочего дня все сотрудники собираются на Daily meeting. Уведомление в Slack о предстоящем собрании в процессе работы легко пропустить, да и отвлекаться на часы не очень удобно… Так родилась идея создать<strong>Agile-gong - систему автоматизированного звукового оповещения</strong>.</p>
12
<p>Так, в соответствии с Agile-концепцией, в полдень рабочего дня все сотрудники собираются на Daily meeting. Уведомление в Slack о предстоящем собрании в процессе работы легко пропустить, да и отвлекаться на часы не очень удобно… Так родилась идея создать<strong>Agile-gong - систему автоматизированного звукового оповещения</strong>.</p>
13
<p>Как реализовано? Железо - это NodeMCU (миниатюрный аналог Arduino со встроенным Wi-Fi-модулем), сервопривод и конденсатор. Каждый будний день в 12 часов нужно обеспечить поворот выходного вала сервопривода с ударным оборудованием на конце на угол, достаточный для того, чтобы гонг прозвенел и уведомил всех о подъеме.</p>
13
<p>Как реализовано? Железо - это NodeMCU (миниатюрный аналог Arduino со встроенным Wi-Fi-модулем), сервопривод и конденсатор. Каждый будний день в 12 часов нужно обеспечить поворот выходного вала сервопривода с ударным оборудованием на конце на угол, достаточный для того, чтобы гонг прозвенел и уведомил всех о подъеме.</p>
14
<p>Схема подключения железа довольно простая:</p>
14
<p>Схема подключения железа довольно простая:</p>
15
<p>Код, зашитый на NodeMCU, обеспечивает:</p>
15
<p>Код, зашитый на NodeMCU, обеспечивает:</p>
16
<ul><li>установку Wi-Fi-соединения и подключения к платформе по протоколу MQTT;</li>
16
<ul><li>установку Wi-Fi-соединения и подключения к платформе по протоколу MQTT;</li>
17
<li>установку начального положения сервопривода в 0 градусов;</li>
17
<li>установку начального положения сервопривода в 0 градусов;</li>
18
<li>публикацию сообщений с данными о текущем положении;</li>
18
<li>публикацию сообщений с данными о текущем положении;</li>
19
<li>подписку на команды и поворот сервопривода на угол по команде.</li>
19
<li>подписку на команды и поворот сервопривода на угол по команде.</li>
20
</ul>#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; }<p>На стороне платформы разработана модель устройства. В ней описываются параметры, которые можно получать от устройства, и команды, которые можно на него отправлять. В интерпретации MQTT-команды - это сообщения для клиента с определенным топиком и данными, в нашем случае в данных находится необходимый угол поворота.</p>
20
</ul>#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; }<p>На стороне платформы разработана модель устройства. В ней описываются параметры, которые можно получать от устройства, и команды, которые можно на него отправлять. В интерпретации MQTT-команды - это сообщения для клиента с определенным топиком и данными, в нашем случае в данных находится необходимый угол поворота.</p>
21
<p>Затем был создан объект с идентификатором, по которому происходит авторизация на платформе. После подключения отображение выглядит следующим образом:</p>
21
<p>Затем был создан объект с идентификатором, по которому происходит авторизация на платформе. После подключения отображение выглядит следующим образом:</p>
22
<p>В командах есть вариант отправки команды поворота на угол 0 и 90 градусов.</p>
22
<p>В командах есть вариант отправки команды поворота на угол 0 и 90 градусов.</p>
23
<p>Теперь необходимо добавить сценарии автоматизации. Создадим автомат, который при наступлении нужного времени будет переходить в состояние поворота на 90 градусов, затем в цикле на конфигурируемое количество повторов совершит необходимое количество ударов и вернется в исходное состояние ожидания 12 часов.</p>
23
<p>Теперь необходимо добавить сценарии автоматизации. Создадим автомат, который при наступлении нужного времени будет переходить в состояние поворота на 90 градусов, затем в цикле на конфигурируемое количество повторов совершит необходимое количество ударов и вернется в исходное состояние ожидания 12 часов.</p>
24
<p>Каждый сценарий автоматизации - это некая блок-схема, задающая логику поведения объекта. Прописав подобный сценарий, можно учитывать все изменения, которые происходят с устройством, и на основании того, какие именно изменения произошли, устройство сможет выполнять соответствующие действия автоматически, без отправки команды пользователем.</p>
24
<p>Каждый сценарий автоматизации - это некая блок-схема, задающая логику поведения объекта. Прописав подобный сценарий, можно учитывать все изменения, которые происходят с устройством, и на основании того, какие именно изменения произошли, устройство сможет выполнять соответствующие действия автоматически, без отправки команды пользователем.</p>
25
<p>Полученный автомат можно использовать не только для конкретно одного устройства.</p>
25
<p>Полученный автомат можно использовать не только для конкретно одного устройства.</p>
26
<p>Например, можно сделать точно такую же систему с гонгом и установить ее еще в одном кабинете вашего офиса. Тогда у вас будет одна и та же модель, два разных объекта и один автомат, запущенный на двух объектах.</p>
26
<p>Например, можно сделать точно такую же систему с гонгом и установить ее еще в одном кабинете вашего офиса. Тогда у вас будет одна и та же модель, два разных объекта и один автомат, запущенный на двух объектах.</p>
27
<p><em>На этом пока всё, другие полезные решения вы увидите в следующих заметках. Следите за новостями!</em></p>
27
<p><em>На этом пока всё, другие полезные решения вы увидите в следующих заметках. Следите за новостями!</em></p>
28
<p>Все статьи на эту тему: - "<a>IoT в моей жизни. Кейс №1 - Agile-gong</a>"; - "<a>IoT в моей жизни. Кейс №2 - Датчик углекислого газа</a>"; - "<a>IoT в моей жизни. Кейс №3 - СКУД</a>"; - "<a>IoT в моей жизни. Кейс №4 - Умный огород</a>".</p>
28
<p>Все статьи на эту тему: - "<a>IoT в моей жизни. Кейс №1 - Agile-gong</a>"; - "<a>IoT в моей жизни. Кейс №2 - Датчик углекислого газа</a>"; - "<a>IoT в моей жизни. Кейс №3 - СКУД</a>"; - "<a>IoT в моей жизни. Кейс №4 - Умный огород</a>".</p>
29
29