有A、B、C三个局域网,hass主机部署在A局域网下,没有经过特殊设置之前,hass默认只能主动发现同一个网段(A网段)下的设备,现在希望能主动发现B网段和C网段的设备。
经过查阅 hass 的文档,了解到其主动发现的原理是通过mDNS
协议。于是我们的目标就变成了如何让mDNS
跨局域网工作。
zerotier
打通三个局域网,可以参考此文章)Avahi
avahi-daemon-service-http
opkg 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个局域网内的新设备。