Heartbeat:
在蓝牙Mesh网络中,Heartbeat(心跳)是一种用于监测设备在线状态和网络连通性的机制。它是由每个设备定期发送的小型消息组成,用于指示设备的存在和活动状态。
Heartbeat的主要目的是确保网络中的设备处于活动状态,并为网络管理提供一些重要的信息。以下是一些关键特点和作用:
-
在线状态检测:通过发送心跳消息,设备可以告知其他设备它们的存在和活动状态。其他设备可以根据接收到的心跳消息来了解设备的在线状态,以便进行必要的操作或通信。
-
网络连通性监测:心跳消息还可以用于检测设备之间的网络连通性。设备可以根据是否收到其他设备的心跳消息来判断它们之间的连接状态,如果连续一段时间未收到心跳消息,可以认为设备之间的连接可能中断。
-
节电优化:心跳消息可以用于优化设备的节能策略。设备可以根据自身的需求和网络状况来调整心跳消息的发送频率,以减少能耗并延长电池寿命。
需要注意的是,Heartbeat并不直接传输数据或控制命令,它仅用于监测设备的在线状态和网络连通性。在蓝牙Mesh网络中,设备之间的实际数据传输和控制是通过消息模型和其他协议实现的。
Heartbaeat的opcode:
和Friend request、Friend offer、Friend Pool等一样的Transport Control message,opcode为0x0A。
Heartbaeat的配置:
心跳行为是使用配置服务器模型(Configuration Server Model)配置的。可以配置必须发送 Heartbeat 消息的地址(通常是 Group Address)、必须发送 Heartbeat 消息的频率以及是无限期发送心跳消息还是限制和指定数量的发送心跳消息。
Heartbeat验证网络可靠性:
心跳消息包含并保持不变,即由心跳发起者设置的初始 TTL。这允许接收者确定消息到达所需的跃点数,从而通过将 TTL 设置为不高于所需值的值来优化他们随后发送到心跳源节点的消息
Heartbeat Publication(心跳发布):
允许设备将自己的状态信息以心跳消息的形式发布到整个网络中。设备可以定期或根据需要发布自己的状态信息,例如设备的电量、传感器数据、可用性等。这些心跳消息可以帮助其他设备了解设备的状态,并根据需要采取相应的措施。
OP:
Config Heartbeat Publication Get |
0x80 0x38 |
Config Heartbeat Publication Set |
0x80 0x39 |
Config Heartbeat Publication Status |
0x06 |
Config Heartbeat Publication Get没有参数。
Config Heartbeat Publication Set参数:
参数 |
大小 |
备注 |
目标地址 |
2 |
被设置的地址 |
计数 |
1 |
要发送的心跳消息数 |
周期 |
1 |
发送心跳信息的时间段 |
TTL |
1 |
将在发送心跳消息时使用的TTL |
特征 |
2 |
位字段,指示在更改时触发心跳消息的特性 |
NetKey Index
|
2 |
NetKey Index
|
心跳发布周期日志状态是一个8位值,它控制周期心跳传输控制消息的节奏。该值表示为2(n-1)秒。例如,值0x04的发布周期为8秒,而值0x07的发布周期为64秒。
两者区别:
Heartbeat是指设备定期发送的小型消息,用于指示设备的存在和活动状态,而Heartbeat Publication是指设备将自己的状态信息以心跳消息的形式发布到整个网络中。Heartbeat是设备发送消息的行为,而Heartbeat Publication是设备将自己的状态信息发布到网络中的行为。