零基础打造全屋智能控制系统 篇一:智能家居控制中心搭建及小米博联的联动
追加修改(2017-05-21 23:54:06):
关于树莓派下python-broadlink的安装方法更新,请大家直接在~目录下输入命令"sudo git clone https://github.com/mjg59/python-broadlink.git"然后“cd python-broadlink”进入python-broadlink目录后输入命令“sudo python setup.py install”进行安装,原来SFTP上传文件的方式可能会因为权限问题导致python-broadlink不能正常运行。(感谢@DT27 也是domoticz中文站的站长发现此问题)还有就是如果你有RM2的话,建议参考
操作
关于智能家居的原创本站已有不少,楼主在搭建自己的智能家居控制中心的时候也几乎把本站所有的相关原创也都读了一遍,对我的搭建工作也颇有帮助,在开篇先行谢过各位。有用到大家原创内容的时候会在相关段落插入卡片方便大家参考。本文篇幅较长,建议有兴趣的先收藏,然后动手的时候照着做。不然读起来非常枯燥乏味。
首先要说的是搭建智能家居的初衷。因为自己在很早以前就购入了博联的SP mini智能开关,用来远程控制家里的净化器。而后也买过鸿雁的智能开关,结果发现坑爹是需要零火线才能工作,这个要改造实在是大工程,只得放弃,好在后面小米生态链的aqara也就是绿米推出了单火版的墙壁开关,配合小米网关,可以非常方便的与其他小米产品进行联动控制。但是问题来了,一般而言,现在大多数的智能家居大多都是通过手机APP来操控和管理设备,而不同品牌的设备之间也不互相兼容,要通过各自的APP才能进行操控,更不要说联动了。这就非常的不好了,要知道要我打开个app操控设备,本来就已经觉得很烦躁了,更何况还要装多个app。所以一直在动心思想说如何打通小米和博联这两个互相独立的智能家居系列,也是本篇原创的核心内容。当然,除此之外,这个系列还将涉及到的内容将会有:
将飞利浦livingcolors Gen2接入智能家居,Gen2是比较尴尬的一款livingcolors产品,它不像G1那样使用简单的2.4G遥控进行控制,而是使用了zigbee网络,但它又不被Hue网络直接支持,所以下一篇文章里我们会说livingcolors Gen2与Hue Bridge之间的联通。
然后是自己DIY的AirSense空气检测仪接入domoticz的步骤,楼主在其他文章里多次提及这么个小玩意,也答应过大家会把所有源码放出,只是现在还没时间做连入domoticz的代码编写,相机可能会先放出不联网版的教程(写原创真的是件气力活啊,这样的文章没有5,6个小时根本完不成)。
既然domoticz已经能获得家中空气数据,那么接下去要做的就是联动了,包括对空气净化器,新风设备的联动。当然,其中最简单的联动是通过智能插座的开关来控制,不过这个没什么技术含量,所以主要会提到的是针对DIY空净/新风的可选择档位的联动和红外线遥控。
好了,坑先挖这么大,让我们来慢慢填。今天先讲到的内容主要涉及以下设备:
首先是一块树莓派开发板,这是整个智能家居的控制中心,所有的程序都将在这块开发板上运行。当然,并不一定要求你买一块树莓派,因为文中涉及的所有软件都可以在windows,Mac OS,以及Linux甚至群晖上运行。只是楼主是比较喜欢一件事情交给一个设备做,这样某一个功能有问题修复起来也不会影响到其他功能的使用。楼主用的开发板是rasberry pi 3B。
这是京东第三方的链接,马家会便宜些。对了,不要忘了给你的树莓派配张TF卡哦,16G的就足够了。
然后是小米智能家居套装:
这儿虽然说的是小米智能家居套装,但实际上指的是绿米(aqara)的产品,除了图中所示的这些外,还有温湿度传感器。墙壁插座、开关等。至于米家的其他产品,无论是空气净化器,还是智能插线板都是不支持的。说白了,其实domoticz支持的只是网关,所以连接在网关上的设备都可以被支持,其他的产品目前只有yeelink的灯开放了协议可以单独添加。以下为目前能连入domoticz的所有配件(注:网关需为2代以上,即带网络收音机的网关)
而博联的设备楼主只有SPMINI插座,但是R2网关,A1检测仪也是能被支持的,不过讲真,如果你手上没有博联设备的话,建议不要去买了,各方面都远不如米家,特别是安全性,在下文会讲到,只要知道博联设备的地址,就可以轻松的发送指令来对其进行操作,完全没有任何的用户验证措施。
树莓派系统的安装
这是最基础的一部工作,虽然网上有很多版本的树莓派系统,但是为了以后出问题可以非常方便的找到各种解决方案,所以这儿推荐大家使用官方的Raspbian系统:
下载地址:戳
建议使用迅雷下载,下载完了解压,会得到一个201X-XX-XX-raspbian-jessie.img文件,我们放着待用。
然后下载SDFormatter用来格式化TF卡。下载完安装了就直接把TF卡格式化一遍,这个步骤就不用说了。
下载地址:戳
接着我们还需要一个工具Etcher,将img文件烧录到tf卡中。
下载地址:戳
按步骤:1.选择刚才下载的raspbian-jessie.img。2.选择TF卡驱动器。3.FLASH,静待完成就好。
等Etcher把系统镜像烧录至TF卡后,我们就可以把TF插到树莓派里,然后启动树莓派,这里特别提醒,树莓派3b请使用5V 2A以上的电源适配器,并且电源线要尽可能的短,越短越好。
在做第一步设置的时候,我们还需要一台HDMI的显示器或电视,鼠标和键盘都与树莓派连接好再开机。
很快就能进到图形桌面了,楼主这儿展示用的是VNC远程,所以显示比例啥的都有些问题,大家不用介意。这儿要做的第一步是连接上无线网。
点右上角的WIFI图标,选择SSID,然后输入无线密码就成。不过这儿需要额外多做一步,就是把IP地址设为手动静态,毕竟我们是做服务器用的,动态地址每次断链之后都可能变化:
具体做法是右键单击右上角的WIFI图标选择第一项Wireless&.....
然后interface右边选择wlan0,把Automatically....的框勾掉,在下面填上你家里局域网的IP地址和网关,DNS服务器等。然后点击apply后关闭。然后打开浏览器看看能不能正常上网:
OK,没有问题,下一步就是打开SSH,毕竟老接着鼠标键盘显示器用树莓派也不是很方便是不。
点击树莓派图标,选择Preferences>Raspberry Pi Configuration。
然后选择interfaces选项卡,将SSH Enabled,点击OK。然后就可以把树莓派关闭,拔下鼠标键盘显示器,把它挪到任意一个WIFI信号良好的地方(注意,一定要保证其WIFI信号良好)。
然后我们下载putty,因为官网被墙,为了不给大家造成困扰,所以请大家自行百度下载就是了。记得选大的下载站以免造成不必要的损失。下载完成后打开putty,界面如下:
在host name里填上刚才设置的树莓派的IP,Connection type选择SSH。然后OPEN。当然,为了下次连接方便,你可以在Saved Sessions里填上一个名称,点击save,以后就可以直接双击打开。
输入用户名pi,默认密码是rasberry(输入密码时光标不会变化,输完回车就行)
看到pi@raspberrypi:~ $的提示行就算成功了,下面我们要做的第一步就是把默认密码改掉。命令如下:
sudo passwd pi
ctrl+C复制灰框里面的命令,到putty窗口右键就可以粘贴。
它会让你输入两次新密码,两次一致的话密码就修改成功了。
接着我们要设置的是树莓派的时间和时区。首先要做的是打开NTP,让树莓派时间与网络时间同步:
sudo timedatectl set-ntp true
接着是设置时区:
sudo dpkg-reconfigure tzdata
会出现下面的界面:
在中国的话我们就选择Asia,然后回车,然后选择Chongqing就好了。此时终端会回到命令行模式。同时在命令行上方我们可以看到Local time is now:……,大家核对下是不是和自己的时间一致,一致的话树莓派的时间就算设置完成,为了让我们等会安装更顺畅,接着我们设置镜像源,命令如下:
sudo nano /etc/apt/sources.list
在开头添加:
deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
然后在原有的镜像源前方加上#,如下图:
然后按Ctrl+X退出(记得选Y保存)。然后运行下命令sudo apt-get update,更新下镜像源。
sudo apt-get update
至此,我们的树莓派系统已经完全和设置完成。下面我们就要说domoticz的安装和设置了。
domoticz的安装和设置
关于智能家居系统,开源的软件有很多,例如Home Assitant,本站值友也有写过原创:
甚至如果你全部使用小米设备的话,有更简单的:
但是为啥楼主没有选择这两个而是使用了domoticz,先说通过homebridge-aqara来实现小米网关设备联入homekit,这个做法无疑是最简单的,但是其仅仅支持aqara设备,并且不支持网关灯以及小米无线开关(其实是homekit不支持小米无线开关的多段模式)。并且不能跨平台使用,也就是这个仅限于ios10以上的设备才能使用,局限性太大,所以楼主放弃了。
而Home Assitant+Homebridge能够做到跨平台使用,也能做到控制网关灯,但是依然不支持小米无线开关(待确认),不过更重要的是,他设备添加配置都需要添加修改yaml文件。使用起来还是不便。而domoticz主要是看了这篇原创:
虽然原文作者写的不是很详细,但是总体上能够领会到domoticz的强大,以及对arduino和ESP8266的支持。最关键的是,domoticz配置好之后添加设备啥的几乎不用再去命令行模式下修改任何文件。可以全部在web界面完成。当然,缺点是……UI太丑……。哈哈,楼主费了好大劲才扳回来点……,好了闲话不扯,下面说domoticz的安装:
domoticz的安装非常方便,就一行命令:
sudo curl -L install.domoticz.com | sudo bash
然后就等他自动无脑安装了,安装完之后,因为安装的是release版的,是不包含对小米网关支持的,所以我们在这要对其升级下,将其升级到beta版,具体命令如下:
cd domoticz
./updatebeta
注意,这是两行命令,依次复制。
此时domoticz已经安装完成并已经自己启动了,这时候我们打开浏览器,输入http://树莓派的IP地址:8080 ,例如楼主的就是http://192.168.10.24:8080 。就能打开domoticz了。我们暂时不用管它,继续安装其他需要的组件。
安装Nodejs:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
安装avahi
sudo apt-get install libavahi-compat-libdnssd-dev
安装其他
apt-get install mosquitto
sudo apt-get install python-dev
sudo easy_install -U distribute
sudo apt-get install python-pip
pip install paho-mqtt
然后我们把mosquitto设为随机启动
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
好了,之后就让我们给domoticz添加小米网关吧。
小米网关的添加
在添加小米网关之前,我们首先要在路由器上做些设置,因为domoticz和下面的子设备都是通过局域网来通讯的,所以需要各个设备的IP地址,例如树莓派的IP地址我们可以在树莓派上手动设置为静态的,但是无论是小米网关,还是博联插座,其DHCP地址都不是固定的,所以我们就要在路由器内将这些设备的IP地址设为静态:
不同的路由器设置不同,但大都在DHCP相关设置内,当然,也不排除某些路由器没有相关设置(例如电信光猫):
然后我们需要一台安卓手机来获取小米网关的通讯密钥:
这一段因为写文的时候自己也没有安卓手机了,所以大家跳转到以下文章查看一、获取网关基本信息 这一章节:
这儿需要提醒一下的是,打开局域网通讯协议后,一定要点确定。还有就是网关信息那一页,请全部截屏或拍照记录,这对之后的设置非常有帮助:
下面我们就去domoticz添加小米网关了,在浏览器中输入domoticz的地址,我这依然拿http://192.168.10.24:8080举例,点击,设置>硬件
然后自己设置一个名称,类型选择Xiaomi Gateway(若没有请跳转前文,将domoticz升级至beta版),心跳时间可以随意设置,楼主设的是10分钟,如果10分钟内收不到小米网关发来的任何信息,就会重启小米网关的连接。然后远端地址填写小米网关的IP地址,端口为9898,密码为刚才获取的小米网关通信协议密码,最后点击增加。完成之后点击设置>设备,此时你就应该看到满屏的设备在你眼前了(若没有,请点击所有设备):
因为楼主已经做好了设置,所以名称都已经改成了中文,而大家看到的可能都是设备的默认名称。这时候你就需要刚才楼主让你们截图拍照保存的那张图片,通过domoticz里面ID的后四位来修改对应设备的名称。
一开始打开的时候所有的箭头都是绿色(未使用),单击以后就会变成蓝色已使用。这里要注意的是,只有将设备标记为已使用,我们才能在导航栏的菜单里看到他们并进行控制。
添加完成后的效果,这儿还要注意的是,小米温湿度传感器会有三个设备号。分别是温湿度,温度,湿度。我们要分别使用温度和湿度,因为复合数据是不被homekit支持的,也无法在domoticz里设置复合传感器的联动。
小米网关的添加就说到这,下面说博联的(其他设置大家自行研究,纯傻瓜式操作)。
博联SPMINI的添加
之前的很多原创中,大家纷纷使用RM Bridge来将博联设备连入其他智能家居平台,但是使用RM Bridge必须需要一台安卓设备做中转,非常不便。不过有一篇原创提到了不需要安卓设备中转的方法:
其中还有http-rest来操控RM2的红外学习,不过楼主手上没有RM2,所以这次我们就只说其中提到的python-broadlink的安装。
其实使用wget python-broadlink可以非常方便的进行python-broadlink的安装,但是楼主是下载下来装的,所以就按已成功的方法说吧:
首先前往https://github.com/mjg59/python-broadlink
点击绿色的Clone or Download,选择download zip,将python-broadlink的源代码下载下来,然后上传至树莓派。之前很多文章里都提到建立SMB服务来往树莓派里写文件,其实完全没有必要。我们只需要下载一个filezilla通过SSH上传文件就行,下载地址:http://sourceforge.net/projects/filezilla/files/FileZilla_Client/3.25.2/FileZilla_3.25.2_win32.zip/download
然后在站点管理器里新建一个SFTP站点:
用户名和密码都是树莓派的密码。然后连接。然后右侧就是服务器目录了。我是将刚才解压好的文件直接放在了/home/pi/domoticz/scripts/python目录下面。以下也按此举例:
上传完了之后我们关闭filezilla,然后继续打开putty,登录树莓派,执行以下命令:
cd /home/pi/domoticz/scripts/python
此时我们进入了刚才上传python-broadlink的目录。执行ls命令:
确认有setup.py的脚本。然后我们执行:
python setup.py (忘了要不要在前面加sudo了,如果执行错误的话大家再加一个试试)
然后等到脚本自动执行完成,没有出现任何error就可以了。
然后我们就需要编写对SPMINI进行控制的脚本,此段脚本出处为(https://www.domoticz.cn/forum/viewtopic.php?f=25&t=14&p=25&hilit=broadlink#p25 ):
这里我们先新建一个叫spmini的脚本:
nano spmini.py
将以下脚本的IP地址和MAC地址修改后copy进去:
#!/usr/bin/python
import broadlink
import sys
device_ip="插座的IP地址"
device_port=80
device_mac="插座的MAC地址全部大写"
device_type="broadlink.sp2"
action = str(sys.argv[1])
device = broadlink.sp2(host=(device_ip,device_port), mac=bytearray.fromhex(device_mac))
device.auth()
#device.host
if action == "on":
device.set_power(True)
elif action == "off":
device.set_power(False)
elif action == "status":
print "on" if device.check_power() else "off"
应该是下图的样子,大家检查下没有问题的话就ctrl+X选择Y保存。
然后我们为这个脚本添加可执行权限:
chmod 777 spmin.py
然后我们试着执行一下脚本看看脚本有没有问题:
python spmini.py on
python spmini.py off
同时观察对应的博联插座有没有执行相应的开关操作:
如果脚本执行如上图没有任何错误的话,那我们就可以去domoticz里添加开关了。如果你有多个插座的话,只需要建立多个.py文件,将其中的IP和MAC地址更改成相应的插座地址就行。
我们打开domoticz,现在设置>硬件里添加一个虚拟硬件,名字随便取,我取的是博联开关,类型是Dummy,心跳时间为无效,点击增加:
然后我们到开关页面,选择手动添加 灯/开关
设备名称填你自己想要的,然后设为使用就好。然后我们编辑刚才添加的开关:
开触发里填上:
script:///home/pi/domoticz/scripts/python/spmini.py on
关触发里填上:
script:///home/pi/domoticz/scripts/python/spmini.py off
然后保存,页面会跳回开关主页面,这时我们点击该开关的图标,进行开关测试。若成功则算完成,要是失败,则前往设置>日志查看具体的出错信息。然后评论提交,看看楼主能不能解决。
这样,我们就把小米和博联的设备都添加到了domoticz。当然,如果我每次操作设备还需要打开浏览器,输入domoticz的网址再进行操作的话,岂不是和之前开各种APP来操作没什么区别,我要的不就是解放双手,只动嘴不动手么。所以下面我们来说说如何使用SIRI来操控domoticz的设备。
HOMEBRIDGE的安装
在安装homebridge之前我们先做些准备工作,打开domoticz,选择房间区域设置:
然后单击新增房间区域,取个名字,点击ADD,然后选择刚才新建的区域,在下面的设备中将想在homekit中使用的设备一一添加到刚才新建的房间区域。
例如楼主的homekit使用的区域idx是2,包含以下设备:
然后我们putty到树莓派,安装相关环境
sudo apt-get install python
sudo apt-get install libavahi-compat-libdnssd-dev
sudo apt-get install g++
然后安装homebridge
sudo npm install -g --unsafe-perm homebridge
再安装homebridge-edomotic
sudo npm install -g homebridge-edomoticz
然后我们进入homebridge目录,设置config.json文件:
cd ~/.homebridge/
nano config.json
修改roomid为刚才在domoticz内建立的房间区域号后ctrl+x保存。
{
"bridge": {
"name": "Homebridge",
"username": "CC:21:3E:E4:DE:33",
"port": 51826,
"pin": "031-45-154"
},
"description": "Configuration file for (e)xtended Domoticz platform.",
"platforms": [
{
"platform": "eDomoticz",
"name": "eDomoticz",
"server": "127.0.0.1",
"port": "8080",
"ssl": 0,
"roomid": <Input Domoticz IDX-value>,
"mqtt": 1
}
],
"accessories": []
}
如下图:
然后命令行输入homebridge,看看是不是可以运行。如果没有任何的报错信息,那么久打开你的iphone,家庭,添加家庭,输入屏幕上的PIN CODE,看看domoticz里的设备是不是全部出现在了手机上。如果都有,那么恭喜你,我们下面只要将homebridge设置为开机启动就完事大吉了。这里先ctrl+C退出homebridge,然后大家请参照下文的相关步骤进行操作:
Ctrl+F “将homebridge设置成随系统启动”开始往下看。
嗯,最后的命令打完,树莓派就会重启,等待2分钟,打开手机上的家庭,如果所有传感器都工作正常的话,就可以愉快的使用siri了。
本文暂且到这,因为自己对树莓派和linux完全是小白,所以文中步骤可能有些瑕疵,大家若有发现请在评论指出。谢谢。
lwy651
校验提示文案
黑夜萤火虫
校验提示文案
mu0lang
校验提示文案
xbra
校验提示文案
谁来剁我手
校验提示文案
御宅魂
校验提示文案
Cong_He
校验提示文案
cc5233
连一点互动都没有的,算毛智能化
校验提示文案
pizigao
校验提示文案
我是雷神托尔
校验提示文案
绯村心太
校验提示文案
Kaikailau
校验提示文案
RealankLiu
校验提示文案
风趣
校验提示文案
乘凌
校验提示文案
Ares630
校验提示文案
Neoion
校验提示文案
有只大头苍蝇
校验提示文案
miccoo
校验提示文案
灿烂的黑色铅笔
校验提示文案
生活丶家
校验提示文案
生活丶家
然后回车,输入密码后不是到你那步,卡在password
校验提示文案
是77
校验提示文案
长沙南边来的满哥
校验提示文案
值友8969687104
校验提示文案
生活丶家
校验提示文案
值友3041840780
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
libavahi-compat-libdnssd-dev : 依赖: libavahi-client-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
如何解决
校验提示文案
眼睛君
1. domoticz无法安装,可能是新版raspbian支持问题,使用2017-06-21-raspbian-jessie.img镜像刷入解决;
2. domoticz安装问题,使用命令sudo curl -L install.domoticz.cn | bash,解决;
3. 安装homebridge的时候卡住,网络问题导致,更换淘宝源解决,npm config set registry 去看看,验证npm config get registry;
4. 设置config.json文件提示无homebridge文件,先创建homebridge文件:mkdir .homebridge ,再编辑 nano .homebridge/config.json;
本人小白,可能遇到的问题都比较白痴,如有其他值友遇到同类问题可参考。擅用搜索!擅用搜索!擅用搜索!
校验提示文案
木子代山马化十
校验提示文案
值友4153539471
校验提示文案
苗苗
校验提示文案
值友1881613236
校验提示文案
值友5987377676
校验提示文案
哩嗯哩嗯哩嗯
校验提示文案
gyfeng1986
校验提示文案
黑夜萤火虫
校验提示文案
值友3346488361
events.js:160
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE :::51826
at Object.exports._errnoException (util.js:1020:11)
at exports._exceptionWithHostPort (util.js:1043:20)
at Server._listen2 (net.js:1262:14)
at listen (net.js:1298:10)
at Server.listen (net.js:1394:5)
at EventedHTTPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19)
at HAPServer.listen (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:158:20)
at Bridge.Accessory.publish (/usr/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:607:16)
at Server._publish (/usr/lib/node_modules/homebridge/lib/server.js:126:16)
at Server.run (/usr/lib/node_modules/homebridge/lib/server.js:96:10)
校验提示文案
OVAN
校验提示文案
黄笑笑
校验提示文案
rayborng
校验提示文案