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

 找回密码
 立即注册
查看: 2238|回复: 12

[技术探讨] 如何用一条简短的命令编写这个控制热水器的程序?

[复制链接]

32

主题

134

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
573
HASS币
0
发表于 2023-11-20 01:38:56 | 显示全部楼层 |阅读模式
本帖最后由 norikohxb 于 2023-11-20 23:17 编辑

夏季冬季热水温
2260
3359
4458
5557
6656
7755
8854
9953
101052
111151
121250
131349
141448
151547
161646
171745
181844
191943
202042
212141
222240洗澡最适合的温度
232339
242438
252537
262636
272735
282834
292933
303032
313131
323230
333329
343428
353527
363626
373725
383824
393923
404022


我打算把室温=20度,热水器温度42度,
之后室温每增加1度,热水器温度降低1度
室温每减少1度,热水器温度升高1度
请问有没有什么好的方式进行控制?
不要写40条命令
下面是一个温度创建一条自动化指令,这个程序能否写得更简单一点?而且我发现我的命令不会执行, 因为博联A1传感器的温度,比如他没有经过20度和19度直接变成19.8度,这个时候不启动触发
因为我的触发是写着=20 或者=19, 现在19.8 既不等于19也不等于20也不对执行


alias: 室温20热水42
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "20"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 42
mode: single

alias: 室温19热水43
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "19"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 43
mode: single

alias: 室温18热水44
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "18"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 44
mode: single

alias: 室温17热水45
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "17"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 45
mode: single

alias: 室温16热水46
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "16"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 46
mode: single

alias: 室温15热水47
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "15"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 47
mode: single

alias: 室温14热水48
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "14"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 48
mode: single

alias: 室温13热水49
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "13"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 49
mode: single

alias: 室温12热水50
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "12"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 50
mode: single

alias: 室温11热水51
description: 热水器
trigger:
  - platform: state
    entity_id:
      - sensor.kong_qi_zhi_liang_yi_temperature_16
    to: "11"
condition: []
action:
  - device_id: 6705fcfc983af76b0d5c69172050e4b5
    domain: number
    entity_id: 9c5ad639937b4c2d25a6b53fe2e1f942
    type: set_value
    value: 51
mode: single


回复

使用道具 举报

32

主题

134

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
573
HASS币
0
 楼主| 发表于 2023-11-20 02:50:46 | 显示全部楼层
有没有更简洁的命令,我这样写,虽然是用复制黏贴,但是感觉如果有一个比较简短的语句就更好了
回复

使用道具 举报

51

主题

1341

帖子

5606

积分

论坛DIY达人

积分
5606
金钱
4265
HASS币
20
发表于 2023-11-20 07:06:59 | 显示全部楼层
本帖最后由 sorrypqa 于 2023-11-20 07:23 编辑

应该可以改成室温变化时触发,再根据室温设置热水器温度
这是抄论坛大佬作业,没有开空调而且温度高于26.5度时有人在风扇前面会自动开启,并根据室内温度调整风扇速度的自动化,你参考一下:

alias: 客厅风扇(自动开)
description: ""
trigger:
  - type: occupied
    platform: device
    device_id: 9edc50f86b3892dcfe3ff3b6a6d9a8a2
    entity_id: 998977bb60e737bdbcde09fb90f5e54a
    domain: binary_sensor
condition:
  - condition: time
    after: "06:00:00"
    before: "00:00:00"
  - condition: numeric_state
    entity_id: sensor.cmcc_x12_01_power
    below: 20
  - condition: device
    device_id: 319cb65fe9dc03cd0278e4192070a5da
    domain: fan
    entity_id: 81a42ef095e51620f0a42fcc69147bea
    type: is_off
  - type: is_temperature
    condition: device
    device_id: 5aa5bd731fffd45fc846a43059dc80b1
    entity_id: 966ae1a929613a2be508e65b87f2149e
    domain: sensor
    above: 26.5
action:
  - service: fan.turn_on
    data: {}
    target:
      entity_id: fan.esp32_fan_01_fan
  - service: fan.set_percentage
    data:
      percentage: >
        {% if states("sensor.daikin_air_01_temperature")|float >= 26 and
        states("sensor.daikin_air_01_temperature")|float < 27 %} 10
        {% elif states("sensor.daikin_air_01_temperature")|float >= 27 and
        states("sensor.daikin_air_01_temperature")|float < 28 %} 20
        {% elif states("sensor.daikin_air_01_temperature")|float >= 28 and
        states("sensor.daikin_air_01_temperature")|float < 29 %} 40
        {% elif states("sensor.daikin_air_01_temperature")|float >= 29 and
        states("sensor.daikin_air_01_temperature")|float < 30 %} 60
        {% elif states("sensor.daikin_air_01_temperature")|float >= 30 and
        states("sensor.daikin_air_01_temperature")|float < 31 %} 80
        {% else %} 100 {% endif %}
    target:
      entity_id: fan.esp32_fan_01_fan
mode: single
回复

使用道具 举报

10

主题

1332

帖子

4254

积分

论坛元老

Rank: 8Rank: 8

积分
4254
金钱
2922
HASS币
0
发表于 2023-11-20 11:47:58 | 显示全部楼层
水温=40+20-当前温度
不就好了
回复

使用道具 举报

9

主题

46

帖子

1093

积分

金牌会员

Rank: 6Rank: 6

积分
1093
金钱
1047
HASS币
0
发表于 2023-11-20 12:42:09 | 显示全部楼层
本帖最后由 牛驴鸭加钙 于 2023-11-20 12:43 编辑

经过楼下的提醒直接调用服务这样设置就可以了,没想到这么简单就可以了
service: water_heater.set_temperature
data:
  temperature: "{{ 62 - states('sensor.4c65a8d3e329_temperature') | float }}"
target:
  entity_id: water_heater.208907212166650_water_heater


回复

使用道具 举报

32

主题

134

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
573
HASS币
0
 楼主| 发表于 2023-11-20 17:07:36 | 显示全部楼层
本帖最后由 norikohxb 于 2023-11-20 17:34 编辑
牛驴鸭加钙 发表于 2023-11-20 12:42
经过楼下的提醒直接调用服务这样设置就可以了,没想到这么简单就可以了

...

请问在哪里调用这些服务,写入这些代码?我把设备名字和id名字换成我自己的,就用你这个命令。
热水器.png
回复

使用道具 举报

10

主题

1332

帖子

4254

积分

论坛元老

Rank: 8Rank: 8

积分
4254
金钱
2922
HASS币
0
发表于 2023-11-20 18:53:34 | 显示全部楼层
你原来的自动化在哪儿,上面的代码就写在哪儿
回复

使用道具 举报

10

主题

1332

帖子

4254

积分

论坛元老

Rank: 8Rank: 8

积分
4254
金钱
2922
HASS币
0
发表于 2023-11-20 18:56:41 | 显示全部楼层
牛驴鸭加钙 发表于 2023-11-20 12:42
经过楼下的提醒直接调用服务这样设置就可以了,没想到这么简单就可以了

...

明明是楼上的提醒嘛
回复

使用道具 举报

32

主题

134

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
573
HASS币
0
 楼主| 发表于 2023-11-20 19:52:19 | 显示全部楼层
隔壁的王叔叔 发表于 2023-11-20 18:53
你原来的自动化在哪儿,上面的代码就写在哪儿

Message malformed: extra keys not allowed @ data['service']
错误.png
回复

使用道具 举报

32

主题

134

帖子

707

积分

高级会员

Rank: 4

积分
707
金钱
573
HASS币
0
 楼主| 发表于 2023-11-20 20:01:08 | 显示全部楼层
本帖最后由 norikohxb 于 2023-11-20 22:50 编辑
牛驴鸭加钙 发表于 2023-11-20 12:42
经过楼下的提醒直接调用服务这样设置就可以了,没想到这么简单就可以了

...

你这个代码我要放到哪里,然后我还有一个疑问,我的sensor采集的温度是是带小数点一位数
,比如目前的温度是20.5,然后62-20.5得到的是41.5带小数点,但是热水器的写入温度只能是整数。
是不是还要加一个取整的函数,能否赐教?第二个是water heater里面找不到这个热水器


海尔热水器.png
热水器2.png

我的water heater 热水器加热的实体

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-26 10:34 , Processed in 0.288295 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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