智能家居系统搭建方案这是一个探索性项目,旨在提供一个完整的智能家居搭建指南。
具体系统架构图如下所示:方案简介:•使用Home Assistant、HomeBridge 作为智能家居的核心•使用Amazon Echo 作为语音输入工具(当前仅支持英语)•使用iPhone 的“家庭”应用作为控制工具•可以使用任何的设备连接Home Assistant 服务来控制应用1基础知识篇1.1智能家居简介当前,我们谈论智能家居的时候,我们实现上是在讨论:家庭自动化。
引自维基百科,对于智能家居的介绍1:Home automation or smart home (also known as domotics) is buildingautomation for the home.随着机器学习和深度学习等AI 技术的进一步普及,这一点(智能化)在最近几年里,应该会发生一些剧烈的变化。
而无论如何,我可不太希望我要被机器催着起床。
开始实战之前,让我们先关注于当前智能家居的几个关键点:•设备。
这些设备要么使用WiFi,要么要使用蓝牙,方便使用手机连接上这些设备。
依当前的情况来看,主要是以WiFi 为主,在手机上配置完后,可以轻松地实现远程控制。
与此同时,他们在与手机通讯的时候,会使用一些自定义的通讯规则,并且似乎很容易被破解(参见仿真器一节)。
如Philips Hue 智能灯、Wemo 开关等等,他们都已经可以被仿真,并作为Homekit 组件使用。
•自动化。
自动化是指你可以定时也开关某个特定的设备,闹钟一响,便打开灯诸如此类的。
•场景(规则)。
与自动化稍微区别的是,场景是某个特定场合下,对一系列设备的操作,如早起,便开灯、打开窗帘,离开家,则锁门、关闭一系列用电器、开启防盗功能等等。
•中心网关。
当我们所使用的一系列设备拥有WiFi 功能时,装有各种软件的手机便相当于控制中枢。
而这样的设计本身是不合理的,你要在手机上安装一系列的应用。
这个时候,便需要一个额外的软件作为中心,来接入这些设备,而手机上也不需要多余的额外软件。
如HomeKit、Home Assistant 就是这样的例子。
而作为一个普通的用户,我们只需要关注便利的生活。
作为一个极客,我们则关注于如何改造成需要的功能。
1.2智能音箱学术上有个概念是“传声器阵列”,主要由一定数目的声学传感器组成,用来对声场的空间特性进行采样并处理的系统。
如下图所示Amazon Echo 的电路板:其及对应的麦克风的位置:其所要主要解决远距离语音识别的问题,以保证真实场景下的语音识别率。
而这些设备的主要原理,都是将语音信号发送到服务器端,由服务器端识别,并匹配到对应的指令上。
Amazon Echo实验表明AWS 的服务并不是那么可靠的~~,经常出现:Your Echo dot is not connected自定义组件的原理,如下图所示:1.3中心网关Home AssistantHome Assistant 是一个运行在Python 3 上的开源家庭自动化平台。
能跟踪和控制家庭中的所有设备,并实现自动化控制,同时还完美的支持在Raspberry Pi 上。
通过Home Assistant 插件,它可以直接兼容各式硬件设备。
其原理是通过WiFi、BLE、Zigbee、MQTT 等不同的协议,来与不同的本地设备互联,并提供一个响应式的Web 界面、PWA 应用、iOS 应用,让用户可以轻松地与设备进行交互。
其在桌面浏览器上的界面如下图所示:手机浏览器的界面如下图所示:对于提供丰富功能(如RGB 灯)的设备来说,它也能支持丰富的操作,即上图。
同时,还能接上Amazon Echo、HomeKit 等各式各样的中心。
HomeBridgeHomeKit 是由Apple 公司推出的智能家居平台,包括iOS 上的SDK、智能家居硬件通信协议(HAP: HomeKit Accessory Protocol) 、以及MFi(Made for iPhone/iPod/iPad) 认证等等。
借助于iPhone、iPad、iWatch 等设备及『家庭』应用,用户可以轻松地掌控各种HomeKit 配件。
并且可以通过设备上Siri 应用、Homepod,直接用语音来与设备交互。
当前要在Homekit,有三种方法:•购买昂贵的MFi 设备。
•借助于Home Assistant,来自建Homekit API 服务连接设备。
•模拟现有的MFi 设备。
诸如使用ESP8266 仿真Philip Hues。
引自:使用iOS Homekit控制树莓派:HAP 协议部分是需要加入MFiProgram 才能获取文档,而且MFi Program 无法以个人开发者身份加入。
因此,这个时候我们就需要借助于Homebridge。
Homebridge 是一个用Node.js 实现的轻量级后台,可以在家庭网络上运行,用于模拟iOS HomeKit API。
它支持插件——由社区提供的模块,这些插件能提供从HomeKit 到“智能家居”设备制造商,提供的各种第三方API的基本桥梁。
而我们只需要有一个iPhone 在手便可以了。
1.4设备如果只有上面的几种中心网关,而缺少设备,那么整个智能的中心就是不完善的。
而这也是最近几年来,限制智能家居发展的一个因素:找不到合适的用户需求。
通讯机制与协议•WeMo•ZigBee•WiFi•BLE•红外旧设备中枢如小米的万能遥控、Broadlink RM Pro 等。
仿真设备设备:•Amazone Echo Dot•NodeMCU•Broadlink RM Pro•Yeelight•Raspberry Pi 2•Android、iOS 设备2实战设备篇2.1ESP8266 仿真设备•Wemo:可以被Amazon Echo 识别•Philips Hue:可以被HomeKit 识别?ESP8266 仿真Wemo要求:下载Ardunio IDE,地址:/en/main/software一、安装Arduino ESP8266Arduino ESP8266 GitHub 地址:https:///esp8266/Arduino 安装方法:1.启动Arduino IDE,并进入Preferences 窗口2.在Additional Board Manager URLs 中输入:/stable/package_esp8266com_index.json 3.从Tools > Board 菜单中打开Boards Manager,并输入安装esp8266 平台二、测试仿真下载安装包:https:///kakopappa/arduino-esp8266-alexa-multiple-wemo-switchSetup 步骤:•下载代码•在编辑器中打开wemos.ino•修改WiFi 设置•定义开关及其回调,在officeLightsOn、officeLightsOff、kitchenLightsOn、kitchenLightsOff 中•烧录相似项目:Arduino Esp8266 Alexa Wemo switch emulatorESP8266 仿真Philips HueESP8266 Hue Emulator 项目地址:ESP8266HueEmulator这个Demo 需要这么几个库NeoPixelBus、aJson、Time、NtpClient,同时还需要修改一些相关的配置。
因此直接使用这个脚本安装,比较简单:注意:如果是Mac OS,需要将下面脚本中的$HOME/Arduino/libraries/ 改为$HOME/Documents/Arduino/libraries/mkdir -p $HOME/Arduino/libraries/cd $HOME/Arduino/libraries/git clone --branch 2.1.4 https:///Makuna/NeoPixelBus.gitgit clone https:///interactive-matter/aJson.gitgit clone https:///PaulStoffregen/Time.gitgit clone https:///gmag11/NtpClient.gitsed -i -e 's|#define PRINT_BUFFER_LEN 256|#define PRINT_BUFFER_LEN 4096|g' aJson/aJSON.hcd -git clone https:///probonopd/ESP8266HueEmulator.gitsed -i -e 's|#include "/secrets.h"|//#include "/secrets.h"|g'ESP8266HueEmulator/ESP8266HueEmulator/ESP8266HueEmulator.inosed -i -e 's|//const char|const char|g'ESP8266HueEmulator/ESP8266HueEmulator/ESP8266HueEmulator.ino再将代码烧录到ESP8266 上,就可以在Homekit 看到相应的配置。
2.2小米智能插座寻找设备npm install -g miiomiio --discovernpm install --save miio3集成网关篇3.1Raspberry Pi Home AssistantImages: https://home-assistant.io/docs/hassbian/installation/ Images Downloader: https://etcher.io/发现文档好像有点问题,便手动地尝试安装:pip3 install --upgrade homeassistant运行sudo -u homeassistant -H /srv/homeassistant/bin/hass并不没工作,于是执行官方的安装脚本:curl -O https:///home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pihass_rpi_installer.sh && bash hass_rpi_installer.sh又在我的MBP 上安装尝试pip3 install homeassistanthass --open-ui然后发现安装完就可以了。