如果应用程序需要以下内容,MQTT 是一个不错的选择:
- 在设备之间或从设备到服务器的数据传输
- 数据传输的可靠性
- 扩展能力
- 与低功耗设备的兼容性
- 对不可靠的互联网连接很强大
听起来您的应用程序有这些要求,MQTT 将是一个足够的解决方案。
当设备被带到外面远离家庭 wifi 时,arduino 可能会间歇性地失去与 wifi 的连接。
MQTT 使用不同的数据包来完成不同的任务,例如连接到服务器。
根据文档,“如果服务器在建立网络连接后的合理时间内没有收到 CONNECT 数据包,服务器应该关闭网络连接。”
当没有连接的 ACK 确认时,不会发送任何数据。然后,通过 CONNECT 数据包,当回到 wifi 范围时,客户端也将自动重新连接到服务器。
您可以在 MQTT 中将服务质量 (QoS) 调整为三个不同的级别,以确保服务器接收到您的所有数据:
- QoS 0“最多一次”是默认值,不保证服务器收到消息。
- QoS 1“至少一次”继续发送消息,直到确认接收。有可能发送重复的消息
- QoS 2“恰好一次”确保发送消息时没有重复的风险。
数据很可能只是整数
MQTT 支持的最大负载大小为 256 MB,足以支持整数传输。
我们只需要每分钟左右发送一条消息
MQTT 非常适合网络带宽非常宝贵的环境。考虑到您只发送整数并假设您一次不发送 256MB 的整数,每分钟 1 条消息的带宽非常低。
参考:https : //docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901234