My Home (0x00)
0x00 主题
对于智能家居, 我使用过几款设备, 像是空调, 墙壁开关, 电暖气, 扫地机器人
但是, 这些不能满足我的一点就是我都要下载他们自己的 APP 才能够使用, 后来比较喜欢买阿里智能可以支持的设备, 因为选择比较多, 而且由阿里统一管理, 很不错
后来, 由于我使用的是苹果手机, 算是一个果粉, 不能使用 HomeKit 来控制我的智能硬件, 总感觉是一种遗憾, 再加上 lifesmart 的设备价格贵的要死, 更是一种遗憾了, 只憾自个为啥没有钱😂
经过搜索了解到 HomeBridge 俗称 HB, 通过 HB 又了解到 HomeAssistant 俗称 HA, 通过这两个就可以把一些非苹果认可的硬件接入 HomeKit, 深入了解才发现并不是所有的都可以, 这里面有很多坑, 我还只是个入门
0x01 设备需求
- 永不关机的系统,建议
树莓派 3
- TF卡, 容量的话我建议16g
- 制作系统所用工具, Mac 选择 ETCHER, Win 选择 Win32DiskImager
- 还有就是能够接入的只能硬件(小米的占了绝大多出)
0x02 我参考的相关链接
- 入门智能家居,从米家到HomeKit (一) 这里主要是用 ETCHER 安装的
- 【小白教程】小白从零开始玩智能控制,教程将持续更新 这是一个 HA 的论坛很多东西都能在这里搜索到, 这个链接是一个从零开始的操作
- Home Assistant + 树莓派:强大的智能家居系统 · 安装篇
- Home Assistant + 树莓派:强大的智能家居系统 · 设备接入篇
0x03 我的安装
购买了树莓派, 将树莓派的散热片和风扇安装好, 这些都是单独买的, 我感觉长期跑的服务器还是要有这些的


硬件组装好之后就是安装系统了
系统我选择的是 Hassbian 镜像安装
- Hassbian镜像下载,下载解压后会得到img文件
https://github.com/home-assistant/pi-gen/releases/
- 然后使用刻录工具刻录镜像到你的 TF 卡, 在上方 HA 论坛的链接里面有很详细的过程, 注册登录论坛并回复帖子就可以看了
- 我这里只是说一下我遇到的问题
- 等写完后,TF卡插到树莓派,漫长的等待, 最好全程使用网线, 系统安装成功了再去配置 WiFi, 下面我会说怎么配置
- 如果长时间没有办法通过浏览器, 访问
http://树莓派IP:8123/
, 就直接ssh连接pi 然后执行强制安装命令
sudo systemctl enable install_homeassistant.service
sudo systemctl start install_homeassistant.service
- 如果使用此方法,未来更新指令如下:
sudo systemctl stop home-assistant@homeassistant.service
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
pip3 install --upgrade homeassistant
exit
sudo systemctl start home-assistant@homeassistant.service
- Hassbian默认SSH登录信息如下:
用户名:pi
密 码:raspberry
- SSH登录后,修改下密码,输入原密码raspberry,再输两次新密码即可
password
- 修改下时区:
sudo dpkg-reconfigure tzdata
# 选Asia, 再选Shanghai即可, 然后查看下时间
date -R
- 附属一些 HA 的命令
# 停止HomeAssistant
sudo systemctl stop home-assistant@homeassistant.service
# 启动HomeAssistant
sudo systemctl start home-assistant@homeassistant.service
# 重新启动HomeAssistant
sudo systemctl restart home-assistant@homeassistant.service
# 查看HomeAssistant状态
sudo systemctl status home-assistant@homeassistant.service
0x04 工具
-
更新源问题, 尽量使用自带源, 不要去修改成什么阿里源, 清华大学源, 只要网络不是太差, 自带的还是很好的
- 我自己走过的坑就是, 在安装工具的时候国内源没有跟上工具的版本, 导致安装时总是缺少依赖(depends), 研究了一个多小时发现还是自带的源很好用😂
-
Samba 可以让你直接编辑HomeAssistant里面的配置文件
# 安装命令
sudo apt-get install -y samba
# 设置用户名密码
sudo smbpasswd -a pi # 这个 pi 就是用户名, 可以自己写
# 编辑配置文件
sudo nano /etc/samba/smb.conf # 看个人习惯了, 有的喜欢用 vim, 新学的这个 nano 所以我都是用的 nano
# 粘贴下面的代码
[global]
netbios name = raspberrypi
server string = The Pi File Center
workgroup = WORKGROUP
hosts allow =
remote announce =
remote browse sync =
[HOME ASSISTANT]
path = /home/homeassistant/.homeassistant
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =
[PI]
path = /home/pi
comment = No comment
browsable = yes
read only = no
valid users =
writable = yes
guest ok = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root
force create mode = 0777
force directory mode = 0777
hosts allow =
# 按键盘上的Ctrl+X键,输入 Y,保存退出
# 重启 Samba
sudo service smbd restart
- Mosquitto(MQTT),Sonoff、论坛定制开关都是用这东西接入的, 是一个接入硬件的协议
# 安装
sudo apt-get install mosquitto
# 设置mqtt用户名 密码
sudo nano /etc/mosquitto/mosquitto.conf
# 插入在最后, 复制粘贴下面代码
allow_anonymous false
password_file /etc/mosquitto/pwfile
# 创建密码文件,举例用户名是 pi,输入两次你要设置的密码即可
sudo mosquitto_passwd -c /etc/mosquitto/pwfile pi
# 设置开机启动
sudo /etc/init.d/mosquitto enable
- 切换数据库,mariaDB比默认的数据库好
# 安装
sudo hassbian-config install mariadb
# 新建数据库
sudo mariadb -u root -p
# 按提示输入密码,然后新建数据表
# 下面可以直接复制到终端一次执行
# 但是复制前请修改成你自己要的数据库管理账号( pi )和密码( mima )
# 不然的话还要删除, 对于小白来说不好懂
CREATE DATABASE hass_db;
CREATE USER 'pi'@'localhost' IDENTIFIED BY 'mima';
GRANT ALL PRIVILEGES ON *.* TO 'pi'@'localhost';
FLUSH PRIVILEGES;
exit
# 在 configuration.yaml 增加下面代码 (请注意账号密码)
recorder:
purge_interval: 2 #每两天执行一次清理,重启会重置
purge_keep_days: 5 #历史数据保存的天数
db_url: mysql://pi:mima@localhost/hass_db?charset=utf8
删除数据库命令为
mysqladmin -u root -p drop 数据库名称
, 基本命令查看这个博客
还有那个配置文件, 通过smb://树莓派 IP
, 在 finder 中进行cmd + k
, 输入命令然后需要你输入账号密码, 这就是上一个工具 Samba 的作用, 进入后就能找到 HomeAssistant 硬盘, 然后里面就有 configuration.yaml
- 重点 HomeKit, 通过安装HomeBridge的插件HomeBridge-HomeAssitant来实现HomeKit与HomeAssistant的对接
# 安装 Screen 和 Git
sudo apt-get install -y screen git
# 安装 NodeJS
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
# 安装依赖包 libavahi
sudo apt-get -y install libavahi-compat-libdnssd-dev
sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp
cd /usr/lib/node_modules/homebridge/
sudo npm install --unsafe-perm bignum
cd /usr/lib/node_modules/hap-nodejs/node_modules/mdns
sudo node-gyp BUILDTYPE=Release rebuild
# 安装一个 HomeBridge 的插件 HomeBridge-HomeAssitant
cd /
sudo npm install -g homebridge-homeassistant
# 先运行一次程序, 按理说是能成功的, 不成功就在装一遍, 16G 内存足够用了, 不用担心内存问题
homebridge
# 键盘输入 Ctrl+C 停止 homebridge 运行
cd /home/pi/.homebridge
sudo nano config.json
# 粘贴以下内容
{
"bridge": {
"name": "HomeKit",
"username": "F4:0F:24:19:81:BA",
"port": 51826,
"pin": "123-45-678"
},
"platforms": [
{
"platform": "HomeAssistant",
"name": "HomeAssistant",
"host": "http://192.168.2.2:8123",
"password": "你的密码",
"supported_types": [
"binary_sensor",
"cover",
"fan",
"garage_door",
"input_boolean",
"light",
"lock",
"media_player",
"rollershutter",
"scene",
"sensor",
"switch",
"climate",
"script",
"automation"
],
"default_visibility": "visible"
}
]
}
# 按键盘上的Ctrl+X键,输入 Y,保存退出
# 再次输入homebridge回车,检查运行有没有错误
# 没有问题的话就是成功了, 可以用自己的手机连一下 HomeKit
# 设置 homebridge 自启动服务 (没有文件的提示可以不用管, 启动几次之后再执行一遍就可以了)
cd /
sudo useradd --system homebridge
sudo mkdir /var/homebridge
# 特别注意下面这个, 每次修改完 config.json 的时候都要执行, 然后重启 homebridge, 不然的话不能自启动成功
sudo cp ~/.homebridge/config.json /var/homebridge/
# 特别注意下面这个, 每次修改完 config.json 的时候都要执行, 然后重启 homebridge, 不然的话不能自启动成功
sudo cp -r ~/.homebridge/persist /var/homebridge
sudo chmod -R 0777 /var/homebridge
# 然后
cd /etc/default
sudo nano 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/homebridge
# If you uncomment the following line, homebridge will log more
# You can display this via systemd's journalctl: journalctl -f -u homebridge
# DEBUG=*
# 然后
cd /etc/systemd/system
sudo nano homebridge.service
# 粘贴以下内容
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=homebridge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/lib/node_modules/homebridge/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
# 设置开机启动
cd /
sudo systemctl daemon-reload
sudo systemctl enable homebridge
# 重启树莓派
sudo reboot
- 附属一些 HB 的命令
#启动
sudo systemctl start homebridge
#重启
sudo systemctl restart homebridge
#查看状态
sudo systemctl status homebridge
#停止
sudo systemctl stop homebridge
#更新
sudo npm upgrade -g homebridge-homeassistant
#卸载
sudo npm remove -g homebridge-homeassistant
这是 My Home 的第一篇, 我也是刚刚入门, 还剩下最后一个设置 WiFi, 我们总不能一直给树莓派插着网线吧😁
- 通过如下的命令查看树莓派已经识别的 WiFi
sudo iwlist wlan0 scan

每一个 Cell 都是我们能查看的一个 WiFi, 其中
ESSID
就是 WiFi 名称, 记录下来ps: 注意 这里搜到的 WiFi 都是可以用的, 千万不要因为知己知道 WiFi 名称就手动写上去, 因为我坑过, 忘记了硬件只支持 2.4G 信号网络, 不支持
5G 的, 当时弄不上去闹死心
- 用 nano 工具配置 WiFi 信息
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
# 在这个文件最后添加 WiFi 的名字和密码
network={
ssid="XXXX"
psk="XXXX"
}
# 这是最简单的写法了, 要是想写安全协议什么的也可以不影响什么, 最后重启你的 Raspberry
sudo reboot
PS: 移除 apt-get 的工具, 使用 sudo apt-get --purge remove 包名
, 东西删除完成后执行 sudo apt autoremove
在清理一下, 关于简单的 apt-get 在这里有介绍