找回密码
 立即注册
查看: 3724|回复: 23

[插件集成] 内蒙电网数据查询插件 (更新v1.1.0支持蒙电e家每日电量)

[复制链接]

6

主题

258

回帖

1190

积分

金牌会员

积分
1190
金钱
926
HASS币
10
发表于 2023-10-8 11:18:02 | 显示全部楼层 |阅读模式
本帖最后由 NiaoBlush 于 2025-3-16 16:50 编辑

内蒙古电费查询


查询内蒙古住户的电费及历史电量、电费情况
项目地址文档以项目地址中文档为准


数据说明

数据来自内蒙古电力公司公众号 与 蒙电e家app

根据公众号中的说法
查询余额为结算系统余额=上月度结转电费+本月缴纳电费,实际电费余额以表计显示为准。

所以,余额不是实时余额,仅供参考。

安装

HACS安装(推荐):可以通过在HACS中搜索插件名`IMPC Energy`进行安装


手动安装:
以从这里下载最新版本
把压缩包内容解压到`custom_components/impc_energy`文件夹下

安装后需要重启hass


配置

只需知道自己的户号,即可开始配置

  • 进入 设置 -> 设备与服务 -> 添加集成(右下角)
  • 在弹出的对话框中搜索 `IMPC Energy` 并点击
  • select_integration.png
  • 在弹出的配置向导中输入户号及户名
  • 如果不输入户名, 则集成会尝试使用获取到的户名(多数情况下为住址)作为户名
  • config_helper.png
  • 如果勾选`是否继续配置蒙电e家app`, 则需要输入app的用户名和密码, 配置蒙电e家后可以获取每日用电量
  • 等待配置完成
  • 系统会自动生成实体名称, 如有需要可自行修改


如果您从 `v0.X.X` 旧版本升级到 `v1.X.X` 及以上版本,可能需要注意以下事项:

- 旧版本配置文件配置方式已被移除,请改用图形界面添加。
- 由于`entity_id`与`unique_id`的问题,旧版实体与新版不兼容,需要删除旧版实体。
- 需要删除配置文件中的`impc_energy`配置
- 如果无法删除旧版实体,请尝试删除旧版`IMPC Energy`集成,重启HomeAssistant,再重新安装。




传感器
插件会为每个家庭添加两个传感器 剩余电费, 历史与每日电量
entities_detail.png

电费余额是结算余额,所以理论上数值一个月才会改变一次(交了电费也可能改变,没有测试)
2.png

过去12个月的历史数据(用电量与电费)放到了一个传感器里
3.png

每日电量会展示最近30天的每日用电量
sensor_daily_consumption.png
有时会有负值是因为接口返回的就是负数, 不知道为什么


卡片示例

利用图表卡片 apexcharts-card以实现如下的效果:
20240409174425.png
chart_daily_consumption.png

(x轴步长没有生效可能是这个图表库的问题)


卡片配置:

type: vertical-stack
cards:
  - type: horizontal-stack
    cards:
      - type: markdown
        content: |-
          {% set home=states.sensor.impc_energy_01xxxxxxx70_balance %}
          ### {{home.state}}
          当前余额(元)
      - type: markdown
        content: |-
          {% set home=states.sensor.impc_energy_0110xxxxxx970_history %}
          ### {{home.attributes['current']['bill']}}
          本期总电费(元)
      - type: markdown
        content: |-
          {% set home=states.sensor.impc_energy_011xxxxxxx970_history %}
          ### {{home.attributes['current']['consumption']}}
          本期总电量(kW⋅h)
  - type: custom:apexcharts-card
    header:
      show: true
      title: 用电历史
      show_states: false
      colorize_states: true
    graph_span: 1y
    span:
      offset: '-1month'
    apex_config:
      legend:
        position: top
      xaxis:
        stepSize: 1
        tooltip:
          enabled: false
        labels:
          datetimeFormatter:
            year: ''
            month: M月
      tooltip:
        x:
          format: yyyy年M月
    series:
      - name: 历史电量
        entity: sensor.impc_energy_01xxxxxxxxx70_history
        type: column
        color: 3498DB
        unit: kW⋅h
        show:
          datalabels: false
          legend_value: false
        data_generator: |
          const data=[];
          const attributes=entity.attributes;
          for(let item in attributes){
            if(item.length==6&&item.startsWith("20")){
              //202403
              const timeStr=`${item.slice(0, 4)}-${item.slice(-2)}-01T00:00:00`;
              const dataObj=new Date(timeStr);
              data.push([dataObj.getTime(),attributes[item]["consumption"]]);
            }
          }
          //console.log("data1", data);
          return data;
      - name: 历史电费
        entity: sensor.impc_energy_011xxxxxx970_history
        color: FF9F0b
        unit: 元
        extend_to: false
        show:
          datalabels: false
          legend_value: false
        data_generator: |
          const data=[];
          const attributes=entity.attributes;
          for(let item in attributes){
            if(item.length==6&&item.startsWith("20")){
              //202403
              const timeStr=`${item.slice(0, 4)}-${item.slice(-2)}-01T00:00:00`;
              const dataObj=new Date(timeStr);
              data.push([dataObj.getTime(),attributes[item]["bill"]]);
            }
          }
          //console.log("data2", data);
          return data;

  - type: custom:apexcharts-card
    header:
      show: true
      title: 每日用电
      show_states: false
      colorize_states: true
    graph_span: 30d
    apex_config:
      legend:
        position: top
      xaxis:
        stepSize: 1
        tooltip:
          enabled: false
        labels:
          datetimeFormatter:
            year: ''
            month: ''
            day: d日
      tooltip:
        x:
          format: yyyy年MM月dd日
    series:
      - name: 日用电量
        entity: sensor.impc_energy_011xxxxxx970_daily_consumption
        color: 4D55CC
        unit: kW⋅h
        show:
          datalabels: false
          legend_value: false
        data_generator: |
          const data=[];
          const attributes=entity.attributes;
          for(let item in attributes){
            if(item&&item.startsWith("20")){
              //2024-03-01
              const timeStr=`${item}T00:00:00`;
              const dataObj=new Date(timeStr);
              data.push([dataObj.getTime(),attributes[item]]);
              //data.push([item, attributes[item]]);
            }
          }
          console.log("data3", data);
          return data;






其他

没有找到现成能用的,就自己写一个吧。

我是搞Java的,Python勉强能看懂,但是还是有些蛋疼的 (╯‵□′)╯︵┻━┻

这里鸣谢 @involute 大神,参考了他[帖子](https://bbs.hassbian.com/thread-13820-1-1.html)中的代码

同样感谢大神@Aaron Godfrey 提供的[插件开发教程](https://aarongodfrey.dev/home%20 ... m_component_part_1/)








config.png
1.png

评分

参与人数 2金钱 +25 HASS币 +10 收起 理由
gfl2428 + 5 更新可以用了,赞
+ 20 + 10 厉害了word楼主!

查看全部评分

回复

使用道具 举报

1

主题

246

回帖

1094

积分

论坛积极会员

积分
1094
金钱
847
HASS币
10
发表于 2023-10-8 13:21:02 | 显示全部楼层
给大神点赞!!!!
回复

使用道具 举报

0

主题

16

回帖

104

积分

注册会员

积分
104
金钱
88
HASS币
0
发表于 2023-10-13 22:04:49 | 显示全部楼层
谢谢,大佬
回复

使用道具 举报

0

主题

11

回帖

262

积分

中级会员

积分
262
金钱
251
HASS币
0
发表于 2024-2-27 15:32:38 | 显示全部楼层
有点东西,我们的物理位置很接近啊
回复

使用道具 举报

0

主题

16

回帖

82

积分

注册会员

积分
82
金钱
66
HASS币
0
发表于 2024-3-18 05:17:24 来自手机 | 显示全部楼层
新安装 ,输入01开头的户号,查询不到信息,输入外地02开头户号可以查询到电费
回复

使用道具 举报

6

主题

258

回帖

1190

积分

金牌会员

积分
1190
金钱
926
HASS币
10
 楼主| 发表于 2024-3-18 16:40:03 | 显示全部楼层
gfl2428 发表于 2024-3-18 05:17
新安装 ,输入01开头的户号,查询不到信息,输入外地02开头户号可以查询到电费 ...

试试看在内蒙古电力公司公众号用同样的户号有没有数据
回复

使用道具 举报

0

主题

16

回帖

82

积分

注册会员

积分
82
金钱
66
HASS币
0
发表于 2024-3-18 16:53:52 | 显示全部楼层
NiaoBlush 发表于 2024-3-18 16:40
试试看在内蒙古电力公司公众号用同样的户号有没有数据

有数据,只不过公众号要求绑定手机号才能看
回复

使用道具 举报

0

主题

16

回帖

82

积分

注册会员

积分
82
金钱
66
HASS币
0
发表于 2024-3-18 16:57:44 | 显示全部楼层
本帖最后由 gfl2428 于 2024-3-18 17:00 编辑

1710752172771.jpg
WX20240318-下午45935@2x.png
可以看到,上面2条数据是我输入02开头户号,获得正确数据;下面2条数据我输入户号是01开头,识别出来是1***的号码,且获取数据是0。

回复

使用道具 举报

6

主题

258

回帖

1190

积分

金牌会员

积分
1190
金钱
926
HASS币
10
 楼主| 发表于 2024-3-18 17:08:17 | 显示全部楼层
gfl2428 发表于 2024-3-18 16:57
可以看到,上面2条数据是我输入02开头户号,获得正确数据;下面2条数据我输入户号是01开头,识别出来是1* ...

方便私聊我户号吗?
回复

使用道具 举报

0

主题

16

回帖

82

积分

注册会员

积分
82
金钱
66
HASS币
0
发表于 2024-3-18 17:13:20 | 显示全部楼层
本帖最后由 gfl2428 于 2024-3-18 17:21 编辑
NiaoBlush 发表于 2024-3-18 17:08
方便私聊我户号吗?

012********02权限不够私聊
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2025-5-4 17:52 , Processed in 0.223973 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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