设备关机断开mqtt后,更新设备的下线状态逻辑执行失败

Blade 未结 1 93
lutw
lutw 2026-07-15 15:54

一、该问题的重现步骤是什么?

1. image.png
这个代码执行了,但是没有获取到设备信息,mqtt连接是关闭了。
这个username是mqtt的账号,根本没有获取设备信息,所以再进行设备状态更新时,函数直接return了。
image.png
image.png

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (楼主)
    2026-07-15 16:44

    你用的是mqtt账号连接的, 没有用设备三元组的模式么?

    如果用的是mqtt账号,当然无法获取到设备信息,所有设备都用同一个账号连接,服务器是不知道具体谁是谁的,你要用mqtt账号控制上下线是不可能的。


    真实控制上下线,只能用设备三元组(根据设备名称密钥等参数来计算,具体看:https://iot.bladex.cn/tech/device/link/mqtt.html)的方式去连接。


    mqtt账号一般是用来直接上报数据用的,无法识别设备身份。

    作者追问:2026-07-15 16:44

    现在因为一些原因,目前只能通过代理通信的方式控制设备上下线,现在上线没有问题,但是设备直接断电,是没有办法上报设备下线消息的。只能通过遗言的方式。发布一个遗言消息。
    我看mica-mqtt有支持遗言,平台目前是不支持遗言消息的,平台中能将遗言加进去么,这样就可以通过遗言控制设备下线。

    回答: 2026-07-15 16:44

    无法实现,你可以设备关机前,执行一个下线的topic:https://iot.bladex.cn/tech/prologue/protocol.html#_5-2-%E8%AE%BE%E5%A4%87%E4%B8%8B%E7%BA%BF


    如果要防备意外断电、关机的事件,只能通过三元组认证来实现。

    作者追问:2026-07-15 16:44

    遗嘱消息怎么订阅,我想通过自己订阅遗嘱消息,然后监听到之后发送离线消息到物联网平台。模拟设备发送离线消息

    0 讨论(0)
提交回复