【问题标题】:What's the difference between the two ways of creating client in Google Cloud IoT Core?在 Google Cloud IoT Core 中创建客户端的两种方式有什么区别?
【发布时间】:2019-03-12 10:32:44
【问题描述】:

为了在 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


    【解决方案1】:

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

    MQTT bridge 用于将设备连接到 IoT Core 以发送遥测数据。这是您的第一个 sn-p 中的 mqtt 客户端代码。没有用于连接设备以发送遥测数据的 API,IoT Core 只是一个 MQTT(或 HTTP)端点。在上述情况下,您可能还获得了将 client.publish 到 mqtt.googleapis.com:8883 的代码。通过 MQTT 将设备连接到 IoT Core。

    第二个是调用 IoT Core Admin SDK 所需要使用的。例如,如果您有一个脚本想要在 IoT Core 控制的设备上@9​​87654322@。

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

    所以 TL;DR,在您的第一个 sn-p 中,这是您正在创建的 MQTT 客户端。在第二个 sn-p 中,它是一个 Google Cloud Project (GCP) 客户端。第一个用于向 IoT Core 发送数据的设备,第二个用于向 GCP 发出管理类型调用。

    【讨论】:

    • 您能否接受答案,以便其他人也能更轻松地找到答案?谢谢!
    【解决方案2】:

    第一种方法是using the MQTT bridge

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

    此示例使用Google API Client Library for Python

    client = get_client(service_account_json)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多