基于树莓派的HomeKit

前言

一直想买一个树莓派玩玩,但又不知道买来干什么。很久以前就下单买过树莓派,等了一天还没发货,就退货了。上周因为部门一个项目涉及到树莓派,就狠心买了树莓派3B。于是在网上找树莓派可以干什么,有哪些经典案例。终于让我发现一个好玩的项目–物联网相关的例子。
起初在网上看到有人可以用 Siri 控制树莓派 Pin 从而控制 LED 量灭。然后就想做一个比这个稍微难一点的。通过 WiFi 控制 LED 量灭。

上面方块图中有三块需要自己写 Server,HAP-NodeJS与Server通讯,STM8部分。

后来又发现网上有一整套解决方案,先试着做一做。

  • STM8+ESP8266换成 NodeMCU
  • Server用Domoticz
  • HAP-NodeJS换成Homebridge

所以整体方块图是这样。

硬件需要

  • 树莓派3B
  • NodeMCU
  • 16G TF卡
  • micro USB线
  • 杜邦线
  • iPhone
  • Mac

软件需要

  • Domoticz(物联网 Server)
  • homebridge
  • ESPEsay(NodeMCU firmware)
  • iOS 10+

树莓派安装

  1. 从树莓派官网下载最新 Raspbian
  2. 将 Raspbian 系统烧写到TF里
    • 格式化TF为FAT32格式
    • 卸载TF卡 diskutil unmount /dev/disk3
    • 烧写系统 dd bs=4m if=2017-02-09-wheezy-raspbian.img of=/dev/disk3
    • 弹出TF卡 unmountDisk /dev/disk3
  3. 将TF卡插到树莓派里,开机
  4. 连接无线网或者有线网,开启SSH

安装 Domoticz

  1. 电脑ssh登录树莓派
    sudo curl -L install.domoticz.cn | sudo bash
  2. 将 domoticz 升级到 beta
    • cd domoticz
    • sudo sh ./updatebeta –支持小米网关
  3. 将 Domoticz 设置为开机自启
    • cp domoticz.sh /etc/init.d
    • chomd +x /etc/init.d/domoticz.sh
    • sudo update-rc.d domoticz.sh defaults
  4. 开启 server
    /etc/init.d/domoticz.sh start
  5. Web查看server

安装 homebridge

  1. 安装 nodeJS
1
2
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -`
apt-get install nodejs
  1. 安装homebridge
1
2
npm install -g --unsafe-perm homebridge
npm install -g homebridge-edomoticz
  1. 配置 homebridge config.json文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"bridge": {
"name": "Homebridge",
"username": "B8:27:EB:49:99:D0",
"port": 51826,
"pin": "123-45-789"
},
"description": "Configuration file for (e)xtended Domoticz platform.",
"platforms": [
{
"platform": "eDomoticz",
"name": "eDomoticz",
"server": "127.0.0.1",
"port": "8080",
"ssl": 0,
"roomid": 0,
"mqttenable": 1,
"mqttserver": "127.0.0.1",
"mqttport": "1883",
"mqttauth": 0,
"mqttuser": "",
"mqttpass": ""
}
],
"accessories": []
}

4.启动homebridge

1
homebridge

出现二维码和数字表示成功

NodeMCU烧ESPEasy固件

  1. 下载 ESPEasy 固件
    https://github.com/letscontrolit/ESPEasy
  2. Mac安装烧写NodeMCU工具
1
2
3
git clone https://github.com/themadinventor/esptool.git 
cd esptool
sudo python ./setup.py install

3.开始烧写固件

1
sudo ./esptool.py --port /dev/cu.wchusbserial1410 write_flash 0x0000 ESP_Easy_mega-20180303_dev_ESP8266_1024.bin

4.接通NodeMCU电源开始配置

- 连上串口调试工具115200,8,N,1(需要先安装CH340驱动)
- 连接NodeMCU发出的wifi SSID:`ESP_Easy_0` password:`configesp`
- 串口调试工具会提示NodeMCU IP地址`192.168.4.1`
- 电脑端登录`192.168.4.1` 配置WiFi

  • 在 wifi setting处填写路由器 WiFi SSID/Password

  • 配置 domoticz 服务器地址,选择 HTTP 协议

    至此,NodeMCU 配置完成

配置Domoticz

添加虚拟硬件

创建虚拟传感器

配置虚拟传感器(通过http协议发送cmd)

现在可以通过树莓派 server 开启关闭 LED

通过iOS home控制LED

树莓派需要同时运行 Domoticz 和 Homebridge

通过Siri控制LED

实物图

添加小米网关

小米网关支持的配件都会显示在 Domoticz 设备管理界面
重启 HomeBridge 小米智能家居配件会同步到iPhone的home里


不使用 Domoticz server 控制 ModeMCU LED(同一局域网下)

通过iOS app直接发 HTTP cmd