有A、B、C三个局域网,hass主机部署在A局域网下,没有经过特殊设置之前,hass默认只能主动发现同一个网段(A网段)下的设备,现在希望能主动发现B网段和C网段的设备。
经过查阅 hass 的文档,了解到其主动发现的原理是通过mDNS协议。于是我们的目标就变成了如何让mDNS跨局域网工作。
zerotier打通三个局域网,可以参考此文章)Avahiavahi-daemon-service-httpopkg update
opkg install avahi-daemon-service-http
/etc/avahi/avahi-daemon.conf 文件,取消 enable-reflector 选项的注释并将其值设置为 yes:enable-reflector=yes
/etc/init.d/avahi-daemon restart
/etc/init.d/avahi-daemon status
如果守护进程正在运行,应该会看到类似于 “active (running)” 或 “running” 的状态信息。
查看Avahi相关日志:
logread | grep avahi
在其中一个局域网内的Linux设备下安装使用avahi-browse工具检查:
$ sudo apt-get install avahi-utils
$ avahi-browse -a -t
正常将会显示三个局域网下所有可用的服务,包括它们的主机名、IP 地址和端口号。
configuration.yaml文件中,添加以下内容:zeroconf:
重启完成后就可以在hass的配置——设备与服务中通过mDNS自动发现3个局域网内的新设备。