Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex IoT Core
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Отправка сообщения
    • Подписка устройства или реестра на получение сообщений
    • Просмотр журнала подключений
    • Создание триггера для топика
    • Управление реестрами
      • Получение информации о реестре
      • Создание реестра
      • Изменение реестра
      • Удаление реестра
    • Управление устройствами
      • Управление алиасами топиков
        • Создание алиаса
        • Получение списка алиасов
        • Изменение алиаса
        • Удаление алиаса
      • Получение информации об устройстве
      • Создание устройства
      • Изменение устройства
      • Удаление устройства
    • Управление сертификатами
      • Создание сертификата
      • Управление сертификатами реестра
      • Управление сертификатами устройства
    • Управление паролями
      • Управление паролями реестра
      • Управление паролями устройства
  • Концепции
    • Авторизация
    • Взаимосвязь ресурсов сервиса
    • Параметры подключения MQTT-брокера
    • Отправка сообщений MQTT-брокеру через gRPC
    • Топик
    • Резервное копирование
    • Квоты и лимиты
  • Сценарии использования
    • Все сценарии
    • Работа с помощью Mosquitto
      • Отправить сообщение
      • Подписать устройство или реестр на получение сообщений
    • Работа с Yandex IoT Core с устройства с Android на языке Java
    • Работа с Yandex IoT Core на языке C#
    • Работа с Yandex IoT Core на языке Java
    • Запись данных с устройства в Managed Service for PostgreSQL
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • DeviceService
      • RegistryService
      • OperationService
    • REST
      • Обзор
      • Device
        • Обзор
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • list
        • listCertificates
        • listOperations
        • listPasswords
        • update
      • Registry
        • Обзор
        • addCertificate
        • addPassword
        • create
        • delete
        • deleteCertificate
        • deletePassword
        • get
        • list
        • listCertificates
        • listDeviceTopicAliases
        • listOperations
        • listPasswords
        • update
  • Вопросы и ответы
  1. Сценарии использования
  2. Запись данных с устройства в Managed Service for PostgreSQL

Запись данных с устройства в Managed Service for PostgreSQL

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

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

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

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

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

Примечание

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

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

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

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

  3. Выберите Реестр устройств.

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

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

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

    Важно

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

  6. Пропустите блок Сертификаты.

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

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

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

  1. В списке реестров выберите my-registry.

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

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

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

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

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

    Важно

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

  6. Пропустите блоки Алиасы и Сертификаты.

  7. Нажмите кнопку Добавить.

Подключите устройство к 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.nano.

    Важно

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

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

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

    Примечание

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

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

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

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

  10. Остальные поля оставьте заполненными по умолчанию.

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

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

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

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

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

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

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

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

  • Влажность.
  • Уровень содержания углекислого газа (С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. В окне редактирования введите следующий запрос:

    Важно

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

    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. Нажмите кнопку Выполнить.

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

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

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

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

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

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

  1. В блоке Код:

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

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

    Примечание

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

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

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

    • Таймаут, с: 10.
    • Память: 128 МБ.
  6. Создайте сервисный аккаунт:

    1. Нажмите кнопку Создать аккаунт (или Создать новый). Откроется дополнительное окно.
    2. В поле Имя введите my-db-function-service-account.
    3. Добавьте роли: serverless.functions.invoker и editor.
    4. Нажмите кнопку Создать.

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

  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. Выберите пункт Подключиться.
    6. На вкладке Shell найдите пример строки подключения.
    7. Перенесите значения переменных host, port, dbname и user в соответствующее поле Значение переменных окружения функции.
  8. Нажмите кнопку Создать версию.

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

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

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

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

  3. Перейдите на вкладку Триггеры.

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

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

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

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

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

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

      $devices/<device id>/events
      

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

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

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

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

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

В этой статье:
  • Создайте необходимые ресурсы Yandex IoT Core
  • Создайте реестр
  • Создайте устройство
  • Подключите устройство к MQTT-брокеру
  • Подготовьте базу данных
  • Создайте кластер
  • Подключитесь к кластеру
  • Создайте таблицу
  • Создайте функцию для обработки данных
  • Создайте первую версию функции
  • Создайте триггер для Yandex IoT Core
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»