『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 13696|回复: 24

【求助】关于根据温湿度传感器数据自动调节空调温度的...

[复制链接]

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
发表于 2021-5-19 14:06:01 | 显示全部楼层 |阅读模式
事情是这样的~~
家里有小米温湿度传感器,通过蓝牙网关接入到hass,想着就通过这个温湿度传感器的温度数据可以自动调节接入hass的空调运行时的温度。我在自动化中写好了脚本,但是当温度达到指定条件的时候,它并没有自动执行这个自动化。不知道问题出在哪里,在触发条件和环境条件那我折腾了好久,就是不行,附上代码,求大神指导一二!
ps.想要实现的功能是,当温湿度传感器显示温度大于25.9℃时,空调温度设置为25℃,但是有个前提,此时空调需要是开机并且在制冷模式下,并且当前空调的温度不低于26℃,该自动化才会生效执行。
alias: 空调恒温(>25.9℃时)
description: ''
trigger:
  - platform: numeric_state
    entity_id: sensor.t1_cloud_7oec00
    attribute: temperatur_temperature
    above: '25.9'
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: climate.myclimate
        attribute: hvac_modes
        state: cool
      - condition: numeric_state
        entity_id: climate.myclimate
        attribute: temperature
        above: '25'
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.myclimate
    data:
      temperature: 25
  - service: climate.set_fan_mode
    target:
      entity_id: climate.myclimate
    data:
      fan_mode: Auto
mode: single


回复

使用道具 举报

0

主题

173

帖子

1403

积分

金牌会员

Rank: 6Rank: 6

积分
1403
金钱
1230
HASS币
0
发表于 2021-5-19 14:40:15 | 显示全部楼层
先確定你sensor出來得數值是字串還是數字,字串是無法比較大小的
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-19 14:52:22 | 显示全部楼层
jasonlai79 发表于 2021-5-19 14:40
先確定你sensor出來得數值是字串還是數字,字串是無法比較大小的

感谢回复!
关于这个问题,要如何确认呢
如果是字符串的话,有没有什么曲线救国的方法吗
回复

使用道具 举报

0

主题

173

帖子

1403

积分

金牌会员

Rank: 6Rank: 6

积分
1403
金钱
1230
HASS币
0
发表于 2021-5-19 16:47:06 | 显示全部楼层
判斷式改成template
類似以下的寫法,將字串轉成數字
value_template: '{{ states("sensor.wo_shi_temperature") | int > 29 }}'
回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-19 22:55:11 | 显示全部楼层
本帖最后由 coli06 于 2021-5-19 22:58 编辑
jasonlai79 发表于 2021-5-19 16:47
判斷式改成template
類似以下的寫法,將字串轉成數字
value_template: '{{ states("sensor.wo_shi_temperat ...

感谢回复我按照你的方法,将判断方式改为自定义模板,参考你的写法改了下自动化的内容,最终代码如下,但是它还是没有自动执行不知道问题出在哪里。
alias: 空调恒温(>26℃时)
description: ''
trigger:
  - platform: template
    value_template:  '{{ states("sensor.t1_cloud_7oec00_temperatur_temperature") | int > 26 }}'
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: climate.myclimate
        attribute: hvac_modes
        state: cool
      - condition: template
        value_template:  '{{ states("sensor.climate.myclimate_temperature") |  int > 25 }}'
action:
  - service: climate.set_temperature
    target:
      entity_id: climate.myclimate
    data:
      temperature: 25
  - service: climate.set_fan_mode
    target:
      entity_id: climate.myclimate
    data:
      fan_mode: Low
mode: single
回复

使用道具 举报

0

主题

173

帖子

1403

积分

金牌会员

Rank: 6Rank: 6

积分
1403
金钱
1230
HASS币
0
发表于 2021-5-20 09:36:44 | 显示全部楼层
本帖最后由 jasonlai79 于 2021-5-20 09:42 编辑



trigger:- platform: template
  value_template: '{{ states("sensor.t1_cloud_7oec00_temperatur_temperature") | int > 26 }}'

- condition: template
        value_template:  '{{ states("sensor.climate.myclimate_temperature") |  int > 25 }}'

改成以下這樣,你自己看一下attribute有沒有放錯參數,因為有點看不太懂你原本寫的
trigger:
- platform: template
  value_template: '{{  state_attr("sensor.t1_cloud_7oec00", "temperatur_temperature") | int > 26 }}'


- condition: template
        value_template:  '{{ state_attr("climate.myclimate", "temperature") |  int > 25 }}'




回复

使用道具 举报

15

主题

135

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
430
HASS币
0
 楼主| 发表于 2021-5-20 21:06:54 | 显示全部楼层
本帖最后由 coli06 于 2021-5-20 21:17 编辑
jasonlai79 发表于 2021-5-20 09:36
trigger:- platform: template
  value_template: '{{ states("sensor.t1_cloud_7oec00_temperatur_tempe ...

我核对了下,attribute没有放错参数,按照你这个方式改了之后,在触发条件中,如果是在图形界面编辑下,看起来是没什么问题,但是切换到yaml编辑模式后,前面出发条件的指令就自动变成了下图这样,手动修改保存后,它又会自动复原。下面的环境条件判断空调当前温度的代码倒是一切正常。
alias: 空调恒温(<25℃时)
description: ''
trigger:
  - platform: template
    value_template: >-
      {{ state_attr("sensor.t1_cloud_7oec00", "temperatur_temperature") | int <
      25 }}
condition:
  - condition: and
    conditions:
      - condition: state
        entity_id: climate.myclimate
        attribute: hvac_modes
        state: cool
      - condition: template
        value_template: '{{ state_attr("climate.myclimate", "temperature") |  int < 26 }}'



后来经测试发现是“temperatur_temperature”这里出问题,如果把这里的下划线删掉,它们就正常。但是,我这个温度传感器的template就是这样写的,好像也改不了。
model: miaomiaoce.sensor_ht.t1
firmware_version: 1.1.2_0087
hardware_version: ''
temperatur_temperature: 27.1
temperatur_relative_humidity: 73
friendly_name: 

但是,如果此行代码改成官方参考文档中的这种写法,它就正常,不会产生自动换行掉的问题,但是自动化还是无法正常触发
  - platform: template
    value_template: '{{ states("sensor.t1_cloud_7oec00","temperatur_temperature")|int < 25 }}'


回复

使用道具 举报

25

主题

640

帖子

2913

积分

金牌会员

Rank: 6Rank: 6

积分
2913
金钱
2263
HASS币
40
发表于 2021-5-21 01:11:51 | 显示全部楼层
你这个很简单,先别把问题搞这么复杂. 首先在不加condition的情况,你看看温度变化能不能触发.
如果可以的话,condition再一个一个加.
我的没有用attribute: hvac_modes,直接state而已.
Trigger也没有用int. 你的显示27.1,多数是float,可以判断大小. 不用转换成整数.
回复

使用道具 举报

25

主题

640

帖子

2913

积分

金牌会员

Rank: 6Rank: 6

积分
2913
金钱
2263
HASS币
40
发表于 2021-5-21 01:13:26 | 显示全部楼层
Trigger也可以通过给手机发送消息来判断是否工作正常.
温度计吹两口气应该就会升高,用来测试
回复

使用道具 举报

35

主题

984

帖子

4744

积分

论坛元老

Rank: 8Rank: 8

积分
4744
金钱
3760
HASS币
20
发表于 2021-5-21 08:15:17 来自手机 | 显示全部楼层
同意楼上的,首先确认传感器状态变化的触发动作。我之前测试人体传感器和门磁的时候直接加了个手动状态变更,也是一样的原理。条件能否正确触发才是自动化的第一步。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 10:23 , Processed in 0.606339 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表