Home Assistant新手问题集

不定期更新。


1. 目录位置

Home Assistant有两个主要的目录,一个是配置目录,有configuration.yaml(配置文件)、.storage(组件信息存储文件夹)、home-assistant.log(程序运行日志)等;一个是安装目录,放置有程序核心代码及官方组件代码(components目录)。

  • windows

    • 安装目录

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      # 新建.bat文件运行
      @echo off
      rem 在PATH变量中查找Python安装包路径
      set string=%PATH%
      set targetstr="site-packages"
      :split
      for /f "tokens=1,* delims=;" %%i in ("%string%") do (
      echo %%i | findstr %targetstr%
      set string=%%j
      )
      if not "%string%"=="" goto split
      pause
    • 配置目录

      1
      2
      # cmd命令行执行
      echo %APPDATA%/.homeassistant
  • linux(直接安装方式)

    • 安装目录

      1
      2
      # root用户运行
      find / -name homeassistant | grep -E 'site-packages|dist-packages'
    • 配置目录

      1
      2
      # root用户运行
      find / -name configuration.yaml
  • linux(docker手动拉取镜像运行)

    • 安装目录(容器):/usr/src/homeassistant/homeassistant
    • 配置目录(容器):/config
  • linux(hassio)

    • 安装目录(容器):/usr/src/homeassistant/homeassistant
    • 配置目录(容器):/config
    • 配置目录(宿主机):/usr/share/hassio/homeassistant

    INFO:hassio实际也是通过容器跑homeassistant。


2. 安装插件(自定义组件)

Home Assistant各种各样的功能以插件的形式提供,目前配置方法还是以文本编辑为主,分两步走。

  • 把下载的插件目录放到[配置目录]/custom_components/文件夹下,确认__init__.py文件位于[配置目录]/custom_components/[插件名称]/__init__.py
  • 编辑[HA配置目录]/configuration.yaml加入相应的配置信息启用

WARN:没有custom_components文件夹则新建一个。


3. 调试及查看程序运行日志

组件开发一般都设置有不同级别的日志信息输出,一般日常运行在info级别,调式时候应改为debug级别。

  • 设置组件运行日志的生成规则,更详细说明看官方文档

    1
    2
    3
    4
    5
    # [HA配置目录]/configuration.yaml
    logger:
    default: error # 提高所有组件的默认级别,调试完后改回info(预设)
    logs: # 设定指定组件的级别,debug有更详细的输出
    custom_components.[插件名称]: debug

    INFO:把不想看的组件级别调高,把想看的组件级别调低(更多输出),有助于排查指定插件问题。

  • 查看日志

    1
    2
    3
    4
    # 查看文件方式,该文件程序每次启动会重新生成
    tail -f [HA配置目录]/home-assistant.log
    # docker可以用这种
    docker logs [容器名/容器ID] -f --tail 1

    INFO:可以再指令后增加”| grep”进一步筛选输出。


4. 控制历史数据生成

Home Assistant运行占用空间主要是各类entity的历史数据,可以通过recorder组件控制生成,更详细的使用说明建议看官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
recorder:
# db_url: # 设定把数据存到另外的数据库服务器也可以有效减少本机空间的占用
purge_interval: 3 # 每X天执行一次清理,重启会重置
purge_keep_days: 15 # 历史数据保存的天数
exclude: # 不记录的放这里
domains: # 按域名过滤
- automation
- weblink
- updater
- input_text
- input_select
- input_boolean
entities: # 按entity ID过滤,比如这里将某些不需要记录的sun、或者sensor
- sun.sun
- sensor.last_boot
- sensor.date
# include: # 也可以不设置exclude,只设置include,则只有指定的domian
# domains:
# -
# entities:
# -

INFO:exclude与include可以一起使用,规则是先判断include再判断exclude(应该)。


5. 容器与宿主机拷贝文件

很多HA都是跑在docker上,配置目录可以通过映射方式(bind)方便地在宿主机目录访问,但如果想要查看或修改安装目录的源码,则可以用命令拷贝出来。

1
2
3
4
# 拷贝宿主机文件至容器
docker cp [本机目录] [容器名/容器ID]:[容器目录]
# 拷贝容器文件至宿主机
docker cp [容器名/容器ID]:[容器目录] [本机目录]

6. 换源

软件的更新源一般在国外服务器,经常蜗牛速度,换国内源可以大大提升体验,以下方法如不适用,可以搜索网上更详细的教程。

  • pip

    • linux,直接用命令创建,哪个用户运行HA就用哪个用户执行

      1
      2
      3
      4
      5
      mkdir -p ~/.pip/ && \
      echo "[global]" > ~/.pip/pip.conf && \
      echo "index-url = https://pypi.tuna.tsinghua.edu.cn/simple" >> ~/.pip/pip.conf && \
      echo "[install]" >> ~/.pip/pip.conf && \
      echo "trusted-host = https://pypi.tuna.tsinghua.edu.cn" >> ~/.pip/pip.conf
    • windows,CMD命令行下执行命令创建

      1
      2
      3
      4
      5
      mkdir -p %APPDATA%\.pip && ^
      echo [global] > %APPDATA%\.pip\pip.ini && ^
      echo index-url = https://pypi.tuna.tsinghua.edu.cn/simple >> %APPDATA%\.pip\pip.ini && ^
      echo [install] >> %APPDATA%\.pip\pip.ini && ^
      echo trusted-host = https://pypi.tuna.tsinghua.edu.cn >> %APPDATA%\.pip\pip.ini

    INFO:也可以自行创建文件再添加内容。

  • linux,一般可以用命令替换网址就能使用

    1
    2
    3
    4
    # Debian 需root权限
    sed -i "s@http://\(security.debian.org\|deb.debian.org\)@http://mirrors.aliyun.com@g" /etc/apt/sources.list
    # Ubuntu 需root权限
    sed -i "s@http://\(security.ubuntu.com\|archive.ubuntu.com\)@http://mirrors.aliyun.com@g" /etc/apt/sources.list
  • docker,在配置文件中增加内容

    1
    vi /etc/docker/deamon.json
    1
    2
    3
    4
    5
    6
    7
    8
    // /etc/docker/deamon.json
    {
    "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com"
    ],
    "dns": ["8.8.8.8","8.8.4.4"] // 换成你常用的DNS地址
    }

    INFO:在/etc/resolv.conf设置DNS经常会被覆盖,建议在daemon.json中指定


7.时间不对

一般用docker方式跑HA会出现时间慢8小时,这是由于镜像的时区为UTC,修改为CST即可。

  • 首次运行容器,docker run加入参数

    1
    2
    3
    4
    # 方式1.指定环境变量
    -e "TZ=Asia/Shanghai"
    # 方式2.把宿主机的已配置好的文件覆盖掉容器的文件
    -v "/etc/localtime:/etc/localtime:ro"
  • 已在运行容器,进入容器修改

    1
    2
    3
    4
    docker exec -it [容器名/容器id] sh
    容器内执行命令:
    echo "Asia/Shanghai" > /etc/timezone
    dpkg-reconfigure -f noninteractive tzdata

10068. 其它

  • 入门教程建议看HAChina的教程,很全面也够详细。