基于 Autox.js 的国家电网用电数据自动采集与 MQTT 推送工具,支持 Home Assistant 集成
本项目通过 Autox.js 自动化脚本,从网上国网 APP自动获取用电数据,包括日用电量、峰谷平尖电量、月度电费、年累计数据等,并通过 MQTT 协议推送到 Home Assistant 或其他 MQTT 服务器,实现用电数据的智能家居集成。
- 多户号支持:自动识别并采集多个电表户号的用电数据
- 详细用电数据:
- 每日用电量(尖/峰/平/谷)
- 月度用电量统计
- 年累计电量/电费
- 账户余额/应交金额
- 阶梯电价计算:支持三阶阶梯电价和峰谷电价计算
- Home Assistant 集成:
- 支持 HA 自动发现(HASS Discovery)
- 自动创建传感器实体
- 支持电价配置控件(Number/Switch)
- 与hassbox的实体兼容,可以使用兼容的homeassistant lovelace 展示数据。
- MQTT 双向通信:
- 推送用电数据到 MQTT
- 从 MQTT 接收电价配置更新
src-autox/
├── config.tsx # UI 配置界面(MQTT 服务器、主题前缀等)
├── sgcc.tsx # 核心业务逻辑(数据采集、MQTT 通信)
├── sgcc_type.tsx # TypeScript 类型定义
├── common.tsx # 公共工具函数
└── utils/ # 工具类模块
在 APP 界面中配置以下参数:
| 参数 | 说明 | 示例 |
|---|---|---|
mqtt_host |
MQTT 服务器地址 | mqtt://192.168.1.2:1883 |
mqtt_username |
MQTT 用户名 | homeassistant |
mqtt_password |
MQTT 密码 | your_password |
| topic_prefix | 主题前缀 | autox-sgcc-mqtt |
use_root |
是否使用Root权限 | false |
accept_x/y |
录屏权限确认坐标 | 815/2188 |
在 configuration.yaml 中启用 MQTT 发现:
mqtt:
discovery: true
discovery_prefix: homeassistant| 主题 | 说明 |
|---|---|
${topic_prefix}/device_info |
设备列表配置 |
${topic_prefix}/{device_id}/{type} |
电价参数配置 |
| 主题 | 说明 | 数据类型 |
|---|---|---|
${topic_prefix}/{device_id} |
完整用电数据 JSON | JSON |
${topic_prefix}/{device_id}/total_power |
总用电量 | String |
${topic_prefix}/{device_id}/month_power |
本月总电量 | String |
${topic_prefix}/{device_id}/owe |
应交金额 | String |
${topic_prefix}/{device_id}/balance |
账户余额 | String |
${topic_prefix}/{device_id}/year_power |
年累计电量 | String |
${topic_prefix}/{device_id}/year_cost |
年累计电费 | String |
${topic_prefix}/{device_id}/hassbox |
Hassbox插件兼容数据 | JSON |
自动创建以下传感器实体:
sensor.sgcc_{设备 ID}_main- 总用电量sensor.sgcc_{设备 ID}_daily_power- 最新日用电sensor.sgcc_{设备 ID}_month_power- 本月总电量sensor.sgcc_{设备 ID}_owe- 应交金额sensor.sgcc_{设备 ID}_balance- 账户余额sensor.sgcc_{设备 ID}_year_cost- 年累计电费
- Autox.js 运行环境 (必须使用Autox.js 运行环境,不可使用Auto.js,部分功能Auto.js 不支持.)
- 已安装网上国网 APP(包名:
com.sgcc.wsgw.cn) - MQTT 服务器(如 EMQX、Mosquitto、Home Assistant MQTT)
- Android 设备需开启无障碍服务,录屏权限暂时不需要。
- 在 Autox 中导入项目
- 运行
config.js或者直接运行项目,配置 MQTT 参数。 - 点击保存按钮保存配置
- 点击获取数据到 MQTT 开始采集
- 在 Home Assistant 中查看自动发现的传感器
- 运行
sgcc_query.js立即开始采集数据
- 在Autox 中创建一个计划任务,定时执行
sgcc_query.js
- 使用pnpm 安装依赖
- 运行
pnpm run build编译项目
用电数据结构(SgccInfoJson)
interface SgccInfoJson {
name: string; // 户名
id: string; // 户号
地址:string; // 用电地址
data: Record<string, DailyDataItem>; // 每日用电数据
最新数据:LatestDataDetails; // 最新汇总数据
月度电费:Record<string, YearlyMonthlyData>; // 月度电费
电价价目表:ElectricityPriceList; // 电价配置
// ... 其他字段
}每日用电数据(DailyDataItem)
interface DailyDataItem {
power: string; // 总用电量
尖:string; // 尖峰电量
峰:string; // 高峰电量
平:string; // 平段电量
谷:string; // 低谷电量
}支持通过 MQTT 动态配置电价参数:
| 配置项 | 主题后缀 | 说明 |
|---|---|---|
| 一阶电价 | l1price |
第一阶梯电价(无峰谷) |
| 峰电价一阶 | l1price_feng |
第一阶梯峰电价 |
| 谷电价一阶 | l1price_gu |
第一阶梯谷电价 |
| 二阶电价 | l2price |
第二阶梯电价(无峰谷) |
| 峰电价二阶 | l2price_feng |
第二阶梯峰电价 |
| 谷电价二阶 | l2price_gu |
第二阶梯谷电价 |
| 三阶电价 | l3price |
第三阶梯电价(无峰谷) |
| 二阶起始 | l2cost_start | 第二阶梯起始度数 |
| 三阶起始 | l3cost_start | 第三阶梯起始度数 |
| 峰谷电启用 | fenggu_enable | 是否启用峰谷电价 |
- 首次运行需要手动授予无障碍权限
- 网上国网 APP 可能需要验证码登录,建议保持登录状态
- 数据采集过程中请勿操作手机,避免干扰自动化流程
- MQTT 密码以字符数组形式传输,确保服务器兼容
- 建议设置定时任务定期同步数据(如每天凌晨)
- 支持多户号自动识别
- 支持峰谷平尖四时段电量采集
- 支持阶梯电价自动计算
- 支持 Home Assistant 自动发现
- 支持 MQTT 双向配置同步
GPLv3.0
- Auto.js - Android 自动化框架
- Autox.js - 跨平台自动化框架
- Home Assistant - 智能家居平台
- 网上国网 - 国家电网官方 APP
有问题或建议?欢迎提交 Issue!