Ai-WB2 mDNS Demo:局域网零配置设备发现 #44
AmateurNoobDog
started this conversation in
Show and tell(技术分享)
Replies: 2 comments 1 reply
|
这个要点赞,我都没折腾过的功能 |
1 reply
|
厉害啊狗哥 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Ai-WB2 mDNS Demo:局域网零配置设备发现
背景
在 IoT 场景中,设备获取 IP 后如何被手机/电脑发现?传统做法是硬编码 IP 或依赖云端,但:
mDNS(Multicast DNS)是 零配置网络 的标准方案,Apple Bonjour、Google Home、Avahi 都基于它。设备在局域网广播自己的 hostname 和服务,其他设备直接用
<hostname>.local访问,无需任何服务器。本 demo 在 Ai-WB2(BL602)上演示 mDNS responder,让设备开机即被发现。
功能亮点
快速上手
1. 配置 WiFi
编辑
mdns/main.c,修改 SSID 和密码:2. 编译烧录
cd applications/protocols/mdns make -j6 make flash3. 查看串口输出
打开串口终端(115200 波特率),看到以下内容表示成功:
局域网验证
设备注册成功后,在同一局域网的电脑/手机上验证:
Linux(Avahi)
macOS(dns-sd)
Windows
Windows 10+ 原生支持 mDNS,直接在浏览器访问:
或安装 Bonjour Print Services 获得完整支持。
代码解读
核心 mDNS 注册流程只有 4 步:
TXT 回调用于附带设备元数据:
自定义指南
改服务类型
修改
main.c中的宏定义,适配你的应用:添加更多 TXT 记录
在
mdns_txt_cb()中增加你需要的字段:改 hostname 前缀
文件结构
API 参考
mdns_resp_init()mdns_resp_add_netif(netif, hostname, ttl)mdns_resp_add_service(netif, hostname, svc, proto, port, ttl, txt_fn, userdata)mdns_resp_add_service_txtitem(service, txt, len)mdns_resp_deinit()FAQ
Q: hostname 重复怎么办?
mDNS 协议内置冲突检测(probing)。如果两个设备用了相同 hostname,后加入的设备会被协议层拒绝并触发 rename。
Q: 能同时注册多个服务吗?
可以。对同一 netif 多次调用
mdns_resp_add_service()即可,例如同时注册_http._tcp和_mqtt._tcp。Q: 支持 IPv6 吗?
lwIP mDNS 实现支持 IPv4 和 IPv6,取决于你的网络接口是否启用了 IPv6。
Q: 能被 Home Assistant 自动发现吗?
是的。将服务类型改为
_aitinker._tcp并按 HA 协议填写 TXT 记录,即可被 Home Assistant 自动发现。相关资源
如有问题,欢迎在 Issues 提问。
附件:
mdns_demo.zip
All reactions