Docker 玩法
飞牛NAS Docker部署智能家居中枢:Home Assistant与MQTT保姆级教程
痛点:智能家居设备各自为政,手机装了一堆App
你是否也面临这样的困境:灯泡用A品牌App控制,插座用B品牌App,摄像头用C品牌App……每个设备都要单独下载App、注册账号、切换界面,不仅麻烦,而且这些设备之间根本无法联动。更糟的是,很多智能设备依赖云端,一旦厂商服务器出问题,你的设备就变成“砖头”。
其实,你完全可以把飞牛NAS变成智能家居的本地中枢,通过Docker部署Home Assistant和Mosquitto MQTT Broker,将所有设备统一接入,实现离线本地化控制与自动化联动。本文将手把手教你完成部署,即使你是Docker小白也能轻松上手。
为什么选择飞牛NAS作为智能家居中枢
飞牛NAS基于Debian系统,自带Docker环境,性能稳定,功耗低,非常适合7x24小时运行。相比树莓派,飞牛NAS拥有更大的存储空间和更成熟的文件管理能力;相比云服务器,数据完全本地化,隐私安全有保障。
更重要的是,飞牛NAS的Docker管理界面简洁直观,支持图形化操作,无需SSH命令行即可完成容器部署。对于家庭用户来说,这大大降低了技术门槛。
第一步:在飞牛NAS上部署Mosquitto MQTT Broker
MQTT是智能家居设备通信的“交通枢纽”,所有设备通过它来传递消息。我们首先部署Mosquitto。
- 打开飞牛NAS的Docker应用,进入“镜像”页面,搜索
eclipse-mosquitto,选择最新版本(如2.0.18)下载。 - 下载完成后,点击“创建容器”,进行以下配置:
- 端口映射:将容器的
1883端口映射到NAS的1883端口(TCP),用于MQTT通信;将9001端口映射到NAS的9001端口(TCP),用于WebSocket通信。 - 存储映射:创建本地文件夹如
/vol1/docker/mosquitto/config,映射到容器的/mosquitto/config;创建/vol1/docker/mosquitto/data映射到/mosquitto/data;创建/vol1/docker/mosquitto/log映射到/mosquitto/log。 - 在NAS的文件管理器中,进入
/vol1/docker/mosquitto/config,创建mosquitto.conf文件,内容如下:conf persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log listener 1883 allow_anonymous false password_file /mosquitto/config/passwd - 使用SSH工具(如Termius)连接NAS,执行以下命令创建用户密码文件(将
youruser和yourpassword替换为你的设置):bash docker exec -it <容器ID> mosquitto_passwd -c /mosquitto/config/passwd youruser按提示输入两次密码即可。 - 重启容器,Mosquitto即配置完成。
第二步:部署Home Assistant容器
Home Assistant是智能家居的“大脑”,负责统一管理和自动化控制。
- 在Docker“镜像”页面搜索
ghcr.io/home-assistant/home-assistant:stable(如果搜索不到,可以尝试homeassistant/home-assistant),下载最新稳定版。 - 创建容器,配置如下:
- 端口映射:将容器的
8123端口映射到NAS的8123端口(TCP),这是Home Assistant的Web界面端口。 - 存储映射:创建本地文件夹如
/vol1/docker/homeassistant/config,映射到容器的/config。 - 网络:建议选择“host”模式(与宿主机共享网络),这样Home Assistant能更容易发现局域网内的智能设备。
- 启动容器后,在浏览器访问
http://<你的NAS IP>:8123,首次访问会进入初始化向导。 - 按照向导创建管理员账户,设置家庭名称和位置(这会影响日出日落时间等自动化判断)。
第三步:配置Home Assistant连接MQTT并添加设备
- 在Home Assistant界面中,点击左下角的“配置”,选择“设备与服务”,点击“添加集成”,搜索“MQTT”。
- 输入MQTT Broker的IP地址(即NAS的IP)、端口
1883、用户名和密码(之前设置的),点击“提交”。 - 添加成功后,Home Assistant会自动创建MQTT集成。现在你可以通过编写
configuration.yaml来定义设备实体。 - 在NAS的文件管理器中,编辑
/vol1/docker/homeassistant/config/configuration.yaml,添加如下示例(以温湿度传感器为例): ```yaml sensor:- platform: mqtt name: "Living Room Temp" state_topic: "home/livingroom/temperature" unit_of_measurement: "°C"
- platform: mqtt name: "Living Room Humidity" state_topic: "home/livingroom/humidity" unit_of_measurement: "%" ```
- 保存文件后,在Home Assistant界面点击“配置”->“服务器控制”->“重新启动”,使配置生效。
第四步:实现自动化联动(示例)
有了Home Assistant和MQTT,你可以轻松创建自动化。例如,当温度超过30度时,自动打开风扇:
- 在Home Assistant“配置”->“自动化”中,点击“创建自动化”。
- 设置触发条件:选择“状态”触发,实体选择
传感器.客厅温度,状态设为“高于”,值填30。 - 设置执行动作:选择“调用服务”,服务选择
switch.turn_on,目标实体选择你的风扇开关(需提前通过MQTT接入)。 - 保存即可。
总结
通过飞牛NAS部署Home Assistant和Mosquitto,你不仅摆脱了各品牌App的束缚,还拥有了一个完全本地化、可定制的智能家居中枢。所有数据都在你的掌控之中,即使断网也能正常联动。后续你还可以接入更多设备,如智能门锁、窗帘电机、传感器等,打造真正的全屋智能。
如果你在部署中遇到问题,欢迎在评论区留言,我们一起探讨解决方案。
暂无评论,来说两句吧