Comments (10)
目前是每15秒会拉取一次数据,所以其他端操作后反馈到HA上会有延迟
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
from haier.
@banto6 我也是做技术的,家里也有不少海尔的家电,也研究过它APP的接口,本来也想自己开发个组件,但一直没有着手,相信有一些可以提供意见,跟一起研究,不知道有没兴趣私下交个朋友。
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
期待替换接口!目前设备有的在app中正常显示,但是小程序内不支持。
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。
您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:
-
登录接口
账号密码的登录接口中有一个
nvcVal
参数,这个参数比较复杂,暂时还没有时间逆向 -
获取设备状态和发送命令的接口
这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。
您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:
- 登录接口
账号密码的登录接口中有一个nvcVal
参数,这个参数比较复杂,暂时还没有时间逆向- 获取设备状态和发送命令的接口
这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp
你说的那个登录好像可以忽略,我分析过他的APP使用了很多的H5,非常的混乱,看起来好像是很多团队各自开发,每种设备都可能不同,感觉并不是好的选择,可以参考它官方的API文档,不知道你知不知道这个“https://www.haigeek.com/haigeekWeb/#/docs-page?id=95”。API地址虽然不同,但是非常有参考价值,几乎一样,只是地址有所不同。
获取设备状态和发送命令,我分析应该也是大概率使用WebSocket,但是它接口有一个订阅,我觉得那个可以尝试是否能使用,这个我还没进行测试。
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。
您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:
- 登录接口
账号密码的登录接口中有一个nvcVal
参数,这个参数比较复杂,暂时还没有时间逆向- 获取设备状态和发送命令的接口
这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp你说的那个登录好像可以忽略,我分析过他的APP使用了很多的H5,非常的混乱,看起来好像是很多团队各自开发,每种设备都可能不同,感觉并不是好的选择,可以参考它官方的API文档,不知道你知不知道这个“https://www.haigeek.com/haigeekWeb/#/docs-page?id=95”。API地址虽然不同,但是非常有参考价值,几乎一样,只是地址有所不同。
获取设备状态和发送命令,我分析应该也是大概率使用WebSocket,但是它接口有一个订阅,我觉得那个可以尝试是否能使用,这个我还没进行测试。
这个文档我也参考过,但是没有太大的帮助,因为个人账户没办法申请到systemId
; 至于H5其实不用太多关注,底层走的都是一样的接口
from haier.
后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式
我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。
您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:
- 登录接口
账号密码的登录接口中有一个nvcVal
参数,这个参数比较复杂,暂时还没有时间逆向- 获取设备状态和发送命令的接口
这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp你说的那个登录好像可以忽略,我分析过他的APP使用了很多的H5,非常的混乱,看起来好像是很多团队各自开发,每种设备都可能不同,感觉并不是好的选择,可以参考它官方的API文档,不知道你知不知道这个“https://www.haigeek.com/haigeekWeb/#/docs-page?id=95”。API地址虽然不同,但是非常有参考价值,几乎一样,只是地址有所不同。
获取设备状态和发送命令,我分析应该也是大概率使用WebSocket,但是它接口有一个订阅,我觉得那个可以尝试是否能使用,这个我还没进行测试。这个文档我也参考过,但是没有太大的帮助,因为个人账户没办法申请到
systemId
; 至于H5其实不用太多关注,底层走的都是一样的接口
我从“uws.haier.net/shadow/v1/info”读到的数据如下,是我**净水器的数据,供参考:
/*
{
"retCode": "00000",
"retInfo": "操作成功",
"detailInfo": {
"jData": {
"date": "22:08:01",
"waterflow": "0.00",
"remainingFlushTime": "0",
"regenerateDays": "10",
"volumeUnit": "2",
"waterUsed": "7.53",
"remainingFilterLife": "100",
"inWaterCl": "0.10",
"operationMode": "1",
"remainingRegenVolume": "4621",
"filterLifeWarning": "false",
"regenerateTime": "02:00:00",
"oneKeyRegenerateStatus": "false",
"regenVolume": "6000",
"time": "23:05:14",
"filterLifeAlarm": "false",
"filterResetStatus": "true",
"purifiedWaterQuality": "1"
},
"events": null
}
}
---------------------------------属性接口
{
"alarms": [],
"attributes": [
{
"desc": "查询所有属性",
"invisible": true,
"name": "getAllProperty",
"operationType": "I",
"readable": true,
"valueRange": {
"dataList": [
{
"data": "getAllProperty"
}
],
"type": "LIST"
},
"visible": false,
"writable": true
},
{
"desc": "日期",
"invisible": false,
"name": "date",
"operationType": "I",
"readable": true,
"value": "22:08:01",
"valueRange": {
"dataDate": {
"beginDate": "01:01:01",
"endDate": "99:12:31",
"format": "yy:MM:dd"
},
"type": "DATE"
},
"visible": true,
"writable": true
},
{
"desc": "瞬时流量",
"invisible": false,
"name": "waterflow",
"readable": true,
"value": "0.00",
"valueRange": {
"dataStep": {
"dataType": "Double",
"maxValue": "99.99",
"minValue": "0.00",
"step": "0.01"
},
"type": "STEP"
},
"visible": true,
"writable": false
},
{
"desc": "再生间隔天数",
"invisible": false,
"name": "regenerateDays",
"operationType": "I",
"readable": true,
"value": "10",
"valueRange": {
"dataStep": {
"dataType": "Integer",
"maxValue": "365",
"minValue": "0",
"step": "1"
},
"type": "STEP"
},
"visible": true,
"writable": true
},
{
"desc": "停止报警",
"invisible": true,
"name": "stopCurrentAlarm",
"operationType": "I",
"readable": true,
"valueRange": {
"dataList": [
{
"data": "stopCurrentAlarm"
}
],
"type": "LIST"
},
"visible": false,
"writable": true
},
{
"desc": "总用水量",
"invisible": false,
"name": "waterUsed",
"readable": true,
"value": "7.53",
"valueRange": {
"dataStep": {
"dataType": "Double",
"maxValue": "99999.99",
"minValue": "0.00",
"step": "0.01"
},
"type": "STEP"
},
"visible": true,
"writable": false
},
{
"desc": "水量单位",
"invisible": false,
"name": "volumeUnit",
"operationType": "I",
"readable": true,
"value": "2",
"valueRange": {
"dataList": [
{
"data": "1",
"desc": "gal"
},
{
"data": "2",
"desc": "m3"
},
{
"data": "3",
"desc": "L"
}
],
"type": "LIST"
},
"visible": true,
"writable": true
},
{
"desc": "滤芯剩余百分比",
"invisible": false,
"name": "remainingFilterLife",
"readable": true,
"value": "100",
"valueRange": {
"dataStep": {
"dataType": "Integer",
"maxValue": "100",
"minValue": "0",
"step": "1"
},
"type": "STEP"
},
"visible": true,
"writable": false
},
{
"desc": "运行状态",
"invisible": false,
"name": "operationMode",
"readable": true,
"value": "1",
"valueRange": {
"dataList": [
{
"data": "1",
"desc": "供水"
},
{
"data": "2",
"desc": "反洗"
},
{
"data": "3",
"desc": "正洗"
}
],
"type": "LIST"
},
"visible": true,
"writable": false
},
{
"desc": "进水余氯检测",
"invisible": false,
"name": "inWaterCl",
"operationType": "I",
"readable": true,
"value": "0.10",
"valueRange": {
"dataStep": {
"dataType": "Double",
"maxValue": "99.99",
"minValue": "0.00",
"step": "0.01"
},
"type": "STEP"
},
"visible": true,
"writable": true
},
{
"desc": "剩余再生周期制水量",
"invisible": false,
"name": "remainingRegenVolume",
"readable": true,
"value": "4621",
"valueRange": {
"dataStep": {
"dataType": "Integer",
"maxValue": "60000",
"minValue": "0",
"step": "1"
},
"type": "STEP"
},
"visible": true,
"writable": false
},
{
"desc": "滤芯到期预警(剩余10%)",
"invisible": false,
"name": "filterLifeWarning",
"readable": true,
"value": "false",
"valueRange": {
"dataList": [
{
"data": "false",
"desc": "无"
},
{
"data": "true",
"desc": "有"
}
],
"type": "LIST"
},
"visible": true,
"writable": false
},
{
"desc": "再生引发时间",
"invisible": false,
"name": "regenerateTime",
"operationType": "I",
"readable": true,
"value": "02:00:00",
"valueRange": {
"dataTime": {
"format": "HH:mm:ss",
"maxHour": "23",
"maxMinute": "59",
"maxSecond": "59",
"minHour": "0",
"minMinute": "0",
"minSecond": "0"
},
"type": "TIME"
},
"visible": true,
"writable": true
},
{
"desc": "一键再生功能状态",
"invisible": false,
"name": "oneKeyRegenerateStatus",
"operationType": "I",
"readable": true,
"value": "false",
"valueRange": {
"dataList": [
{
"data": "false",
"desc": "关闭"
},
{
"data": "true",
"desc": "打开"
}
],
"type": "LIST"
},
"visible": true,
"writable": true
},
{
"desc": "查询报警",
"invisible": true,
"name": "getAllAlarm",
"operationType": "I",
"readable": true,
"valueRange": {
"dataList": [
{
"data": "getAllAlarm"
}
],
"type": "LIST"
},
"visible": false,
"writable": true
},
{
"desc": "再生周期制水量",
"invisible": false,
"name": "regenVolume",
"operationType": "I",
"readable": true,
"value": "6000",
"valueRange": {
"dataStep": {
"dataType": "Integer",
"maxValue": "60000",
"minValue": "0",
"step": "1"
},
"type": "STEP"
},
"visible": true,
"writable": true
},
{
"desc": "当前时间",
"invisible": false,
"name": "time",
"operationType": "I",
"readable": true,
"value": "23:05:14",
"valueRange": {
"dataTime": {
"format": "HH:mm:ss",
"maxHour": "23",
"maxMinute": "59",
"maxSecond": "59",
"minHour": "0",
"minMinute": "0",
"minSecond": "0"
},
"type": "TIME"
},
"visible": true,
"writable": true
},
{
"desc": "滤芯到期报警(剩余0%)",
"invisible": false,
"name": "filterLifeAlarm",
"readable": true,
"value": "false",
"valueRange": {
"dataList": [
{
"data": "false",
"desc": "无"
},
{
"data": "true",
"desc": "有"
}
],
"type": "LIST"
},
"visible": true,
"writable": false
},
{
"desc": "滤芯重置功能状态",
"invisible": false,
"name": "filterResetStatus",
"operationType": "I",
"readable": true,
"value": "true",
"valueRange": {
"dataList": [
{
"data": "false",
"desc": "否"
},
{
"data": "true",
"desc": "是"
}
],
"type": "LIST"
},
"visible": true,
"writable": true
},
{
"desc": "净水质量",
"invisible": false,
"name": "purifiedWaterQuality",
"readable": true,
"value": "1",
"valueRange": {
"dataList": [
{
"data": "1",
"desc": "优"
},
{
"data": "2",
"desc": "良"
},
{
"data": "3",
"desc": "差"
}
],
"type": "LIST"
},
"visible": true,
"writable": false
}
],
"businessAttr": []
}
*/
from haier.
@demonchen 这部分数据目前可以正常拿到
from haier.
Related Issues (20)
- 海尔电热水器EC6002-D6(U1)没接入成功 HOT 2
- 提交一个冰箱小bug HOT 3
- 空调显示当前温度及设置温度异常 HOT 11
- 认证失败 HOT 3
- 账户认证失败 HOT 1
- 卡萨帝冰箱和洗衣机无法接入 HOT 1
- 账号下无可用实体 HOT 3
- 洗衣机的用电量显示形态有问题
- 请教海尔风管机是否能被控制,谢谢啦 HOT 3
- 【问题】现在支持智能门锁吗? HOT 1
- 海尔洗衣机 你们能获取到 message信息吗 HOT 2
- 烘干机的提示信息sensor不会提示"提示请清理过滤器"
- 认证失败 HOT 1
- 海尔风管机请求能更新以支持 HOT 1
- 洗衣机识别出错 HOT 1
- 海尔洗衣机的筒门状态不会更新 HOT 1
- 如何寻找说明文档 HOT 5
- 期待大神更新插件,让海尔智家更好用,谢谢 HOT 5
- 即热模式不开启加热 HOT 8
- 海尔智家中卡萨帝冰箱无法被搜多到 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from haier.