首页/作品列表/Hi Siri打造个人智能家居系统
Hi Siri打造个人智能家居系统
17263 0
主要内容

介绍


在网上看到树莓派 + Home Assistant + HomeKit 从零开始打造个人智能家居系统【https://post.smzdm.com/p/594460/ 】,自己也一直想做个能用Siri控制智能硬件的作品【不需要购买】,由于 HomeKit 授权的问题,目前接入设备较少,主要为国外品牌,价格较贵。网上有相关教程,喜大普奔。 
了解一通后,大致原理采用的是一个开源智能家居平台Home Assistant 。所有设备首先接入 Home Assistant,通过
Home Assistant中的Homebridge 插件实现接入苹果的HomeKit,整套系统部署在树莓派上。结构如下: 

Home Assistant 是一个基于 Python3 开发的开源家庭自动化平台。可以跟踪和控制家庭中的所有设备,并实现自动化控制。可以完美运行在树莓派【一台没有显示器的电脑】上。详细参考:https://www.home-assistant.io/

在树莓派上安装 Home Assistant

安装方法有很多,对于极客可以直接使用命令行安装。对于小白就需要人性化的方式,通过下载适用于树莓派的Home Assistant镜像,放入SD卡,联网自动安装,就是这么简单。 
  1. 准备树莓派3开发板、5V 2A电源适配器、一张大于等于8G的TF存储卡; 
  2. 下载Home Assistant镜像,根据您手头上的树莓派选择对应的镜像,下载地址:https://www.home-assistant.io/hassio/installation/
  3. 将镜像文件烧入至TF存储卡,烧入工具根据系统选择,下载地址:https://etcher.io/

4. 烧入完成后,将 TF卡插入树莓派中,并保证树莓派处于联网状态,这里使用的是树莓派3直接接网线就可以联网了,如果树莓派采用 WiFi 连接,详细参考:https://docs.resin.io/reference/resinOS/network/2.x/
注意:树莓派电源适配器必须5V 2A以上,否则可能电源不足无法正常使用。
5.树莓派联网自动安装Home Assistant。在浏览器(推荐 Chrome)地址栏输入http://hassio.local:8123,你应该会看到如下界面。 

初始化时,系统会更新到最新的版本,Home Assistant没有国内服务器,所以不要相信20分钟的提示,不要切断电源,当出现上面页面表示已经再开始安装了,接下来的就是耐心等待。这与树莓派电源,网络环境有很大关系,建议用好一点的网络环境,几十分钟到几个小时不等的时间过后,安装成功后,初始界面如下图。这里看到Home Assistant还支持小米的设备。 

Home Assistant 插件(Add-ons)安装

 这里推荐几个必装的 Add-ons: 
  • Mosquitto MQTT broker:物联网通信协议,必装的一个插件,智能硬件和服务器通信靠这个协议。 
  • Samba:服务,必装的一个插件,Hass.io 通过它与局域网内的其他设备进行文件共享,是之后编辑 Hass.io 配置文件的前提。 
  • Homebridge:是前苹果员工的作品,基于 NodeJS,模拟 iOS HomeKit API。作为“桥”来连接 iOS 设备,使得本不支持 HomeKit 的设备能够接入。 
  • SSH Server: SSH 服务,推荐安装,方便远程命令行调试。 
在Hass.io中的ADD-ON STORE里面可以看到很多插件,包括我们上面讲到的3个,如果没有耐心等待一下,可能网络环境不好,没加载进来。 

➢ 安装MQTT

点击Mosquitto broker插件,进入点击INSTALL安装,需要等待一会,网络好安装就快,安装好后点击START启动插件。 

➢ 安装 Samba 插件

 在插件商店找到 Smaba Share,点击进入安装界面,点击 INSTALL 进行安装。 安装结束后(耐心等待)进入 Info 及 Options 界面,打开自动更新,点击 START,Smaba服务就启动了。  
{ /*配置说明*/
"workgroup":"WORKGROUP", /*用户组(可选),默认值 WORKGROUP。*/
"name":"hassio", /*用户名(可选),默认值 hassio。*/
"guest": true, /*(可选)是否允许客人用户(无用户名无密码)默认值 true。*/
"map": { /*开放文件夹(可选),可选有 config,addons,share,backup,ssl。*/
"config": true,
"addons": true,
"ssl": false,
"share": true,
"backup": true
},
"username": "",/*登录用户名(可选)。*/ 
"password": "",/*登录密码(可选)*/ 
"interface":"eth0" /*开放接口(可选),有线网连接使用 eth0,无线网连接使用 wlan0。*/ 
}
如果添加用户名和密码请记住,重启服务后需要密码登陆。

➢ 安装 SSH server 插件「可选」

{ /*配置说明*/ 
  "authorized_keys": [], # 公钥,与下一个选项二选一,两种登陆方式 
  "password": "1234567" # 填入SSH登陆密码 
通过 SSH 登录的用户名是 root。 

➢ 安装Homebridge插件

Homebridge属于第三方插件,因此需要在ADD-ON STORE里添加地址:https://github.com/hassio-addons/repository
添加OK之后,就可以看到Homebridge插件了,进入点击 INSTALL 进行安装,安装方式一样。 
安装完成点击START开始,到底端点击REFRESH刷新,可以看到验证码,这个验证码就是苹果HomeKit设备授权码,请记好,若不记得可以RESTART重启刷新再次查询。

Home Assistant 配置框架

配置框架,用来添加智能硬件设备,比如我们这里添加一盏灯。确认您的Samba share已经开启。这样才能访问树莓派里的文件。 
在 Windows 或 macOS 的网络共享中找到并打开 hassio,(如果在 Windows 网络中不显示,在资源管理器中输入“ HASSIO” 回车后进入)macOS下已客人身份连接即可。
连接成功即可看到相关文件。config 文件夹内的 configuration.yaml,是我们配置的主文件,通过编辑此文件来设置 Hass.io、添加组件、个性化配置系统。
需要添加1.智能硬件mqtt通信协议 2.控制设备灯 3. 定制实体,如下设置:
在sensor下添加mqtt通信协议和light(灯)设备。

sensor: 
  - platform: yr 
mqtt: 
  broker: 192.168.10.152 
  port: 1883 
  client_id: home-assistant 
  username: ylb 
  password: microduino 
  discovery: true 
light: 
  - platform: mqtt_json 
    name: ylblight 
    state_topic: "home/light1" 
    command_topic: "home/light1/set" 
    brightness: true 
    rgb: true 
    optimistic: false 
    qos: 0 
broker是您树莓派网络地址,您可以通过进入路由器后台查看,或者在Homebridge的日志中查看到。如果没有就重启下Homebridge再刷新LOG应该就有了。
然后在customize修改个性化设置
 customize: 
    light.mCookieLED: 
      icon: mdi:lamp 
      friendly_name: 小台灯 
      homebridge_name: 小台灯 
添加完成后需要重启服务。重启前可以先检查一下修改的配置是否有效。在配置->通用里可以找到配置检查。 
配置有效后就可以在底下服务管理中重启服务了。
重启服务后,稍等一会,耐心等待,输入Samba share中设置的密码。进入后您就可以看见添加的设备了。
接下来要修改Homebridge配置文件,打开config.josn文件。
将default_visibility默认可见度由隐藏修改为visible,不然iphone的家庭App里面无法添加设备。
 "default_visibility": "visible", 
修改完成保存后重启Homebridge服务即可。

家庭中添加设备

打开你的 iPhone 的“家庭”,添加配件。相机扫描不太好用,选择没有代码或无法扫描。 

就能发现附近的设备,点击进入。
如果无法发现设备,将homebridge里的文件夹accessories和persist删除,再重启homebridge,一般就可以了。可能您开始添加了配件导致配件不识别了。
输入homebridge日志中的验证码。
进入后可以发现两个设备了,如果没有则检查将default_visibility可见度是不是visible,上文已经讲了。可以修改设备名字。
添加成功后就可以在主页看到设备了,这时候手机端添加完毕了。
智能硬件调试
苹果的家庭已经与Home Assistant连接好了,现在需要将智能硬件连接到Home Assistant,这样就能通过Home Assistant间接控制智能硬件了。 

➢ 材料

这里需要用到wifi模块让智能硬件联网,因为使用的是mqtt通信,所以wifi模块必须支持mqtt。 
将彩灯接到Hub的A0/A1接口,其他模块无顺序叠加。
另外您可以将彩灯藏起来,我这放在一个灯罩里面。

➢ 硬件编程

 您可以https://github.com/wasdylb/mCookie/tree/master/project/hassio_Siri下载。需要修改几个参数: 
1.填写你wifi模块需要连接网络的名字和密码。
#define SSID      "xxx" 
#define PASSWORD  "xxx" 
2. client_id修改成configuration.yaml文件定制设备的名字,我这里是mCookieLED。
 customize: 
    light.mCookieLED: 
3. mqtt_server对应configuration.yaml文件的broker,用户名和密码对应。
 mqtt: 
  broker: 192.168.10.152 
  port: 1883 
  client_id: home-assistant 
  username: ylb 
  password: microduino 
4. state_topic和set_topic与configuration.yaml文件一致。
 light: 
  - platform: mqtt_json 
    name: ylblight 
    state_topic: "home/light1" 
    command_topic: "home/light1/set" 
修改完成后上传程序,打开串口监视器可以看到log消息,如果出现下面信息表示wifi模块联网成功,否则检查wifi模块。
同时wifi模块连接成功后彩灯会绿颜色亮1秒,也可以通过这个判断是否连上网络。
boolean wifista = wifimCottonbegin(SSID, PASSWORD, mqtt_server, client_id,mqtt_username, mqtt_password, light_set_topic); 
strip.setAllLED(COLOR_GREEN); 
strip.show(); 
delay(1000); 
strip.setAllLED(COLOR_NONE); 
strip.show(); 
当你通过Siri或App控制时,可以看到数据消息。
 目前支持开关和亮度调节控制,可以直接通过Siri来控制。 

所需硬件
暂无数据!
代码展示
暂无数据!
附件下载
  • 资料展示
  • hassio_Siri.zip
  • configuration.yaml.zip
3
大牛,别默默的看了,快登录帮我点评一下吧!

立即注册