1. 项目概述如果你家里有个泳池那多半体会过维护它的繁琐。每周测水质、手动加氯、调节酸碱度夏天还得盯着水泵的过滤时间稍不留神水质就变差不仅影响游泳体验还可能滋生细菌。市面上的全自动泳池控制系统动辄数千甚至上万美元而且往往是封闭系统坏了只能找原厂想加点新功能更是难上加难。几年前我开始琢磨能不能用玩智能家居那套思路来改造泳池。核心目标很明确用最低的成本实现最核心的自动化功能并且整个系统要完全开源、可定制、易维护。经过几轮迭代最终成型的就是这个基于树莓派和Home Assistant的“Raspipool”系统。它不是什么高深莫测的黑科技本质上就是把物联网那套“感知-决策-执行”的逻辑用在了泳池上。通过几个关键传感器实时“感知”水质由树莓派这个“大脑”根据预设逻辑“决策”再通过继电器和蠕动泵等“手脚”去“执行”加药、过滤等操作。这套系统的精髓在于模块化和去中心化智能。我们不买那种集成了pH检测和氯添加的“智能盐氯机”也不买能自己控制过滤周期的“智能水泵”。相反我们选择最基础、最便宜的设备——一个只管抽水的水泵一个只管滴药的蠕动泵。所有的“智能”都集中到树莓派这个小盒子里。这样做的好处太多了某个部件坏了换一个同类型的便宜货就行想增加新功能比如监测水位、控制灯光直接在树莓派上接新传感器和继电器整个系统的逻辑完全由你编写的自动化规则控制想怎么改就怎么改。整个项目的硬件成本可以控制在350到500美元之间远低于商用系统。你需要付出的主要是一些动手组装的时间和学习的热情。接下来我会把整个从零开始的搭建过程、背后的原理、我踩过的坑以及积累的经验毫无保留地分享出来。无论你是树莓派玩家、Home Assistant爱好者还是单纯想解放双手的泳池主这篇指南都能带你走通这条路。2. 核心设计思路与方案选型在动手之前理清设计思路至关重要。泳池自动化的核心任务无非是维持水质的清洁、平衡与循环。我们需要拆解这些任务并为每个环节选择最合适、最具性价比的技术方案。2.1 系统架构总览整个系统的架构可以概括为“一体核心三层联动”。一体核心以运行Home Assistant的树莓派作为唯一的控制与决策中心。它负责数据汇聚、逻辑运算和指令下发。三层联动感知层由pH传感器、ORP氧化还原电位传感器和温度传感器组成负责7x24小时采集泳池水的最关键化学与物理参数。网络层树莓派本身通过Wi-Fi接入家庭网络使得我们能在任何地方通过网页或手机App访问控制界面。传感器与树莓派之间则通过可靠的UART串口或One-Wire总线通信。执行层由继电器模块控制主水泵的启停与调速如果支持由独立的蠕动泵执行盐酸降pH和次氯酸钠增氯的精准注入。这个架构的优势在于责任清晰。传感器只负责读数执行器只负责动作所有复杂的判断比如“ORP值低了需要加氯”、“pH值高了需要加酸”都由高度可定制的Home Assistant自动化来完成。这种设计避免了“智能”外围设备常见的功能冗余和厂商锁定问题。2.2 关键组件选型解析为什么是这些组件每一个选择背后都有成本和可靠性的权衡。1. 控制中心树莓派的选择树莓派Zero W在性能上勉强够用但我强烈推荐至少使用树莓派3B或更高型号。原因有三首先更强大的CPU和内存能保证Home Assistant以及未来可能增加的其他服务如数据库、监控摄像头流畅运行。其次标准尺寸的GPIO接口和多个USB端口让你在连接继电器HAT、USB设备时更加从容避免了使用转接头的麻烦和潜在的不稳定。最后更好的散热和供电设计意味着系统能长期稳定运行。注意供电是树莓派的生命线尤其是当它连接多个外设时。务必使用官方或质量可靠的5V/2.5A以上Micro-USB电源适配器。劣质电源导致的电压波动可能会让GPIO读取的传感器数据飘忽不定甚至造成树莓派意外重启这在控制系统中是灾难性的。2. 水质传感精度与成本的平衡水质监测是系统的眼睛这部分不能太省。pH与ORP传感器我选择了Atlas Scientific的EZO系列电路板搭配标准BNC接口的探头。这是整个项目里单价较高的部分但非常值得。EZO电路板将复杂的模拟信号处理、温度补偿和数字通信集成在一块小板上通过UART输出稳定、校准好的数字值极大简化了开发。相比一些需要自己搭建放大电路、稳定性差的模拟传感器方案EZO能省去无数调试的烦恼数据可靠性高。温度传感器选用常见的DS18B20防水探头。它采用One-Wire总线只需一根数据线加电源和地线即可工作成本极低精度对于泳池应用±0.5°C完全足够。它的主要作用是给pH和ORP读数提供温度补偿参考虽然EZO板子自带温补但拥有独立的水温数据对整体监控很有帮助。3. 执行机构安全与可靠是第一要务执行机构直接控制强电和设备安全设计必须万无一失。继电器HAT用于控制逻辑信号。我选用的是可堆叠的4路或6路GPIO继电器模块。它通过树莓派GPIO的3.3V信号控制继电器吸合但其继电器触点本身只能承受小电流如5A阻性负载。切记它绝不能直接连接水泵电机电机属于感性负载启动瞬间电流浪涌电流可能是额定电流的5-7倍会瞬间烧毁这个小继电器。交流接触器这才是控制水泵的“真正开关”。它是一个由继电器HAT的小触点控制的“大开关”。当继电器HAT吸合会给交流接触器的线圈通电通常是24V或220V AC从而吸合其内部的大电流触点如25A以上通断水泵的主电源。选择接触器时务必查看其规格表确认其针对电机类负载AC-3类别的额定电流大于你的水泵满载电流并留有一定余量。蠕动泵用于化学药剂注入。选择12V供电的型号通过继电器控制其电源即可。关键参数是“流量”你需要根据你的药剂浓度和泳池容积计算出需要注入的时间。蠕动泵的优点是药剂只流经软管不与泵体接触避免了腐蚀。4. 软件平台为什么是Home AssistantHome AssistantHA不仅仅是一个智能家居平台它更是一个强大的物联网集成与自动化引擎。选择HA而非直接编写Python脚本的原因包括强大的UI与仪表盘无需前端开发就能获得专业的Web和移动端控制界面实时显示水质曲线、设备状态。丰富的集成与生态系统你可以轻松地将天气信息、日历、通知服务如Telegram、Pushbullet集成进来。例如创建“如果明天预报下雨则暂停加氯”这样的高级自动化。配置即代码所有设备、自动化、界面都以YAML文件定义易于版本管理、备份和迁移。活跃的社区任何遇到的问题几乎都能在社区找到答案或灵感。3. 硬件搭建与电路连接详解理论清晰后我们入动手环节。硬件部分的搭建需要耐心和细心尤其是涉及强电部分安全规范必须遵守。3.1 传感器旁路管的制作与安装传感器不能直接扔进泳池也不能直接插入主循环管道影响水流且安装不便。我们需要制作一个“旁路管”。原理与位置旁路管是一段并联在主循环管道上的小支路。水流经过它时速度变缓为传感器提供了稳定、有代表性的水样检测环境。最佳安装位置是过滤器的出水口和泵的进水口之间。这里的压力相对较低且水流已经过滤能保护传感器探头。安装时确保这段旁路管水平放置并尽可能位于管路低点以保证其内部始终充满水不会因积气导致读数不准。材料与制作材料直径50mm的PVC管用于放置探头、相应直径的PVC三通、弯头、管箍卡箍、PVC胶水。总成本很低。步骤关闭泳池泵电源关闭相关阀门。在主循环管路上选定位置测量并截取两段管路为安装三通留出空间。将两个三通接入主路然后用PVC管和弯头连接这两个三通构成一个“U”形或“n”形的旁路。在旁路管的水平段上钻三个孔安装专用的传感器螺纹接口或使用密封性好的电缆接头用于固定pH、ORP和温度探头。关键技巧所有PVC部件先不涂胶水进行干装配确保尺寸合适、探头安装顺利。确认无误后再拆开逐一涂胶水正式粘合。粘合前务必用砂纸打磨接口并确保PVC胶水涂匀粘合后保持十几秒不动。3.2 树莓派与核心传感器连接这是系统的“神经中枢”连接。1. DS18B20温度传感器连接 DS18B20使用One-Wire协议。连接非常简单红线VDD- 树莓派GPIO的3.3V引脚如Pin 1。黑线GND- 树莓派GPIO的GND引脚如Pin 6。黄线DQ数据- 树莓派GPIO的GPIO4Pin 7这是一个常用的One-Wire引脚。在数据线黄线和3.3V电源线红线之间需要连接一个4.7kΩ的上拉电阻。很多DS18B20模块已经内置了这个电阻购买时需确认。如果没有必须自己添加否则通信会不稳定。2. Atlas Scientific EZO传感器连接 EZO板子需要连接到树莓派的UART串口。树莓派3B/4有多个UART我们通常使用主UART/dev/ttyS0和额外的UART1。供电EZO板子需要3.3V-5V供电直接从树莓派GPIO的5VPin 2或4和GND取电即可。通信EZO板的TX接树莓派GPIO的RX接收端。EZO板的RX接树莓派GPIO的TX发送端。例如将pH EZO板连接到主UARTGPIO14/TXD, GPIO15/RXD将ORP EZO板连接到我们启用的UART1GPIO32/TXD1, GPIO33/RXD1。树莓派UART配置 编辑/boot/config.txt文件添加或修改以下行# 启用UART enable_uart1 # 禁用蓝牙释放主UARTttyAMA0树莓派3B/4后主UART默认分配给蓝牙了 dtoverlaypi3-disable-bt # 启用额外的UART1并指定引脚 dtoverlayuart1,txd1_pin32,rxd1_pin33修改后重启树莓派。你可以使用ls /dev/tty*命令查看是否出现了/dev/ttyAMA0主UART和/dev/ttyS0我们启用的UART1设备。实操心得连接EZO板时务必仔细核对引脚定义。接反TX/RX会导致无法通信。建议先用USB转TTL模块在电脑上测试EZO板是否正常工作并完成初步校准然后再接入树莓派这样可以排除硬件故障。3.3 继电器与强电控制回路连接这是最需要谨慎对待的部分涉及220V或110V强电。1. 安全第一原则所有操作必须在完全断电的情况下进行。如果你不熟悉强电布线请务必咨询或聘请专业电工。使用合适的线径如控制水泵用1.5或2.5平方毫米的铜线所有接线点必须牢固最好使用接线端子。强电部分必须装入绝缘、密封的防水电气盒中。2. 控制逻辑图解析 我们的目标是使用树莓派GPIO控制的小型继电器HAT去驱动一个大功率交流接触器再由接触器控制水泵。控制回路低电压/电流树莓派GPIO - 继电器HAT的某一路继电器触点 - 交流接触器的线圈A1/A2。当树莓派输出高电平继电器HAT吸合接触器线圈得电。主回路高电压/电流电源火线L - 接触器的主触点输入端 - 接触器主触点输出端 - 水泵电机 - 电源零线N。当接触器线圈得电主触点吸合水泵通电运行。双速水泵控制如果需要控制双速泵高速/低速需要两个接触器。接线逻辑是一个接触器控制泵的通断另一个接触器切换电机绕组的接法高速或低速。具体接线需严格按照水泵的接线图进行。3. 可选安全增强Sonoff POW R2这是一个非常实用的模块。你可以将它串联在水泵的供电线路中。它不仅能精确测量水泵的实时功率和耗电量还能作为一个安全开关。在Home Assistant中你可以设置一个自动化如果水泵被指令开启但Sonoff POW检测到的功率低于某个阈值比如50瓦表明水泵可能卡住没启动或功率异常高表明过载则立即触发警报并切断水泵电源防止电机烧毁。4. 手动/自动切换自动化系统需要维护。务必在电路中加入一个手动/自动切换开关或使用带手动操作杆的接触器。当开关打到“手动”档时系统绕过树莓派控制可以直接启停水泵便于检修和紧急操作。4. 软件配置与Home Assistant集成硬件连接妥当后我们让系统“活”起来。软件部分的核心是Home Assistant的配置。4.1 Home Assistant基础安装与网络配置首先在树莓派上安装Home Assistant。对于新手最推荐的方法是使用Home Assistant Operating System (HAOS)镜像。它是一个专为HA定制的完整操作系统包含了HA核心、Supervisor、插件商店等所有组件管理和更新都非常方便。从Home Assistant官网下载对应树莓派型号的HAOS镜像。使用Raspberry Pi Imager或其他工具将镜像写入SD卡。将SD卡插入树莓派连接网线或首次启动后配置Wi-Fi上电。等待约20分钟然后在浏览器中输入http://homeassistant.local:8123或树莓派的IP地址即可进入初始化界面。初始化完成后首要任务是配置稳定的网络。如果使用Wi-Fi建议在HA的“配置” - “系统” - “网络”中设置静态IP或者在你的路由器上为树莓派的MAC地址分配固定IP。这能避免IP变化导致访问失败。4.2 传感器与执行器在HA中的配置HA通过“集成”和“配置YAML文件”来识别和管理设备。1. 配置One-Wire温度传感器 在configuration.yaml文件中添加# 启用One-Wire总线 onewire: # GPIO4 是常用的One-Wire引脚 - gpio: 4 # 可选为传感器设置一个友好的名称和ID names: 28-xxxxxxxxxxxx: pool_temperature重启HA后你应该能在“实体”中看到一个名为sensor.pool_temperature的新传感器。2. 配置Atlas Scientific EZO传感器通过UART 这需要用到自定义集成。将项目GitHub仓库中的custom_components文件夹复制到你的HA配置目录通常是/config或/home/homeassistant/.homeassistant。然后在configuration.yaml中配置# 示例配置具体需参考项目文档 sensor: - platform: atlas_scientific type: pH name: pool_ph uart_port: /dev/ttyAMA0 # 主UART连接pH板 uart_speed: 9600 - platform: atlas_scientific type: ORP name: pool_orp uart_port: /dev/ttyS0 # UART1连接ORP板 uart_speed: 9600重要步骤传感器校准。在HA中配置好传感器后你需要使用标准缓冲液如pH 4.01, 7.00, 10.01对pH探头进行校准使用ORP标准溶液对ORP探头进行校准。通常可以通过向传感器发送特定命令在HA中可以通过“服务”调用或使用开发者工具来完成。未经校准的传感器读数毫无意义。3. 配置继电器与开关 对于GPIO继电器HAT我们可以使用HA的rpi_gpio集成或更通用的remote_rpi_gpio如果HA运行在容器中。更简单可靠的方法是使用GPIO的二进制传感器和开关模板。 首先在configuration.yaml中启用GPIO# 示例定义一个控制水泵继电器的开关 switch: - platform: rpi_gpio ports: 17: Pump Relay # GPIO17 控制水泵继电器 27: Acid Pump Relay # GPIO27 控制加酸蠕动泵 22: Chlorine Pump Relay # GPIO22 控制加氯蠕动泵重启后你会得到switch.pump_relay等实体。你可以创建自动化当水质超标时自动打开对应的蠕动泵开关。4.3 自动化逻辑与仪表盘配置自动化是系统的灵魂。我们通过HA的“自动化”编辑器或YAML文件来创建规则。核心自动化示例YAML格式automation: - alias: Inject Acid if pH too high trigger: platform: numeric_state entity_id: sensor.pool_ph above: 7.6 # 目标pH上限 for: minutes: 5 # 持续5分钟高于上限才触发避免瞬时波动 action: - service: switch.turn_on target: entity_id: switch.acid_pump_relay - delay: seconds: 10 # 注入10秒这个时间需要根据泵流量和池水体积计算 - service: switch.turn_off target: entity_id: switch.acid_pump_relay - service: notify.mobile_app data: message: pH过高已自动注入盐酸10秒。当前pH: {{ states(sensor.pool_ph) }}这个自动化实现了当pH值持续5分钟高于7.6时自动开启加酸泵10秒然后关闭并发送手机通知。类似的可以创建基于ORP值的加氯自动化。ORP值间接反映水中的游离氯含量。通常将ORP目标设定在650-750mV之间。仪表盘Lovelace UI配置 HA的界面高度可定制。你可以创建一个专属的“泳池”仪表盘标签页。在HA侧边栏进入“概览”点击右上角“...”菜单选择“编辑仪表盘”。添加卡片例如传感器卡片显示pH、ORP、温度的当前值和历史曲线图。实体按钮卡片显示水泵、蠕动泵的开关状态并可手动控制。历史图表卡片展示过去24小时水质参数的变化。标记down卡片添加注意事项如“加酸后请等待30分钟再游泳”。 通过拖拽组合这些卡片你能得到一个直观、专业的泳池监控中心。4.4 高级功能与通知集成基础功能稳定后可以添加一些提升体验和安全的“甜点”功能。过滤周期管理创建一个“辅助元素” - “计时器”命名为filter_timer。然后创建自动化每天在电价低谷时段如果适用或固定时间启动该计时器例如运行8小时。另一个自动化监听计时器结束事件并关闭水泵。你还可以在仪表盘上显示计时器剩余时间。集成天气预报在HA中配置“OpenWeatherMap”集成。创建一个自动化如果未来12小时内降水概率超过70%则暂停加氯操作因为雨水会稀释池水并引入污染物此时加氯效率低。移动通知与警报强烈推荐配置“Telegram Bot”或“Home Assistant Companion”手机App通知。除了常规的状态通知更要设置警报自动化。例如当pH传感器连续1小时无数据更新时发送“pH传感器可能故障请检查”当水泵被指令开启但Sonoff POW功率传感器显示功率为0超过1分钟时发送“水泵启动失败请立即检查”当ORP值持续低于安全阈值如550mV超过2小时发送“氯含量严重不足有卫生风险” 这些警报能让你在问题恶化前及时干预。5. 系统调试、优化与维护心得系统搭建完成后调试和长期维护才是真正的挑战。这里分享我积累的一些关键经验。5.1 初期调试与校准1. 分模块测试 不要一次性把所有硬件接上。先接树莓派和电源确保HA能正常启动。然后单独接温度传感器看能否读到数据。再单独接一个EZO板通过HA服务发送“R”读取命令测试通信。最后再连接继电器用HA手动控制开关听继电器是否有“咔嗒”声。分步测试能快速定位问题。2. 传感器校准是生命线 水质传感器的读数会随时间漂移必须定期校准。pH探头每1-2个月或读数明显不稳定时使用新鲜的标准缓冲液进行两点或三点校准。校准过程务必在接近泳池水温的环境下进行。探头头部需始终保持湿润如果干了需要在pH 4.0或7.0的缓冲液中浸泡数小时活化。ORP探头同样需要定期校准使用特定的ORP标准溶液如220mV或468mV。ORP探头的响应比pH慢校准和读数时需要更多耐心。校准记录在HA中创建一个“标记down”卡片或使用“Recorder”集成记录每次校准的日期和校准值便于追踪传感器性能衰减。3. 蠕动泵流量测定 这是实现精准加药的关键。用一个量杯接住蠕动泵出口在HA中手动开启泵10秒测量排出液体的体积毫升。重复几次取平均值。然后计算流量毫升/秒 体积 / 10。这个数据将用于计算实际的注入时间。5.2 自动化逻辑的精细调优初始的自动化规则如“pH7.6就加酸10秒”可能很粗糙需要根据实际情况调优。1. 引入“死区”和“比例控制”思想 避免系统在目标值附近频繁开关振荡。例如将pH目标设为7.4但设置一个“死区”范围7.3-7.5。只有当pH高于7.5时才触发加酸低于7.3时触发加碱如果你有加碱泵。这样可以减少不必要的动作。 更高级的做法是模拟“比例控制”根据偏离目标值的程度动态调整注入时间。例如注入时间秒 基础时间 K * (当前pH - 目标pH上限)其中K是一个系数。这能让系统更平滑地接近目标。2. 考虑时间与条件约束避免夜间加药设置自动化只在白天如早8点到晚8点执行加药操作便于观察和应急。水泵运行时才加药修改自动化触发条件除了水质条件还需满足switch.pump_relay状态为on。这样可以确保药剂被迅速混合到整个泳池避免在局部管道堆积腐蚀。两次加药间隔在自动化动作的最后使用delay或创建一个“辅助元素-输入布尔”作为“加药锁”确在一次加药完成后至少等待30分钟才允许下一次检测和加药给水体充分的混合与反应时间。5.3 长期运行维护与故障排查1. 定期维护清单每周检查药剂桶盐酸、次氯酸钠的余量。检查蠕动泵软管是否有老化、开裂迹象通常每3-6个月需要更换。每月检查传感器探头是否清洁有无生物膜或钙垢附着。用软布和清水轻轻擦拭探头玻璃球。检查所有电气接线端子有无松动、氧化。每季度校准一次pH和ORP传感器。备份一次Home Assistant的完整配置包括YAML文件和数据库。泳季开始/结束彻底清洗传感器旁路管。如果冬季停用将探头取出存放在专用的保存液中。2. 常见问题与排查问题现象可能原因排查步骤pH/ORP读数显示“未知”或不变1. 传感器供电或通信中断2. 探头损坏或污染3. EZO板故障1. 检查树莓派与EZO板间的接线特别是TX/RX是否接反。2. 重启HA查看日志 (/config/home-assistant.log) 中是否有传感器错误。3. 将探头放入标准液测试或连接电脑用串口工具直接发送“R”命令给EZO板。水泵无法启动1. 树莓派GPIO无输出2. 继电器HAT未工作3. 交流接触器线圈或主触点故障4. 手动/自动开关在错误位置1. 在HA中手动操作开关观察继电器HAT指示灯是否亮起。2. 用万用表测量继电器HAT输出端是否有电压变化。3. 检查接触器线圈两端电压是否正常。4.最重要先将开关打到“手动”档测试水泵能否直接启动以区分是控制问题还是主回路问题。加药泵动作但水质无变化1. 药剂已用完2. 蠕动泵软管堵塞或老化失压3. 注入点选择不当药剂未进入主循环1. 检查药剂桶液位。2. 观察泵运行时软管是否正常蠕动出口是否有液体流出。进行流量测定。3. 确保注入点位于过滤后、回水至泳池前的管路上并且注入方向与水流方向一致。Home Assistant无法访问1. 树莓派断电或死机2. 网络IP变化或断开3. SD卡损坏1. 检查树莓派电源指示灯。尝试直接连接显示器键盘查看。2. 检查路由器后台确认树莓派IP。尝试用ping命令。3. SD卡损坏是树莓派常见故障。定期备份配置至关重要。考虑使用高质量、高耐久度的工业级SD卡。3. 数据记录与回顾 充分利用HA的“Recorder”和历史数据功能。定期查看水质参数的历史曲线你可能会发现一些规律比如周末使用后pH容易下降暴雨后ORP会降低等。这些观察可以帮助你进一步优化自动化规则让系统越来越“聪明”。这个DIY泳池自动化项目从构思到稳定运行我花了将近一年的业余时间。它带给我的不仅仅是清澈见底的池水更是一种对物联网技术落地的深刻理解和对“自己动手”的满足感。系统运行至今已超过两个泳季除了定期更换蠕动泵软管和校准传感器几乎没有出过问题。最让我欣慰的是通过手机通知我能在出差时随时掌握泳池状态并在出现异常时远程让家人干预真正实现了“智能”带来的安心。如果你也打算开始我的建议是不要试图一步到位。先从监测开始只接上传感器在HA里观察一周水质数据。然后再尝试控制水泵的定时过滤。最后当你对系统有了信心再引入加药控制。每一步都稳扎稳打这个项目一定会成为你智能家居皇冠上最亮眼的一颗明珠。
基于树莓派与Home Assistant的DIY泳池自动化系统搭建指南
1. 项目概述如果你家里有个泳池那多半体会过维护它的繁琐。每周测水质、手动加氯、调节酸碱度夏天还得盯着水泵的过滤时间稍不留神水质就变差不仅影响游泳体验还可能滋生细菌。市面上的全自动泳池控制系统动辄数千甚至上万美元而且往往是封闭系统坏了只能找原厂想加点新功能更是难上加难。几年前我开始琢磨能不能用玩智能家居那套思路来改造泳池。核心目标很明确用最低的成本实现最核心的自动化功能并且整个系统要完全开源、可定制、易维护。经过几轮迭代最终成型的就是这个基于树莓派和Home Assistant的“Raspipool”系统。它不是什么高深莫测的黑科技本质上就是把物联网那套“感知-决策-执行”的逻辑用在了泳池上。通过几个关键传感器实时“感知”水质由树莓派这个“大脑”根据预设逻辑“决策”再通过继电器和蠕动泵等“手脚”去“执行”加药、过滤等操作。这套系统的精髓在于模块化和去中心化智能。我们不买那种集成了pH检测和氯添加的“智能盐氯机”也不买能自己控制过滤周期的“智能水泵”。相反我们选择最基础、最便宜的设备——一个只管抽水的水泵一个只管滴药的蠕动泵。所有的“智能”都集中到树莓派这个小盒子里。这样做的好处太多了某个部件坏了换一个同类型的便宜货就行想增加新功能比如监测水位、控制灯光直接在树莓派上接新传感器和继电器整个系统的逻辑完全由你编写的自动化规则控制想怎么改就怎么改。整个项目的硬件成本可以控制在350到500美元之间远低于商用系统。你需要付出的主要是一些动手组装的时间和学习的热情。接下来我会把整个从零开始的搭建过程、背后的原理、我踩过的坑以及积累的经验毫无保留地分享出来。无论你是树莓派玩家、Home Assistant爱好者还是单纯想解放双手的泳池主这篇指南都能带你走通这条路。2. 核心设计思路与方案选型在动手之前理清设计思路至关重要。泳池自动化的核心任务无非是维持水质的清洁、平衡与循环。我们需要拆解这些任务并为每个环节选择最合适、最具性价比的技术方案。2.1 系统架构总览整个系统的架构可以概括为“一体核心三层联动”。一体核心以运行Home Assistant的树莓派作为唯一的控制与决策中心。它负责数据汇聚、逻辑运算和指令下发。三层联动感知层由pH传感器、ORP氧化还原电位传感器和温度传感器组成负责7x24小时采集泳池水的最关键化学与物理参数。网络层树莓派本身通过Wi-Fi接入家庭网络使得我们能在任何地方通过网页或手机App访问控制界面。传感器与树莓派之间则通过可靠的UART串口或One-Wire总线通信。执行层由继电器模块控制主水泵的启停与调速如果支持由独立的蠕动泵执行盐酸降pH和次氯酸钠增氯的精准注入。这个架构的优势在于责任清晰。传感器只负责读数执行器只负责动作所有复杂的判断比如“ORP值低了需要加氯”、“pH值高了需要加酸”都由高度可定制的Home Assistant自动化来完成。这种设计避免了“智能”外围设备常见的功能冗余和厂商锁定问题。2.2 关键组件选型解析为什么是这些组件每一个选择背后都有成本和可靠性的权衡。1. 控制中心树莓派的选择树莓派Zero W在性能上勉强够用但我强烈推荐至少使用树莓派3B或更高型号。原因有三首先更强大的CPU和内存能保证Home Assistant以及未来可能增加的其他服务如数据库、监控摄像头流畅运行。其次标准尺寸的GPIO接口和多个USB端口让你在连接继电器HAT、USB设备时更加从容避免了使用转接头的麻烦和潜在的不稳定。最后更好的散热和供电设计意味着系统能长期稳定运行。注意供电是树莓派的生命线尤其是当它连接多个外设时。务必使用官方或质量可靠的5V/2.5A以上Micro-USB电源适配器。劣质电源导致的电压波动可能会让GPIO读取的传感器数据飘忽不定甚至造成树莓派意外重启这在控制系统中是灾难性的。2. 水质传感精度与成本的平衡水质监测是系统的眼睛这部分不能太省。pH与ORP传感器我选择了Atlas Scientific的EZO系列电路板搭配标准BNC接口的探头。这是整个项目里单价较高的部分但非常值得。EZO电路板将复杂的模拟信号处理、温度补偿和数字通信集成在一块小板上通过UART输出稳定、校准好的数字值极大简化了开发。相比一些需要自己搭建放大电路、稳定性差的模拟传感器方案EZO能省去无数调试的烦恼数据可靠性高。温度传感器选用常见的DS18B20防水探头。它采用One-Wire总线只需一根数据线加电源和地线即可工作成本极低精度对于泳池应用±0.5°C完全足够。它的主要作用是给pH和ORP读数提供温度补偿参考虽然EZO板子自带温补但拥有独立的水温数据对整体监控很有帮助。3. 执行机构安全与可靠是第一要务执行机构直接控制强电和设备安全设计必须万无一失。继电器HAT用于控制逻辑信号。我选用的是可堆叠的4路或6路GPIO继电器模块。它通过树莓派GPIO的3.3V信号控制继电器吸合但其继电器触点本身只能承受小电流如5A阻性负载。切记它绝不能直接连接水泵电机电机属于感性负载启动瞬间电流浪涌电流可能是额定电流的5-7倍会瞬间烧毁这个小继电器。交流接触器这才是控制水泵的“真正开关”。它是一个由继电器HAT的小触点控制的“大开关”。当继电器HAT吸合会给交流接触器的线圈通电通常是24V或220V AC从而吸合其内部的大电流触点如25A以上通断水泵的主电源。选择接触器时务必查看其规格表确认其针对电机类负载AC-3类别的额定电流大于你的水泵满载电流并留有一定余量。蠕动泵用于化学药剂注入。选择12V供电的型号通过继电器控制其电源即可。关键参数是“流量”你需要根据你的药剂浓度和泳池容积计算出需要注入的时间。蠕动泵的优点是药剂只流经软管不与泵体接触避免了腐蚀。4. 软件平台为什么是Home AssistantHome AssistantHA不仅仅是一个智能家居平台它更是一个强大的物联网集成与自动化引擎。选择HA而非直接编写Python脚本的原因包括强大的UI与仪表盘无需前端开发就能获得专业的Web和移动端控制界面实时显示水质曲线、设备状态。丰富的集成与生态系统你可以轻松地将天气信息、日历、通知服务如Telegram、Pushbullet集成进来。例如创建“如果明天预报下雨则暂停加氯”这样的高级自动化。配置即代码所有设备、自动化、界面都以YAML文件定义易于版本管理、备份和迁移。活跃的社区任何遇到的问题几乎都能在社区找到答案或灵感。3. 硬件搭建与电路连接详解理论清晰后我们入动手环节。硬件部分的搭建需要耐心和细心尤其是涉及强电部分安全规范必须遵守。3.1 传感器旁路管的制作与安装传感器不能直接扔进泳池也不能直接插入主循环管道影响水流且安装不便。我们需要制作一个“旁路管”。原理与位置旁路管是一段并联在主循环管道上的小支路。水流经过它时速度变缓为传感器提供了稳定、有代表性的水样检测环境。最佳安装位置是过滤器的出水口和泵的进水口之间。这里的压力相对较低且水流已经过滤能保护传感器探头。安装时确保这段旁路管水平放置并尽可能位于管路低点以保证其内部始终充满水不会因积气导致读数不准。材料与制作材料直径50mm的PVC管用于放置探头、相应直径的PVC三通、弯头、管箍卡箍、PVC胶水。总成本很低。步骤关闭泳池泵电源关闭相关阀门。在主循环管路上选定位置测量并截取两段管路为安装三通留出空间。将两个三通接入主路然后用PVC管和弯头连接这两个三通构成一个“U”形或“n”形的旁路。在旁路管的水平段上钻三个孔安装专用的传感器螺纹接口或使用密封性好的电缆接头用于固定pH、ORP和温度探头。关键技巧所有PVC部件先不涂胶水进行干装配确保尺寸合适、探头安装顺利。确认无误后再拆开逐一涂胶水正式粘合。粘合前务必用砂纸打磨接口并确保PVC胶水涂匀粘合后保持十几秒不动。3.2 树莓派与核心传感器连接这是系统的“神经中枢”连接。1. DS18B20温度传感器连接 DS18B20使用One-Wire协议。连接非常简单红线VDD- 树莓派GPIO的3.3V引脚如Pin 1。黑线GND- 树莓派GPIO的GND引脚如Pin 6。黄线DQ数据- 树莓派GPIO的GPIO4Pin 7这是一个常用的One-Wire引脚。在数据线黄线和3.3V电源线红线之间需要连接一个4.7kΩ的上拉电阻。很多DS18B20模块已经内置了这个电阻购买时需确认。如果没有必须自己添加否则通信会不稳定。2. Atlas Scientific EZO传感器连接 EZO板子需要连接到树莓派的UART串口。树莓派3B/4有多个UART我们通常使用主UART/dev/ttyS0和额外的UART1。供电EZO板子需要3.3V-5V供电直接从树莓派GPIO的5VPin 2或4和GND取电即可。通信EZO板的TX接树莓派GPIO的RX接收端。EZO板的RX接树莓派GPIO的TX发送端。例如将pH EZO板连接到主UARTGPIO14/TXD, GPIO15/RXD将ORP EZO板连接到我们启用的UART1GPIO32/TXD1, GPIO33/RXD1。树莓派UART配置 编辑/boot/config.txt文件添加或修改以下行# 启用UART enable_uart1 # 禁用蓝牙释放主UARTttyAMA0树莓派3B/4后主UART默认分配给蓝牙了 dtoverlaypi3-disable-bt # 启用额外的UART1并指定引脚 dtoverlayuart1,txd1_pin32,rxd1_pin33修改后重启树莓派。你可以使用ls /dev/tty*命令查看是否出现了/dev/ttyAMA0主UART和/dev/ttyS0我们启用的UART1设备。实操心得连接EZO板时务必仔细核对引脚定义。接反TX/RX会导致无法通信。建议先用USB转TTL模块在电脑上测试EZO板是否正常工作并完成初步校准然后再接入树莓派这样可以排除硬件故障。3.3 继电器与强电控制回路连接这是最需要谨慎对待的部分涉及220V或110V强电。1. 安全第一原则所有操作必须在完全断电的情况下进行。如果你不熟悉强电布线请务必咨询或聘请专业电工。使用合适的线径如控制水泵用1.5或2.5平方毫米的铜线所有接线点必须牢固最好使用接线端子。强电部分必须装入绝缘、密封的防水电气盒中。2. 控制逻辑图解析 我们的目标是使用树莓派GPIO控制的小型继电器HAT去驱动一个大功率交流接触器再由接触器控制水泵。控制回路低电压/电流树莓派GPIO - 继电器HAT的某一路继电器触点 - 交流接触器的线圈A1/A2。当树莓派输出高电平继电器HAT吸合接触器线圈得电。主回路高电压/电流电源火线L - 接触器的主触点输入端 - 接触器主触点输出端 - 水泵电机 - 电源零线N。当接触器线圈得电主触点吸合水泵通电运行。双速水泵控制如果需要控制双速泵高速/低速需要两个接触器。接线逻辑是一个接触器控制泵的通断另一个接触器切换电机绕组的接法高速或低速。具体接线需严格按照水泵的接线图进行。3. 可选安全增强Sonoff POW R2这是一个非常实用的模块。你可以将它串联在水泵的供电线路中。它不仅能精确测量水泵的实时功率和耗电量还能作为一个安全开关。在Home Assistant中你可以设置一个自动化如果水泵被指令开启但Sonoff POW检测到的功率低于某个阈值比如50瓦表明水泵可能卡住没启动或功率异常高表明过载则立即触发警报并切断水泵电源防止电机烧毁。4. 手动/自动切换自动化系统需要维护。务必在电路中加入一个手动/自动切换开关或使用带手动操作杆的接触器。当开关打到“手动”档时系统绕过树莓派控制可以直接启停水泵便于检修和紧急操作。4. 软件配置与Home Assistant集成硬件连接妥当后我们让系统“活”起来。软件部分的核心是Home Assistant的配置。4.1 Home Assistant基础安装与网络配置首先在树莓派上安装Home Assistant。对于新手最推荐的方法是使用Home Assistant Operating System (HAOS)镜像。它是一个专为HA定制的完整操作系统包含了HA核心、Supervisor、插件商店等所有组件管理和更新都非常方便。从Home Assistant官网下载对应树莓派型号的HAOS镜像。使用Raspberry Pi Imager或其他工具将镜像写入SD卡。将SD卡插入树莓派连接网线或首次启动后配置Wi-Fi上电。等待约20分钟然后在浏览器中输入http://homeassistant.local:8123或树莓派的IP地址即可进入初始化界面。初始化完成后首要任务是配置稳定的网络。如果使用Wi-Fi建议在HA的“配置” - “系统” - “网络”中设置静态IP或者在你的路由器上为树莓派的MAC地址分配固定IP。这能避免IP变化导致访问失败。4.2 传感器与执行器在HA中的配置HA通过“集成”和“配置YAML文件”来识别和管理设备。1. 配置One-Wire温度传感器 在configuration.yaml文件中添加# 启用One-Wire总线 onewire: # GPIO4 是常用的One-Wire引脚 - gpio: 4 # 可选为传感器设置一个友好的名称和ID names: 28-xxxxxxxxxxxx: pool_temperature重启HA后你应该能在“实体”中看到一个名为sensor.pool_temperature的新传感器。2. 配置Atlas Scientific EZO传感器通过UART 这需要用到自定义集成。将项目GitHub仓库中的custom_components文件夹复制到你的HA配置目录通常是/config或/home/homeassistant/.homeassistant。然后在configuration.yaml中配置# 示例配置具体需参考项目文档 sensor: - platform: atlas_scientific type: pH name: pool_ph uart_port: /dev/ttyAMA0 # 主UART连接pH板 uart_speed: 9600 - platform: atlas_scientific type: ORP name: pool_orp uart_port: /dev/ttyS0 # UART1连接ORP板 uart_speed: 9600重要步骤传感器校准。在HA中配置好传感器后你需要使用标准缓冲液如pH 4.01, 7.00, 10.01对pH探头进行校准使用ORP标准溶液对ORP探头进行校准。通常可以通过向传感器发送特定命令在HA中可以通过“服务”调用或使用开发者工具来完成。未经校准的传感器读数毫无意义。3. 配置继电器与开关 对于GPIO继电器HAT我们可以使用HA的rpi_gpio集成或更通用的remote_rpi_gpio如果HA运行在容器中。更简单可靠的方法是使用GPIO的二进制传感器和开关模板。 首先在configuration.yaml中启用GPIO# 示例定义一个控制水泵继电器的开关 switch: - platform: rpi_gpio ports: 17: Pump Relay # GPIO17 控制水泵继电器 27: Acid Pump Relay # GPIO27 控制加酸蠕动泵 22: Chlorine Pump Relay # GPIO22 控制加氯蠕动泵重启后你会得到switch.pump_relay等实体。你可以创建自动化当水质超标时自动打开对应的蠕动泵开关。4.3 自动化逻辑与仪表盘配置自动化是系统的灵魂。我们通过HA的“自动化”编辑器或YAML文件来创建规则。核心自动化示例YAML格式automation: - alias: Inject Acid if pH too high trigger: platform: numeric_state entity_id: sensor.pool_ph above: 7.6 # 目标pH上限 for: minutes: 5 # 持续5分钟高于上限才触发避免瞬时波动 action: - service: switch.turn_on target: entity_id: switch.acid_pump_relay - delay: seconds: 10 # 注入10秒这个时间需要根据泵流量和池水体积计算 - service: switch.turn_off target: entity_id: switch.acid_pump_relay - service: notify.mobile_app data: message: pH过高已自动注入盐酸10秒。当前pH: {{ states(sensor.pool_ph) }}这个自动化实现了当pH值持续5分钟高于7.6时自动开启加酸泵10秒然后关闭并发送手机通知。类似的可以创建基于ORP值的加氯自动化。ORP值间接反映水中的游离氯含量。通常将ORP目标设定在650-750mV之间。仪表盘Lovelace UI配置 HA的界面高度可定制。你可以创建一个专属的“泳池”仪表盘标签页。在HA侧边栏进入“概览”点击右上角“...”菜单选择“编辑仪表盘”。添加卡片例如传感器卡片显示pH、ORP、温度的当前值和历史曲线图。实体按钮卡片显示水泵、蠕动泵的开关状态并可手动控制。历史图表卡片展示过去24小时水质参数的变化。标记down卡片添加注意事项如“加酸后请等待30分钟再游泳”。 通过拖拽组合这些卡片你能得到一个直观、专业的泳池监控中心。4.4 高级功能与通知集成基础功能稳定后可以添加一些提升体验和安全的“甜点”功能。过滤周期管理创建一个“辅助元素” - “计时器”命名为filter_timer。然后创建自动化每天在电价低谷时段如果适用或固定时间启动该计时器例如运行8小时。另一个自动化监听计时器结束事件并关闭水泵。你还可以在仪表盘上显示计时器剩余时间。集成天气预报在HA中配置“OpenWeatherMap”集成。创建一个自动化如果未来12小时内降水概率超过70%则暂停加氯操作因为雨水会稀释池水并引入污染物此时加氯效率低。移动通知与警报强烈推荐配置“Telegram Bot”或“Home Assistant Companion”手机App通知。除了常规的状态通知更要设置警报自动化。例如当pH传感器连续1小时无数据更新时发送“pH传感器可能故障请检查”当水泵被指令开启但Sonoff POW功率传感器显示功率为0超过1分钟时发送“水泵启动失败请立即检查”当ORP值持续低于安全阈值如550mV超过2小时发送“氯含量严重不足有卫生风险” 这些警报能让你在问题恶化前及时干预。5. 系统调试、优化与维护心得系统搭建完成后调试和长期维护才是真正的挑战。这里分享我积累的一些关键经验。5.1 初期调试与校准1. 分模块测试 不要一次性把所有硬件接上。先接树莓派和电源确保HA能正常启动。然后单独接温度传感器看能否读到数据。再单独接一个EZO板通过HA服务发送“R”读取命令测试通信。最后再连接继电器用HA手动控制开关听继电器是否有“咔嗒”声。分步测试能快速定位问题。2. 传感器校准是生命线 水质传感器的读数会随时间漂移必须定期校准。pH探头每1-2个月或读数明显不稳定时使用新鲜的标准缓冲液进行两点或三点校准。校准过程务必在接近泳池水温的环境下进行。探头头部需始终保持湿润如果干了需要在pH 4.0或7.0的缓冲液中浸泡数小时活化。ORP探头同样需要定期校准使用特定的ORP标准溶液如220mV或468mV。ORP探头的响应比pH慢校准和读数时需要更多耐心。校准记录在HA中创建一个“标记down”卡片或使用“Recorder”集成记录每次校准的日期和校准值便于追踪传感器性能衰减。3. 蠕动泵流量测定 这是实现精准加药的关键。用一个量杯接住蠕动泵出口在HA中手动开启泵10秒测量排出液体的体积毫升。重复几次取平均值。然后计算流量毫升/秒 体积 / 10。这个数据将用于计算实际的注入时间。5.2 自动化逻辑的精细调优初始的自动化规则如“pH7.6就加酸10秒”可能很粗糙需要根据实际情况调优。1. 引入“死区”和“比例控制”思想 避免系统在目标值附近频繁开关振荡。例如将pH目标设为7.4但设置一个“死区”范围7.3-7.5。只有当pH高于7.5时才触发加酸低于7.3时触发加碱如果你有加碱泵。这样可以减少不必要的动作。 更高级的做法是模拟“比例控制”根据偏离目标值的程度动态调整注入时间。例如注入时间秒 基础时间 K * (当前pH - 目标pH上限)其中K是一个系数。这能让系统更平滑地接近目标。2. 考虑时间与条件约束避免夜间加药设置自动化只在白天如早8点到晚8点执行加药操作便于观察和应急。水泵运行时才加药修改自动化触发条件除了水质条件还需满足switch.pump_relay状态为on。这样可以确保药剂被迅速混合到整个泳池避免在局部管道堆积腐蚀。两次加药间隔在自动化动作的最后使用delay或创建一个“辅助元素-输入布尔”作为“加药锁”确在一次加药完成后至少等待30分钟才允许下一次检测和加药给水体充分的混合与反应时间。5.3 长期运行维护与故障排查1. 定期维护清单每周检查药剂桶盐酸、次氯酸钠的余量。检查蠕动泵软管是否有老化、开裂迹象通常每3-6个月需要更换。每月检查传感器探头是否清洁有无生物膜或钙垢附着。用软布和清水轻轻擦拭探头玻璃球。检查所有电气接线端子有无松动、氧化。每季度校准一次pH和ORP传感器。备份一次Home Assistant的完整配置包括YAML文件和数据库。泳季开始/结束彻底清洗传感器旁路管。如果冬季停用将探头取出存放在专用的保存液中。2. 常见问题与排查问题现象可能原因排查步骤pH/ORP读数显示“未知”或不变1. 传感器供电或通信中断2. 探头损坏或污染3. EZO板故障1. 检查树莓派与EZO板间的接线特别是TX/RX是否接反。2. 重启HA查看日志 (/config/home-assistant.log) 中是否有传感器错误。3. 将探头放入标准液测试或连接电脑用串口工具直接发送“R”命令给EZO板。水泵无法启动1. 树莓派GPIO无输出2. 继电器HAT未工作3. 交流接触器线圈或主触点故障4. 手动/自动开关在错误位置1. 在HA中手动操作开关观察继电器HAT指示灯是否亮起。2. 用万用表测量继电器HAT输出端是否有电压变化。3. 检查接触器线圈两端电压是否正常。4.最重要先将开关打到“手动”档测试水泵能否直接启动以区分是控制问题还是主回路问题。加药泵动作但水质无变化1. 药剂已用完2. 蠕动泵软管堵塞或老化失压3. 注入点选择不当药剂未进入主循环1. 检查药剂桶液位。2. 观察泵运行时软管是否正常蠕动出口是否有液体流出。进行流量测定。3. 确保注入点位于过滤后、回水至泳池前的管路上并且注入方向与水流方向一致。Home Assistant无法访问1. 树莓派断电或死机2. 网络IP变化或断开3. SD卡损坏1. 检查树莓派电源指示灯。尝试直接连接显示器键盘查看。2. 检查路由器后台确认树莓派IP。尝试用ping命令。3. SD卡损坏是树莓派常见故障。定期备份配置至关重要。考虑使用高质量、高耐久度的工业级SD卡。3. 数据记录与回顾 充分利用HA的“Recorder”和历史数据功能。定期查看水质参数的历史曲线你可能会发现一些规律比如周末使用后pH容易下降暴雨后ORP会降低等。这些观察可以帮助你进一步优化自动化规则让系统越来越“聪明”。这个DIY泳池自动化项目从构思到稳定运行我花了将近一年的业余时间。它带给我的不仅仅是清澈见底的池水更是一种对物联网技术落地的深刻理解和对“自己动手”的满足感。系统运行至今已超过两个泳季除了定期更换蠕动泵软管和校准传感器几乎没有出过问题。最让我欣慰的是通过手机通知我能在出差时随时掌握泳池状态并在出现异常时远程让家人干预真正实现了“智能”带来的安心。如果你也打算开始我的建议是不要试图一步到位。先从监测开始只接上传感器在HA里观察一周水质数据。然后再尝试控制水泵的定时过滤。最后当你对系统有了信心再引入加药控制。每一步都稳扎稳打这个项目一定会成为你智能家居皇冠上最亮眼的一颗明珠。