HTML Diff
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 &lt;Servo.h&gt; // Object Servo with name myservo Servo myservo; int pos; EspMQTTClient client( "&lt;wifi-ssid&gt;", "&lt;wifi-password&gt;", "&lt;MQTT Broker server ip&gt;", "&lt;ric-mqtt-client-id&gt;" ); void setup() { Serial.begin(9600); move(0); } void onConnectionEstablished() { Serial.println("connected"); client.subscribe("move", [] (const String&amp; 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 &lt;Servo.h&gt; // Object Servo with name myservo Servo myservo; int pos; EspMQTTClient client( "&lt;wifi-ssid&gt;", "&lt;wifi-password&gt;", "&lt;MQTT Broker server ip&gt;", "&lt;ric-mqtt-client-id&gt;" ); void setup() { Serial.begin(9600); move(0); } void onConnectionEstablished() { Serial.println("connected"); client.subscribe("move", [] (const String&amp; 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