R4S软路由搭建HomeAssistant

目录

  • HomeAssistant简介

  • 环境配置

  • 搭建步骤

    • 安装HomeAssistant镜像

    • 安装HACS

    • 内网穿透配置

    • 反向代理配置

  • 安装后配置项

    • 外网访问出现400 Bad Request

    • 反向代理访问登录页面出现Unable to connect to Home Assistant.报错

    • 接入HomeKit后重启网络连接失败

HomeAssistant简介

Home Assistant 是一款在 Python 3 上运行的家庭自动化平台。能够跟踪和控制家庭中的所有设备,并提供自动化控制平台。

主页

环境配置

上海地域公网服务器,CentOS,已安装宝塔、LAMP环境

R4S软路由,支持Docker、FRP内网穿透

搭建步骤

安装HomeAssistant镜像

在软路由上进入Docker镜像页,输入homeassistant/home-assistant拉取最新的HomeAssistant镜像

软路由

在容器页面,参考如下配置,创建出新的容器

1
2
3
4
5
6
容器名称:自定义,日后方便区分
Docker镜像:homeassistant/home-assistant:latest
重启策略:Always
网络:host|host #必须选择host,否则与设备的连接将出现异常
环境变量(-e):TZ=Asia/Shanghai
绑定挂载(-v):/UserLocalConfigSrc:/Config #将本地自定义路径挂载至容器内/config路径

docker

创建完成后,使用http://软路由内网IP:8123,可以进入HomeAssistant首次配置页面

HA主页

创建用户名密码、国家、地区等基本信息后,后续即可通过内网地址访问。

安装HACS

HACS是HA的应用商店,由于HA的自带导入设备局限性比较大,HACS商店中的各种接入组件弥补了支持设备少的问题

HACS安装过程更新中…

内网穿透配置

外网服务器安装FRP内网穿透服务端,将软路由的8123端口转发至外网IP的端口,后续可以通过http://外网IP:8123在外网访问

反向代理配置

安装后配置项

解决代理访问报错400:Bad Request的问题

配置白名单允许代理IP访问HomeAssistant

1.使用内网IP进入HomeAssistant页面,点击左栏>配置>系统>日志,检查proxy代理相关报错,记住报错中的IP

2.进入容器内/config对应的本地挂载目录,打开configuration.yaml,添加如下配置,允许下列IP访问:

1
2
3
4
5
6
7
8
http:
base_url: http://XXX.XX.XXX.XXX:8123 #外网IP
use_x_forwarded_for: true
trusted_proxies:
- XXX.XX.XXX.XXX #外网IP
- 192.168.2.1 #内网IP
- 127.0.0.1 #本机地址
- ::1 #V6本机地址

解决访问登录页面,登录时报错Unable to connect to Home Assistant.问题。

该报错原因是Home Assistant登录时会用到websocket,宝塔默认的反向代理未添加websocket支持。

注意点:

1.搜索引擎中的方案大部分是针对Nginx的,对于Apache相关配置介绍较少。

2.直接参考大部分文档中的配置,仍然无法转发Home Assistant的登录请求

经过测试,如下配置可以正确转发Home Assistant的websocket请求

1
2
3
4
5
6
7
8
9
10
11
#PROXY-START/
<IfModule mod_proxy.c>
ProxyRequests Off
SSLProxyEngine on
ProxyPreserveHost On
ProxyPass /api/websocket ws://127.0.0.1:8123/api/websocket
ProxyPassReverse /api/websocket ws://127.0.0.1:8123/api/websocket
ProxyPass / http://127.0.0.1:8123/
ProxyPassReverse / http://127.0.0.1:8123/
</IfModule>
#PROXY-END/

接入HomeKit后重启网络连接失败

1.进入Home Assistant后台左栏,选择配置>系统>网络,找到局域网选项,打开自动配置,勾选软路由所在网段

网络设置

配置快捷指令实现siri调整加湿器模式

调用HomeAssistant应用中的humidifier.set_mode并传入服务所需数据:

强力模式:

{“mode”:”Strong”,”entity_id”: “humidifier.leshow_jsq3_77a2_humidifier”}

睡眠模式:

{“mode”:”Sleep”,”entity_id”: “humidifier.leshow_jsq3_77a2_humidifier”}

其中entity_id指实体ID,humidifier.leshow_jsq3_77a2_humidifier是家里加湿器的ID。


R4S软路由搭建HomeAssistant
http://example.com/2023/01/27/R4S软路由搭建HomeAssistant/
作者
SoulXM
发布于
2023年1月27日
许可协议