在本地网络上搜索本地 MQTT 服务器

物联网 MQTT
2021-05-31 04:40:16

我目前有一个微控制器 ESP8266,它连接到 mqtt 代理并发送一些消息。我已经在具有 IP 地址的 raspberry pi 上配置了 mqtt 代理192.168.43.164所以现在我已经在微控制器固件中硬编码了 mqtt 代理 IP。但我希望它像在本地网络中搜索 mqtt 服务器,然后连接到它一样。

那么有可能做同样的事情吗??这样的微控制器是否有能力这样做?我已经在谷歌上搜索了很多,但没有找到任何解决方案。请提供一些路径。

谢谢阿布舍克

2个回答

对此的正确响应是针对 LAN 和公共 Internet 使用不同版本的 DNS。

要在本地网络上查找设备,您希望使用mDNS(也称为 Avahi 或 Bonjour)并且您希望使用该_mqtt._tcp服务发布您的代理

在树莓派上设置Avahi发布服务比较简单,Arduino有mDNS库可以做查找。

同样,为了在 Internet 上为给定组织查找公共 MQTT 代理,他们应该使用服务记录(SRV)发布其代理详细信息,例如 example.com 将在以下位置发布 SRV 记录_mqtt._tcp.example.com

虽然我已经接受了@hardillb 的回答。但是我写这个答案是为了分享我在研究这个问题时遇到的另一种方法。

好的,所以想法是使用 IP 广播。所以我所做的是,我的边缘设备不断地通过包含自身 IP 的广播 IP 发送 UDP 消息。微控制器 ESP 侦听 UDP 消息并从中提取 IP 并连接到它。

所以优点是,如果系统中有不止一个边缘设备,很容易在运行时为 UC 分配不同的边缘。这也保持了负载平衡。

谢谢