Google IoT Core: как узнать, с какого устройства пришло сообщение? - PullRequest
1 голос
/ 02 мая 2019

В Google Cloud у меня есть основной реестр IoT с несколькими устройствами (подключенными через MQTT) и 2 темами Pub / Sub: тема событий (для событий телеметрии устройства) и тема состояния (для событий состояния устройства).Я обрабатываю сообщения из темы событий заданием Dataflow.

Вопрос: как узнать, с какого устройства поступает данное сообщение?Нужно ли мне вручную обогащать сообщение (на стороне устройства) каким-либо идентификатором устройства или оно каким-то образом предоставляется Google Cloud?

Что если я вместо этого использовал функции облака?

В конце я хотел бы иметь возможность хранить сообщения в хранилище данных (BigTable, BigQuery ...) вместе с исходным идентификатором устройства.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 02 мая 2019

Я забыл, если мы добавим идентификатор устройства в качестве метаданных к сообщению Pub / Sub. Вы можете попытаться вывести свойства объекта Pub / Sub, переданного в Dataflow, чтобы проверить?

ПРОСТОЙ способ сделать это - просто передать deviceID как добавленную стоимость в блоке телеметрии, и именно так я это делаю (в основном потому, что не хочу связываться с другими API), и я не У меня больше нет проблем с размером сети. Это было бы рассмотрение. Если вы пытаетесь сохранить свой сетевой трафик до абсолютного минимума. Если это не сложное требование, я просто передам его как дополнительные данные в BLOB-объекте отправки.

0 голосов
/ 09 июня 2019

Если вы планируете использовать облачную функцию, вы можете найти имя / идентификатор устройства из информации атрибута ['deviceId'] в событии ['атрибуты'].Прикрепленная облачная функция Python, запускаемая примером PubSub,

def cloud_function(event, context):
    attribute = event['attributes']
    attribute['deviceRegistryLocation']
    attribute['deviceRegistryId']
    attribute['deviceId']
0 голосов
/ 02 мая 2019

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

Лично мне нравится использовать облачные функции для разбора иили передать данные телеметрии в другое место, например, в BigQuery или базу данных реального времени Firebase ....

...