Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Cтатический сайт в Object Storage
    • Cайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки через Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки через Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Сайт на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Веб-сайт на базе 1С-Битрикс
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на Opencart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage через CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage через Bacula
    • Резервное копирование в Object Storage через Veritas Backup Exec
    • Оцифровка архива в Yandex Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых виртуальных машинах
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Автоматизация сборки образов ВМ с помощью Jenkins
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Создание кластера Windows-серверов «1С:Предприятия» с базой данных MS SQL Server
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
  • Построение Data Platform
    • Все руководства
    • Синхронизация данных из MySQL с помощью Yandex Data Transfer
    • Миграция базы данных из Yandex Managed Service for MySQL в MySQL
    • Настройка управляемой базы данных в кластере ClickHouse для Graphite
    • Обмен данными между Yandex Managed Service for ClickHouse и Yandex Data Proc
    • Импорт базы данных в Yandex Data Proc с использованием Sqoop
    • Использование Confluent Schema Registry с Yandex Managed Service for Apache Kafka®
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Миграция данных в Yandex Managed Service for Apache Kafka®
    • Перенос коллекций из MongoDB в Yandex Managed Service for MongoDB
    • Миграция базы данных в Yandex Managed Service for SQL Server
    • Перенос данных из PostgreSQL в ClickHouse с помощью Yandex Data Transfer
    • Настройка Kafka Connect для работы с кластером Yandex Managed Service for Apache Kafka®
    • Настройка Yandex Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
  • Windows в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая маршрутизация
    • Все руководства
    • Маршрутизация с помощью NAT-инстанса
    • Создание VPN-туннеля
    • Установка виртуального роутера Cisco CSR1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из CSV-файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД Clickhouse и Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью SQL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
  1. Тестовая среда
  2. Эмуляция множества IoT-устройств

Эмуляция множества IoT-устройств

Статья создана
Yandex.Cloud
  • Подготовьте облако к работе
  • Установите Terraform
    • Из зеркала Yandex Cloud
    • С сайта Hashicorp
  • Опишите инфраструктуру
  • Разверните облачные ресурсы
  • Удалите созданные ресурсы

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

  • температура;
  • влажность;
  • давление;
  • уровень содержания СO2.

Каждый датчик отправляет результат в формате JSON. Например:

{
 "DeviceId":"0e3ce1d0-1504-4325-972f-55c961319814",
 "TimeStamp":"2020-05-21T22:53:16Z",
 "Values":[
     {"Type":"Float","Name":"Humidity","Value":"25.281837"},
     {"Type":"Float","Name":"CarbonDioxide","Value":"67.96608"},
     {"Type":"Float","Name":"Pressure","Value":"110.7021"},
     {"Type":"Float","Name":"Temperature","Value":"127.708824"}
     ]
}

Чтобы эмулировать работу множества устройств:

  1. Подготовьте облако к работе.
  2. Установите Terraform.
  3. Опишите инфраструктуру.
  4. Разверните облачные ресурсы.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Перед тем, как разворачивать инфраструктуру для эмуляции устройств, нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

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

Подробнее об облаках и каталогах.

Установите Terraform

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

Из зеркала Yandex Cloud

Вы можете скачать дистрибутив Terraform для вашей платформы из зеркала Yandex Cloud. После загрузки добавьте путь к папке, в которой находится исполняемый файл, в переменную PATH:

export PATH=$PATH:/path/to/terraform

С сайта Hashicorp

Windows
Linux
macOS

Используйте один из способов:

  • Скачайте дистрибутив Terraform и установите его согласно инструкции.

  • Установите Terraform с помощью пакетного менеджера Сhocolatey, используя команду:

    choco install terraform
    

Скачайте дистрибутив Terraform и установите его согласно инструкции.

Используйте один из способов:

  • Скачайте дистрибутив Terraform и установите его согласно инструкции.

  • Установите Terraform с помощью пакетного менеджера Homebrew, используя команду:

    brew install terraform
    

Опишите инфраструктуру

  1. Создайте папку iot-terraform. В ней будут храниться конфигурационные файлы Terraform.

  2. Скачайте архив с файлами, которые необходимы для выполнения сценария, и распакуйте в папку iot-terraform.

    Архив содержит:

    • common.tf — настройки провайдера Terraform.
    • files.tf — параметры публикации файлов кода из локальной папки.
    • function.tf — параметры функции для записи эмулированных сообщений в устройства.
    • iot_core.tf — параметры реестра, в котором находятся устройства.
    • output.tf.tf — выходные переменные.
    • publish — файлы, которые необходимы для создания функции.
    • service_account.tf — параметры сервисного аккаунта, который создается в сценарии.
    • trigger.tf — параметры триггера для вызова функции с заданным таймаутом.
    • variables.tf — используемые переменные и их значения.
  3. Отредактируйте файл variables.tf, указав следующие параметры для эмуляции:

    • token — OAuth-токен для доступа к Yandex Cloud.

    • cloud_id — идентификатор облака.

    • folder_id — идентификатор каталога.

    • zone — зона доступности.

    • device_count — количество эмулируемых устройств.

      Примечание

      Чтобы эмулировать работу более 1000 устройств, необходимо повысить квоты, сделав запрос в техническую поддержку.

    • subtopic_for_publish — сабтопик в формате $devices/<ID устройства>/events/<сабтопик>.

    • publish_execution_timeout — таймаут отправки сообщений в секундах.

    • publish_cron_expression — расписание отправки сообщений в MQTT-топик в виде cron-выражения. По умолчанию сообщения отправляются каждую минуту.

    Остальные файлы можно оставить без изменений.

Разверните облачные ресурсы

  1. Перейдите в папку iot-terraform и проверьте конфигурацию командой:

    terraform validate
    

    Результат:

    Success! The configuration is valid.
    
  2. Отформатируйте файлы конфигураций в текущем каталоге и подкаталогах:

    terraform fmt
    

    Результат:

    main.tf
    variables.tf
    
  3. После проверки конфигурации выполните команду:

    terraform plan
    

    В терминале будет выведен список ресурсов с параметрами. Это проверочный этап: ресурсы не будут созданы. Если в конфигурации есть ошибки, Terraform на них укажет.

    Внимание

    Все созданные с помощью Terraform ресурсы тарифицируются. Внимательно проверьте план.

  4. Чтобы создать ресурсы, выполните команду:

    terraform apply
    
  5. Подтвердите создание ресурсов: введите в терминал слово yes и нажмите Enter.

    Результат:

    Outputs:
    
    function = "d4erep.......aq085f0"
    iot_core = "are.......ht10enkb3u"
    service_account = "ajestqfepa.......0l6"
    trigger = "a1sva8sse.......7kf6"
    

    Terraform создаст все требуемые ресурсы, а в терминале будут указаны идентификаторы созданных ресурсов. Проверить появление ресурсов и их настройки можно в консоли управления.

Удалите созданные ресурсы

Консоль управления
  1. Удалите реестр:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Yandex IoT Core.
    3. Справа от имени созданного реестра нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  2. Удалите устройства:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Yandex IoT Core.
    3. Выберите реестр.
    4. Перейдите на вкладку Устройства.
    5. Справа от имени созданного устройства нажмите и выберите Удалить.
    6. Нажмите кнопку Удалить.
  3. Удалите функцию:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Cloud Functions.
    3. Справа от имени созданной функции нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.
  4. Удалите триггер:
    1. Перейдите в свой рабочий каталог.
    2. В списке сервисов выберите Cloud Functions.
    3. Перейдите на вкладку Триггеры.
    4. Справа от имени созданного триггера нажмите и выберите Удалить.
    5. Нажмите кнопку Удалить.
  5. Удалите сервисный аккаунт:
    1. Перейдите в свой рабочий каталог.
    2. В левой панели выберите вкладку Сервисные аккаунты.
    3. Справа от имени созданного сервисного аккаунта нажмите и выберите Удалить.
    4. Нажмите кнопку Удалить.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Установите Terraform
  • Из зеркала Yandex Cloud
  • С сайта Hashicorp
  • Опишите инфраструктуру
  • Разверните облачные ресурсы
  • Удалите созданные ресурсы