本帖最后由 involute 于 2023-8-15 18:55 编辑
北京用电信息查询
通过“国网北京电力”微信公众号的接口,采集你的家庭用电信息。
2022.6.24更新-v0.2.1
- 更新了数据获取接口
2-3月份时北京国网电力公众号进行了长达一个月的维护,近期偶尔查看才发现部分接口已经完全变更,虽然目前老接口还可以用,但此次更新将全部转为新接口获取数据,以防止老接口停止提供数据
- 优化了启动加载
尝试解决部分情况下,HA启动时无法正常完成数据获取导致实体无效的问题
2022.6.17更新-v0.1.4
2022.6.16更新-v0.1.3
- 支持采集最近30日用电情况
为此增加传感器sensor.XXXXXXXX_daily_XX(XX为1-30数字),传感器及其说明请见文档
目前只确定day_consume1是平时用电,day_consume2/3/4到底哪个对应尖/峰/谷,我还没弄清楚。希望有能力的同学帮我查证一下。
2022.6.2更新-v0.1.2
- 修改传感器扩展属性,解决HA2022版本历史数据中电费金额无法获取的问题
2021.9.10更新-v0.1.1
- 补回了峰谷用户遗漏的用电类别传感器
- 重写阶梯用户判断及取数据方法
- 判断方法不知是否准确,有待反馈
2021.9.5更新- 支持非居民用户的峰平谷电价类别策略
- 为峰平谷用户新增当前电价类别传感器
- 为峰平谷用户移除不必要的传感器
- 因为峰平谷用电政策可能会发生变化,所以在const.py中加入峰平谷配置
PGC_PRICE = [
{
"key": "尖峰",
"month": [7, 8],
"time_slot": [[11, 13], [16, 17]]
},
{
"key": "峰",
"time_slot": [[10, 15], [18, 21]]
},
{
"key": "平",
"time_slot": [[7, 10], [15, 18], [21, 23]]
},
{
"key": "谷",
"time_slot": [[23, 7]]
}
]
2021.8.18更新
使用之前
首先关注“国网北京电力”微信公众号,打开微营业厅->个人中心->户号关联,确保你至少已关联一个北京国网电力的户号。如果没有关联,在此进行户号关联操作。此时点开微营业厅,应已经可以看到关联的用户,点击用户,可以看到该用户的用电信息。
使用任何网络抓包软件,如安卓手机的Fiddler, 苹果手机的Stream,进行抓包,过滤条件可以选择"HTTP"。抓包时在微营业厅上进行操作,查看一下用电信息。看到HTTP HEADER中有内容为“user_openid=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”的内容,将user_openid=后的内容复制下来,如果最后是以\r\n结尾,则去掉\r\n,如果后部包含等于号"=",保留等于号。这个字符串就是openid,保存备用。
安装
使用HACS以自定义存储库方式安装,或者从[Latest release](https://github.com/georgezhao2010/bj_sgcc_energy/releases/latest)下载最新的Release版本,将其中的custom_components/bj_sgcc_engergy放到你的Home Assistant的custom_components/bj_sgcc_engergy中。
推荐使用HACS安装,这样后期有更新,会自动收到提示。
配置
在configuration.yaml中,增加配置如下:
bj_sgcc_energy:
openid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' #此为微信公众号中抓取的openid
重新启动Home Assistant
特性
- 如果公众号中关联了多个北京国电用户,则支持多个用户用电信息的采集。
- 支持实时用电单价实体,可用于Home Assistant 2021.8.X最新的能源模块的实时电费计算。
- 数据为定时更新,更新间隔为10分钟。
传感器
entity_id形式 |
含义 |
属性 |
备注 |
sensor.XXXXXXXXXX_balance |
电费余额 |
last_update - 网端数据更新时间 |
sensor.XXXXXXXXXX_current_level |
当前用电阶梯(峰平谷用户无此项) |
sensor.XXXXXXXXXX_current_level_consume |
当前阶梯用电(峰平谷用户无此项) |
sensor.XXXXXXXXXX_current_level_remain |
当前阶梯剩余额度(峰平谷用户无此项) |
sensor.XXXXXXXXXX_current_pgv_type |
当前电价类别(阶梯用户无此项) |
|
可能的值:峰、平、谷、尖峰(?) |
sensor.XXXXXXXXXX_current_price |
当前电价 |
sensor.XXXXXXXXXX_year_consume |
本年度用电量 |
sensor.XXXXXXXXXX_year_consume_bill |
本年度电费 |
sensor.XXXXXXXXXX_history_XX |
过去12个月用电 |
name - 月份;consume_bill - 该月电费 |
XX取值为1-12 |
sensor.XXXXXXXXXX_daily_XX |
过去30天用电 |
name - 日期<br/>bill_time - 采集时间;day_consume1 - 平时用电;day_consume2 - 尖时用电?;day_consume3 - 峰时用电?;day_consume4 - 谷时用电? |
XX取值为1-30 |
其中XXXXXXXXXX为北京国电用户户号
示例
历史数据采用flex-table-card展示
type: vertical-stack
cards:
- type: entities
entities:
- entity: sensor.XXXXXXXXXX_balance
- entity: sensor.XXXXXXXXXX_current_level
- entity: sensor.XXXXXXXXXX_current_level_consume
- entity: sensor.XXXXXXXXXX_current_level_remain
- entity: sensor.XXXXXXXXXX_current_price
- entity: sensor.XXXXXXXXXX_year_consume
- entity: sensor.XXXXXXXXXX_year_consume_bill
title: 家1
- type: custom:flex-table-card
title: 过去12个月用电情况
entities:
include: sensor.XXXXXXXXXX_history_*
columns:
- name: 月份
data: name
- name: 用电量
data: state
- name: 电费
data: consume_bill
- type: custom:flex-table-card
title: 过去30天用电情况
entities:
include: sensor.XXXXXXXXXX_daily_*
columns:
- name: 日期
data: name
- name: 用电量
data: state
- name: 尖时用电
data: day_consume2
- name: 峰时用电
data: day_consume3
- name: 平时用电
data: day_consume1
- name: 谷时用电
data: day_consume4
你也可以根据需要采用自己的展示形式
特别鸣谢
瀚思彼岸论坛的@crazysiri,直接使用了他的部分代码。
项目地址
https://github.com/georgezhao2010/bj_sgcc_energy
觉得有用的点个星哦
压缩包下载
压缩包移除,这里不做更新了,请去GITHUB下载最新版release好了
|