# HomeAssistant自动化配置 > **注意**: 本文档使用HomeAssistant 2024.x 及以上版本的新YAML格式。主要变化包括: > - `trigger` → `triggers` > - `condition` → `conditions` > - `action` → `actions` > - `service` → `action` > - `platform: state` → `trigger: state` > - `platform: time_pattern` → `trigger: time_pattern` ## 配置方法 ### 方法1: 通过HomeAssistant Web界面配置(推荐) 1. 登录HomeAssistant Web界面 2. 进入 "配置" → "自动化和场景" → "自动化" 3. 点击右下角 "+" 按钮创建新自动化 4. 点击右上角 "⋮" → "编辑为YAML" 5. 粘贴以下配置: ```yaml alias: 发布环境温度传感器状态到MQTT description: 当米家温度传感器状态变化或每30秒定时时,自动发布到MQTT供Node-RED使用 triggers: - entity_id: sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1 trigger: state - seconds: /30 trigger: time_pattern conditions: - condition: template value_template: >- {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') not in ['unavailable', 'unknown', 'None'] and states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') | float(-999) != -999 }} actions: - data: topic: >- homeassistant/sensor/sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1/state payload: >- {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') }} retain: false qos: 0 action: mqtt.publish mode: single ``` 6. 点击右上角"保存" 7. 确认自动化已启用 ### 方法2: 通过配置文件(高级用户) 编辑HomeAssistant的 `automations.yaml` 文件,添加: ```yaml - id: publish_temperature_to_mqtt alias: 发布环境温度传感器状态到MQTT description: 当米家温度传感器状态变化或每30秒定时时,自动发布到MQTT供Node-RED使用 triggers: - entity_id: sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1 trigger: state - seconds: /30 trigger: time_pattern conditions: - condition: template value_template: >- {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') not in ['unavailable', 'unknown', 'None'] and states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') | float(-999) != -999 }} actions: - data: topic: >- homeassistant/sensor/sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1/state payload: >- {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') }} retain: false qos: 0 action: mqtt.publish mode: single ``` 然后重启HomeAssistant或重新加载自动化配置。 ## 配置验证 ### 1. 检查MQTT配置 确认HomeAssistant的MQTT集成已配置且正常工作: 1. 进入 "配置" → "集成" 2. 找到MQTT集成,确认状态正常 3. 检查MQTT broker地址:192.168.50.83:1883 如果MQTT集成未配置,请添加: ```yaml # configuration.yaml mqtt: broker: 192.168.50.83 port: 1883 username: dtuser password: Dtuse1r discovery: true ``` ### 2. 验证传感器实体 1. 进入 "开发者工具" → "状态" 2. 搜索实体ID:`sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1` 3. 确认: - 实体存在且状态不是 `unavailable` - 状态值是有效的温度数字 - 最后更新时间是最近的 ### 3. 测试自动化 1. 进入 "配置" → "自动化和场景" → "自动化" 2. 找到创建的自动化规则 3. 点击右侧的 "▶" 按钮手动执行 4. 或者等待传感器状态自然变化 ### 4. 验证MQTT发布 使用MQTT客户端工具验证数据发布: ```bash # 订阅HomeAssistant发布的温度数据 mosquitto_sub -h 192.168.50.83 -p 1883 -u dtuser -P Dtuse1r -t "homeassistant/sensor/sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1/state" ``` 应该能看到类似这样的输出: ``` 23.5 24.1 23.8 ``` ## 故障排除 ### 自动化未触发 1. **检查实体ID**: 确认传感器实体ID完全正确 2. **检查条件**: 确认传感器状态满足条件(不是unavailable/unknown) 3. **查看日志**: 在HomeAssistant的"配置" → "日志"中查看错误信息 4. **手动测试**: 使用自动化的手动执行功能测试 ### MQTT发布失败 1. **检查MQTT集成**: 确认MQTT broker连接正常 2. **验证权限**: 确认MQTT用户有发布权限 3. **网络连接**: 检查HomeAssistant到MQTT broker的网络连接 4. **Topic权限**: 确认topic没有发布限制 ### 传感器数据异常 1. **米家插件状态**: 检查米家插件是否正常工作 2. **蓝牙连接**: 确认传感器与HomeAssistant的蓝牙连接 3. **设备电量**: 检查传感器电池电量 4. **设备距离**: 确认设备在蓝牙通信范围内 ## 高级配置选项 ### 调整定时发布间隔 当前配置为每30秒发布一次,您可以根据需要调整间隔: ```yaml triggers: - entity_id: sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1 trigger: state - seconds: /60 # 每60秒(1分钟)发布一次 trigger: time_pattern # 或者 - minutes: /5 # 每5分钟发布一次 trigger: time_pattern # 或者 - hours: /1 # 每小时发布一次 trigger: time_pattern ``` ### 区分触发类型(可选) 如果需要在日志中区分是状态变化触发还是定时触发,可以添加调试信息: ```yaml actions: - data: message: >- 发布温度数据到MQTT: {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') }}°C (触发类型: {% if trigger.trigger == 'state' %}状态变化{% else %}定时{% endif %}) level: info action: system_log.write - data: topic: >- homeassistant/sensor/sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1/state payload: >- {{ states('sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1') }} action: mqtt.publish ``` ### 添加数据过滤 如果需要过滤异常数据,可以修改条件: ```yaml conditions: - condition: template value_template: >- {{ trigger.to_state.state not in ['unavailable', 'unknown', 'None'] and trigger.to_state.state | float(-999) != -999 and trigger.to_state.state | float > -50 and trigger.to_state.state | float < 100 }} ``` ### 添加发布间隔限制 避免过于频繁的发布: ```yaml triggers: - entity_id: sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1 trigger: state for: seconds: 10 # 状态持续10秒后才触发 ``` ### 添加调试日志 ```yaml actions: - data: message: "发布温度数据到MQTT: {{ trigger.to_state.state }}°C" level: info action: system_log.write - data: topic: >- homeassistant/sensor/sensor.miaomiaoc_cn_blt_3_11a1sbr5k5o01_t2_temperature_p_2_1/state payload: "{{ trigger.to_state.state }}" action: mqtt.publish ``` ## 完成后的数据流 ``` 米家温度传感器 → HomeAssistant → MQTT Broker → Node-RED → 公司MQTT服务器 ``` 配置完成后,数据流程将变为: 1. 米家传感器通过蓝牙发送数据到HomeAssistant 2. HomeAssistant接收数据并更新传感器状态 3. 自动化规则触发,将状态发布到MQTT 4. Node-RED订阅MQTT接收数据 5. Node-RED处理并转发到公司MQTT服务器