Эмуляция множества IoT-устройств
В этом сценарии вы узнаете, как эмулировать множество устройств, которые отправляют сообщения в MQTT-топики. В примере эмулируется работа датчиков воздуха, которые измеряют следующие параметры:
- Температура.
- Влажность.
- Давление.
- Уровень содержания CO2.
Каждый датчик отправляет результат в формате 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"
}]
}
Чтобы эмулировать работу множества устройств:
- Подготовьте облако к работе.
- Установите Terraform.
- Опишите инфраструктуру.
- Разверните облачные ресурсы.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Установите Terraform
С помощью Terraform в Yandex Cloud можно создавать облачные ресурсы всех типов: виртуальные машины, диски, образы и т. д. Подробную информацию о ресурсах, создающихся с помощью Terraform, см. в документации провайдера
Из зеркала
Внимание
Зеркало может быть недоступно.
Вы можете скачать дистрибутив Terraform для вашей платформы из зеркалаPATH
:
export PATH=$PATH:/path/to/terraform
С сайта HashiCorp
Используйте один из способов:
-
Скачайте дистрибутив Terraform
и установите его согласно инструкции . -
Установите Terraform с помощью пакетного менеджера Chocolatey
, используя команду:choco install terraform
Скачайте дистрибутив Terraform
Используйте один из способов:
-
Скачайте дистрибутив Terraform
и установите его согласно инструкции . -
Установите Terraform с помощью пакетного менеджера Homebrew
, используя команду:brew install terraform
Опишите инфраструктуру
-
Создайте папку
iot-terraform
. В ней будут храниться конфигурационные файлы Terraform. -
Скачайте
архив с файлами, которые необходимы для выполнения сценария, и распакуйте в папкуiot-terraform
.Архив содержит:
common.tf
— настройки провайдера Terraform.files.tf
— параметры публикации файлов кода из локальной папки.function.tf
— параметры функции для записи эмулированных сообщений в устройства.iot_core.tf
— параметры реестра, в котором находятся устройства.output.tf.tf
— выходные переменные.publish
— файлы, которые необходимы для создания функции.service_account.tf
— параметры сервисного аккаунта, который создается в сценарии.trigger.tf
— параметры триггера для вызова функции с заданным таймаутом.variables.tf
— используемые переменные и их значения.
-
Отредактируйте файл
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-выражения. По умолчанию сообщения отправляются каждую минуту.
Остальные файлы можно оставить без изменений.
-
Разверните облачные ресурсы
-
Перейдите в папку
iot-terraform
и проверьте конфигурацию командой:terraform validate
Результат:
Success! The configuration is valid.
-
Отформатируйте файлы конфигураций в текущем каталоге и подкаталогах:
terraform fmt
Результат:
main.tf variables.tf
-
После проверки конфигурации выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. Это проверочный этап: ресурсы не будут созданы. Если в конфигурации есть ошибки, Terraform на них укажет.
Внимание
Все созданные с помощью Terraform ресурсы тарифицируются. Внимательно проверьте план.
-
Чтобы создать ресурсы, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.Результат:
Outputs: function = "d4erep.......aq085f0" iot_core = "are.......ht10enkb3u" service_account = "ajestqfepa.......0l6" trigger = "a1sva8sse.......7kf6"
Terraform создаст все требуемые ресурсы, а в терминале будут указаны идентификаторы созданных ресурсов. Проверить появление ресурсов и их настройки можно в консоли управления
.
Удалите созданные ресурсы
- Удалите реестр:
- Перейдите в свой рабочий каталог.
- В списке сервисов выберите IoT Core.
- Справа от имени созданного реестра нажмите
и выберите Удалить. - Нажмите кнопку Удалить.
- Удалите устройства:
- Перейдите в свой рабочий каталог.
- В списке сервисов выберите IoT Core.
- Выберите реестр.
- Перейдите на вкладку Устройства.
- Справа от имени созданного устройства нажмите
и выберите Удалить. - Нажмите кнопку Удалить.
- Удалите функцию:
- Перейдите в свой рабочий каталог.
- В списке сервисов выберите Cloud Functions.
- Справа от имени созданной функции нажмите
и выберите Удалить. - Нажмите кнопку Удалить.
- Удалите триггер:
- Перейдите в свой рабочий каталог.
- В списке сервисов выберите Cloud Functions.
- Перейдите на вкладку Триггеры.
- Справа от имени созданного триггера нажмите
и выберите Удалить. - Нажмите кнопку Удалить.
- Удалите сервисный аккаунт:
- Перейдите в свой рабочий каталог.
- В списке сервисов выберите Identity and Access Management.
- На панели слева выберите
Сервисные аккаунты. - В строке с именем созданного сервисного аккаунта нажмите
и выберите Удалить. - Нажмите кнопку Удалить.