跳至內容

Home Assistant

出自 Arch Linux 中文维基

Home Assistant 是一個開源的家庭自動化軟體,它把本地控制和隱私放在首位。由全球的 DIY 愛好者和技術愛好者組成的社區提供支持。

安裝

[編輯 | 編輯原始碼]

安裝 home-assistant 包。

注意:Home Assistant Core 版本已被棄用,將不再由上游提供技術支援。參見 [1]

Home Assistant Supervised

[編輯 | 編輯原始碼]

參見 Home Assistant Supervised.

配置

[編輯 | 編輯原始碼]

配置文件存儲在 /var/lib/hass/ 中。如果不存在配置,則在啟動時將寫入默認配置。

用法

[編輯 | 編輯原始碼]

要啟動 Home Assistant,請啟動/啟用 home-assistant.service

第一次啟動可能需要 20 分鐘,因為將下載並安裝所需的軟體包。[2] 您可以在日誌中看到進度。

提示:使用 journalctl 跟蹤首次更新的過程:
# journalctl -fu home-assistant

默認情況下,Web 界面位於 http://localhost:8123

備份還原功能在 Web 界面中不可用。如需還原備份,請以 hass 用戶身份解壓備份的 tar.gz 文件:

# tar --strip-components=1 -xzf homeassistant.tar.gz -C /var/lib/hass

使用 MariaDB

[編輯 | 編輯原始碼]

默認情況下,Home Assistant 的 recorder/history 集成使用 SQLite。使用 MariaDB 可顯著提升性能(尤其在配置規模較大時)。Home Assistant 通過 SQLAlchemy 支持多種後端,例如 MySQL、MariaDB、PostgreSQL 或 MS SQL Server。此處僅介紹 MariaDB,其他後端請參考 recorder 集成文檔

如果尚未安裝 MariaDB,請參考 MariaDB 了解安裝詳情。

安裝 python-mysqlclient 依賴包。

創建新資料庫,下面示例為每個服務創建一個用戶名,並授予該用戶名前綴的所有資料庫通配符訪問權限:

$ mysql -u root -p
CREATE USER username@'localhost' IDENTIFIED BY some_pass;
CREATE DATABASE username;
GRANT ALL PRIVILEGES ON username.* TO username@'localhost';
FLUSH PRIVILEGES;
quit;

在配置文件中添加:

/var/lib/hass/configuration.yaml
recorder:
  db_url: !secret recorder_mariadb_url

在 secrets 文件中添加(若未使用 Unix socket,請參考 recorder 集成文檔 了解其他 URL 格式):

/var/lib/hass/secrets.yaml
recorder_mariadb_url: "mysql://USER:PASSWORD@localhost/DATABASE?unix_socket=/var/run/mysqld/mysqld.sock&charset=utf8mb4"

最後,重啟 home-assistant.service 服務。資料庫將開始填充數據。更多信息請參考 recorder 集成文檔

使用 PostgreSQL

[編輯 | 編輯原始碼]

你需要在 hass 的虛擬環境中安裝名為 psycopg2 的 Python 模塊。

你需要為 systemd 添加一個 附加配置片段

/etc/systemd/system/home-assistant.service.d/postgresql.conf
[Service]
ExecStartPre=/var/lib/hass/.venv/bin/python -m pip install psycopg2

這確保了 psycopg2 模塊始終被安裝。

創建角色並建立資料庫:

[postgres]$ createuser homeassistant
[postgres]$ createdb homeassistant -O homeassistant

配置 Home Assistant,在配置文件中添加 PostgreSQL 資料庫 URL:

/var/lib/hass/configuration.yaml
recorder:
  db_url: !secret recorder_postgresql_url

在 secrets 文件中添加資料庫 URL:

/var/lib/hass/secrets.yaml
recorder_postgresql_url: "postgresql://homeassistant@127.0.0.1/homeassistant"

最後,重啟 home-assistant.service 服務。資料庫將開始填充數據。

故障排查

[編輯 | 編輯原始碼]

無法訪問 USB 設備

[編輯 | 編輯原始碼]

在默認安裝中,Home Assistant 可能沒有足夠權限訪問某些設備(如 Zigbee USB 加密狗),因為這些設備受 uucp 系統組控制。

編輯 home-assistant.service 文件,在 [Service] 部分添加 SupplementaryGroups=uucp,使默認的 hass 用戶擁有正確的權限組。

然後,執行 daemon-reload重啟 home-assistant.service 服務,即可正常運行。[3]

日誌中出現 ModuleNotFoundErrors

[編輯 | 編輯原始碼]

如果在系統軟體包升級後 Home Assistant 出現異常,可能是系統軟體包與 Home Assistant 管理的 Python 庫之間不兼容導致的。要重置 Home Assistant 的 Python 庫並重新安裝,請刪除 modules 目錄:

# rm -r /var/lib/hass/deps/lib

然後 重啟 home-assistant.service 服務。

如果首次重啟後仍出現 ModuleNotFoundErrors,可能需要再次重啟。Home Assistant 會檢測到缺失的模塊並自動重新安裝。

參見

[編輯 | 編輯原始碼]