【发布时间】:2021-04-15 13:13:53
【问题描述】:
我将实施某种家庭自动化系统(作为我的学士论文)。我看过 MQTT 协议,我有两个问题。
我看过这个教程:
https://www.youtube.com/watch?v=X04yaaydjFo&list=PLeJ_Vi9u6KisKTSNeRRfqsASNZdHSbo8E&index=13
这里有材料(代码等):
https://randomnerdtutorials.com/raspberry-pi-publishing-mqtt-messages-to-esp8266/
我的第一个问题是:
逻辑是如何在代理或客户端中管理获取的数据/消息(由于某些主题订阅)?从上面的教程看来,如何处理消息的逻辑在客户端中。它应该一直在那里吗?或者是否有可能在经纪人中拥有它?对不起,如果这个问题太“抽象”,我刚开始编程,所以我没有具体的例子。基本上我想要的是尽可能在客户端中拥有“轻量级”程序(因为代理将拥有大量内存和计算能力,而客户端在两者中都非常有限)。
我的第二个问题是:
是否可以让 ESP8266(或任何客户端)进入睡眠状态并唤醒它,比如说每 5 分钟?当然,如果该客户端只发布(并且从不订阅)主题,这应该不是问题。但是当我有客户端时,它可以读取一些传感器,它将在那 5 分钟的周期内发送给代理,并且还可以控制它的一些输出?有没有办法做到这一点?或者如果客户端不可用(如果有一些数据要发布到它并且它当前正在休眠),那么消息就会被抛出?我的想法是,是否有办法在客户醒来后询问经纪人在客户睡眠期间是否有任何已发布的消息?
感谢您提供的所有信息! :)
【问题讨论】:
-
Google MQTT 如何处理 QOS,这应该可以解释您的大部分问题
-
我明白了,当我将 QOS 设置为“至少一次”或“恰好一次”时,代理会尝试发送它,直到客户确认它已收到,对吧?您是否知道(或可能获得有关信息)经纪人尝试重新发送消息的频率?它会立即重新发送全职吗?还是在某些常规周期中(例如 1 秒)?
标签: raspberry-pi mqtt publish-subscribe esp8266 mosquitto