如何在 Google Core IoT 中进行配置?
Posted
技术标签:
【中文标题】如何在 Google Core IoT 中进行配置?【英文标题】:How to configure in Google Core IoT? 【发布时间】:2019-10-08 10:05:31 【问题描述】:我在 Raspberry Pi 3 Model B 中编写了一个 python 程序,它应该使用 MQTT 协议连接到 Google Cloud IoT Core 并获取配置。到目前为止,向 Core 发送数据已经成功了,但我就是不知道配置是如何工作的!这是一个应该获取配置的代码:
import time
import datetime
import jwt
import ssl
import json
import paho.mqtt.client as mqtt
time_now = datetime.datetime.utcnow()
#make key
token = 'iat' : time_now ,
'exp' : time_now + datetime.timedelta(minutes=60),
'aud' : "[PROJECT]"
r = open("[PRIVATE KEY]", 'r')
pub_key = r.read()
jwt_key = jwt.encode(token, pub_key, algorithm='RS256')
#connect to iot-core
client = mqtt.Client(client_id='projects/[PROJECT]/locations/[LOCATION]/registries/[REGISTER]/devices/[DEVICE]')
client.username_pw_set(username='unused', password=jwt_key)
client.tls_set(ca_certs='/home/pi/.local/lib/python2.7/site-packages/grpc/_cython/_credentials/roots.pem', tls_version=ssl.PROTOCOL_TLSv1_2)
client.connect("mqtt.googleapis.com", 8883)
#configure and change state
state = 0
print state #naturally shows 0
print client.subscribe([DEVICE]/config, qos=1) #doesn't print custom config either, just (0,1)
print state #still shows 0
Iot Core 设备 ID 中的配置为:
"state": 1
即使在运行程序之后,设备的“状态”变量仍保持为 0,并且内核的配置和状态历史表明 CONFIG 为“设备尚未确认”
如何从 Core 获取设备的“状态”变量从 0 变为 1?
【问题讨论】:
【参考方案1】:你已经完成了一半的工作。 2 备注。
这可能是一个细节,但你将你的私钥命名为pub_key
。而且你没有关闭文件。
Based on this tutorial,你只订阅了 MQTT。返回元组(0,1)
表示MQTT_ERR_SUCCESS
on QOS
= 1。因此您已连接。伟大的!现在,做第二部分:消费频道中的消息,并制定你的逻辑(根据收到的消息,如果是你的用例,在你的应用程序中更改状态)
【讨论】:
谢谢,成功了!但由于某种原因,它会显示两次消息。以上是关于如何在 Google Core IoT 中进行配置?的主要内容,如果未能解决你的问题,请参考以下文章
Google IoT Core:我如何知道消息来自哪个设备?
如何更改 Google IoT Core 的 MQTT 主机名
如何将传感器数据(例如来自 DHT11 传感器的温度数据)发送到 Google Cloud IoT Core 并存储它