美文网首页
My Home (0x00)

My Home (0x00)

作者: 游城十代2dai | 来源:发表于2018-03-04 22:01 被阅读172次

    0x00 主题

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

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

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

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

    0x01 设备需求

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

    0x02 我参考的相关链接


    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
    

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

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

    相关文章

      网友评论

          本文标题:My Home (0x00)

          本文链接:https://www.haomeiwen.com/subject/pnwoxftx.html