如何解决是否可以在睡眠期间发布到 MQTT 客户端?
我将实施某种家庭自动化系统(作为我的学士论文)。我查看了 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 分钟的周期内发送给代理,并且还可以控制它的一些输出?有没有办法做到这一点?或者如果客户端不可用(如果有一些数据要发布到它并且它当前正在休眠),则消息只是被抛出?我的想法是,是否有办法在客户醒来后询问经纪人是否在客户睡眠期间向他们发布了任何消息?
感谢您提供的每一条信息! :)
解决方法
1.回答
消息处理逻辑要完全由客户端实现。使用 MQTT,没有“流”处理,例如阿帕奇卡夫卡。但是,您当然可以让中间(非物联网)客户端订阅原始主题,准备修改消息并将其发布到新主题 - 物联网设备随后将订阅该主题.
2.回答
您可以告诉经纪人retain a message。但是,每个主题最多保留 1 条消息。
附言对于未来,请在 SO 上坚持 1-question-1-post。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。