My Home (0x00)

0x00 主题

对于智能家居, 我使用过几款设备, 像是空调, 墙壁开关, 电暖气, 扫地机器人

但是, 这些不能满足我的一点就是我都要下载他们自己的 APP 才能够使用, 后来比较喜欢买阿里智能可以支持的设备, 因为选择比较多, 而且由阿里统一管理, 很不错

后来, 由于我使用的是苹果手机, 算是一个果粉, 不能使用 HomeKit 来控制我的智能硬件, 总感觉是一种遗憾, 再加上 lifesmart 的设备价格贵的要死, 更是一种遗憾了, 只憾自个为啥没有钱

经过搜索了解到 HomeBridge 俗称 HB, 通过 HB 又了解到 HomeAssistant 俗称 HA, 通过这两个就可以把一些非苹果认可的硬件接入 HomeKit, 深入了解才发现并不是所有的都可以, 这里面有很多坑, 我还只是个入门

0x01 设备需求

  1. 永不关机的系统,建议树莓派 3
  2. TF卡, 容量的话我建议16g
  3. 制作系统所用工具, Mac 选择 ETCHER, Win 选择 Win32DiskImager
  4. 还有就是能够接入的只能硬件(小米的占了绝大多出)

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 [email protected]

sudo su -s /bin/bash homeassistant

source /srv/homeassistant/bin/activate

pip3 install --upgrade homeassistant

exit

sudo systemctl start [email protected]
  • Hassbian默认SSH登录信息如下:
用户名:pi
密  码:raspberry
  • SSH登录后,修改下密码,输入原密码raspberry,再输两次新密码即可
password
  • 修改下时区:
sudo dpkg-reconfigure tzdata
# 选Asia, 再选Shanghai即可, 然后查看下时间
date -R
  • 附属一些 HA 的命令
# 停止HomeAssistant
sudo systemctl stop [email protected]
# 启动HomeAssistant
sudo systemctl start [email protected]
# 重新启动HomeAssistant
sudo systemctl restart [email protected]
# 查看HomeAssistant状态
sudo systemctl status [email protected]

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

单个 WiFi 的参考地址
多个 WiFi 的参考地址

PS: 移除 apt-get 的工具, 使用 sudo apt-get --purge remove 包名, 东西删除完成后执行 sudo apt autoremove 在清理一下, 关于简单的 apt-get 在这里有介绍

你可能感兴趣的:(My Home (0x00))