#原创新人#Domoticz + BroadLink + Synology + Amazon Echo实现智能家居
Overview 此事缘起于在美帝买了Amazon Echo,想着回来可以在家里多说英语,给儿子一些熏陶,也是个大玩具,说不定人家会爱上呢。后来想着整天对Alexa吼这吼那的,如果能唤他帮咱开空调,开电视,开灯,那就不用整天操心遥控器了吗。尤其,整天盯着遥控器的主,拎着遥控器一摇一摆就走了,然后撒着欢儿跑回来,遥控器就不知道丢哪儿了。 首先查到的是BroadLink配件,这其实是一个WiFi转红外+射频的配件。我买的是 通过其自带的学习模式,可以学习任何一个遥控器的遥控码。配合Broadlink自家的app就已经可以实现遥控器电子化了。Broadlink有安卓上有两个app: - e-control - IHC只有play store上有 不够完美的是仍然需要掏出个手机,翻找app,一堆乱点。这不是我想要的。继续百度,Google,如果要整合Amazon Echo——下文简称Alexa以图方便,有以下几种方案: 1. 本身是智能化家居,并且厂家有对应的Skill,enable该Skill即可,好处是各种原生的设置,例如:空调设几度,灯开什么颜色 2. 集成BroadLink,让Alexa操作BroadLink,此方案仍然有多种子方案: 3. Domoticz/Home Assistant + HomeBridge + Siri 其中Domoticz和Home Assistant均为Home Automation System,网上两者都有很多人实践,各有优劣。在参考链接中专门对5种不同的系统进行了比较。因为我有Synology NAS,又可以原生集成,所以毫不犹豫选择了Domoticz。充分发挥NAS 7*24小时不下线的优势,实现智能家庭网关。针对第二点中的后3个(2-4)方案全部进行了实现。后面会一一列述。最终方案架构如下图: Domoticz into Synology这个超级简单。有官方支持Domoticz for Synology NAS。选择Domoticz for Synology DSM 6.1 with Python Plugin Beta。python plugin系统很重要,后面会用到。 下载的是.spk文件,这是Synology DSM系统的安装包。直接在Package Center中选择Manual Install即可。安装成功后如下图。 其他依赖包Domoticz的python插件系统依赖于Python3 Broadlink into DomoticzDomoticz Broadlink Python Plugin + Controlicz这是本篇中最糟心的部分,陷阱无数。后面专录踩坑记录。 安装python-broadlink 在很多文章中python-broadlink都是用pip来安装,例如pip3 install broadlink。但是由于broadlink基于pycrypto,而安装pycrypto的时候会要在本地进行编译。Synology NAS上显然没有编译环境(GCC and etc.)。所以安装会失败。但是根据作者的描述,最新的python-broadlink并不基于pycrypto了,因为pycrypto已经被弃坑了。最新的python-broadlink基于pyaes库来实现加解密。所以正确的步骤是: - 确保使用python3 - git clone python-broadlink - 切到python-broadlink目录,python setup.py install - python -m pip install pyaes因为Synology上无法安装pip3,这是变通的方法。使用python get-pip.py安装的仍然是pip2 安装Domoticz Python Plugin 参考链接3是插件作者提供的Domoiticz wiki页,不过全文基于Windows,参考其中others章节,仍然很好用。步骤如下: 下载plugin files Domoticz的插件目录在/usr/local/domoticz/var/plugins/BroadlinkRM2/,拷贝插件文件到该目录,包括: - plugin.py ——插件的主文件 - plugin_send.py - plugin_http.py - plugin_http.sh
在Synology DSM的Package Center中重启Domoticz。注意后面每次修改plugin都需要重启Domoticz。 添加Broadlink Hardware 按照插件作者的步骤,下面应该可以添加Hardware,并可以Discover Broadlink设备,添加Hardware如下图: 导入易控(e-control)设备 参考链接3中也有详细描述。在User Guide->Inside Domoticz->xxx - import。可能作者使用的是非多字节语言,在处理导入文件时,若含有中文字,会出现失败的情况。参见踩坑记录中的解决方法。 Controlicz在搜索到的文章中鲜有提及。我也是在偶然的翻阅中发现了这个Alexa Skill。使用Controlicz就可以不用通过HA-Bridge来曲线救国了。但实际使用中发现还是各有利弊。后文讲完HA-Bridge章节,会提到两者的优缺点。 - 使用Alexa的账号来注册Controlicz - Alexa app上enable skill就好了 - 对着Alexa说discover device 注意:Controlcz中要求: - Domoticz服务必须外网可以访问,所以要配置家里的端口映射,以及DDNS,因为使用的是Synology,这个我早就已经有了 - Controlicz要求Domoticz服务运行于HTTPS协议,所以必须使能8443端口,注意NAS的Firewall配置 踩坑记录至此,如果能完成上面所有的步骤,对Alexa说”Turn on the TV”,应该已经会有正确响应了。但遗憾的是,中间还有一些东西要做: 1. Import Error “broadlink” 明明已经安装了python-broadlink,而且在REPL中也可以正确import,但是Domoticz log中始终报错。原因是PYTHONPATH不正确。在plugin.py中已有处理:
正确的broadlink库路径是/usr/local/lib/python3.5/site-packages/broadlink-0.5-py3.5.egg/broadlink/。上面linux系统的路径是dist-package。不过即便改成site-packages,依然报同样的错误。解决方法简单明了,将broadlink目录拷到plugins目录下面即可 cp -r /usr/local/lib/python3.5/site-packages/broadlink-0.5-py3.5.egg/broadlink/ /usr/local/domoticz/var/plugins/BroadlinkRM2/ 2. Error Connecting to Broadlink device 有两个GitHub issue链接可以看一看: -Error Connecting to Broadlink device #107 -lpad fix broken? #97
好了修改plugin.py对应的行就可以了。 3.Domoticz import文件中有中文的问题 在Python3中,如果文件有编码问题,例如包含中文,不能通过以下方式来读取文件并解码:
正确的做法应当是
所以修改所有plugin.py中的open语句即可。
现在试一试,连接,发现,导入,应该都没问题了吧。 Domoticz + broadlink-http-rest + HA-Bridge这个方案不需要借助Broadlink的Domoticz python插件,而是利用Domoticz中的Dummy Hardware,如下图: 安装HA-Bridge HA-Bridge是将Alexa不支持的设备模拟成Alexa原生支持的Philips HUE Light。而HA-Bridge可以直接导入Domoticz中的所有设备。缺点是,他只能支持开关和调亮度的操作。 安装broadlink-http-rest 从GitHub上clone下broadlink-http-rest。然后和HA-Bridge一样,要以service的方式运行在后台。否则ssh连接一断开,server就退出了。命令为nohup python broadlink-http-rest/server.py & 计划任务&防火墙 配置好防火墙:
8080: broadlink-http-rest server 8443: Domoticz HTTPS service 9000: Domoticz Broadlink web service 配置好计划任务 Broadlink into Domoticz 在Setup->Hardware下建立Dummy Hardware,然后点击Create Virtual Sensors,然后在Switches tab里找到刚建好的virtual sensor,点击Edit,按下图配置好On Action和Off Action。 Domoticz into HA-Bridge 参见参考链接2,从Configuring HA bridge开始讲如何配置Domoticz到HA-Bridge service。然后就可以直接添加Domoticz里的设备了。 HA-Bridge vs. Controlicz 1.General Smart Home Controlicz可以整合Domoticz所有设备到Alexa中,譬如,如果Alexa并不原生支持该smart home设备,则可以先在家里搭建Domoticz服务器,然后通过Controlicz将之整合到Alexa中。根据Controlicz官网support列表,其并不只局限于开关设备: 2.整合Broadlink 在整合Broadlink上,两者就各有胜场了。Broadlink是通用遥控器。所以通过Broadlink导入的设备都是按钮设备,每个按钮都是一个Push Button设备,所以只有一个触发的操作。这样也合理,因为按钮只有触发,并没有开状态或者关状态。这甚至不如灯的状态多。 Broadlink原生Skill + IHC在整完上面那一大堆之后,我突然发现原来Alexa已经有Broadlink的原生Skill了,但要配合最新版的Broadlink IHC app使用。不过令人糟心的是这两个app的评分都低的可怜。 - IHC playstore 2.2分 - Alexa Broadlink Skill 2.3分 参考链接5 open source home automation tools Alex - Domoticz Domoticz Wiki Plugins/BroadlinkRM2 #原创新人# 群晖安装broadlink-http-rest代替RMBridge_生活记录_什么值得买 |
香港服务器多少钱一个月?哪家的香港服务器
4核4g6M50G盘20G防御云服务器价格多少钱?T
特发集团与华为签署全面合作协议
【身边的AI】高空抛物智能追溯解决方案,站
中海&华为签署战略深化合作协议
华为赵博:数字化转型成为地产企业最确定的
这款TCL K6V指纹锁不到千元即可买到?大品
凯迪仕指纹锁哪款好用?买凯迪仕指纹锁选哪