遗嘱消息

MQTT协议的遗嘱消息,用于在设备离线时向其他设备告知其已离线。如果设备异常断开且在一段时间内未重连,物联网平台会代为发送遗嘱消息。遗嘱消息在MQTT 3.1.1标准中已定义,阿里云物联网平台在MQTT 5.0接入时支持这个特性。本文为您介绍遗嘱消息的概念、交互过程及使用场景。

背景信息

遗嘱消息

image..png

  • 遗嘱消息的概念:设备与物联网平台建立连接时会携带遗嘱消息,如果设备异常断开连接,并且没有在遗嘱延时间隔(默认为0)内重联,该遗嘱消息会由物联网平台代为发布给订阅者,然后删除遗嘱消息。如果设备正常断开连接,物联网平台直接删除且不会发布遗嘱消息。

  • 遗嘱消息的内容:与正常发布的消息内容基本相同,包括主题,消息内容,服务等级(Qos),保留标记(retain)、用户属性、消息过期等。

  • 遗嘱消息的管理:

    • 当设备和物联网平台保持连接时,不能修改遗嘱消息。如果需要修改,必须断开设备和平台的连接,在重新连接时携带新的遗嘱消息。

    • 遗嘱消息支持消息过期。如果设备消息内容一段时间后失效例如温度控制,可以设置消息过期

    • 遗嘱消息与会话过期无关。即使会话过期,也不影响遗嘱消息。

    • 如果网络信号较弱或不稳定,建议设置遗嘱过期时间间隔WillDelayInterval,避免设备频繁上下线而导致遗嘱消息频繁被推送。

  • 设备异常断开的场景:

    • 因为网络故障或波动,设备在保持连接周期内未能通讯,所以MQTT连接被服务端关闭。

    • 设备意外掉电,服务端识别到网络断开。

    • 设备尝试进行不被允许的操作而被服务端关闭MQTT连接,例如订阅自身权限以外的主题等。

使用场景

设备异常分析

物联网设备接入物联网平台,当设备状态发生变化如设备上线、设备下线时,物联网平台会向业务服务器或规则引擎推送设备状态消息topic: /as/mqtt/status/${productKey}/${deviceName},该消息中只包含设备的连接状态信息。如果想获得更多数据用于设备异常分析,可以使用遗嘱消息,遗嘱消息可包含环境信息等设备的详细状态。image..png