# Docker宝库：HomeAssistant智能家居集成

## 安装HomeAssistant
通过一下命令，在Docker安装HomeAssistant

```bash
docker run -d -it\
--restart always \
--name hass \
-v /opt/homeassistant/config:/config \
-e TZ=Asia/Shanghai \
-p 8123:8123 \
homeassistant/home-assistant:latest
```
之后通过localhost:8123访问管理界面，注册用户等。

## 安装HACS插件
控制台输入以下代码进入容器
```bash
docker exec -it hass bash
````
之后输入以下命令安装hacs
```bash
wget -O - https://get.hacs.xyz | bash -
```
安装完毕后，进入HomeAssistant，点击左下角“配置”，再点击右上角三个点，重新启动HomeAssistant。

启动完毕后，登录HomeAssistant，左下角“配置”-“设备与服务”-“添加集成”，搜索并安装HACS。（5个选项全部打钩，按提示登录Github并输入验证码授权）

此时，菜单栏会出现HACS选项，点击进入，直接在上方搜索栏输入想安装的HACS插件就可以了，记得重启HA生效。

重启成功后，点击“配置”中“设备与服务”选项卡下的“添加集成”按钮，搜索刚刚安装的插件，发现已经有刚刚安装的集成了，点击它进行配置即可。

各类插件推荐：
+ 小米用HACS的Xiaomi Miot Auto或者小米官方插件
+ 海尔用HACS的Haier(banto6)
+ 涂鸦智能用HACS的Tuya v2
+ OMV系统用HACS的OpenMediaVault
+ 另外可以安装Bar Card插件，用与界面显示百分比进度条（默认插件没有）。

# 反代设置
HASS如果直接设置反向代理，会出现无法访问，显示400：Bad Request的情况，是因为HASS默认不允许通过反向代理访问，需要在HASS的配置文件中进行设置。

修改HASS的`configuration.yaml`文件，添加以下内容：
```yaml
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - 172.17.0.1 # 根据你的Docker网络环境修改
    - 192.168.1.0/24 # 根据你的局域网网段修改
```
- `use_x_forwarded_for: true`：启用反向代理支持。
- `trusted_proxies`：添加反向代理服务器的IP地址或网段。


# 其他

## PTX无线蓝牙开关自动化配置
登录hass后，设置-自动化与场景-创建自动化
在”每当“中添加触发条件，选”实体“-“状态”，在实体中选择”BLE专用开关传感器 单击“
点击“每当”窗框右上角的三个点，选择"YAML编辑"，修改配置文件为：
```yaml
trigger: state
entity_id:
  - event.lemesh_cn_blt_3_1lqnnt7ucc801_ts00_double_click_e_5_1013
not_from: unavailable
not_to: unavailable

```
`PS：如果不写not_from和not_to这两行，虽然能正常使用，但是在设备离线重新连接或者hass断网等情况下，也会触发开关按键动作。`

在“就执行”窗框中，选“添加动作”-“设备”，选择一个“设备”，并选择对应的“动作”即可。例如：
```yaml
type: toggle
device_id: 431a9ec9e640be389fb5feeaf7ae7c72
entity_id: d52fa987eb8418fa42bec399acc77e1b
domain: switch
```
完整的配置代码为：
```yaml
alias: 书房无线开关-空调
description: ""
triggers:
  - trigger: state
    entity_id:
      - event.lemesh_cn_blt_3_1lqnnt7ucc801_ts00_double_click_e_5_1013
    not_from: unavailable
    not_to: unavailable
conditions: []
actions:
  - type: toggle
    device_id: 431a9ec9e640be389fb5feeaf7ae7c72
    entity_id: d52fa987eb8418fa42bec399acc77e1b
    domain: switch
mode: single
```



















