我智能家居和家庭实验室的方方面面

过去我曾写过几篇帖子,介绍我的家庭网络及智能家居自动化系统的整体布局情况。然而,随着时间的推移,这一切发生了翻天覆地的变化,如今正是时候更新一篇新文章!
这一次,我打算把所有内容整合到同一篇文章中。
第一部分:网络栈
我的网络基础设施完全采用Ubiquity硬件,原因很简单:我想要一款专为高级用户打造、同时又不会带来太多学习曲线的设备。虽然在处理这类任务时,我通常已经具备“超级用户”的水准,但现代网络往往极其复杂,因此我更倾向于选择位于曲线中间的位置,这样就能避免因配置错误而无法正常使用互联网所带来的压力。
顺便说一句,在正式开始之前,我想提醒大家:对于普通的家庭网络而言,这套配置其实完全有些“过头”了!我之所以选择这样的方案,只是觉得它很酷。
所以,如果你阅读这篇文章是因为想寻找设备推荐,那么请记住:其实,只要使用性能低得多的设备,很可能就已经足够满足你的需求了。
路由器:云网关光纤
在选择路由器时,我选择了云网关光纤——这款路由器在功能上堪称物超所值。它不仅配备了三个10 Gbps端口(其中一个是RJ45接口,还包含一个用于WAN的端口),甚至还配备了一个PoE+接口,可以为AP供电。
通常来说,这样的设备价格会非常高,但不知为何,它竟然……没有涨价,而且我想,市场也对此达成了一致——因为要找到这样一台路由器,简直难如登天。
截至撰写本文时,几乎在所有地方都已售罄。
AP(Wi-Fi):U7 Pro XG
在选择AP时,我选择了U7 Pro XG——这是一款支持6 GHz频段的Wi-Fi 7路由器。不知为何,这款设备甚至配备了10 Gbps的上行链路接口,尽管路由器上的PoE+接口实际只能达到2.5 Gbps,但与普通版本相比,这次升级的成本非常低廉,因此我毫不犹豫地选择了它。
幸运的是,我家里已经拥有Wi-Fi 7设备(最新的iPhone),所以我完全可以并且已经在积极利用这一技术。
交换机:Flex 2.5G
为了获得最高的性能和最可靠的连接,我更倾向于通过以太网进行设备互联。因此,我特别选择了Flex 2.5G 交换机,因为它配备了与路由器相同的SFP+接口,让我能够通过光纤将两者相连,从而在两者之间实现纯净的10 Gbps连接。
此外,我在公寓的另一端还安装了另一台较小规格的交换机。当然,这意味着我需要铺设长长的以太网线,从天花板一直延伸到公寓的各个房间。
DNS:Pi-Hole
我使用一台简单的树莓派3b,运行Pi-Hole作为个人DNS服务器。它运行Unbound,并设置了定时任务,每月自动更新根DNS服务器列表。不过,我并没有将其全局启用;只有特定的设备会使用它,因为我希望避免客人在使用Pi-Hole时遇到问题——因为Pi-Hole会让某些网站的导航变得稍微困难一些(有时它会屏蔽掉本该被屏蔽的内容,反而让网站本身出现故障)。
VPN:WireGuard
我的路由器内置了WireGuard支持,因此每当我不用家里的Wi-Fi时,我都会使用它来让手机连接到我家的网络。主要用途在于,我可以随时随地利用Pi-Hole,因此VPN会自动将Pi-Hole设置为连接设备的DNS服务器。
我也会偶尔使用它,远程访问路由器的管理控制台。除此之外,没有任何其他流量会经过这个VPN。
IP栈:IPv4与IPv6双栈
我特意在自己的网络中启用了IPv6并进行了配置,唯一的理由就是觉得这样做很酷。下面提到的每个VLAN和防火墙功能,都同时支持IPv4和IPv6。
在IPv6方面,内部网络采用SLAAC来分配前缀,并设置了ULAs,以方便编写各防火墙规则的IPv6版本。
VLAN与防火墙的设置
如今,我的网络由多种设备组成:既有我的手机等“常规”设备,也有服务器,还有各种随机的物联网设备。为了高效且安全地连接这些设备,我采用了以下配置:
- VLAN1:管理区
- 仅包含Ubiquity硬件,对一切资源拥有完全访问权限。
- VLAN10:可信区
- 手机、电脑以及我的本地服务器(Pi-Hole等)。除了网关和管理控制台的访问权限外,对所有资源几乎拥有完全访问权限,但我已将这些权限限制在特定设备范围内,确保只有少数设备能够访问。
- VLAN20:物联网区
- 所有通过Wi-Fi运作的家庭自动化相关设备。此VLAN完全封闭,禁止任何外部网络访问,甚至设备之间也无法直接通信(通过Wi-Fi客户端隔离)。它们只允许极少数特定的IP地址和端口例外,这些例外由我在防火墙层面自行管控,例如允许部分设备向我的Home Assistant发送特定的信息,以实现自动化操作。除此之外,它们无法执行任何其他操作。
- VLAN90:VPN区
- 为前面提到的WireGuard集成提供动力。默认情况下完全封闭,仅设置一套极简的防火墙规则,以允许我的手机IP访问Pi-Hole和管理控制台。
Wi-Fi
我的AP共暴露了三个Wi-Fi SSID:
- “Max”网络:5GHz和6GHz频段,支持WPA3、Wi-Fi 7特性,基本上是一个只为现代设备开启现代化功能的网络。
- “Legacy”网络:2.4GHz频段,未启用任何现代功能。主要用于旧设备,比如任天堂Switch,由于某种原因(要么是因为它只支持2.4GHz,要么是因为某些现代功能导致其无法正常工作),无法连接到“Max”网络。
- “IoT”网络:与“Legacy”网络类似,但更加精简。将设备连接至隔离的IoT VLAN。
为了最大化性能与效率,我偶尔会利用AP的无线扫描功能,根据不同的频段,精准调整信道选择和发射功率等参数,以获得最优的网络配置。
关于第一部分的最终思考
我对自己的硬件和配置选择感到非常满意。正如我之前所说,这套方案对于我日常使用家庭网络的实际需求而言,确实有些“过头”,但正是如此,我大大提升了自身的网络知识与能力,而这正是我此次追求的核心目标 :)
第二部分:智能家居/家居自动化
我智能家居中的所有设备,都围绕着两个核心设备展开:一个Home Assistant服务器,以及一个Alexa。
我像许多其他人一样,使用家庭助理操作系统。我常把Home Assistant描述为“强效版的Alexa”。借助Alexa,你可以购买智能设备,将它们与Alexa绑定,并根据时间、天气等条件,设置自动化流程来控制这些设备。
然而,Alexa的问题在于:首先,设备必须专门支持Alexa;其次,自动化功能本身非常有限,只能完成一些简单的操作。
Home Assistant则没有这样的限制。Home Assistant是开源的,拥有活跃的社区,这意味着你可以找到各种插件,轻松实现几乎任何你想到的集成;即使没有现成的插件,你也可以凭借自己的编程能力,自己开发出合适的插件!
Home Assistant具有极强的可扩展性,因此非常适合那些希望搭建复杂自动化流程、或以不同寻常的方式集成不常见的设备的高级用户。
主服务器:树莓派5 w/ Zigbee Dongle 运行HAOS
很长一段时间里,我运行HAOS的硬件都是简单的树莓派3b和一张SD卡。HA社区普遍认为,这种配置是个糟糕的选择(3b性能较弱,而且如果过度使用SD卡,可能会导致存储卡损坏),但根据我的经验,只要设备数量不多、自动化流程不多、集成不多,这样的配置其实完全没问题。
它是一个不错的起点,对我而言,它在我使用了几年后,依然能很好地满足需求。
如今,我已经放弃了3b,转而使用树莓派5,配备8GB内存,搭配256GB官方Raspberry Pi NVMe SSD,并封装在Argon One V3外壳中。这使得HAOS拥有足够的算力和散热能力,能够轻松应对我所需的一切任务。
目前,我通过有线连接运行服务器,但曾经有一段时间,我也是通过Wi-Fi来运行它。社区建议,从延迟的角度来看,这种方式并不理想,但我从未遇到过任何此类问题。
虽然有线连接的速度确实快得多,但Wi-Fi的延迟从未真正困扰过我,因此我完全可以确认:如果你无法用网线连接到服务器,通过Wi-Fi运行HAOS也完全没问题。
服务器上还装有一个Sonoff ZBDongle-E USB天线,用于让HAOS识别并驱动Zigbee设备——我们稍后会更详细地介绍这一点。
副服务器:亚马逊Alexa,用于语音控制和Matter桥接
配合HA服务器,我使用Alexa完成了HA服务器自身无法独立完成的两项任务:语音控制和Matter桥接。由于我没有HA专用的Matter天线,我便利用Alexa来托管自己购买的Matter设备,然后通过HA的Matter Hub 自定义集成,让Alexa能够“共享”这些设备给我的HA服务器。
这样一来,即使在实际操作中,有些设备实际上是由Alexa本身“拥有”,我依然可以通过HA的UI来掌控一切。随后,我也利用同样的集成,实现了相反的功能(将由HA“拥有”的设备共享给Alexa),从而让我能够通过语音指令,操控家中的一切设备。
仪表盘平板
我使用一台通用的华为安卓平板,放置在电视下方,不仅用作实体仪表盘,闲时还能充当数字相册:
仪表盘功能本身,是通过墙面板实现的——它将平板的控制界面暴露给HA,而相册逻辑则由HA的洛夫莱斯-墙板自定义集成负责。我把照片托管在HA本身。
由于这是一台Wi-Fi设备,它会连接到IoT VLAN,从而完全与外界隔绝(尤其是因为这是一台中国产的安卓设备)。
通信:Wi-Fi、蓝牙、Zigbee、Matter(Thread)
我的智能设备采用不同的协议,具体取决于设备类型。目前,Zigbee占据了绝大多数设备,而Matter则通过Thread(Zigbee的“对应”协议)正逐渐追赶上来。
如果你完全不知道这些术语是什么意思,Zigbee和Thread都是专门为物联网设备设计的替代无线无线电通信系统。与Wi-Fi不同,它们能耗极低,采用网状网络结构,设备之间可以彼此传播信息(而Wi-Fi采用的是“星型”网络,所有设备都必须通过路由器才能实现通信),因此它们非常适合用于智能家居的自动化配置。
Matter则是一种协议,旨在适应不同设备可能需要通信能力的事实。在过去,要让一台Wi-Fi设备与一台不使用Wi-Fi的设备“对话”,根本无从下手;但如今,只要这两台设备都支持Matter,只要你在某个地方再配备一台第三台设备,作为这两台设备之间的“翻译器”(在协议中被称为“边界路由器”),它们就能实现通信。
这就是为什么当你购买使用Thread的Matter设备时,会看到提示信息:你需要一台“Thread边界路由器”才能正常使用;毕竟,你的家庭主要是Wi-Fi/Ethernet网络,因此需要某样设备,能够帮你将Thread命令在两台设备之间来回转换。
如今,大多数现代智能家居中枢,比如Alexa,都可以充当这样的路由器,并且也被宣传为“路由器”。
我之所以最常使用Zigbee,仅仅是因为在我第一次购买这些设备时,Matter通过Thread还尚未成为主流。如今,大多数新设备似乎根本不支持Zigbee(而是选择完全使用Matter通过Thread),因此我预计,随着越来越多的设备开始支持Matter,我使用Zigbee的频率会慢慢降低,直到最终所有设备都通过Matter来运行。
通过ESP32实现蓝牙代理
我还要特别提及的智能家居另一个关键组件是蓝牙代理。我的部分设备通过蓝牙运行(窗帘电机、植物监测器),但由于HA服务器本身被置于柜内,这些设备在通过蓝牙时完全无法接收信号。
解决这个问题的办法,是找一台设备充当Wi-Fi与蓝牙之间的桥梁,并将其放置在蓝牙设备附近。这样一来,大部分数据都会通过Wi-Fi传输,而蓝牙连接本身也能获得完美的信号,因为桥梁就紧邻这些设备。
我使用一台小巧廉价的ESP32 S3芯片来完成这项工作。这是一个非常常见的应用场景,因此HA的ESPHome插件内置了工具,可以将这类设备刷入正确的固件,并将其连接到HA本身。
设置这一功能非常简单。
设备与自动化
详细列出我拥有的每一件设备,既耗时又可能毫无趣处,因此这里只做个小总结:我买了灯具、门传感器、按钮、遥控器、二氧化碳和空气质量传感器、植物监测器、可自定义显示面板以展示任意我想要的内容、智能开关、运动传感器、智能电视、扫地机器人,清单还在继续。
所有设备都连接到HA,并协同工作,共同实现大量自动化流程,帮助我简化生活。我还使用Home Assistant应用本身,进一步拓展自动化功能的场景(主要利用GPS以及推送通知功能)。
我最喜欢的自动化之一是:
- 根据太阳当前位置,调节大厅灯光的色温
- 当电视打开时关闭仪表盘屏幕,电视关闭后再次开启时再重新点亮,除非最近刚刚触发了“进入睡眠时间”自动化,否则该自动化应避免再次开启电视
- 根据运动情况,自动开启或关闭大厅灯光,除非夜深了,或者遥控器已被手动调整过灯光,此时自动化应保持静默
- 当夜幕降临,自动开启客厅灯光;夜越深,灯光颜色越偏红,以减少我睡前接触蓝光的量
- 利用HA的脚本功能,将任意一组命令公开为一个专属实体,以便将其作为设备暴露给Alexa(从而让脚本能够通过语音触发)
- “旅行模式”:一条脚本/语音指令,可以禁用所有基于时间的自动化,并关闭整个家庭,以便在我要去别处睡觉时节省能源
- 在家中布置物理按钮,为它们预设动作,比如打开/关闭所有窗帘,或者在睡眠时间关闭所有设备
- 当我的某株植物需要浇水时,会在智能显示屏上显示提醒
- 当3D打印机完成打印时,收到手机通知
重要提示:不使用智能锁
我不使用智能锁,因为它们让我感到不安。有时候,我甚至觉得,如果能用与打开大楼大门相同的RFID标签来开门,那该多酷啊!但我也意识到,每次外出旅行时,一想到门会突然自行解锁,我总会感到紧张不已。
因此,这实际上成了我生活中一个明确不想引入任何科技或自动化功能的领域。
关于第二部分的最终思考
正如你所见,这与编写任何软件并无二致。最大的挑战在于,要提供一种抽象层,让HA能够收集并发送数据到那些平台本身并不原生支持的设备。
不过,根据我的经验,即便是在市面上最小众的设备中,社区早已开发出了即插即用的解决方案,这实在令人惊叹。
在智能家居和家庭实验室中,最重要的是要确保自己能让生活变得更轻松。我经常看到人们犯的一个错误,就是把自己的网络和配置弄得过于复杂,结果反而让生活变得更加艰难。
之所以这里详细介绍的所有配置都能为我所用,是因为它们经过精心规划,只为服务于我,因此我从未觉得自己的家在与我作对! :)