-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Home Assistant 之旅 #203
Comments
安装 Home Assistant
采用 Docker 安装,这里我使用了 docker compose,首先创建配置文件: cd ~
mkdir homeassistant && cd homeassistant
cat << EOF > docker-compose.yaml
version: '3'
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant:stable
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: host
EOF 然后启动: 这时候就 Home Assistant 就已经启动好了,接下来打开网址预览即可: http://192.168.31.31:8123 |
集成小米设备
首先安装 Xiaomi Miot For HomeAssistant: cd ~/homeassistant
wget -q -O - https://cdn.jsdelivr.net/gh/al-one/hass-xiaomi-miot/install.sh | bash -
sudo docker-compose up -d 上面的命令为进入 homeassistant 主目录后,下载并安装 xiaomi miot 组件,然后重启 homeassistant 容器。 接着开始配置,打开网页后依次点击:⚙️ 配置 > 🧩 集成 > ➕ 添加集成 > 🔍 搜索 Xiaomi Miot Auto。 |
将 Home Assistant 接入 HomeKit首先需要给 HomeAssistant 安装 HomeKit 集成,可以参考官方文档。按照步骤一步一步进行即可。 最后在 iPhone 中添加设备,扫描 Home Assistant 中的二维码即可,最终效果如下: 然后你就可以通过 Siri 控制 HomeKit 啦。 另外,如果你家中有 HomePod 作为家庭中枢,你甚至可以在外网直接控制家里的 HomeAssistant 设备,因为 HomePod 会转发你的请求到家中的设备上。iPad 也可以作为家庭中枢,在这里打开: |
将 PC 的开启和关闭接入 Home Assistant编辑配置文件 (~/homeassistant/config/configuration.yaml ),添加以下内容: homeassistant:
customize: !include customize.yaml # 这里是允许调整开关的样式
switch:
- platform: wake_on_lan
name: gHan
mac: "4C:CC:6A:B7:E6:D6"
host: "192.168.31.10"
turn_off:
service: shell_command.turn_off_ghan
shell_command:
turn_off_ghan: 'ssh 192.168.31.10 shutdown -h' 此时 HAAS 里已经可以查看到 但是为了能够关机,还需要再配置一个 ssh 白名单,逐步操作:
version: '3'
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant:stable
volumes:
- ./config:/config
- ./ssh:/root/.ssh:ro
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
privileged: true
network_mode: host
sudo docker-compose up -d
sudo docker exec -it homeassistant /bin/bash
ssh-keygen
|
通过 Prometheus 记录 Home Assistant 数据想要将 HAAS 的数据记录在 Prometheus 中,只需要做下面的操作:
HAAS Token 的生成方法,参考这里: https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token |
Prometheus increase 函数在统计家庭用电量时遇到的波动问题如果你要统计家里的用电量,使用这种函数: 你会发现当时间范围很小时,比如最近半小时,绘制出的曲线有上下波动,仿佛是用电量为负数导致的一样: 其实这是 Prometheus 的特性 怎么解决呢?使用 round 函数抹平这种误差: |
上 k8s 咯配置整体上和 docker compose 是一样的,有个注意点,切换到 k8s 后仍需要保持 hostNetwork true 的设置,否则 homekit, esphome, WOL 等依赖底层网络特性的插件都都将失效。 apiVersion: v1
kind: PersistentVolume
metadata:
name: homeassistant-config-pv-local
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: homeassistant-config-local-storage
local:
path: /home/ziyuan/homeassistant/config
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- pve-ubuntu
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: homeassistant-ssh-pv-local
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: homeassistant-ssh-local-storage
local:
path: /home/ziyuan/homeassistant/ssh
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- pve-ubuntu
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: homeassistant-config-local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: homeassistant-ssh-local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: homeassistant-config-pvc-local
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: homeassistant-config-local-storage
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: homeassistant-ssh-pvc-local
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
storageClassName: homeassistant-ssh-local-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: homeassistant
namespace: default
spec:
replicas: 1
selector:
matchLabels:
name: homeassistant
template:
metadata:
labels:
name: homeassistant
spec:
hostNetwork: true
containers:
- name: homeassistant
image: ghcr.dockerproxy.com/home-assistant/home-assistant:2024.3.3
securityContext:
capabilities:
add:
- NET_ADMIN
- NET_RAW
- NET_BROADCAST
ports:
- containerPort: 8123
volumeMounts:
- name: config
mountPath: /config
- name: ssh
mountPath: /root/.ssh
readOnly: true
- name: time
mountPath: /etc/localtime
readOnly: true
volumes:
- name: config
persistentVolumeClaim:
claimName: homeassistant-config-pvc-local
- name: ssh
persistentVolumeClaim:
claimName: homeassistant-ssh-pvc-local
- name: time
hostPath:
path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
name: homeassistant
spec:
type: ClusterIP
clusterIP: 10.43.235.121
selector:
name: homeassistant
ports:
- port: 8123
targetPort: 8123
|
访问 Home Assistant 提示 400: Bad Request当我的 Home Assistant 位于 2 个反向代理后,遇到了该问题。流量如下: 客户端 -> Ngixn -> K8s Ingress -> Home Assistant 解决方案,在 Home Assistant 的配置文件中添加以下配置: http:
use_x_forwarded_for: true
trusted_proxies:
- XXX.XXX.XXX.XXX # Add the IP address of the proxy server 对我来说,具体配置如下: http:
use_x_forwarded_for: true
trusted_proxies:
- 192.168.31.0/24 # 局域网 IP 范围
- 10.42.0.0/16 # k8s IP 范围
- 100.64.0.0/10 # Tailscale IP 范围 |
Just do it
The text was updated successfully, but these errors were encountered: