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

 找回密码
 立即注册
查看: 21661|回复: 105

[新奇玩法] 电费插件(Node-Red流)-广东南方电网(2022/10/1更新修复BUG)

  [复制链接]

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
发表于 2022-9-17 15:37:45 | 显示全部楼层 |阅读模式
本帖最后由 arthurfsy 于 2023-4-14 15:50 编辑

写在前面:
这个南方电网的流现在看起来比较捡漏和粗糙,有需要接入的小伙伴可以直接看下面的链接,有大佬直接做成集成了,直接输入账号密码即可登录,非常方便,我现在也在用这个集成。
南方电网电费数据集成,支持用户名和密码直接登陆 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)



Changelog:
  • 2022/10/1 flow更新:修复“月份控制”BUG。改为:跨月后,前3号还是取上月数据
  • 2022/9/27 flow更新:增加当月每日记录2(date、power为数组格式,配合apexcharts卡片使用),分享自用卡片(先下载apexcharts,然后用yaml自定义)
    微信截图_20220927114051.png
    type: vertical-stack
    cards:
      - type: horizontal-stack
        cards:
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.lastdate_power
            name: 最近用电
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.curmonth_power
            name: 本月用电
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.curmonth_fee
            name: 本月电费
      - type: horizontal-stack
        cards:
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.lastmonth_power
            name: 上月用电
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.lastmonth_fee
            name: 上月电费
      - type: horizontal-stack
        cards:
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.year_power
            name: 今年用电
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.year_fee
            name: 今年电费
      - type: horizontal-stack
        cards:
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.lastyear_power
            name: 去年用电
          - hours_to_show: 24
            graph: none
            type: sensor
            detail: 1
            entity: sensor.lastyear_fee
            name: 去年电费
      - type: custom:apexcharts-card
        header:
          show: true
          title: 当月用电趋势图
        graph_span: 35d
        span:
          start: month
          offset: '-30d'
        series:
          - entity: sensor.everyday_power2
            data_generator: |
              return entity.attributes.date.map((item, index) => {
               return [new Date(item).getTime(), entity.attributes.power[index]];
              });
            extend_to: false
            float_precision: 2
            name: 每日电量(kWh)
      - type: custom:apexcharts-card
        header:
          show: true
          title: 今年往月用电趋势图
        graph_span: 1y
        span:
          start: year
        series:
          - entity: sensor.everymonth_power
            data_generator: |
              return entity.attributes.yearmonth.map((item, index) => {
               return [new Date(item).getTime(), entity.attributes.power[index]];
              });
            extend_to: false
            float_precision: 2
            name: 每月电量(kWh)
          - entity: sensor.everymonth_power
            data_generator: |
              return entity.attributes.yearmonth.map((item, index) => {
               return [new Date(item).getTime(), entity.attributes.fee[index]];
              });
            extend_to: false
            float_precision: 2
            name: 每月电费(元)
      - type: custom:apexcharts-card
        header:
          show: true
          title: 去年往月用电趋势图
        graph_span: 1y
        span:
          start: year
          offset: '-1y'
        series:
          - entity: sensor.lastyeareverymonth_power
            data_generator: |
              return entity.attributes.yearmonth.map((item, index) => {
               return [new Date(item).getTime(), entity.attributes.power[index]];
              });
            extend_to: false
            float_precision: 2
            name: 去年每月电量(kWh)
          - entity: sensor.lastyeareverymonth_power
            data_generator: |
              return entity.attributes.yearmonth.map((item, index) => {
               return [new Date(item).getTime(), entity.attributes.fee[index]];
              });
            extend_to: false
            float_precision: 2
            name: 去年每月电费(元)
    

  • 2022/9/19 flow更新:增加当月每日记录、月份控制(避免跨越需要更新,当然,如果cookies撑不到一个月就只能再次抓包了)
  • 2022/9/18 flow更新:新增今年、去年电量统计


主要借鉴:
也分享一个电费查询(NR)-安徽 - 『Node-RED』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
NR运行效果:
注意:flow里面的headers、payload部分数据是用XXXX代替,仅供参考格式。使用前需要自己抓包填入!

微信截图_20220919150240.png

NR流使用主要流程
1.在HASS安装Node-red集成
2.手机下载“南网在线”,登陆APP,打开“日电量”页面
日账单.png
3.通过Stream抓包(对应NR的msg.headers、msg.payload),每个链接的headers、payload都要填

主要是以下3个请求:
  • https://95598.csg.cn/ucs/ma/zt/charge/queryDayElectricByMPoint
  • https://95598.csg.cn/ucs/ma/zt/charge/queryLatelyBillElec
  • https://95598.csg.cn/ucs/ma/zt/charge/getAnalyzeFeeDetails

2222.png

3.将抓到的headers、payload数据填入NR流的“控制年份/月份”、“获取XXXX”的function函数中(注意每个请求对应的数据不完全一样),点击运行(HOMEASSISTANT需要改为自己系统的),输入完后点击部署
4.实体名称说明
最近日电量:LastDate_Power当月每日明细:EveryDay_Power(9/19更新,具体每日数据放在属性里)
当月每日明细2:EveryDay_Power2(9/27更新,date、power为数组格式,配合apexcharts卡片使用)
当月电量:CurMonth_Power
预计当月电费:CurMonth_Fee
上月电量:LastMonth_Power
上月电费:LastMonth_Fee(9/27更新,从原来的“上月电量”属性中拆分)
今年总电量:year_Power(9/18更新)
今年总电费:year_Fee(9/27更新,从原来的“今年总电量”属性中拆分)
去年总电量:lastYear_Power(9/18更新)
去年总电费:lastYear_Fee(9/27更新,从原来的“去年总电量”属性中拆分)

5.NR流填入说明:
深圳地区是春冬季、电量总量阶梯收费,如果是广东其他地区,可以通过以下官方链接查询单价,并修改“阶梯电费设置”的function
南方电网95598 (csg.cn)

评分

参与人数 8金钱 +61 收起 理由
leolew + 5 感谢楼主分享!
bottle05 + 5 我来瀚思就为看你!
ruike007 + 1 墙都不扶,就服楼主!
无厘头 + 1 我来瀚思就为看你!
jole + 5 论坛有你更精彩!
eric + 16 感谢楼主分享!银子奉上了!!感谢感谢!.
+ 20 感谢楼主分享!
hyq + 8 膜拜大神!

查看全部评分

回复

使用道具 举报

0

主题

59

帖子

510

积分

高级会员

Rank: 4

积分
510
金钱
451
HASS币
0
发表于 2022-9-17 15:39:55 | 显示全部楼层
支持~~~~
回复

使用道具 举报

5

主题

471

帖子

2114

积分

金牌会员

Rank: 6Rank: 6

积分
2114
金钱
1643
HASS币
0
发表于 2022-9-17 16:54:34 | 显示全部楼层
求抓包教程。不会抓包干瞪眼!
回复

使用道具 举报

5

主题

471

帖子

2114

积分

金牌会员

Rank: 6Rank: 6

积分
2114
金钱
1643
HASS币
0
发表于 2022-9-17 16:55:37 | 显示全部楼层
求抓包教程。不会抓包干瞪眼!
回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
 楼主| 发表于 2022-9-17 17:38:13 来自手机 | 显示全部楼层
hyq 发表于 2022-9-17 16:54
求抓包教程。不会抓包干瞪眼!

抓包需要iphone下载stream这个App
回复

使用道具 举报

5

主题

471

帖子

2114

积分

金牌会员

Rank: 6Rank: 6

积分
2114
金钱
1643
HASS币
0
发表于 2022-9-17 17:42:12 | 显示全部楼层
arthurfsy 发表于 2022-9-17 17:38
抓包需要iphone下载stream这个App

安卓的不行?
回复

使用道具 举报

1

主题

122

帖子

660

积分

高级会员

Rank: 4

积分
660
金钱
538
HASS币
0
发表于 2022-9-17 19:32:06 | 显示全部楼层
请教楼主,已经抓包了,也修改了header, payload,NODE里面没有显示错误,但是卡片里面看不到电量的数据,请问怎么从NODE RED里面看下数据是否正常?
回复

使用道具 举报

6

主题

259

帖子

2996

积分

金牌会员

Rank: 6Rank: 6

积分
2996
金钱
2737
HASS币
0
发表于 2022-9-17 19:37:45 来自手机 | 显示全部楼层
谢谢,一直能有大神抓南方电网的
回复

使用道具 举报

1

主题

122

帖子

660

积分

高级会员

Rank: 4

积分
660
金钱
538
HASS币
0
发表于 2022-9-17 19:55:23 | 显示全部楼层
刚看了,已经取到数据了,非常感谢分享。
回复

使用道具 举报

7

主题

166

帖子

1302

积分

论坛技术达人

积分
1302
金钱
1131
HASS币
60
 楼主| 发表于 2022-9-18 01:04:43 | 显示全部楼层
chenguy2022 发表于 2022-9-17 19:32
请教楼主,已经抓包了,也修改了header, payload,NODE里面没有显示错误,但是卡片里面看不到电量的数据, ...

实体(蓝色的)下面有数字显示就是正常获取了,如果在HA里面看不到就是HA和NR之间没有通
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-22 12:34 , Processed in 0.095224 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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