PassNAT LogoPassNAT

Domoticz 家庭设备看板:NAS 上 Docker 部署,一个网页集中看

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Domoticz 是一个开源的家庭自动化平台。它把家里各种传感器和执行器接进来,用一个网页集中显示:温度、湿度、光照、门窗状态、开关,全部在一个看板上,手机浏览器打开也能用。支持大量现成的硬件协议(Z-Wave、Zigbee 网关、MQTT、HTTP 接口、电表水表等等),也自带「虚拟设备」,没有硬件时可以先建测试设备,把界面和自动化流程跑通。

它跑起来只需要一个容器,数据存在容器挂载的目录里,默认用 SQLite,不需要额外数据库。适合把家里的温湿度、灯、门窗这类状态集中到 NAS 上,再通过内网穿透在手机流量下查看。项目地址:点我跳转

部署安装

只要能跑 Docker 的 NAS 都能装,下面用飞牛 NAS 演示:在「Docker」应用里新建一个 Compose 项目,把编排贴进去启动,第一次打开网页时创建管理员账户,然后进后台添加硬件和设备。

一、新建 Compose 项目

打开飞牛的「Docker」应用,切到「Compose」标签,点右上角的新增项目。项目名称填 domoticz,路径在「我的文件」下面挑一个空文件夹,没有就当场新建一个。来源选「创建 docker-compose.yml」,把下面这段整个贴进去:

1services:
2 domoticz:
3 image: domoticz/domoticz:stable
4 container_name: domoticz
5 ports:
6 - "8080:8080"
7 volumes:
8 - ./domoticz-data:/opt/domoticz/userdata
9 environment:
10 - TZ=Asia/Shanghai
11 restart: unless-stopped

这段编排里没有要改的口令或地址,直接用就行。三个地方按需调整:

端口:左边 8080 是 NAS 上的访问端口,被占用就换一个,右边的 8080 是容器内部端口不要改。

数据目录:./domoticz-data 会建在项目目录下面,存数据库、日志和设备配置,备份这个目录就够了。

时区:TZ 按自己所在时区写,日志和定时任务的时间会用到。

勾上「创建项目后立即启动」,第一次会拉取镜像,通常半分钟内容器就起来了。

二、第一次打开:建管理员账户

浏览器打开 NAS 地址加 8080 端口(例如 http://NAS地址:8080),第一次访问会自动进入设置向导:「Create your admin account」,填用户名、两次密码,点「Create Account」。这一步不需要邮箱、不需要邮件验证、不连外部服务,提交完就回到登录页,用刚建的账户登录。

如果之后想再改口令,在后台「Setup → Users」里管理;这个版本里已经在用的账户可以改密码,口令只存在 NAS 的 domoticz-data 目录里,不会上传到任何地方。

三、添加硬件:真实设备或虚拟测试设备

登录后进「Setup → Hardware」。页面顶部是添加表单:勾上 Enabled,填名字,在 Type 里选设备类型。接真实硬件时按你的网关或协议选(例如 MQTT、Zigbee 网关、Z-Wave USB);手头没有硬件,就在列表里选 Dummy (Does nothing, use for virtual switches only),点「Add」。

本期的截图和演示用的就是 Dummy 虚拟硬件,名字写成「测试设备(虚拟)」,这样看板上的数值变化都是虚拟设备在动,不代表控制了什么真实家电。硬件列表里这一行会出现「Create Virtual Sensors」按钮,下一步就从这里建设备。

四、创建虚拟传感器

在硬件列表里点「Create Virtual Sensors」,弹窗里填设备名字、选类型,点「OK」。常用的类型有:

Temp + Humidity:温湿度一体,一张卡片同时显示温度和湿度;

Switch:开关,看板上直接有 On / Off 按钮;

Alert:告警类,值可以是 Normal / Alarm,适合门磁、烟感这类状态;

Lux:光照度。

本期演示建了八个测试设备:客厅和卧室各一个温湿度、四个开关(客厅灯、玄关灯、书房灯、厨房插座)、一个大门门磁和一个阳台光照。建完回到「Dashboard」,每个卡片右上角有个星标,点一下收藏,收藏的设备才会出现在看板上。

虚拟设备没有真实数据来源,要让它显示数值,可以在「Setup → Devices」里点设备右侧的箭头编辑,也可以调用 Domoticz 的 JSON 接口直接写值。接真实硬件时这一步由硬件自己上报,不用手动填。

五、用起来:看板和手机

Dashboard 按类型分组:Lights/Switches 是开关卡片,Temperature 显示温度和湿度,Utility 放门磁、光照这类状态。开关卡片点右上角就能切换,温度卡片能看到最后上报时间。

顶部的「Temperature」「Switches」「Utility」是分类页,点进设备还能看历史曲线:「Log」里有最近 24 小时的温度、湿度变化图,可以按 1 小时 / 3 小时 / 一天切换。

手机浏览器打开同一个地址,会自动进手机版:每行一个设备,开关是 On / Off 两个大按钮,温湿度、门磁、光照排成列表,单手就能点。把它加到手机主屏幕,用起来跟 App 差不多。

六、用帕斯内网穿透拿到公网地址

在家里的 Wi-Fi 下用 NAS 地址就能打开;出门在外想用手机流量看,就用 帕斯内网穿透 这个插件。在飞牛的「应用中心」里搜 PassNAT,装上它,打开插件,点「创建隧道」。隧道名字随便起(不超过 12 个字符),接入节点和传输协议留默认,本地 IP 留默认的 127.0.0.1,本地端口填 8080(就是编排里冒号左边那个端口)。

建好之后点开这条隧道,按一下电源,状态变成运行中,详情里就能看到分配好的公网地址(形如 IP:端口)。在外面用手机浏览器打开这个地址,就是家里同一个 Domoticz 看板,登录后还能切换开关。

不是飞牛的系统,PassNAT 文档的「连接使用」里有其他系统的连接教程:点我跳转。

几点说明

默认是明文 HTTP。 内网访问和穿透访问都是 http,登录口令在局域网内是明文传输,公网地址谁拿到都能打开登录页,别到处发;不用的时候可以在插件里把隧道关掉。Domoticz 容器本身带 443,但需要自己配证书,默认不用它。

数据在本地。 设备、日志、用户都存在 domoticz-data 目录的 SQLite 数据库里,不依赖外部服务;备份这个目录就能迁移到另一台 NAS。

虚拟设备只做演示。 Dummy 硬件产生的数值不会控制任何真实设备,接真实硬件要按协议在 Hardware 里另加对应类型的硬件,再让网关或设备上报。

更新。 镜像标签是 stable,想升级就在 Docker 里重新拉取镜像并重启项目;升级前先备份 domoticz-data 目录,大版本升级前看一眼官方发布说明。