德业DYD-T22A3除湿机接入HomeAssistant记录

前言

上个月小苏同学买了一台除湿机,第一次配对绑定比较麻烦,应该是 WIFI 模块的网络兼容性不大好,不过连上之后就没问题了

老苏第一个想法就是把这玩意接入 HomeAssistant,搜了一下网上已经有大牛搞成功了,虽然型号不同,但是过程是一样的

原文在这里:https://xiking.win/2020/11/12/3-deye-dehumidifer-add-to-homeassistant/

准备

因为要用到 API 调试,所以需要下载相关的工具,例如 PostmanApiPost 之类的,老苏建议用 ApiPost,因为界面是中文,看着比较习惯。

ApiPost 下载地址:https://www.apipost.cn/download.html

获取除湿机信息

获取 token

登录的地址:https://api.deye.com.cn/v3/enduser/login/

直接 POST 这个地址会返回需要填写的参数

1
2
3
4
5
6
7
8
9
10
11
12
{
"meta": {
"code": 10000,
"message": {
"loginname": "This field is required.",
"password": "This field is required.",
"appid": "This field is required.",
"extend": "This field is required."
}
},
"data": {}
}
参数 容器端口
loginname 德业智能 APP 的登陆账号
password 德业智能 APP 的登陆密码
appid 这个似乎可以随便填,老苏填了软件版本
extend {"cid":"111111122223333","type":"0"}

返回的是认证 tokenclientidtoken 要保存好,后面会用到

1
2
3
4
5
6
7
8
9
10
{
"meta": {
"code": 0,
"message": "signup ok."
},
"data": {
"token": "你的token",
"clientid": "你的clientid"
}
}

获取设备列表

获取设备列表的地址:https://api.deye.com.cn/v3/enduser/deviceList/

直接 GET 这个地址会返回需要填写的参数

1
2
3
4
5
6
7
{
"meta": {
"code": 10001,
"message": "Miss jwt header."
},
"data": {}
}

参数 容器端口
Authorization jwt +空格+上前面获取的 token 拼接而成

jwt 或者 JWT 都可以,应该不区分大小写;JWT 的全称是 JSON Web Tokens

返回的 product_iddevice_id 要记好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"meta": {
"code": 0,
"message": "device list by user."
},
"data": [
{
"online": true,
"product_icon": "https://deye-cloud.oss-cn-shanghai.aliyuncs.com/profile/1597889877269.png",
"product_id": "你的设备的product_id",
"product_name": "DYD-T22A3",
"device_id": "你的设备的device_id",
"mac": "设备的mac地址",
"payload": "14110200203700000000000000002E3B452800000000",
"role": 1,
"gatewaytype": 0,
"device_name": "DYD-T22A3",
"product_type": "dehumidifier",
"is_combo": false,
"protocol_version": "wifi_V2.4"
}
]
}

获取MQTT信息

MQTT服务地址:https://api.deye.com.cn/v3/enduser/mqttInfo/

直接 GET 这个地址会返回需要填写的参数

1
2
3
4
5
6
7
{
"meta": {
"code": 10001,
"message": "Miss jwt header."
},
"data": {}
}
参数 容器端口
Authorization jwt 头假设前面获取的 token

返回的 loginnamepasswordmqtthostmqttport 等要记好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"meta": {
"code": 0,
"message": "mqtt info"
},
"data": {
"loginname": "你的设备的mqtt登录账号",
"clientid": "你的设备的的clientid",
"endpoint": "ff7534ccae4711e7829100163e0f811e",
"password": "你的设备的mqtt登录密码",
"mqtthost": "xxxxxxxxx.mqtt.iot.gz.baidubce.com",
"mqttport": 1883,
"sslport": 1884
}
}

与HA集成

先说下 HomeAssistant 的版本,因为按照以往的经验,HA 版本的影响可能还是很大的

实测这个版本可以不需要下载原文作者的修改版 MQTT 组件,至于多少版本的需要下载,我也不是太清楚,老苏主要研究了 https://github.com/yongman/homeassistant-components/issues/2

配置文件

修改 configuration.yaml 文件

增加 mqtt 配置

其中 broker 中填写前面获取的 mqtthost地址

1
2
3
4
5
6
mqtt:
broker: xxxxxxxxx.mqtt.iot.gz.baidubce.com
port: 1883
client_id: 你的设备的的clientid
username: 你的设备的mqtt登录账号
password: 你的设备的mqtt登录密码

增加 switch 配置

其中 state_topiccommand_topic 由上面获取的返回值 endpointproduct_iddevice_id 三个值拼接而成

参数 容器端口
state_topic endpoint/product_id/device_id/status/hex
command_topic endpoint/product_id/device_id/command/hex
1
2
3
4
5
6
7
8
9
10
11
switch:
- platform: mqtt
name: DYD-T22A3
unique_id: deye_switch
state_topic: xxxxxxxxx/xxxxxxxxxxxxx/xxxxxxxxxxxxxxxx/status/hex
command_topic: xxxxxxxxx/xxxxxxxxxxxxx/xxxxxxxxxxxxxxxx/command/hex
state_on: 30
state_off: 20
value_template: "{{ value_json.data[5:7] }}"
payload_on: "\x08\x02\x03\x20\x19\x00\x00\x00\x00\x00"
payload_off: "\x08\x02\x02\x20\x19\x00\x00\x00\x00\x00"

集成设置

配置 进入到 集成 界面,右下角 添加集成 ,找到 MQTT

通过 选项 进入 MQTT 的设置界面

RE-CONFIGURE MQTT 进行设置

依次填入 MQTT 服务地址 mqtthost、端口 mqttport、用户名 loginname、密码 password,然后点 NEXT

默认就可以了,不要去修改

反正按网友的说法这两个红框是绝对不能勾选的,否则会报错

提交 就完成了 MQTT 的设置

实体卡片

只有开关状态

自动化

老苏没有湿度计,也没弄明白怎么获取 DYD-T22A3 中的 湿度 信息,所以只能根据室外的 湿度 来决定开启和关闭,感觉意义也不是特别大

老苏是在界面上新建的描述

触发条件设置

环境条件没设

动作设置

最后生成在 automations.yaml 中的代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- id: '1636371731858'
alias: 自动除湿(室外湿度大于60)
description: 根据室外的湿度自动开机除湿
trigger:
- platform: numeric_state
entity_id: sensor.heweather_hum
above: '60'
below: '90'
for: '30'
condition: []
action:
- service: switch.turn_on
target:
area_id: ke_ting
entity_id: switch.dyd_t22a3
mode: single

参考文档

德业除湿机接入HomeAssistant - 人生如逆旅,我亦是行人。
地址:https://xiking.win/2020/11/12/3-deye-dehumidifer-add-to-homeassistant/

Homeassistant mqtt 报错 - 德业型号 T22A3 · Issue #2 · yongman/homeassistant-components
地址:https://github.com/yongman/homeassistant-components/issues/2

德业除湿机接入HomeAssistant记录_除湿器_什么值得买
地址:https://post.smzdm.com/p/a3d2r8x5/

如何控制德业 DYD E12A3 土豆不好吃
地址:https://dmesg.app/dyd-e12a3.html

【本文基于 GitHub Actions 自动部署】