智能家居

“Echo, TV time.” 话音刚落,十几盏灯逐一熄灭,开始看片。

图1:Sengled智能灯泡

使用智能灯泡有些年头了,起初购置的Philips Hue灯泡较贵,且只能使用手机程序+定时控制,后来有了motion sensor,再后来有了智能音箱。去年年初趁着Sengled大量促销,将家里常用的灯(除了卫生间里的)都更换了,从那以后,开灯基本靠吼。晚上睡觉前喊一声“Turn off downstairs”,看着楼下逐渐黑下去,就像大片里城市遭受攻击失去电力供应一片片暗下去的样子,直到没有一丝亮光。

取决于不同的智能音箱,实现这个功能有不同的方法。比如亚马逊智能音箱支持一个灯泡多个分组,所以除了厨房、客厅等正常分组外,还可以给楼下所有灯泡放到一个downstairs组。但是谷歌智能音箱限制一个灯泡只能属于一个组,要实现类似功能,只能用定制程序(routine)。比如定制到家程序后,只需在进门前对着手机喊一声”Okay Google, I’m home!” 家里门厅和厨房的就会亮起来,无需进门后抹黑找开关,也免去呼叫多个命令控制多个分组的繁琐。

今年年初假期期间,为了解决一些不如意的事情,我重新部署了所有智能灯泡,把Philips Hue和配套的motion sensor全都换到楼上,楼下全部使用Sengled。这样,楼上的灯完全自动化,人到灯亮,离开后一段时期自动熄灭,连吼都不需要了。同时,楼下没有motion sensor,看电视也不会因为人一动灯就亮,影响看片体验。

在此基础上,我给儿子定制了两个在睡觉时使用的命令。一个是sleep time,该命令关卧室灯,调低亚马逊音箱音量(通常在播放适宜睡眠的音乐),然后打开夜灯(亮度很低的暗红色),最后设置定时停止音乐和关闭夜灯。第二个命令是awake。本来取名pee time,但是亚马逊音箱就是不响应。儿子怕黑,夜里醒来开灯睡觉。最开始我夜里醒来跑过去看,如果灯开着就给关上,但是这样非常影响睡眠。后来装了摄像头和智能灯泡,通过摄像头发现灯亮着,就用手机程序遥控关掉,虽然不必起床,但是会忍不住玩一会儿手机,仍然不利于休息。最后想到了这个定制命令的方法,儿子醒来后喊一声”Awake”,灯亮15分钟后自动关闭,通常儿子都能很快睡去,不行的话就再喊一遍。令人惊喜的是,儿子居然异常配合,所以今年以来没怎么为儿子卧室的灯而烦恼。

图2:基于Google Voice Kit和Raspberry Pi制作的纸盒智能音箱

经过多年的积累,现在家里有4个Google Home Mini,1个Google Home,1个用Google Voice Kit做的纸盒智能音箱,和3个亚马逊Echo Dot,基本全是促销打折时购入的。除了控制智能灯泡外,智能音箱还可以告知时间、天气,可以播放新闻和音乐等等。这些功能也基本融入了我家的日常生活之中。

ZoneMinder安装配置

本文简单介绍视频监控软件ZoneMinder的安装和配置。

首先安装LAMP,参见How to Install a LAMP Stack on Ubuntu 18.04

然后安装ZoneMinder 1.32.x

接下来访问http://192.168.2.3/zm/配置摄像头。以下是我的四个摄像头的配置:

Source PathMethod
Foscam R4rtsp://192.168.2.18:88/videoSubTCP
Amcrest IP2M-841rtsp://192.168.2.19:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=OnvifTCP
ZModo ZH-IXA15-WACrtsp://192.168.2.17:10554/udp/av0_0UDP

以上三个摄像头的Source Type均为Ffmpeg,Video Writer除了ZModo为X264 Encode外,其余两个均为H264 Camera Passthrough。

第四个摄像头D-Link DCS-932L比较特殊,没有找到rtsp方式,所以Source Type选为Remote,Protocol为HTTP,Method为Simple,Host Name为192.168.2.148,Port为80,Path为/video.cgi。

设置好后建议启用访问控制 (Options -> System -> OPT_USE_AUTH)。默认用户名密码为admin:admin。建议登录后修改密码 (Options -> Users)。

我用的一台老DELL Dimension 5150做服务器,CPU为奔腾4,内存为1.5GB。另外挂载了一块2TB西数紫盘在/var/cache/zoneminder/,用来存储视频和图片,两周时间占用空间约为450GB,耗电50度左右。

由于电脑计算能力有限,所以没有启动motion detection,只是作为一个集中存储视频的地方。另外还需要登录ZModo摄像头(非ZoneMinder)网页控制页面(仅限IE),修改为10fps(默认为25fps),不然电脑太老跟不上。如果不是所有时间都需要录制(比如我选择白天存储三个摄像头的录像,晚上只有两个),可以定时自动切换,设置方法参见这里。简单说就是设置两个状态Daytime和Nighttime,然后创建cron任务分别在不同时间运行

/usr/bin/zmpkg.pl Daytime

/usr/bin/zmpkg.pl Nighttime