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

 找回密码
 立即注册
查看: 3090|回复: 29

[技术探讨] 【求助】空调伴侣与温湿度计的自动化配置

[复制链接]

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
发表于 2024-9-7 22:12:44 | 显示全部楼层 |阅读模式
最近刚刚开始接触home assistant,家里是传统空调,分别使用小米空调伴侣一代(2个)和小米空调伴侣Pro(带10A插座的)进行控制;
由于小米空调伴侣自身没有室温传感器,所以每个房间对应配备了小米温湿度计2,
最近两天发现空调设置27°C后,小米温湿度计2都已经显示22°C,空调仍然在(制冷)运行,想通过home assistant的自动化功能进行调整,
为此,我也在网上进行了搜索,搜到以下两个内容:
https://bbs.hassbian.com/thread-22150-1-1.html
下载.png
https://bbs.hassbian.com/thread-13008-1-1.html
下载 (1).png
但本人并不会进行YAML代码的编辑,完全不知道上面代码如何使用能够实现完整的自动化控制,

我想要实现的功能如下:(没有用固定温度26°C或27°C作为比较是考虑到家人在睡觉和白天设定的温度不同)
当温湿度计2的温度低于空调伴侣的设定温度,就将设定温度增加1度。
当温湿度计2的温度高于空调伴侣的设定温度,就将设定温度减小1度。
这里还有个问题就是,当第一条自动化指令执行之后,设定温度可能就马上高于温湿度计2的温度,不知道应该怎么处理
不知道这样的需求home assistant是否能够实现。
回复

使用道具 举报

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
 楼主| 发表于 2024-9-8 18:54:15 | 显示全部楼层
自己回复自己一下,目前还在调试,调整了控制思路,整体思路是:
每隔15分钟运行一次,并且在空调为制冷的情况下运行
如果空调的设定温度与当前温湿度计的温度(室温)相差在1°C以内,将风扇模式调整为自动。
如果室温高出空调设定温度太多,风扇模式调整为高速;
如果室温低于空调设定温度太多,风扇模式调整为低速;
控制代码(目前还在调试,不确定是否内很好地运行)如下:
alias: 主卧空调自动化
description: ""
trigger:
  - platform: time_pattern
    minutes: /15
    enabled: true
condition:
  - condition: state
    entity_id: climate.lumi_v2_40c4_air_conditioner
    attribute: hvac_action
    state: cooling
action:
  - if:
      - condition: numeric_state
        entity_id: climate.lumi_v2_40c4_air_conditioner
        attribute: temperature
        below: sensor.a4c1380342f8_temperature
        enabled: true
    then:
      - if:
          - condition: numeric_state
            entity_id: climate.lumi_v2_40c4_air_conditioner
            value_template: "{{state.attributes.temperature + 1}}"
            below: sensor.a4c1380342f8_temperature
        then:
          - action: climate.set_fan_mode
            metadata: {}
            data:
              fan_mode: high
            target:
              entity_id: climate.lumi_v2_40c4_air_conditioner
        else:
          - action: climate.set_fan_mode
            metadata: {}
            data:
              fan_mode: auto
            target:
              entity_id: climate.lumi_v2_40c4_air_conditioner
    else:
      - if:
          - condition: numeric_state
            entity_id: climate.lumi_v2_40c4_air_conditioner
            value_template: "{{state.attributes.temperature - 1}}"
            above: sensor.a4c1380342f8_temperature
        then:
          - action: climate.set_fan_mode
            metadata: {}
            data:
              fan_mode: low
            target:
              entity_id: climate.lumi_v2_40c4_air_conditioner
        else:
          - action: climate.set_fan_mode
            metadata: {}
            data:
              fan_mode: auto
            target:
              entity_id: climate.lumi_v2_40c4_air_conditioner
mode: single
回复

使用道具 举报

1

主题

35

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
金钱
241
HASS币
0
发表于 2024-9-9 17:01:34 | 显示全部楼层
我是在nodered里实现的,可以在面板上设置目标温度,温度计实际温度大于目标温度2度,空调制冷高速,1-2度则中速,小于1度则低速,达到目标温度则转为制热。效果完美 微信图片_20240909165203.png
回复

使用道具 举报

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
 楼主| 发表于 2024-9-9 19:02:38 | 显示全部楼层
wanyevyv 发表于 2024-9-9 17:01
我是在nodered里实现的,可以在面板上设置目标温度,温度计实际温度大于目标温度2度,空调制冷高速,1-2度 ...

我也正在研究这个,刚开始接触,不熟悉,能不能分享一下flow
回复

使用道具 举报

1

主题

35

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
金钱
241
HASS币
0
发表于 2024-9-9 19:57:14 | 显示全部楼层
[
    {
        "id": "328a3bb306039caa",
        "type": "api-call-service",
        "z": "724075cff78956a2",
        "name": "低速",
        "server": "65bef38af2beb021",
        "version": 5,
        "debugenabled": false,
        "domain": "climate",
        "service": "set_fan_mode",
        "areaId": [],
        "deviceId": [
            "744e40fa7fbbe9747ea4b49350ff8e45"
        ],
        "entityId": [],
        "data": "{\"fan_mode\":\"low\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 930,
        "y": 260,
        "wires": [
            []
        ]
    },
    {
        "id": "e9a014f5cecee429",
        "type": "api-call-service",
        "z": "724075cff78956a2",
        "name": "高速",
        "server": "65bef38af2beb021",
        "version": 5,
        "debugenabled": false,
        "domain": "climate",
        "service": "set_fan_mode",
        "areaId": [],
        "deviceId": [
            "744e40fa7fbbe9747ea4b49350ff8e45"
        ],
        "entityId": [],
        "data": "{\"fan_mode\":\"high\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 930,
        "y": 180,
        "wires": [
            []
        ]
    },
    {
        "id": "882a473e7d6f7c01",
        "type": "server-state-changed",
        "z": "724075cff78956a2",
        "name": "1F客厅",
        "server": "65bef38af2beb021",
        "version": 5,
        "outputs": 1,
        "exposeAsEntityConfig": "",
        "entityId": "sensor.cgllc_s1_1f02_temperature",
        "entityIdType": "exact",
        "outputInitially": true,
        "stateType": "str",
        "ifState": "",
        "ifStateType": "num",
        "ifStateOperator": "is",
        "outputOnlyOnStateChange": true,
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "ignorePrevStateNull": false,
        "ignorePrevStateUnknown": false,
        "ignorePrevStateUnavailable": false,
        "ignoreCurrentStateUnknown": false,
        "ignoreCurrentStateUnavailable": false,
        "outputProperties": [
            {
                "property": "qingpingtemp",
                "propertyType": "msg",
                "value": "",
                "valueType": "entityState"
            }
        ],
        "x": 170,
        "y": 220,
        "wires": [
            [
                "ec43b79841b5deef"
            ]
        ]
    },
    {
        "id": "ec43b79841b5deef",
        "type": "api-current-state",
        "z": "724075cff78956a2",
        "name": "面板",
        "server": "65bef38af2beb021",
        "version": 3,
        "outputs": 2,
        "halt_if": "off",
        "halt_if_type": "str",
        "halt_if_compare": "is_not",
        "entity_id": "climate.cubee_th125t_ce56_thermostat",
        "state_type": "str",
        "blockInputOverrides": false,
        "outputProperties": [
            {
                "property": "mianban",
                "propertyType": "msg",
                "value": "",
                "valueType": "entity"
            }
        ],
        "for": "0",
        "forType": "num",
        "forUnits": "minutes",
        "override_topic": false,
        "state_location": "payload",
        "override_payload": "msg",
        "entity_location": "data",
        "override_data": "msg",
        "x": 290,
        "y": 220,
        "wires": [
            [
                "805a5c95ff0fcc47"
            ],
            []
        ]
    },
    {
        "id": "858062d1d825eb01",
        "type": "function",
        "z": "724075cff78956a2",
        "name": "function 3",
        "func": "msg.payload = (msg.qingpingtemp - msg.mianban.attributes.temperature)\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 680,
        "y": 220,
        "wires": [
            [
                "fca4d720b9742ea0"
            ]
        ]
    },
    {
        "id": "fca4d720b9742ea0",
        "type": "switch",
        "z": "724075cff78956a2",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gt",
                "v": "2.6",
                "vt": "num"
            },
            {
                "t": "btwn",
                "v": "2.5",
                "vt": "num",
                "v2": "1.6",
                "v2t": "num"
            },
            {
                "t": "lte",
                "v": "1.5",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 3,
        "x": 810,
        "y": 220,
        "wires": [
            [
                "e9a014f5cecee429"
            ],
            [
                "395cdeefab7edd60"
            ],
            [
                "328a3bb306039caa"
            ]
        ]
    },
    {
        "id": "395cdeefab7edd60",
        "type": "api-call-service",
        "z": "724075cff78956a2",
        "name": "中速",
        "server": "65bef38af2beb021",
        "version": 5,
        "debugenabled": false,
        "domain": "climate",
        "service": "set_fan_mode",
        "areaId": [],
        "deviceId": [
            "744e40fa7fbbe9747ea4b49350ff8e45"
        ],
        "entityId": [],
        "data": "{\"fan_mode\":\"medium\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 930,
        "y": 220,
        "wires": [
            []
        ]
    },
    {
        "id": "b788000279de62fa",
        "type": "api-call-service",
        "z": "724075cff78956a2",
        "name": "制冷2",
        "server": "65bef38af2beb021",
        "version": 5,
        "debugenabled": false,
        "domain": "climate",
        "service": "set_hvac_mode",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "climate.cubee_th125t_ce56_thermostat"
        ],
        "data": "{\"hvac_mode\":\"cool\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 550,
        "y": 200,
        "wires": [
            [
                "858062d1d825eb01"
            ]
        ]
    },
    {
        "id": "8e031ebf1cac58d2",
        "type": "api-call-service",
        "z": "724075cff78956a2",
        "name": "停止2",
        "server": "65bef38af2beb021",
        "version": 5,
        "debugenabled": false,
        "domain": "climate",
        "service": "set_hvac_mode",
        "areaId": [],
        "deviceId": [],
        "entityId": [
            "climate.cubee_th125t_ce56_thermostat"
        ],
        "data": "{\"hvac_mode\":\"heat\"}",
        "dataType": "jsonata",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 550,
        "y": 240,
        "wires": [
            []
        ]
    },
    {
        "id": "805a5c95ff0fcc47",
        "type": "switch",
        "z": "724075cff78956a2",
        "name": "温度阈值",
        "property": "qingpingtemp",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gte",
                "v": "(msg.mianban.attributes.temperature)+1",
                "vt": "jsonata"
            },
            {
                "t": "lte",
                "v": "mianban.attributes.temperature",
                "vt": "msg"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 420,
        "y": 220,
        "wires": [
            [
                "b788000279de62fa"
            ],
            [
                "8e031ebf1cac58d2"
            ]
        ]
    },
    {
        "id": "65bef38af2beb021",
        "type": "server",
        "name": "Home Assistant",
        "version": 5,
        "addon": false,
        "rejectUnauthorizedCerts": false,
        "ha_boolean": "y|yes|true|on|home|open",
        "connectionDelay": true,
        "cacheJson": true,
        "heartbeat": false,
        "heartbeatInterval": "30",
        "areaSelector": "friendlyName",
        "deviceSelector": "friendlyName",
        "entitySelector": "friendlyName",
        "statusSeparator": ": ",
        "statusYear": "hidden",
        "statusMonth": "short",
        "statusDay": "numeric",
        "statusHourCycle": "default",
        "statusTimeFormat": "h:m",
        "enableGlobalContextStore": false
    }
]
回复

使用道具 举报

1

主题

35

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
金钱
241
HASS币
0
发表于 2024-9-9 20:12:37 | 显示全部楼层
温度计很关键,要既准又快。我试过很多,目前为止能找到的效果最好的是“青萍空气检测仪”(注意不是lite),全新原价600+,咸鱼300左右

温控很准确,夏天晚上睡觉完全可以不盖被子,体感舒适,几年了夏天再没感冒过
微信图片_20240909200807.png

回复

使用道具 举报

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
 楼主| 发表于 2024-9-9 20:54:41 | 显示全部楼层
wanyevyv 发表于 2024-9-9 20:12
温度计很关键,要既准又快。我试过很多,目前为止能找到的效果最好的是“青萍空气检测仪”(注意不是lite) ...

我目前用的是小米温湿度计,暂时还没有弄明白流程,等流程弄明白了,我再更新设备
回复

使用道具 举报

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
 楼主| 发表于 2024-9-9 21:40:57 | 显示全部楼层
wanyevyv 发表于 2024-9-9 20:12
温度计很关键,要既准又快。我试过很多,目前为止能找到的效果最好的是“青萍空气检测仪”(注意不是lite) ...

不知道修改的对不对,刚刚导入您的流程后,
将第一项里面更改为主卧小米温湿度计的temperature
第二项面板修改为主卧空调
第四项的制冷和停止修改为主卧空调
最后一项的三个选择设备主卧空调。
然后在一个流程里面复制粘贴了三份,分别更改为客厅,次卧等
回复

使用道具 举报

1

主题

35

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
金钱
241
HASS币
0
发表于 2024-9-10 00:10:57 | 显示全部楼层
komazhou 发表于 2024-9-9 21:40
不知道修改的对不对,刚刚导入您的流程后,
将第一项里面更改为主卧小米温湿度计的temperature
第二项面 ...

没错

需要注意的是最好修改一下空调温度修正,调高几度(譬如空调显示温度30度,调高5度,显示温度为35度)。否则有可能无法正确控温

以我的温控器为例,修改tempcomp这项
微信图片_20240910000748.png

回复

使用道具 举报

1

主题

19

帖子

115

积分

注册会员

Rank: 2

积分
115
金钱
96
HASS币
0
 楼主| 发表于 2024-9-10 09:44:13 | 显示全部楼层
wanyevyv 发表于 2024-9-10 00:10
没错

需要注意的是最好修改一下空调温度修正,调高几度(譬如空调显示温度30度,调高5度,显示温度为35 ...

我的空调是通过空调伴侣接入home assistant的,空调显示的温度也就是温湿度计的温度。
有一个疑问,就是在判断室温低于空调设定温度的时候,将空调设置为制热,是否应该调整为送风fan_only比较好一些,
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 23:02 , Processed in 0.503585 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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