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

 找回密码
 立即注册
查看: 458|回复: 6

[教程系列] 昆仑燃气接入Node-RED

[复制链接]

2

主题

10

帖子

129

积分

注册会员

Rank: 2

积分
129
金钱
119
HASS币
0
发表于 2024-4-4 09:43:04 | 显示全部楼层 |阅读模式
原理上如图所示:
流程图.png

应该所有昆仑燃气的都可以通过该方式实现
首先通过网站https://bol.grs.petrochina.com.cn/自行抓包,得到用户名和密码发送端的值
(非明文,其实不太懂,所以不知道是啥编码,应该挺简单的,欢迎知道是啥的朋友放上一个编码器,省掉抓包的步骤)
即可按此步骤使用此方式来实现

1、向https://bol.grs.petrochina.com.cn/api/v1/open/user/passwordLogin发送
{"mobile":"这里是你手机号","password":"这里是你的密码","captcha":"","captchaId":"img_captcha_a671eddd-3833-475f-a647-843ca6ca867b"}
这里通过注入来实现
首次http in中 post的头如图所示
第一次的头.png
2、通过函数处理响应,提取token,函数内部示例:
var token = msg.payload.data.token;
msg.token = token;
msg.payload = {"cid":5000000081,"terminalType":1};
return msg;
3、函数里已经写了第二次post中的json,第二次post是向https://bol.grs.petrochina.com.cn/api/v1/close/user/getUserCode发送
这次的头中应包括token,如图所示:
第二次头.png
4、再用一个函数来注入最后一次post的json,即可获得燃气数据的反馈,用户号在燃气的公众号等可以查到:
msg.payload = {"cid":5000000081,"userCodeId":这里是你的用户号};
return msg;
----请注意,2、4步骤中的cid是否各地不同我没有进行测试,如有不同,请自行抓包修改----
5、最后一次post是向https://bol.grs.petrochina.com.c ... echarge/getUserDebt发送
这次的头与第二次post一致,如此燃气数据则会反馈,可以自行通过函数得到你想要的数据
6、函数举例,例如想要得到燃气余额:
var responseJson = JSON.parse(msg.payload);
var remoteMeterBalance = responseJson.data.remoteMeterBalance;
msg.remoteMeterBalance = Number(remoteMeterBalance);
return msg;
因为第三次post时我设定返回为UTF-8字符串了,所以第一步改为了json,也可将返回直接设定为json对象,则函数的第一句改为var responseJson = msg.payload
如果需要其他数据,可以在第三次post后接一个debug,查看反馈的数据,其中还有更加丰富的内容,如充值记录等
7、现在你可以使用你得到的数据进行其他操作了,例如我设定了余额少于1元,通过小爱音箱发生提醒,我把这一段写在了最后一个函数中,所以事实上我的完整函数为:
var responseJson = JSON.parse(msg.payload);
var remoteMeterBalance = responseJson.data.remoteMeterBalance;
msg.remoteMeterBalance = Number(remoteMeterBalance);
if (msg.remoteMeterBalance < 1){
    msg.payload = "请注意燃气表余额已经不足,仅剩余" + msg.remoteMeterBalance.toFixed(2) + '元';
}else{
    msg.payload = "";
}
return msg;
通过msg.payload注入小爱tts来实现,这个想必各位比我熟练,就不班门弄斧了。

以上,敬谢阅读。








回复

使用道具 举报

17

主题

163

帖子

1440

积分

金牌会员

Rank: 6Rank: 6

积分
1440
金钱
1277
HASS币
0
发表于 2024-4-5 07:19:30 | 显示全部楼层
我家也是昆仑的,用抓包方式用了半年多了,不过每90天需要重新登录一次,程序不用改,就在网页端用手机验证码上登录一次就又可以用90天
回复

使用道具 举报

2

主题

10

帖子

129

积分

注册会员

Rank: 2

积分
129
金钱
119
HASS币
0
 楼主| 发表于 2024-4-6 23:50:41 | 显示全部楼层
csl0524 发表于 2024-4-5 07:19
我家也是昆仑的,用抓包方式用了半年多了,不过每90天需要重新登录一次,程序不用改,就在网页端用手机验证 ...

呃,我考虑的是第一次请求已经传递了用户名、密码,
每次查询应该都是一次重新登录,为啥还要每90天手动登录一次咧……
回复

使用道具 举报

17

主题

163

帖子

1440

积分

金牌会员

Rank: 6Rank: 6

积分
1440
金钱
1277
HASS币
0
发表于 2024-4-7 07:32:37 | 显示全部楼层
冷秋檀 发表于 2024-4-6 23:50
呃,我考虑的是第一次请求已经传递了用户名、密码,
每次查询应该都是一次重新登录,为啥还要每90天手动登 ...

这个也不清楚,我的方法和你一样的,你可以到时候观察一下
回复

使用道具 举报

2

主题

10

帖子

129

积分

注册会员

Rank: 2

积分
129
金钱
119
HASS币
0
 楼主| 发表于 2024-4-7 08:17:48 | 显示全部楼层
csl0524 发表于 2024-4-7 07:32
这个也不清楚,我的方法和你一样的,你可以到时候观察一下

ヽ( ̄▽ ̄)و好的
回复

使用道具 举报

0

主题

51

帖子

172

积分

注册会员

Rank: 2

积分
172
金钱
121
HASS币
0
发表于 2024-4-7 09:40:34 | 显示全部楼层
感谢分享
回复

使用道具 举报

6

主题

186

帖子

1182

积分

金牌会员

Rank: 6Rank: 6

积分
1182
金钱
996
HASS币
0
发表于 2024-5-10 21:09:26 | 显示全部楼层
求流.......
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-21 02:47 , Processed in 0.542332 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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