Подключение Neon PLC к Yandex Cloud (IoT Core) через MQTT

Предисловие

Для начала заметим, что у Яндекса есть собственные инструкции о том как подготовиться к работе в их облаке:

Начало работы с Yandex IoT Core

Создание устройства

Топики устройства

Пример консольного клиента на C#

Но написаны они на столько лаконично, что легко по ним пройтись едва ли удастся. Но как подспорье в непонятных моментах они очень пригодятся.

Подготовка облака Яндекс

Для начала необходимо создать аккаунт (если у Вас его нет) в Yandex Cloud - для этого переходим по ссылке и регистрируем новый аккаунт (необходимо указать реальный номер телефона).

Теперь нажимаем "Подключиться" в правом верхнем углу Облака.

Необходимо создать базовые элементы облака, начиная с консоли.

Создаём само облако.

Обязательно необходимо добавить платежную информацию (создать платёжный аккаунт) - если облако Вы создаёте впервые, то какое-то время пользоваться им можно будет бесплатно, в противном случае необходимо будет пополнить счет.

Нажмите "Создать аккаунт" и заполните все поля реальными данными.

Добавьте сервис "IoT Core".

Войдя в созданный сервис Вы получите приглашение создать реестр устройств.

На начальном этапе мы рекомендуем организовать связь устройств с облаком без использования сертификатов.

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

Перейдя на вкладку "Устройства", нажмите кнопку в правом верхнем углу "Добавить устройство" и заполните его имя и пароль.

Указанный пароль будет необходимо прописать в ПЛК Neon для коммуникации с облаком Яндекса, а логином будет идентификатор устройства.

Создание проекта для ПЛК Neon

* Данный проект находится во вложении к статье - можете скачать его.

Откройте YartStudio (версии не ниже, чем 0.18) и создайте новый проект. Контроллер выберите Neon, установите период исполнения 20 мс.

Откройте раздел "Переменные пользователя" и создайте 3 переменные (для демонстрации этого будет достаточно).

Перейдите в структуру проекта и создайте новую программу.

Теперь откройте "Свойства проекта", раздел "Телеметрия" и заполните все поля настройки коммуникации (обратите внимание на не стандартный порт и на совпадение логина и ID устройства).

Во вкладке "Настройка публикации" выносим контейнер state и закидываем в него оставшиеся переменные (контейнера "Подписка" у Вас может не быть).

Подключаемся к виртуальному ПЛК и выполняем сборку и загрузку проекта.

Если выход "Ok" блока "Telemetry State" стал включенным, как на скриншоте выше, значит Вы всё сделали правильно - контроллер вышел в облако Яндекс и публикует туда свои данные.

Создание простого клиента для мониторинга

* Данный проект также находится во вложении к статье - можете скачать его.

Для демонстрации возможностей мониторинга воспользуемся несколько модифицированным примером консольного клиента на C# от Яндекса. Обратите внимание на версию пакета MQTTnet - устанавливать более новую чем 3.0.8. нужно с осторожностью и пониманием своих действий - верификация сертификатов там производится по другому и просто запустить решение на более новом пакете не выйдет.

В MS VisualStudio откройте решение из вложения (NeonToYandexMqttConsole). Все значимые настройки (логины и пароли от устройств и реестра) лежат в классе Program.cs

Логин и пароль устройства здесь указываются больше справочно - в данном примере есть (но не используется) возможность не только мониторинга, но и отправки данных от лица устройства. Выполнив сборку и запуск, Вы должны увидеть процесс публикации данных контроллером Neon.

Идентификаторы 101 и 102 являются служебными полями переменных в YartStudio - их можно посмотреть, открыв переменную на редактирование, либо вынеся дополнительный столбец с идентификаторами в разделе "Переменные пользователя".

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

 

При появлении любых вопросов по данной или любой другой статье на портале - задавайте их через форму обратной связи!

Метаданные статьи

Идентификатор статьи:
17
Рейтинг :