今天先讲到的内容主要涉及以下设备:
首先是一块树莓派开发板,这是整个智能家居的控制中心,所有的程序都将在这块开发板上运行。当然,并不一定要求你买一块树莓派,因为文中涉及的所有软件都可以在windows,Mac OS,以及Linux甚至群晖上运行。只是楼主是比较喜欢一件事情交给一个设备做,这样某一个功能有问题修复起来也不会影响到其他功能的使用。楼主用的开发板是rasberry pi 3B。
包邮 原厂正品 树莓派3代B型 raspberrypi 板载蓝牙和WIFI e14版本
这是京东第三方的链接,马家会便宜些。对了,不要忘了给你的树莓派配张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,本站值友也有写过原创:
树莓派打造家庭中枢教程(完整版)追加修改(2017-05-0123:38:35):实话讲,不知道按着教程实操的人有多少,但是我还是尽量完善、更新这份教程。首先,Hassbian系统自带了Home-assistant,因此请使用Hassbian系统的值友跳过3.1,直接前往3.1.1。其次,3.1.1步骤如果执行失败,可以手动安装。
甚至如果你全部使用小米设备的话,有更简单的:
【再更新】小米网关接入Homekit完整教程,声控家中设备! - 小米社区官方论坛
但是为啥楼主没有选择这两个而是使用了domoticz,先说通过homebridge-aqara来实现小米网关设备联入homekit,这个做法无疑是最简单的,但是其仅仅支持aqara设备,并且不支持网关灯以及小米无线开关(其实是homekit不支持小米无线开关的多段模式)。并且不能跨平台使用,也就是这个仅限于ios10以上的设备才能使用,局限性太大,所以楼主放弃了。
而Home Assitant+Homebridge能够做到跨平台使用,也能做到控制网关灯,但是依然不支持小米无线开关(待确认),不过更重要的是,他设备添加配置都需要添加修改yaml文件。使用起来还是不便。而domoticz主要是看了这篇原创:
开源IoT平台domoticz与百搭wifi模块esp8266 篇一:车库卷门遥控基友家想搞智能家居,经我极力鼓吹,先让我用他的车库门试手,实现效果如下视频。随手一拍,请看官海涵。操控略有延迟,对付车库门这种实时性要求不高的电器来说足矣。当然,能遥控仅仅是智能的第一步。根据反馈回中央控制器的各种传感器数据从而进行自动化调节才是智能家居的努力目标。现有的带中央控制器的物联网解决方案
blindlight|赞72评论92收藏521查看详情
虽然原文作者写的不是很详细,但是总体上能够领会到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相关设置内,当然,也不排除某些路由器没有相关设置(例如电信光猫):
然后我们需要一台安卓手机来获取小米网关的通讯密钥:
这一段因为写文的时候自己也没有安卓手机了,所以大家跳转到以下文章查看一、获取网关基本信息这一章节:
【再更新】小米网关接入Homekit完整教程,声控家中设备! - 小米社区官方论坛
这儿需要提醒一下的是,打开局域网通讯协议后,一定要点确定。还有就是网关信息那一页,请全部截屏或拍照记录,这对之后的设置非常有帮助:
下面我们就去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必须需要一台安卓设备做中转,非常不便。不过有一篇原创提到了不需要安卓设备中转的方法:
#原创新人# 群晖安装broadlink-http-rest代替RMBridge看了本站两位大神的帖子后学会了如何用Siri来控制普通家电,实现简单的家居智能化。两位大神的帖子链接解放你的双手—让普通家电也能被Siri召唤解放你的双手—让普通家电也能被Siri召唤自iOS10发布后,iphoner可以使用其中增加...
其中还有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": ,
"mqtt": 1
}
],
"accessories": []
}
如下图:
然后命令行输入homebridge,看看是不是可以运行。如果没有任何的报错信息,那么久打开你的iphone,家庭,添加家庭,输入屏幕上的PIN CODE,看看domoticz里的设备是不是全部出现在了手机上。如果都有,那么恭喜你,我们下面只要将homebridge设置为开机启动就完事大吉了。这里先ctrl+C退出homebridge,然后大家请参照下文的相关步骤进行操作:
当Homekit遇到小米智能家居从高中的时候就想打造一个智能卧室,如今5年已过才刚刚开始自从Homekit发布,就一直关注,因为一直是个果粉,但是信仰充值实在伤不起,homekit的配件实在是太贵。小米刚出的路由器。在插件里面有homekit的插件,但是价格太高,而且不实用,后期没法自己加配件,只能用小米的配件。前几天从威锋论坛看
Ctrl+F “将homebridge设置成随系统启动”开始往下看。
嗯,最后的命令打完,树莓派就会重启,等待2分钟,打开手机上的家庭,如果所有传感器都工作正常的话,就可以愉快的使用siri了。
本文暂且到这,因为自己对树莓派和linux完全是小白,所以文中步骤可能有些瑕疵,大家若有发现请在评论指出。谢谢。