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

 找回密码
 立即注册
楼主: freefitter

[插件集成] 电费插件-这次应该全国通用了吧

  [复制链接]

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-2-6 23:16:24 | 显示全部楼层
好玩,我从node red 里可以搞到电量了
回复

使用道具 举报

34

主题

709

帖子

4693

积分

论坛元老

Rank: 8Rank: 8

积分
4693
金钱
3974
HASS币
50
发表于 2021-2-7 22:28:19 | 显示全部楼层
hunterfox 发表于 2021-2-6 23:16
好玩,我从node red 里可以搞到电量了

怎么搞呢..................
回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-2-7 22:32:06 | 显示全部楼层
huang7dede 发表于 2021-2-7 22:28
怎么搞呢..................

2.png
虽然硬爬到了。但是不持久,楼主说的,根据反馈变更head参数,我还抓不到。  这个流不可靠。“这个插件重启的时候那些参数会失效,所以可能要重新抓包,但是运行起来就不用了,因为返回的报文里那三个参数都会返回,真的太棒了。” 这个我实现不了
回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-2-8 08:33:55 | 显示全部楼层
baby7blog 发表于 2021-1-25 17:56
重启需要重新修改参数应该是因为配置里的参数超过了两个小时导致失效,我这里有个想法,这三个参数拎出来放 ...

我尝试了,在数据返回时,把三个返回数据参数写到变量里,抓取数据读取一下变量,组合到url里。但感觉没有维持住,今天再观察一段时间,看下失效时间,抓取间隔15分钟。我走NR里走的
回复

使用道具 举报

34

主题

709

帖子

4693

积分

论坛元老

Rank: 8Rank: 8

积分
4693
金钱
3974
HASS币
50
发表于 2021-2-8 12:08:11 | 显示全部楼层
hunterfox 发表于 2021-2-8 08:33
我尝试了,在数据返回时,把三个返回数据参数写到变量里,抓取数据读取一下变量,组合到url里。但感觉没有 ...

等一个大佬的NR流
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
发表于 2021-2-23 13:19:48 | 显示全部楼层
膜拜大佬,学习了
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-2-23 13:49:00 | 显示全部楼层
timestamp  noncestr  sign  带回来的参数就是发出去的参数,没有办法维持持续稳定的状态。
新更新的参数无法获取。过一段时间就失效了。还有什么好办法。
回复

使用道具 举报

5

主题

47

帖子

819

积分

论坛技术达人

积分
819
金钱
767
HASS币
20
 楼主| 发表于 2021-2-24 09:40:00 | 显示全部楼层
hunterfox 发表于 2021-2-23 13:49
timestamp  noncestr  sign  带回来的参数就是发出去的参数,没有办法维持持续稳定的状态。
新更新的参数无 ...

加了个配置文件,存储获得的参数
使用  ConfigParser
配置文件如下:
[Param]
timestamp = XXXXX
noncestr = XXXXX
sign = XXXXX


初始化的时候读配置文件,每次更新写配置文件;

def setup_platform(hass, config, add_devices, discovery_info=None):
    sensor_name = config.get(CONF_NAME)
    openid = config.get(OPENID)
    unionid = config.get(UNIONID)
    cfg = configparser.ConfigParser()
    cfg.read('param.ini')
    timestamp1 = cfg.get('Param', 'timestamp')
    noncestr = cfg.get('Param', 'noncestr')
    sign = cfg.get('Param', 'sign')

    url = API_URL + "?openid=" + openid +"&timestamp=" + timestamp1 + "&noncestr=" + noncestr + "&sign=" + sign + "&unionid=" + unionid + "&userInfo=null"   
    add_devices([GJDW(sensor_name,url,openid,unionid,cfg)])


update 函数中添加
            self._cfg.set("Param", "timestamp", ret["timestamp"])
            self._cfg.set("Param", "noncestr", ret["noncestr"])
            self._cfg.set("Param", "sign", ret["sign"])
            self._cfg.write(open('param.ini','w'))


我使用还是很稳定的,期间可能会出现参数错误,但是后续还是可以执行的,可忽略这次报错。只要不是连续报错就行
df2.png

回复

使用道具 举报

43

主题

412

帖子

3806

积分

元老级技术达人

积分
3806
金钱
3389
HASS币
136
发表于 2021-2-24 10:26:11 | 显示全部楼层
freefitter 发表于 2021-2-24 09:40
加了个配置文件,存储获得的参数
使用  ConfigParser
配置文件如下:

我发现发出去请求的url   和返回的  responseUrl  参数信息是一致的。读取间隔你设置的多大。 我从 responseUrl  解析出参数,我感觉过几个小时就无效了。如果无效的情况下 responseUrl 是没有返回参数可用的,我现在每读取一次,存储一次。

请教您设置的间隔是多大:
你会有发出去请求的url   和返回的  responseUrl  里面参数不一致情况,即老参数过期,新参数返回的情况,然后用新参数可以生效?
回复

使用道具 举报

5

主题

47

帖子

819

积分

论坛技术达人

积分
819
金钱
767
HASS币
20
 楼主| 发表于 2021-2-24 16:07:22 | 显示全部楼层
hunterfox 发表于 2021-2-24 10:26
我发现发出去请求的url   和返回的  responseUrl  参数信息是一致的。读取间隔你设置的多大。 我从 respo ...

是的,返回的参数内容和请求的不一致,所以用返回的来构建新的请求,不会过期
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 01:07 , Processed in 0.306729 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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