HomeAssistant打造一个智能的家

智能的概念现在非常普及,新房子装修时买了大量带wifi或蓝牙连接的设备,开关、灯和感应器以小米为主,但也有很多其他品牌,这样被迫装了一堆app,而且小米米家十分臃肿,要控制一下哪个设备操作烦琐,所以考虑用开源软件建立家庭智能化控制中心。

网络上有各种文章,由于系统环境的差异,一些经验介绍别人使用效果不好,甚至错误百出,个人经验是无论是系统安装还是设备接入,最重要的是去看官方文档,里面都有权威的说明,一般满足基本条件后都可以很好地进行。以下就网络上问得比较多的问题,介绍几条经验。

一、安装平台和形式的选择

1、优先考虑低功耗开发板或现有服务器安装

智能控制中心需要常年24小时开机运行,需要一台一直在运行的设备作为服务器,HomeAssistant官方为各种派专门定制了版本,用起来很方便,如果已经有了服务器,在上面加装也可以,毕竟该服务的资源消耗并不是很高。

2、同时,也比较推荐以docker方式运行官方镜像,稳定可靠。由于智能设备需要用到多种协议,适应各种品牌,所以在添加设备的时候经常需要安装各种依赖,如是该服务安装在主系统上,则经常会改动主系统,影响主系统的安全稳定,而且也不利于该服务的升级和数据备份。容器以独立的形式运行,各种环境修改定制都很方便。

sudo docker run -itd –net=”host” –restart=always –name=”homeassistant” -v ~/homeassistant:/config -e TZ=”Asia/Shanghai” homeassistant/home-assistant:latest

3、也有不同的版本形式供安装使用,如homeassistant、hassio等,建议安装hassio的版本,它集成好了一些组件,方便以后的使用。

二、升级homeassistant

很多组件安装时都要求较新的版本,这样系统升级就避免不了,docker中安装的homeassistant如何升级呢?两条命令即可完成。

1、ssh进入容器内部

docker exec -it homeassistant bash

2、用python包管理命令直接升级

pip install --upgrade homeassistant

3、重新启动容器

三、安装HACS社区应用市场

homeassistant除了小米Xiaomi Gateway (Aqara)等少数设备可以通过自动发现直接接入外,很多的设备要通过第三方插件来接入,安装HACS应用市场就很有必要,可以比较方便集中管理插件的安装删除,不用单独在Github上一个一个地下载解包配置。

安装HACS在网络上很多人都出现各种错误,其实官网有非常明确的介绍。

1、明确自己的homeassistant安装方式

大体三种主要方式,在操作系统上安装的、docker安装的还是本身就是HomeAssistant OS,每一种方式安装要求是很不相同的,具体参考:https://hacs.xyz/docs/installation/installation

2、docker容器中安装HACS

2.1 按官方指导文件下载错误

用wget -q -O – https://hacs.xyz/install | bash - 命令下载HACS出现系统错误,官方的HomeAssistant镜像基础系统是aphine linux,wget命令不好用。

a 直接进入HACS官方的Github仓库,点clone下载代码zip文件到本地,这步操作对上网没有什么要求,下载也很快。

b 在HomeAssistant安装时映射的文件夹中建立custom_components文件夹,要与configuration.yaml文件在同一级目录

c 将下载的文件解压,其中的hacs文件夹拷贝到custom_components文件夹中

2.2 配置HACS

a 在Github中申请token

在Github官网上注册一个帐户,并用该帐户登录。

注册没有特殊条件,按要求填写就可以了。

进入以下页面:

https://github.com/settings/tokens

填一个token的名字,其他选择全部留空,再按生成,最后得到一个token字符串,保存下来。

b 写配置文件

打开configuration.yaml文件,在最下面像这样写:

c 关闭homeassistant容器,再重新启动

d 登录homeassistant,进入配置,选择集成,在搜索中找到HACS完成添加。

如果没有找到,可以等一段时间甚至再重新启动容器,该服务的安装启动在第一次时比较慢,只要token和配置正确。

四、多个灯怎么接入

在接入小米pillips灯泡的时候遇到多个泡只能接入一个的问题,在网上一查很多人都碰到这个问题,在看一个关于yaml文件编写要求的视频时得到启发。

1、小米的灯可以接入多个,其它的品牌不知道,问题主要在yaml文件的编写。

2、写灯的yaml文件时,多个灯统一写在light条目下,每个灯空一行,以下的我的配置,供参考:

备份树莓派系统 更换成大容量卡

树莓派是一个学习的好工具,也是一个非常稳定的服务器,如果安装了一些了长期使用的服务,则系统的备份很重要,重新部署会非常痛苦。同时,很可能我们刚开始的时候安装的SD卡比较小,比如8G或16G,很快就没有空间了,更换成更大的卡十分必要。

网络上有各种关于系统备份和扩容的文章,可以提供很好的指导,从仅完成备份和扩容的角度看,其实可以比较简单地完成上述目标,不用很复杂的步骤和多个软件,而且系统可以备份成文件方便保存。

只需要两个步骤:

第一步 备份系统为img文件

1.用SSH工具进入树莓派后台。无论从什么地方,只要能连入系统就可以,没有打开ssh功能的按网络上的教程开启。

2.以sudo fdisk -l 命令查看挂载的磁盘信息, 确认需要复制的卷

在命令反馈比较多的信息时,大家可以对照磁盘的容量来辨认需要复制的SD卡的路径,如上图59.5 GiB, 63864569856 bytes,就表示与系统正在使用的卡信息一致,前面的/dev/mmcblk0 就是以后复制命令中要用到的绝对路径。

3.用dd命令将整个系统盘复制到指定位置,并保存为img文件

dd if=/dev/mmcblk0 of=/mnt/win/raspberrypi.img bs=1MB

以上if后面是树莓派系统文件路径,of后面是需要保存的文件的位置和名称,一般保存在插在USB口的设备中比较方便,U盘或移动硬盘都可以,具体路径可以在系统后台cd到它所在的目录,然后记下来。

第二步 将img文件写入新的SD卡中

1.下载balenaEtcher软件并打开运行,将第一步保存的img文件直接刷写进新卡。

这个软件是绿色是,不需要安装,最重要的是它可以直接刻写数据,无需事先对新盘进行格式化和确定文件系统,它是真正原版复制,在写盘的时候原文件是什么系统,写好的盘就是什么系统,所以不用管拿来的新盘是什么格式或有没有数据,直接刻就行了。

2. 新卡插入树莓派并开机运行,并设置将系统应用到整个SD卡

ssh进入系统后台,运行sudo raspi-config命令

选第7项,然后确认,退出面板,按系统要求reboot重启。

这样原有的系统完全一样地在新卡上运行了,并利用了新卡的整个容量,不再需要任何其它的配置。

说明:

1. 复制系统的命令中的路径,参数要注意,确保准确

2. 如果原系统容量不大,复制速度还是比较快的,大概超过10MB/s,但刻写有可能相对比较慢,刻写过程比较可靠。

3. 复制出来的文件其实是整个SD卡,有人通过调整大幅减少保存镜像文件的大小,我没有试过,不知道是否可行,最重要的应该是保证系统完全一样,避免以后不可预知的错误。

Transmission添加账户密码

群晖Docker安装的transmission默认状态下没有添加帐户密码,也不允许远程登录,因为局域网使用不存在安全问题,如果想远程管理下载任务,就需要增加远程登录帐户密码。

1、打开Docker套件,停止transmission容器。

2、找到安装transmission安装时映射的 /config目录。

这里可以在容器的详情中查看映射巻的具体位置和目录名称

3、修改其中的settings.json文件。

如果安装了群晖的文本编辑器可以直接右键打开,如果没有装则下载下来,改好后再传上去并覆盖原文件,为避免出错可以事先备份一下该文件。

修改以下几项就可以了:

3.1 “rpc-authentication-required”: true,       默认值是false,true开启身份验证;

3.2 “rpc-password”: “123456”,  

默认值是一长窜的字母数字组合体,改成自己的密码(如设置密码123456, “rpc-password”: “123456”)。

3.3 “rpc-username”: “admin”,     默认值是“”空的,改成自己的用户名

3.4 “rpc-whitelist”: “*.*.*.*”,  改成”*.*.*.*”,表示所用IP都可以访问

3.5 “rpc-whitelist-enabled”: true, 如果设置成false就不能远程登录了

4、重启transmission

Docker安装的Transmission配置修改非常方便,因为配置文件一般被映射出来了,如果不是docker安装需要SSH登录系统后台,仍然是找到settings.json文件并修改,修改内容一样,系统不同可能要求有差异,网络上有大量教程可供参考。