如何解决如何在IoT核心版中长期使用MQTT?
因此,首先,我真正要实现的目标是:我想知道IoT设备何时停止工作(即失去连接,关闭,基本上不再与IoT Core通话)。我似乎在GCP上找不到此实现。
我有一个树莓派作为我的物联网设备,我已经在物联网核心上配置了它,并且我读到某处,因为没有实现该问题的一种解决方法是创建一个日志接收器,该接收器会在有故障时激活云功能。 CONNECT / DISCONNECT日志。这将达到我的目的,并且我已经实现了此接收器和云功能来提醒我。
我一直遵循this guide连接到MQTT。但是,按照解释的方式,他们将其设置为每当超过JWT的到期时间时,他们就断开客户端连接并创建一个新客户端来更新JWT。这样一来,每当需要更新此客户端时,我都会收到有关连接/断开连接的警报。因此,我将无法从MQTT客户端的续订中区分出真正的问题。
在同一指南中,我看到他们提到MQTT长期协议或LTS,并且他们声称这种方式可以设置一次客户端,并在支持的时间内通过客户端持续通信,直到2030年。成为我真正想要的,但是我无法以这种方式进行连接,他们除了说明主机名应为mqtt.2030.ltsapis.goog
并使用与完整证书不同的主证书和备用证书外,没有其他解释第一种方法的根CA。
我尝试使用基本上相同的过程来设置客户端:
client = mqtt.Client(client_id=client_id)
# With Google Cloud IoT Core,the username field is ignored,and the
# password field is used to transmit a JWT to authorize the device.
client.username_pw_set(
username='unused',password=create_jwt(project_id,private_key_file,algorithm))
# Enable SSL/TLS support.
client.tls_set(ca_certs=ca_certs,tls_version=ssl.PROTOCOL_TLSv1_2)
但是更改了主机名并在提供完整ca_certs的地方给了它主要的证书,但是它不会接受它,并且我不确定如何通过主要证书和备份证书来执行。我正在看tls_set上的文档,但是我看不到它们会去哪里或它们与完整的ca证书有何不同。在本指南之外,我还没有看到其他示例。
我希望能够连接到此MQTT LTS,以便我可以保持连接而不必不断更新客户端。
解决方法
长期的MQTT域使您可以长时间使用LTS 配置,而不是连接。
如您所述,对于您的用例,解决方案是激活并使用device logs。 IoT Core中的device disconnects会触发其中一个事件,您可以使用该事件来触发警报。
请记住,为安全起见,为连接设置了time limits,并且客户端应续订连接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。