GithubHelp home page GithubHelp logo

海尔智家上 调整冰箱的 “速冻锁鲜”和“智能存储”功能时,HA中开关状态无变化反馈。 about haier HOT 10 CLOSED

banto6 avatar banto6 commented on May 30, 2024
海尔智家上 调整冰箱的 “速冻锁鲜”和“智能存储”功能时,HA中开关状态无变化反馈。

from haier.

Comments (10)

banto6 avatar banto6 commented on May 30, 2024

目前是每15秒会拉取一次数据,所以其他端操作后反馈到HA上会有延迟

from haier.

banto6 avatar banto6 commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

from haier.

demonchen avatar demonchen commented on May 30, 2024

@banto6 我也是做技术的,家里也有不少海尔的家电,也研究过它APP的接口,本来也想自己开发个组件,但一直没有着手,相信有一些可以提供意见,跟一起研究,不知道有没兴趣私下交个朋友。

from haier.

13860605362 avatar 13860605362 commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

期待替换接口!目前设备有的在app中正常显示,但是小程序内不支持。

from haier.

demonchen avatar demonchen commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。

from haier.

banto6 avatar banto6 commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。

您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:

  1. 登录接口

    账号密码的登录接口中有一个nvcVal参数,这个参数比较复杂,暂时还没有时间逆向

  2. 获取设备状态和发送命令的接口

    这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp

from haier.

demonchen avatar demonchen commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。

您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:

  1. 登录接口
    账号密码的登录接口中有一个nvcVal参数,这个参数比较复杂,暂时还没有时间逆向
  2. 获取设备状态和发送命令的接口
    这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp

你说的那个登录好像可以忽略,我分析过他的APP使用了很多的H5,非常的混乱,看起来好像是很多团队各自开发,每种设备都可能不同,感觉并不是好的选择,可以参考它官方的API文档,不知道你知不知道这个“https://www.haigeek.com/haigeekWeb/#/docs-page?id=95”。API地址虽然不同,但是非常有参考价值,几乎一样,只是地址有所不同。

获取设备状态和发送命令,我分析应该也是大概率使用WebSocket,但是它接口有一个订阅,我觉得那个可以尝试是否能使用,这个我还没进行测试。

from haier.

banto6 avatar banto6 commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。

您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:

  1. 登录接口
    账号密码的登录接口中有一个nvcVal参数,这个参数比较复杂,暂时还没有时间逆向
  2. 获取设备状态和发送命令的接口
    这个接口暂时还没有抓到,根据app中能实时反馈状态这点,我猜测应该是走的websocket或者tcp

你说的那个登录好像可以忽略,我分析过他的APP使用了很多的H5,非常的混乱,看起来好像是很多团队各自开发,每种设备都可能不同,感觉并不是好的选择,可以参考它官方的API文档,不知道你知不知道这个“https://www.haigeek.com/haigeekWeb/#/docs-page?id=95”。API地址虽然不同,但是非常有参考价值,几乎一样,只是地址有所不同。

获取设备状态和发送命令,我分析应该也是大概率使用WebSocket,但是它接口有一个订阅,我觉得那个可以尝试是否能使用,这个我还没进行测试。

这个文档我也参考过,但是没有太大的帮助,因为个人账户没办法申请到systemId ; 至于H5其实不用太多关注,底层走的都是一样的接口

from haier.

demonchen avatar demonchen commented on May 30, 2024

后续考虑替换为APP端的接口,APP的状态貌似是实时变化的。不过目前在分析接口参数时遇到了问题,所以暂时采用定时拉取数据的方式

我看了你的代码,你使用的API其实智家APP用的也是这个,但是有一个接口我看你没有使用,可能是你没注意到“uws.haier.net/shadow/v1/info”,这个接口可以获取一个设备的最详细的所有数据,只要APP上有的一定都有,APP上没有机器上面有的也会有,甚至有一些隐藏没显示出来的数据或传感器。它APP接口我已经分析出来并且测试调通了,但是我不熟悉HA组件的开发跟PY,只能自己做了一些给自己用,没法开发成HA组件,这个接口你可以了解一下,如果不知道这个接口,可以回复我。

您好,欢迎分享,我从IOS端抓到的接口来看,APP的接口跟我使用的接口应该是不一样的。APP端接口目前卡在了两个地方:

  1. 登录接口
    账号密码的登录接口中有一个nvcVal参数,这个参数比较复杂,暂时还没有时间逆向
  2. 获取设备状态和发送命令的接口
    这个接口暂时还没有抓到,根据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.

banto6 avatar banto6 commented on May 30, 2024

@demonchen 这部分数据目前可以正常拿到

from haier.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.