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

 找回密码
 立即注册
查看: 19596|回复: 98

[插件集成] 北京燃气信息集成(NB表)

  [复制链接]

1

主题

61

帖子

1725

积分

金牌会员

Rank: 6Rank: 6

积分
1725
金钱
1659
HASS币
20
发表于 2022-11-1 23:07:24 | 显示全部楼层 |阅读模式
本帖最后由 Spending5027 于 2023-2-24 11:21 编辑


----------- 2023.1.13 更新
app 的 token 有效期是 7 天,没法一直用。
虽说找到了别的方法,可一劳永逸,但是发现北京燃气的系统本身存在漏洞,该方法分享出来后存在安全隐患,故没法给大家分享。

懂Android逆向的朋友可以解包来看看登录时参数的加密算法及秘钥,然后再模拟登录来刷新token。

----------- 2022.11.2
北京电网 启发,就把 北京燃气 也给加到 HA 里了,除了显示用气量,还能直接显示气表电量,省得去看了。

对于北京燃气用智能物联网燃气表(简称 NB 表,见下图)的,可以通过“北京燃气” APP 的接口,采集你的家庭用气信息。
5371667306978_.pic_hd.jpg
(NB表也分不同的厂商不同型号,可能信息抓取方式还不太一样,我就试了自家的表,别的不敢保证信息能获取全)

集成效果
screenshot_1.jpg


特性
  • 支持北京燃气智能物联网燃气表(简称 NB 表,见下图)的用气信息采集,目前仅支持单户号
  • 数据为定时更新,更新间隔为 10 分钟
  • 支持阶梯用气


使用之前
下载“北京燃气” APP,注册登录并绑定户号,然后点击“用气分析”,应该就可以看到该户号的用气信息。
使用任何网络抓包软件,如安卓手机的 Fiddler, 苹果手机的 Stream,进行抓包,可以只关注 zt.bjgas.com 域名下的请求。 抓包时在“北京燃气” APP 上进行操作,查看一下用气分析。看到 HTTP HEADER 中有内容为 “Authorization: Bearer XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX” 的内容,将 “Authorization: Bearer ” 后的内容复制下来,这个字符串就是 token,保存备用。
http_sniff-1.jpg

安装
使用 HACS 以自定义存储库方式安装,或者下载本贴附件,将其中的 custom_components/bj_gas 放到你 Home Assistant 的 custom_components/bj_gas 中。
游客,如果您要查看本帖隐藏内容请回复


配置
在 configuration.yaml 中,增加配置如下:
bj_gas:
  token: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX # 此为 APP 中抓取的 token
  user_code: XXXXXXXXXXX                      # 此为燃气户号

重新启动 Home Assistant

传感器

包含的传感器

entity_id 形式含义属性备注
sensor.XXXXXXXXXXX_balance燃气费余额last_update - 网端数据更新时间
sensor.XXXXXXXXXXX_current_level当前用气阶梯
sensor.XXXXXXXXXXX_current_level_remain当前阶梯剩余额度
sensor.XXXXXXXXXXX_current_price当前气价
sensor.XXXXXXXXXXX_year_consume本年度用气量
sensor.XXXXXXXXXXX_month_reg_qty本月用气量
sensor.XXXXXXXXXXX_battery_voltage气表电量
sensor.XXXXXXXXXXX_mtr_status阀门状态
sensor.XXXXXXXXXXX_monthly_*月度用气情况name - 月份
state - 用气量
consume_bill - 该月燃气费
*取值为1-12
sensor.XXXXXXXXXX_daily_*最近一周用气name - 日期
state - 用气量
*取值为1-7
其中 XXXXXXXXXXX 为北京燃气用户户号

示例
历史数据采用 flex-table-card 展示
type: vertical-stack
cards:
  - type: entities
    entities:
      - entity: sensor.XXXXXXXXXXX_balance
      - entity: sensor.XXXXXXXXXXX_month_reg_qty
      - entity: sensor.XXXXXXXXXXX_current_level
      - entity: sensor.XXXXXXXXXXX_current_level_remain
      - entity: sensor.XXXXXXXXXXX_current_price
      - entity: sensor.XXXXXXXXXXX_year_consume
      - entity: sensor.XXXXXXXXXXX_battery_voltage
      - entity: sensor.XXXXXXXXXXX_mtr_status
    title: 燃气信息
  - type: custom:flex-table-card
    title: 月度用气情况
    entities:
      include: sensor.XXXXXXXXXXX_monthly_*
    columns:
      - name: 月份
        data: name
      - name: 用气量
        data: state
      - name: 费用
        data: consume_bill
  - type: custom:flex-table-card
    title: 最近一周用气情况
    entities:
      include: sensor.XXXXXXXXXXX_daily_*
    columns:
      - name: 日期
        data: name
      - name: 用气量
        data: state

你也可以根据需要采用自己的展示形式

源码:https://github.com/zhaoyibo/bj_gas


感谢:
@crazysiri  @involute




评分

参与人数 5金钱 +60 HASS币 +20 收起 理由
ciasdmxhxjjpd@c + 5
brigcn + 5 大神666!
+ 20 + 20 高手,这是高手!
SilverWolf + 20 这个可以啊
jjcs + 10 虽然看不懂,但感觉很厉害的样子。.

查看全部评分

回复

使用道具 举报

10

主题

1390

帖子

4435

积分

论坛元老

Rank: 8Rank: 8

积分
4435
金钱
3045
HASS币
0
发表于 2022-11-2 10:55:56 | 显示全部楼层
牛x啊,大佬真优秀
回复

使用道具 举报

0

主题

33

帖子

246

积分

中级会员

Rank: 3Rank: 3

积分
246
金钱
213
HASS币
0
发表于 2022-11-2 17:16:16 | 显示全部楼层
完美~  就差个自来水了~
回复

使用道具 举报

1

主题

61

帖子

1725

积分

金牌会员

Rank: 6Rank: 6

积分
1725
金钱
1659
HASS币
20
 楼主| 发表于 2022-11-2 17:25:57 | 显示全部楼层
416631663 发表于 2022-11-2 17:16
完美~  就差个自来水了~

自来水是小程序,请求和响应都加密了,不好搞。
另外自来水是抄表贴条的,不交也不会停,就还好吧。
回复

使用道具 举报

0

主题

33

帖子

246

积分

中级会员

Rank: 3Rank: 3

积分
246
金钱
213
HASS币
0
发表于 2022-11-2 17:40:11 | 显示全部楼层
Spending5027 发表于 2022-11-2 17:25
自来水是小程序,请求和响应都加密了,不好搞。
另外自来水是抄表贴条的,不交也不会停,就还好吧。
...

自来水也开始换远传表了~我正好装修,还没细看。明天我拍一张照片
回复

使用道具 举报

0

主题

33

帖子

246

积分

中级会员

Rank: 3Rank: 3

积分
246
金钱
213
HASS币
0
发表于 2022-11-2 17:45:04 | 显示全部楼层
1667382215140.jpg

Logger: custom_components.bj_sgcc_energy
Source: helpers/update_coordinator.py:151
Integration: 北京用电信息查询 (documentation, issues)
First occurred: 17:22:53 (1 occurrences)
Last logged: 17:22:53

Error fetching bj_sgcc_energy data: Data update timed out

而且电力的,我插入的普通的实体卡片,有时候就会显示不可用,看日志是超时,不用管它,过一段数据会刷出来,不知道是为什么? 估计燃气的也会这样。
回复

使用道具 举报

1

主题

61

帖子

1725

积分

金牌会员

Rank: 6Rank: 6

积分
1725
金钱
1659
HASS币
20
 楼主| 发表于 2022-11-2 18:08:42 | 显示全部楼层
416631663 发表于 2022-11-2 17:45
Logger: custom_components.bj_sgcc_energy
Source: helpers/update_coordinator.py:151
Integration: 北 ...

电力那个我还没遇到,可能是偶尔的网络超时吧。
燃气这个目前发现token可能有效期,不知道是不是验证码登录的原因,我还得再看看。
另外,目前是10分钟更新一次,实际这数据都不咋变动,不用这么频繁,后续可能也会调低更新频率,以防服务器温暖升级。
回复

使用道具 举报

4

主题

55

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
681
HASS币
0
发表于 2022-11-3 16:21:06 | 显示全部楼层
太牛了,不过我抓不到token,不知道为什么
回复

使用道具 举报

4

主题

55

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
681
HASS币
0
发表于 2022-11-3 16:34:09 | 显示全部楼层
wingkuen 发表于 2022-11-3 16:21
太牛了,不过我抓不到token,不知道为什么

成功了,谢谢
回复

使用道具 举报

0

主题

10

帖子

50

积分

注册会员

Rank: 2

积分
50
金钱
40
HASS币
0
发表于 2022-11-3 18:11:30 | 显示全部楼层
厉害了,学习一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-30 01:25 , Processed in 0.203827 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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