资讯详情

so easy!分分钟动手搭建一套智能家居系统

6b6639047f7a267db4d69b12190a97bc.jpeg

作者 | Phodal

编辑 | 唐门教主

微信公众号ID | csdn_iot

这是一个探索性的项目,旨在提供一个完整的智能家居建设指南。回复官方账号后台的视频可以查看视频演示。具体系统架构图如下:

方案简介:

  • 使用 Home Assistant、HomeBridge 作为智能家居的核心

  • 使用 Amazon Echo 作为语音输入工具(目前只支持英语)

  • 使用 iPhone 作为控制工具的家庭应用

  • 任何设备都可以连接 Home Assistant 控制应用程序的服务

1

1.1

智能家居简介

目前,当我们谈论智能家居时,我们实现了家庭自动化的讨论。引用维基百科全书介绍智能家居1:

Home automation or smart home (also known as domotics) is building automation for the home.

随着机器学习和深度学习等 AI 近年来,技术的进一步普及应该会发生一些剧烈的变化。无论如何,我不想被机器催促起床。

在实战开始之前,让我们先关注一下智能家居的几个关键点:

  • 设备。要么使用这些设备 WiFi,要么用蓝牙,方便用手机连接这些设备。根据目前的情况,主要是 WiFi 在手机上配置后,可以轻松实现远程控制。与此同时,他们在与手机通信时,会使用一些自定义的通信规则,而且似乎很容易被破解(见模拟器一节)。如 Philips Hue 智能灯、Wemo 他们可以模拟开关等,并将其用作 Homekit 组件使用。

  • 自动化。自动化是指你可以定期开关特定的设备,闹钟响了,打开灯等等。

  • 场景(规则)。与自动化稍有不同的是,场景是一系列设备的操作,如早起、打开灯、窗帘、离家、门、关闭一系列电器、打开防盗功能等。

  • 中心网关。当我们所使用的一系列设备拥有 WiFi 配备各种软件的手机相当于控制中心。而种设计本身是不合理的,你必须在手机上安装一系列应用程序。这个时候,便需要一个额外的软件作为中心,来接入这些设备,而手机上也不需要多余的额外软件。如 HomeKit、Home Assistant 就是这样的例子。

作为普通用户,我们只需要关注便利的生活。作为极客,我们关注如何将其转化为所需的功能。

1.2

智能音箱

有一个学术概念是传声器阵列,主要由一定数量的声学传感器组成,用于采样和处理声场的空间特性。

如下图所示 Amazon Echo 的电路板:

麦克风及相应的位置:

主要解决远程语音识别问题,确保真实场景中的语音识别率。这些设备的主要原理是将语音信号发送到服务器端,由服务器端识别并匹配到相应的指令。

实验表明 AWS 服务不太可靠~~,经常出现:Your Echo dot is not connected

如下图所示:

1.3

中心网关

Home Assistant 是一种操作 Python 3 开源家庭自动化平台。它可以跟踪和控制家庭中的所有设备,实现自动化控制,完美支持 Raspberry Pi 上。

通过 Home Assistant 它可以直接与各种硬件设备兼容。其原理是通过 WiFi、BLE、Zigbee、MQTT 与不同的本地设备互联,并提供响应性协议 Web 界面、PWA 应用、iOS 应用程序允许用户轻松地与设备交互。

桌面浏览器上的界面如下图所示:

如下图所示:

提供丰富的功能(如 RGB 对于灯)设备,它还可以支持丰富的操作,即上图。同时,它也可以连接 Amazon Echo、HomeKit 等各种中心。

HomeKit 是由 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 需要加入协议部分 MFi Program 而且 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.1

ESP8266 仿真设备

  • Wemo:可以被 Amazon Echo 识别

  • Philips Hue:可以被 HomeKit 识别 ?

要求:下载 Ardunio IDE,地址: http://www.arduino.cc/en/main/software

Arduino ESP8266 GitHub 地址: https://github.com/esp8266/Arduino

安装方法:

  1. 启动 Arduino IDE,并进入 Preferences 窗口

  2. 在 Additional Board Manager URLs 中输入: http://arduino.esp8266.com/stable/package_esp8266com_index.json

  3. 从 Tools > Board 菜单中打开 Boards Manager,并输入安装 esp8266 平台

下载安装包:https://github.com/kakopappa/arduino-esp8266-alexa-multiple-wemo-switch

Setup 步骤:

  • 下载代码

  • 在编辑器中打开 wemos.ino

  • 修改 WiFi 设置

  • 定义开关及其回调,在 officeLightsOn、officeLightsOff、kitchenLightsOn、kitchenLightsOff 中

  • 烧录

相似项目:Arduino Esp8266 Alexa Wemo switch emulator

ESP8266 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://github.com/Makuna/NeoPixelBus.git

git clone https://github.com/interactive-matter/aJson.git

git clone https://github.com/PaulStoffregen/Time.git

git clone https://github.com/gmag11/NtpClient.git

sed -i -e 's|#define PRINT_BUFFER_LEN 256|#define PRINT_BUFFER_LEN 4096|g'  aJson/aJSON.h

cd -

git clone https://github.com/probonopd/ESP8266HueEmulator.git

sed -i -e 's|#include "/secrets.h"|//#include "/secrets.h"|g' ESP8266HueEmulator/ESP8266HueEmulator/ESP8266HueEmulator.ino

sed -i -e 's|//const char|const char|g' ESP8266HueEmulator/ESP8266HueEmulator/ESP8266HueEmulator.ino

再将代码烧录到 ESP8266 上,就可以在 Homekit 看到相应的配置。

2.2

小米智能插座

npm install -g miio

miio --discover

npm install --save miio

3

3.1

Raspberry Pi Home Assistant

Images: 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://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh

又在我的 MBP 上安装尝试

pip3 install homeassistant

hass --open-ui

然后发现安装完就可以了。

3.2

Home Assistant Broadlink PM PRO

在 configuration.yaml 文件中添加下面的配置:

# Example configuration.yaml entry

switch:

  - platform: broadlink

    host: IP_ADDRESS

    mac: 'MAC_ADDRESS'

    switches:

      reciever:

        command_on: 'switch_packet on'

        command_off: 'switch_packet off'

  1. 从 https://github.com/NightRang3r/Broadlink-e-control-db-dump 获取数据导出脚本

  2. 打开 易控(英语:E-Control) 应用,点击菜单 -> 共享 -> 云分享 就会生成相应的配置文件

  3. 浏览手机上的 /broadlink/newremote/SharedData/ 目录,复制出 jsonSubIr、jsonButton、jsonIrCode 三个文件

  4. 安装好 python 环境, 并安装 pip install simplejson

  5. 执行第一步代码中的脚本,python getBroadlinkSharedData.py

  6. 安装python-broadlink,地址 https://github.com/mjg59/python-broadlink.git

不知道是不是我的空调问题,获取到的配置是空的。

3.3

Homebridge

相关的插件:

  • Yeelight:homebridge-yeelight

  • 小米设备:homebridge-aqara

  • Broadlink RM 红外:homebridge-broadlink-rm

  • Broadlink SP 开关: homebridge-broadlink-sp

  • Home Assistant: homebridge-homeassistant

编辑软件源:

sudo vim /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

安装 Node.js ARM 版 :

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

sudo apt-get install -y nodejs

安装 avahi:

sudo apt-get install libavahi-compat-libdnssd-dev

安装 homebridge:

npm install -g homebridge

安装相应的插件:

sudo npm install -g homebridge-yeelight

sudo npm install -g homebridge-homeassistant

sudo npm install -g homebridge-broadlink-sp

sudo npm install -g homebridge-broadlink-rm

sudo npm install -g homebridge-platform-wemo

sudo npm install -g homebridge-miio

对应的配置在 home-assistant 目录下的 configuration.yaml 文件。

在 /etc/default 目录下创建 homebridge 文件,内容如下:

#Defaults / Configuration options for homebridge

#The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others)

HOMEBRIDGE_OPTS=-U /var/lib/homebridge

# If you uncomment the following line, homebridge will log more

# You can display this via systemd's journalctl: journalctl -f -u homebridge

# DEBUG=*

在 /etc/systemd/system 目录下创建 homebridge.service 文件,内容如下:

[Unit]

Description=Node.js HomeKit Server

After=syslog.target network-online.target

[Service]

Type=simple

User=homebridge

EnvironmentFile=/etc/default/homebridge

# Adapt this to your specific setup (could be /usr/bin/homebridge)

# See comments below for more information

ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS

Restart=on-failure

RestartSec=10

KillMode=process

[Install]

WantedBy=multi-user.target

启动服务:

systemctl daemon-reload

systemctl enable homebridge

systemctl start homebridge

4.4

HomeBridge 集成 Home Assistant

安装插件:

npm install -g homebridge-homeassistant

添加配置:

"platforms": [

  {

    "platform": "HomeAssistant",

    "name": "HomeAssistant",

    "host": "http://127.0.0.1:8123",

    "password": "yourapipassword",

    "supported_types": ["binary_sensor", "climate", "cover", "device_tracker", "fan", "group", "input_boolean", "light", "lock", "media_player", "scene", "sensor", "switch"],

    "logging": true

  }

]

4.5

Amazon Echo 设置

我用的是 Amazon Echo Dot 2 就是那个 Mini 版的

  • 安装 Yeelight Skill

  • 安装 Mijia

两者需要登录小米的账号,才能授权获得控制。

3

结合 HomeAssistant 和 Amazon Echo

文档:https://home-assistant.io/components/alexa/

如果只是为了打开、关闭设备,可以直接使用 emulated_hue 组件,它可以提供一个虚拟的 Philips Hue 桥。

使用 Home Assistant 的 Emulated Hue 组件就可以了,添加如下的配置:

emulated_hue:

  host_ip: 192.168.199.242

其中的 192.168.199.242 即是 Home Assistant 的服务器地址

更详细的配置,如:https://github.com/Teagan42/HomeAssistantConfig

为了使用更多的功能,则需要使用将 Home Assistant 暴露到公网上——使用诸如花生壳等。(PS:由于当前家里使用的是光纤,需要光纤猫,实施上比较困难;因此,外部访问需要使用一级跌幅,暂时没有进行这方面的尝试)。

随后在 Amazon developer console

创建相应的 Alexa Skill,并添加 Endpoing:https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD

必须使用 HTTPS

4.7

定制 Home Assistant

Home Assistant RESTful API 地址:Home Assistant API

4.8

Raspberry Pi Cornata

官方文档:Use Cortana Function on IoT Core

下载地址:https://developer.microsoft.com/en-us/windows/iot/docs/iotdashboard

打开 Windows 10 IoT Core Dashboard,为 RPi 烧录镜像,如下图所示:

官方建议要更新到最新。使用 Web 界面打开设备的 Windows Update,http://:8080/#Windows%20Update,如http://192.168.199.223:8080/#Windows%20Update。

然后到 Devices 中看是否出现相应的 Microphone 设置。

在首页的 Device Settigns 最下面有一个 Start Cortana on Boot 的选项。

使用 Windows IoT Remote Server 访问:在 http://192.168.199.223:8080/#Remote 在勾上 Enable Windows IoT Remote Server

设置 speechlanguage 成中文:

打开 Processes -> Run command,执行:

IoTSettings -set region CN

IoTSettings -set speechlanguage zh-Hans-CN

4.9

工具集

Tools:

  • Alexa Skill Testing Tool

  • Raspberry Pi Burn images Tools

欢迎 star:https://github.com/phodal/smart-home

作者:黄峰达(@Phodal),ThoughtWorks软件开发工程师,CSDN博客专家。长期活跃于GitHub,专注于物联网和前端领域。出版著作《自己动手设计物联网》,以及《Growth:全栈增长工程师指南》等六本电子书,并译有《物联网实战指南》。 

2017 年 7 月 1 日(星期六),「一天掌握物联网全栈开发之道」物联网主题线上峰会将在 CSDN 学院召开,Phodal 将与其他六位专家将一起从整体架构、技术栈、应用开发平台到实战经验与安全方案,希望通过一天的时间,帮助开发者快速掌握物联网全栈开发之道,目前峰会正在 7 折优惠中,

标签: cc200光纤传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台