1 2 3 4 5 6 7 8 9 10
|
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.13 python3.13-venv python3.13-dev build-essential
python3.13 -m ensurepip --version python -V
|
官方文档流程:
Windows - Home Assistant 中文站 - 老王杂谈说
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| sudo apt-get update sudo apt-get upgrade -y sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev unzip
sudo useradd -rm homeassistant
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
sudo -u homeassistant -H -s cd /srv/homeassistant python3 -m venv . source bin/activate
python3 -m pip install wheel PySocks
pip3 install homeassistant==2025.3.4
hass
|
1 2 3 4 5 6
| cd /srv/homeassistant nano s.sh chmod +x s.sh ./s.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| #!/usr/bin/env bash set -euo pipefail
HA_USER="homeassistant" VENV_DIR="/srv/homeassistant" CONFIG_DIR="/home/${HA_USER}/.homeassistant"
HA_USERNAME="${HA_USERNAME:-lingyu}" HA_PASSWORD="${HA_PASSWORD:-@Lingyu@}"
TZ="${TZ:-Asia/Shanghai}" COUNTRY="${COUNTRY:-CN}" LANGUAGE="${LANGUAGE:-zh-Hans}" NAME="${NAME:-Home}" UNIT_SYSTEM="${UNIT_SYSTEM:-metric}" CURRENCY="${CURRENCY:-CNY}"
INSTALL_XIAOMI_MIOT_AUTO="${INSTALL_XIAOMI_MIOT_AUTO:-1}"
PY="${VENV_DIR}/bin/python"
echo "=== HA Core (WSL) Bootstrap ===" echo "HA_USER = ${HA_USER}" echo "VENV_DIR = ${VENV_DIR}" echo "CONFIG_DIR = ${CONFIG_DIR}" echo "LOGIN USER = ${HA_USERNAME}"
[ -x "${PY}" ] || { echo "ERROR: 找不到 venv python: ${PY}"; exit 1; }
if [ "${INSTALL_XIAOMI_MIOT_AUTO}" = "1" ]; then if ! command -v wget >/dev/null 2>&1 && ! command -v curl >/dev/null 2>&1; then echo "=== Install wget (required for plugin install) ===" sudo apt-get update sudo apt-get install -y wget fi fi
echo "=== [1/6] Stop running Home Assistant (best effort) ===" set +e pkill -f "homeassistant.*--config" >/dev/null 2>&1 pkill -f "hass" >/dev/null 2>&1 sleep 1 set -e
echo "=== [2/6] Ensure config dirs ===" sudo -u "${HA_USER}" mkdir -p "${CONFIG_DIR}/.storage"
echo "=== [3/6] Write configuration.yaml ===" sudo -u "${HA_USER}" bash -c "cat > '${CONFIG_DIR}/configuration.yaml' <<EOF homeassistant: name: ${NAME} time_zone: ${TZ} country: ${COUNTRY} language: ${LANGUAGE} unit_system: ${UNIT_SYSTEM} currency: ${CURRENCY} EOF"
echo "=== [4/6] Mark onboarding done ===" sudo -u "${HA_USER}" bash -c "cat > '${CONFIG_DIR}/.storage/onboarding' <<'EOF' { \"version\": 4, \"minor_version\": 1, \"key\": \"onboarding\", \"data\": { \"done\": [ \"user\", \"core_config\", \"integration\", \"analytics\" ] } } EOF"
echo "=== [5/6] Create admin user pre-start ===" set +e sudo -u "${HA_USER}" -H "${PY}" -m homeassistant --script auth --config "${CONFIG_DIR}" add "${HA_USERNAME}" "${HA_PASSWORD}" RC=$? set -e if [ "${RC}" -ne 0 ]; then echo "WARN: auth add 返回非 0(常见:用户已存在 / 已有 owner)。继续。" else echo "OK: 用户创建成功。" fi
if [ "${INSTALL_XIAOMI_MIOT_AUTO}" = "1" ]; then echo "=== [6/6] Install Xiaomi Miot Auto custom_component ===" sudo -u "${HA_USER}" -H bash -lc " set -e cd '${CONFIG_DIR}' mkdir -p custom_components if command -v wget >/dev/null 2>&1; then wget -O - https://get.hacs.vip | DOMAIN=xiaomi_miot bash - else curl -fsSL https://get.hacs.vip | DOMAIN=xiaomi_miot bash - fi " || { echo "WARN: 小米插件安装失败。你可以稍后手动重试(通常是网络/SSL/代理问题)。" } fi
echo "" echo "=== DONE ===" echo "现在请启动/重启 Home Assistant Core,使 onboarding 与插件生效:" echo " sudo -u ${HA_USER} -H bash -lc 'cd ${VENV_DIR} && source bin/activate && hass --config ${CONFIG_DIR}'" echo "访问: http://localhost:8123" echo "账号:${HA_USERNAME}"
|