在Google Cloud IoT Core中创建客户端的两种方式之间有什么区别?

问题描述 投票:1回答:2

要在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密钥。无法理解两个客户之间的本质区别。此外,我使用第二种方式获取设备的状态。

python-2.7 mqtt paho google-cloud-iot
2个回答
1
投票

这些来自两个不同的API。一个是客户端(没有API本身,它只是设备[客户]用来连接到IoT Core的方法),另一个是物联网核心管理方面的事情。

MQTT bridge用于将设备连接到IoT Core以发送遥测数据。这是你的第一个片段中的mqtt客户端代码。设备无法连接以发送遥测,IoT Core只是一个MQTT(或HTTP)端点。在上面的例子中,你可能还有代码在那里做client.publish到mqtt.googleapis.com:8883。这通过MQTT将设备连接到IoT核心。

第二个是您需要使用的,以便调用IoT Core Admin SDK。例如,如果您有一个脚本想要在由IoT Core控制的设备上使用update the config

您必须生成的JSON密钥是使用API​​服务进行身份验证。有关认证件here的详细信息。在使用MQTT情况的设备中,没有API身份验证,它使用JWT在该实例中进行身份验证,但对于admin SDK,您需要使用Cloud Project进行身份验证才能发出这些管理命令。

所以TL; DR,在你的第一个片段中,那是你正在创建的MQTT客户端。在第二个片段中,它是Google Cloud Project(GCP)客户端。首先是设备向IoT Core发送数据,第二个是向GCP发出管理类型调用。


1
投票

第一种方法是using the MQTT bridge

第二个是使用基于不同API的不同访问方法。来自Getting device state data

此示例使用Google API Client Library for Python

client = get_client(service_account_json)
© www.soinside.com 2019 - 2024. All rights reserved.