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

 找回密码
 立即注册
查看: 12965|回复: 207

[经验分享] 万和热水器接入HA的详细教程(苹果手机)更新2023-12-28

  [复制链接]

9

主题

115

帖子

1139

积分

论坛技术达人

积分
1139
金钱
1019
HASS币
20
发表于 2023-5-27 16:31:21 | 显示全部楼层 |阅读模式
本帖最后由 hunl1986 于 2024-1-19 22:16 编辑

从零开始万和热水器接入home assistant的详细教程(苹果手机)
第一部份:APP抓包方法
一、手机下载Stream和万和智能APP,万和添加热水器,Stream-设置-安装CA证书-下载配置文件,手机设置-通用-VPN与设备管理-Stream证书-安装,手机设置-通用-关于本机-证书信任设置-Stream信任
1.png 2.jpg 3.jpg
二、打开“快捷指令”,添加操作-APP-万和智能-控制热水器-点击选择设备-热水器-点击选择动作-打开-把名称改为“打开热水器”
4.jpg
三、重复第二的操作,把点击选择动作为关闭,名称为“关闭热水器”
5.jpg
四、打开Stream-开始抓包,切换到快捷指令-打开热水器-关闭热水器,切换到Stream-关闭抓包-点击抓包历史-历史记录-记录里有四条记录
6.jpg
结尾为VoiceControl的记录为操作热水器的命令,从下往上,第一条为打开,第二条为关闭。
五、复制执行代码,点击记录-点击右上角上箭头图标-分享到微信。
分享文件内容

>> 本文件内容为 https://rubyapi.vanward.com/api/v1/public-device-service/voiceControl 的请求抓包详情,供您分析和定位问题。

1. 请求内容 Request:

POST /api/v1/public-device-service/voiceControl HTTP/1.1
Host: rubyapi.vanward.com
appId:XXXXXXXXXXXXXX
Accept: */*
timestamp: XXXXXXXXXXXXXX
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-Hans-CN;q=1
signature: XXXXXXXXXXXXXX
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Length: XXXXXXXXXXXXXX
User-Agent: VanwardSiri/0.5.9 (iPhone; iOS 15.7.1; Scale/2.00)
Connection: keep-alive
Cookie: acw_tc=XXXXXXXXXXXXXX
order=XXXXXXXXXXXXXX
2. 响应内容 Response:

HTTP/1.1 200 
Date: Sat, 27 May 2023 07:42:09 GMT
Content-Type: application/json;charset=UTF-8
Content-Length: 252
Connection: keep-alive
eagleeye-traceid: 0b3c7d7e16851733294908863e84fb

{"Message":"{"header":{"messageId":"C5EECF24-56CF-4CF7-A4F4-D14D8ACF023D","name":"TurnOnResponse","namespace":"Vanward.Iot.Device.Control","payLoadVersion":1},"payload":{"deviceId":"826e7238c021424c9c74c890ab5c5446"}}","Code":200}

====
该记录由 Stream 抓取,仅用于分析和学习,可 AppStore 搜索『抓包』下载,面向开发者永久免费使用。



appId、signature、timestamp、Content-Length、order为关键执行代码,Cookie有就加上去,没有就不填写

第二部分:Home Assistant执行代码
一、在config文件夹新建packages文件夹,在packages里新建以.yaml扩展名的文件(例:heater.yaml)
1、复制文件内容并保存,配置-菜单-重启Home assistant-快速重载

游客,如果您要查看本帖隐藏内容请回复

2、直接自动化创建,在configuration.yaml加入下面代码

homeassistant:
  packages: !include_dir_named packages
二、Noed-RED-拖一个events:state、一个switch、二个function、一个http response
1、events:state设置:
Name:热水器开关
Setver:选择本机,如没有则新建(点击后面的笔-填写名称、Using the Home Assistant Add-on打勾)
Entity:热水器开关(第一新建的辅助元素)
7.JPG
2、Switch设置:
添加二个值 on、off(第二个点击添加)
8.JPG

3、Function设置:
游客,如果您要查看本帖隐藏内容请回复



4、http respons设置
请求方式:POST
URL:为“请求抓包详细”第一段话里的网址,一般为https://rubyapi.vanward.com/api/v1/public-device-service/voiceControl
对连接启用Keep-alive:打勾

9.JPG


2023-6-2最近进展,前几天把热水器状态(开关、温度)进行了同步,HA可以与APP状态同时响应,不过HA的刷新时间我设为了二分钟,避免发送太多数据包。代码整理后再发出,因为有一些关键字段要打码。现在在写代码把传感器和实体整合成一个设备来控制,但还没有写完,代码调试当中,后面看看有没有时间把代码写成一个组件,但python不是很熟。要查资料。


2023-6-4,已经上传流程,大家可以更新为自己的关键数据(需要更改:所有的温度设置、打开热水器、关闭热水器、查询状态),经过分析数据好像万和的Cookie是给第三方用的,只要不是抓包万和APP的数据库,其它的包Cookie是长期的。
附件为NOED-red流程
游客,如果您要查看本帖隐藏内容请回复


2023-6-5,已经完成把传感器与开关整合成一个设备来控制,更新了前面流程,删除了温度+和温度-两个开关。

2023-6-28,经过一段时间使用,发觉操作完热水器后服务器要10秒后才更新状态,如果这时刚好NODE-RED向服务器查询状态,有可能造成打开的热水器自动关闭或关闭热水器时又自动打开,更新了NODE-RED的流程的代码,在操作热水器后2分钟NODE-RED才能向服务器查询状态 。

2023-12-28,10月份的时候不知道是不是万和的服务器流量过大,挂了几次后把查询状态的API给关了,刚好看到论坛有贴子说用了浴控器后热水器会开UDP端口,买了一个试了一下,果然UDP端口开了,干脆把代码全部搬到Node-red用MQTT来控制,使用这个方法不用在packages文件夹新建以.yaml扩展名的文件,状态查询不用经过万和的服务器,直接在UDP里就包含了热水器的所有状态,直接本地化查询 ,现在就差控制本地化了,有了一点眉目,但还没做完所有实验,等忙完期末的工作再继续。(如果没有浴控器的朋友可以使用上面的流程,不过需要把二分钟一次查询状态给关了,或者到海鲜市场买一个,开了UDP后就卖出去,连接一次就永久开了,不过记得在home assistant服务器开UDP7799端口。)
注意:
1、需要安装mqtt服务器,可以去加载项里安装
2、需要在集成里添加mqtt客户端
3、需要更改node-red流程里的mqtt-broker节点-安全里的帐号密码

2024-1-19,我自己的机器可以本地控制了,但发到其它坛友那里就不行了,不能通用,那位兄弟可以抓一下自己浴控器的操作数据包私发给我,我看看第一个参数是如何生成的,要看多几个设备才能分析,麻烦发上来的时候附一下浴控制器和热水器的局域网IP地址。



游客,如果您要查看本帖隐藏内容请回复

评分

参与人数 8金钱 +72 HASS币 +20 收起 理由
cmxgx + 5 感谢楼主分享!
laogong888 + 6 感谢楼主分享!
ruike007 + 8 大佬,收下我的膝盖
li2244578 + 5 高手,这是高手!
Harbor + 8 虽然看不懂,但感觉很厉害的样子。.
隔壁的王叔叔 + 10 我来瀚思就为看你!
+ 20 + 20 膜拜大神!
book123 + 10 高手,这是高手!

查看全部评分

回复

使用道具 举报

23

主题

263

帖子

1557

积分

金牌会员

Rank: 6Rank: 6

积分
1557
金钱
1294
HASS币
0
发表于 2023-5-27 16:55:25 | 显示全部楼层
可以的,不错
回复

使用道具 举报

3

主题

141

帖子

1224

积分

金牌会员

Rank: 6Rank: 6

积分
1224
金钱
1083
HASS币
10
发表于 2023-5-27 17:31:20 | 显示全部楼层
学习下 .
回复

使用道具 举报

0

主题

23

帖子

192

积分

注册会员

Rank: 2

积分
192
金钱
169
HASS币
0
发表于 2023-5-27 17:44:01 | 显示全部楼层
主要是cookie多久过期呢..
还是说可以.自动快捷指令更新cookie
回复

使用道具 举报

9

主题

115

帖子

1139

积分

论坛技术达人

积分
1139
金钱
1019
HASS币
20
 楼主| 发表于 2023-5-27 17:48:17 | 显示全部楼层
lindachung 发表于 2023-5-27 17:44
主要是cookie多久过期呢..
还是说可以.自动快捷指令更新cookie

用了半个多月,暂时没发现有过期
回复

使用道具 举报

0

主题

8

帖子

75

积分

注册会员

Rank: 2

积分
75
金钱
67
HASS币
0
发表于 2023-5-27 22:21:04 | 显示全部楼层
学习到了
回复

使用道具 举报

35

主题

370

帖子

2237

积分

金牌会员

Rank: 6Rank: 6

积分
2237
金钱
1867
HASS币
10
发表于 2023-5-28 17:51:41 | 显示全部楼层
是否考虑直接用HA自动化实现呢?
回复

使用道具 举报

0

主题

36

帖子

539

积分

高级会员

Rank: 4

积分
539
金钱
503
HASS币
0
发表于 2023-5-28 22:08:50 | 显示全部楼层

学习到了
回复

使用道具 举报

9

主题

115

帖子

1139

积分

论坛技术达人

积分
1139
金钱
1019
HASS币
20
 楼主| 发表于 2023-5-28 23:36:03 | 显示全部楼层
lexcao 发表于 2023-5-28 17:51
是否考虑直接用HA自动化实现呢?

其实是一样的道理,只不过用的方法不一样,自行化也可以做到
不过Node-RED方便一点
回复

使用道具 举报

0

主题

44

帖子

231

积分

中级会员

Rank: 3Rank: 3

积分
231
金钱
187
HASS币
0
发表于 2023-5-30 11:56:58 | 显示全部楼层
学习一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-19 13:24 , Processed in 0.115054 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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