В чем разница между двумя способами создания клиента в Google Cloud IoT Core? - PullRequest
1 голос
/ 12 марта 2019

Для создания клиента в Google Cloud IoT Core я сначала просто использую:

client = mqtt.Client(client_id=('projects/{}/locations/{}/registries/{}/devices/{}'
                    .format(args.project_id, args.cloud_region,
                            args.registry_id, args.device_id)))

Хотя во многих примерах кода документации я видел, что использовался этот и другой способ, приведенный ниже:

client = get_client(service_account_json)

Чтобы использовать вышеописанное, мне пришлось сгенерировать еще один ключ JSON.Не в состоянии понять, в чем принципиальная разница между двумя клиентами.Кроме того, я использовал второй способ получения состояния устройства.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Это два разных API. Один - это сторона клиента (сам по себе API отсутствует, это просто метод, который устройства [клиенты] используют для подключения к IoT Core), а другой - для стороны администрирования IoT Core.

Мост MQTT используется для подключения устройства к IoT Core для отправки данных телеметрии. Это код клиента mqtt в вашем первом фрагменте. Нет API для устройств для подключения для отправки телеметрии, IoT Core - это просто конечная точка MQTT (или HTTP). В приведенном выше случае у вас, вероятно, также есть код, чтобы сделать файл client.publish для mqtt.googleapis.com:8883. Это подключает устройство к IoT Core через MQTT.

Второй - это то, что вам нужно использовать для вызова IoT Core Admin SDK. Например, если у вас есть скрипт, который хочет обновить конфигурацию на устройстве, управляемом IoT Core.

Ключ JSON, который вы должны были сгенерировать, - это аутентификация с помощью API-сервиса. Здесь есть подробности об аутентификации здесь . В случае устройства, использующего MQTT, нет аутентификации API, он использует JWT для аутентификации в этом случае, но для SDK администратора вам необходимо пройти аутентификацию с помощью Cloud Project, чтобы выдавать такого рода команды администратора.

Итак, TL; DR, в вашем первом фрагменте, это клиент MQTT, который вы создаете. Во втором фрагменте это клиент Google Cloud Project (GCP). Первый - для устройств, отправляющих данные в IoT Core, второй - для вызовов типа администрирования в GCP.

1 голос
/ 12 марта 2019

Первый метод - с использованием моста MQTT .

Второй использует другой метод доступа, основанный на другом API. От Получение данных о состоянии устройства :

В этом примере используется клиентская библиотека Google API для Python .

client = get_client(service_account_json)
...