Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex IoT Core
    • Все руководства
    • Работа с Yandex IoT Core с устройства с Android на языке Java
    • Работа с Yandex IoT Core на языке C#
    • Работа с Yandex IoT Core на языке Java
    • Запись данных с устройства в базу данных
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
    • Тестирование доставки сообщения
    • Эмуляция множества IoT-устройств
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте необходимые ресурсы Yandex IoT Core
  • Создайте реестр
  • Создайте устройство
  • Подключите устройство к MQTT-брокеру
  • Подготовьте базу данных
  • Создайте кластер
  • Подключитесь к кластеру
  • Создайте таблицу
  • Создайте функцию для обработки данных
  • Создайте версию функции
  • Создайте триггер для Yandex IoT Core
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Запись данных с устройства в базу данных

Запись данных с устройства в базу данных

Статья создана
Yandex Cloud
Обновлена 11 апреля 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте сервисный аккаунт
  • Создайте необходимые ресурсы Yandex IoT Core
    • Создайте реестр
    • Создайте устройство
  • Подключите устройство к MQTT-брокеру
  • Подготовьте базу данных
    • Создайте кластер
    • Подключитесь к кластеру
    • Создайте таблицу
  • Создайте функцию для обработки данных
    • Создайте версию функции
  • Создайте триггер для Yandex IoT Core
  • Как удалить созданные ресурсы

В данном руководстве вы организуете запись данных с устройства в базу данных. В качестве примера будет использоваться кластер Yandex Managed Service for PostgreSQL. Чтобы подключить устройство к Yandex IoT Core, вам понадобится MQTT-брокер. Все шаги выполняются в консоли управления.

Чтобы начать записывать информацию с устройства в базу данных:

  1. Подготовьте облако к работе.
  2. Создайте сервисный аккаунт.
  3. Создайте необходимые ресурсы Yandex IoT Core.
    1. Создайте реестр.
    2. Создайте устройство.
  4. Подключите устройство к MQTT-брокеру.
  5. Подготовьте базу данных.
    1. Создайте кластер.
    2. Подключитесь к кластеру.
    3. Создайте таблицу.
  6. Создайте функцию для обработки данных.
  7. Создайте триггер для Yandex IoT Core.

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

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

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

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

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

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

Необходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • плата за кластер БД PostgreSQL (см. тарифы Yandex Managed Service for PostgreSQL);
  • плата за обмен сообщениями между ресурсами Yandex IoT Core (см. тарифы Yandex IoT Core);
  • плата за вызовы функций и вычислительные ресурсы для их выполнения (см. тарифы Yandex Cloud Functions).

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

Консоль управления
  1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
  2. В списке сервисов выберите Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта: my-db-function-service-account.
  5. Нажмите кнопку Добавить роль и выберите роли functions.functionInvoker и editor.
  6. Нажмите кнопку Создать.

Создайте необходимые ресурсы Yandex IoT Core

Примечание

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

Создайте реестр

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать реестр.

  2. В списке сервисов выберите IoT Core.

  3. Нажмите кнопку Создать реестр.

  4. В поле Имя введите my-registry.

  5. Введите пароль.

    • Длина — не менее 14 символов.
    • Должен содержать букву верхнего регистра, букву нижнего регистра и цифру.

    Важно

    Сохраните пароль, так как прочитать его из Yandex IoT Core будет невозможно.

  6. Нажмите кнопку Создать.

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

Консоль управления

После создания реестра вы попадете в его настройки.

  1. Перейдите на вкладку Устройства.

  2. Нажмите кнопку Добавить устройство.

  3. В поле Имя введите my-device.

  4. Введите пароль.

    • Длина — не менее 14 символов.
    • Должен содержать букву верхнего регистра, букву нижнего регистра и цифру.

    Важно

    Сохраните пароль, так как прочитать его из Yandex IoT Core будет невозможно.

  5. Нажмите кнопку Создать.

Подключите устройство к MQTT-брокеру

Для подключения к MQTT-серверу используйте следующие параметры:

  • Сертификат удостоверяющего центра.
  • Адрес сервера: mqtt.cloud.yandex.net.
  • Порт сервера: 8883.
  • Протокол: TLSv1.2.

Подготовьте базу данных

Создайте кластер

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать кластер БД.

  2. В списке сервисов выберите Managed Service for PostgreSQL.

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

  4. В поле Имя кластера введите my-pg-database.

  5. В поле Окружение выберите PRODUCTION.

  6. В поле Версия выберите 12.

  7. В блоке Класс хоста:

    • Укажите платформу Intel Cascade Lake.
    • Выберите тип burstable.
    • Укажите класс b2.medium.

    Важно

    Класс b2.medium был выбран только в рамках тестирования. В реальных проектах использовать хосты с гарантированной долей vCPU ниже 100% не рекомендуется.

  8. В блоке Размер хранилища:

    • Выберите network-ssd.
    • Укажите размер равным 10 ГБ.

    Примечание

    Тип и размер диска следует выбирать в соответствии с решаемыми задачами. Значения, указанные выше, используются для тестирования.

  9. В блоке База данных укажите атрибуты БД:

    • Имя базы данных. Имя БД должно быть уникальным в рамках каталога и содержать только латинские буквы, цифры и подчеркивания.
    • Имя пользователя — владельца БД. Имя пользователя должно содержать только латинские буквы, цифры и подчеркивания.
    • Пароль пользователя. Длина — от 8 до 128 символов.

    Для базы данных, которая создается вместе с кластером, устанавливаются настройки набора символов (кодировки) LC_CTYPE=C и LC_COLLATE=C. После создания эти настройки изменить нельзя, но вы можете создать новую базу с нужными настройками.

  10. В блоке Хосты нажмите и включите опцию Публичный доступ.

  11. В блоке Дополнительные настройки включите опцию Доступ из консоли управления.

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

Подробнее о создании кластера — в разделе Как создать кластер PostgreSQL.

В дальнейшем настройки кластера можно будет изменить.

Подключитесь к кластеру

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

Дождитесь, пока статус кластера изменится на Alive.

Консоль управления
  1. Выберите кластер my-pg-database.
  2. Перейдите на вкладку SQL.
  3. В поле Имя пользователя БД укажите имя пользователя, который владеет БД, созданной на предыдущем шаге.
  4. В поле Пароль введите пароль, указанный при создании кластера.
  5. Нажмите кнопку Подключиться.

Создайте таблицу

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

  • Влажность.
  • Уровень содержания углекислого газа (CO2).
  • Давление.
  • Температура.

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

{
"DeviceId":"0e3ce1d0-1504-4325-972f-55c9********",
"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. В окне редактирования введите следующий запрос:

    Важно

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

    CREATE TABLE iot_events (
        event_id varchar(24) not null,
        device_id varchar(50) not null,
        event_datetime timestamptz not null,
        humidity float8 null,
        carbon_dioxide float8 null,
        pressure float8 null,
        temperature float8 null
    )
    
  2. Нажмите кнопку Выполнить.

Дождитесь появления надписи о завершении выполнения запроса.

Создайте функцию для обработки данных

Функция будет получать сообщения из MQTT-брокера и записывать данные в таблицу, созданную на предыдущем шаге.

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать функцию.
  2. В списке сервисов выберите Cloud Functions.
  3. Нажмите кнопку Создать функцию.
  4. Введите имя функции.
  5. Нажмите кнопку Создать.

Создайте версию функции

После создания функции вы автоматически будете перенаправлены на страницу Редактор.

Консоль управления
  1. В блоке Код функции:

    • В поле Среда выполнения выберите python37.
    • В поле Способ оставьте значение по умолчанию: Редактор кода.
  2. Создайте файл myfunction.py.

  3. В области редактирования файла вставьте код функции, размещенный на Github.

    Примечание

    Запрос, который используется для записи данных в БД, формируется в методе makeInsertStatement. Если необходимо убрать или добавить параметры, внесите изменения в этот метод.

  4. В поле Точка входа укажите myfunction.msgHandler.

  5. Задайте следующие параметры версии:

    • Таймаут — 10.
    • Память — 128 МБ.
  6. В поле Сервисный аккаунт выберите my-db-function-service-account.

  7. Добавьте переменные окружения:

    • VERBOSE_LOG — параметр, отвечающий за вывод подробной информации о выполнении функции. Введите значение True.
    • DB_HOSTNAME — имя хоста БД PostgreSQL для подключения.
    • DB_PORT — порт для подключения.
    • DB_NAME — имя базы данных для подключения.
    • DB_USER — имя пользователя для подключения.
    • DB_PASSWORD — пароль, который был введен при создании кластера.

    Чтобы определить значения параметров для подключения:

    1. В консоли управления выберите каталог, в котором вы создали кластер.
    2. В списке сервисов выберите Managed Service for PostgreSQL.
    3. Выберите кластер my-pg-database.
    4. В строке с нужной БД нажмите значок и выберите Подключиться.
    5. На вкладке PowerShell найдите пример строки подключения.
    6. Перенесите значения переменных host, port, dbname и user в соответствующее поле Значение переменных окружения функции.
  8. Нажмите кнопку Сохранить изменения.

Создайте триггер для Yandex IoT Core

Триггер будет принимать копии сообщений из топика устройства и передавать их в функцию для обработки.

Консоль управления
  1. В консоли управления выберите каталог, в котором нужно создать триггер.

  2. В списке сервисов выберите Cloud Functions.

  3. На панели слева выберите Триггеры.

  4. Нажмите кнопку Создать триггер.

  5. В блоке Базовые параметры:

    • В поле Имя введите имя триггера.
    • В поле Описание введите описание триггера.
    • В поле Тип выберите IoT Core (устройство).
  6. В блоке Настройки сообщений IoT Core:

    • В поле Реестр введите my-registry.

    • В поле Устройство введите my-device.

    • В поле MQTT-топик укажите топик, в который устройство отправляет данные:

      $devices/<идентификатор_устройства>/events
      

      Где <идентификатор_устройства> — идентификатор вашего устройства.

      Триггер будет срабатывать при появлении новых данных в указанном топике.

  7. В блоке Настройки функции:

    • Выберите функцию для обработки данных, созданную ранее.
    • В поле Тег версии функции укажите $latest.
    • В поле Сервисный аккаунт укажите my-db-function-service-account.
  8. Остальные поля оставьте пустыми или заполните по своему усмотрению.

  9. Нажмите кнопку Создать триггер.

Как удалить созданные ресурсы

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

  1. Удалите устройство.
  2. Удалите реестр.
  3. Удалите кластер PostgreSQL.
  4. Удалите триггер.
  5. Удалите функцию.

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

Предыдущая
Работа с Yandex IoT Core на языке Java
Следующая
Мониторинг состояния географически распределенных устройств
Проект Яндекса
© 2025 ООО «Яндекс.Облако»