Как подключить несколько устройств к одной вещи в AWS-IOT?
Я работаю над проектом по установке более 100 узлов датчиков температуры в области, все из которых выполняют одну и ту же функцию. Данные, которые они публикуют, - это идентификатор датчика и показания. Я использую AWS-IOT для бэкэнда.
Теперь, чтобы сделать это, я думаю, что мне нужно будет создать 1 'вещь' на узел в aws-iot, которую я считаю чрезвычайно сложной для поддержки и не масштабируемой.
Поэтому мой вопрос здесь заключается в том, как подключить несколько узлов к одной и той же вещи в AWS-IOT, чтобы кластером было легко управлять. Есть ли альтернативный способ эффективного управления кластером? Любые материалы приветствуются. Благодарю.
4 ответа
Столкнувшись с подобной дилеммой и непрактичностью создания слишком большого количества "вещей" на административной консоли IoT AWS; Я провел некоторое исследование и обнаружил, что AWS настоятельно не рекомендует подключать несколько устройств к одной и той же вещи.
В любом случае невозможно сохранить два разных узла, использующих один и тот же идентификатор MQTT, подключенный к одной и той же вещи (последний подключенный узел с тем же идентификатором выбрасывает ранее подключенный узел), хотя вы можете использовать свой идентификатор клиента с помощью некоторого кода.
Я узнал, что на самом деле вам не нужна "вещь" для подключения к AWS IoT, подойдет только сертификат; и что вы можете создавать элементы в сервисе IoT AWS с помощью кода.
Итак, в итоге; Столкнувшись с аналогичным вопросом, я наткнулся на эту информацию ниже, нашел ее полезной в моем случае и поделился ею здесь. https://forums.aws.amazon.com/thread.jspa?threadID=234102
Казалось бы, единственный способ сделать это - создать собственный шлюз, который агрегирует данные перед отправкой в AWS IoT. У вас не может быть нескольких MQTT-соединений с одним и тем же идентификатором клиента.
Используйте API для автоматизации назначения сертификатов и закрытых ключей узлам. Идентификатор датчика может использоваться как имя вещи и идентификатор клиента MQTT. Требуется некоторая работа заранее, но затем вы можете использовать AWS IoT для всей хозяйственной деятельности, продвигающейся вперед.
Вы можете использовать одну и ту же вещь с несколькими clientId. Вы можете использовать идентификатор датчика в качестве clientId.
Вы подключаете свои датчики к AWS IOT, подписываетесь на тему устройства и начинаете публиковать данные. И вы начинаете получать данные со всех датчиков.
Теперь посмотрим, в чем здесь проблема???Проблема: мы не знаем, какое устройство отправило какие данные?
Решение: может быть 2 решения этой проблемы.
- Вы создаете несколько вещей и получаете данные от датчиков отдельно от отдельного отдельного устройства темы (который вы уже отклонили)
- Во-вторых, решение заключается в том, чтобы вставить идентификатор устройства или идентификатор клиента в данные, которые датчик отправляет в AWS IOT. И создайте Правило для этой темы устройства в AWS IOT, чтобы извлечь данные из темы и сохранить их в БД с правильным идентификатором клиента. В этом случае идентификатор клиента будет использоваться для различения данных от разных датчиков, аналогичных первичному ключу.
Надеюсь, это поможет.
Спасибо
Использование другого clientId может отличить клиента. Но похоже, что это только теневые данные для этой вещи. Это означает, что теневые данные могут использоваться только тогда, когда с этой штукой связано одно устройство. Если с устройством связано несколько устройств, теневые данные не применяются.