AC3-10A计量版的核心能力是“电能计量+远程通断”,二次开发的关键在于合理利用开放接口,将设备端的实时电量数据与业务端的计费策略打通。以下是具体实现方案。
解决方案:基于AC3-10A计量版开放接口的分时段计费系统二次开发
1. 系统架构
要实现分时段计费,不能仅依赖设备本身(设备主要负责执行与感知),必须构建一个“云端/本地业务服务器 + 数据库”的系统。
感知层:AC3-10A计量版设备。负责采集电压、电流、功率、累计电量,并执行通断指令。
网络层:WiFi(2.4G)。设备直连路由器,通过HTTP协议與服务器通信。
业务层(二次开发核心):您的应用服务器。
定时任务模块:拉取电量数据。
计费算法模块:根据时段计算费用。
控制逻辑模块:超费/定时跳闸。
存储层:MySQL/Redis等数据库。存储设备ID、电价模板、电量底数、订单记录。
2. 关键数据采集:如何获取电量
计费的基础是数据。AC3-10A计量版开放了metering(计量)接口。二次开发动作
主动拉取:在您的服务器中设置定时任务(Cron Job),例如每 5 分钟执行一次脚本。
调用接口:通过HTTP请求获取设备实时数据。
API示例
https://api.thingboot.com/{AppId}/device/control/……命令参数
{"metering":""}或根据最新文档获取电量JSON包。
解析数据:设备会返回当前累计电能(kWh,千瓦时,即“度”)。
3. 分时段计费算法实现
这是核心逻辑,需要在您的服务器端实现,而不是在设备端。
3.1 电价模板设计(数据库表)您需要设计一个“时段策略表”:
| 字段名 | 类型 | 示例值 | 说明 |
|---|---|---|---|
id | int | 1 | |
time_start | time | 22:00:00 | 时段开始 |
time_end | time | 06:00:00 | 时段结束(次日) |
price_per_kwh | decimal | 0.30 | 电价(元/度) |
period_name | varchar | 谷段 | 低谷期 |
适用的星期 | varchar | 1,2,3,4,5,6,7 | 区分工作日/周末(可选) |
3.2 增量计费逻辑不要直接用总电量乘以当前电价,因为总电量包含多个时段的混合。需要使用“增量法”
读取上次底数:从数据库查出该设备上次记录的累计电量(假设为 100.0 kWh)。
获取当前电量:调用接口获取当前累计电量(假设为 100.5 kWh)。
计算增量
增量 = 当前电量 – 上次底数(即 0.5 kWh)。判定当前时段:获取服务器当前时间,判断属于“峰/平/谷”。
计算费用
本次费用 = 增量 × 当前时段电价。累加并存储
总费用 += 本次费用。更新数据库中的“上次底数”为“当前电量”。
4. 核心API调用详解(代码级逻辑)
基于芯步的签名机制,以下是实现计费和控制的关键步骤。
4.1 生成动态签名(鉴权)为了防止接口被篡改,所有请求必须携带动态签名。
公式
Sign = md5( md5(AppSecret) + ts )代码示例(Python)
4.2 获取电量数据
请求URL
https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}Body
返回处理:解析返回的JSON,提取
power(功率/W)和ele(累计电能)。
4.3 执行断电控制当用户余额不足,或到达设定的非用电高峰期(如中午12点自动关闭),可以下发断电指令:
指令
{“power1”: 0}(0代表关闭,1代表开启)
5. 进阶功能:自动断网重连与WEBHOOT推送
为了让二次开发更健壮,利用芯步的私有化部署能力。
断网续传:AC3-10A支持设定5组WiFi。如果网络中断,设备会尝试切换网络。在二次开发中,如果调用接口超时,应实现随机间隔(或逐次增大间隔)重试机制。
自建消息服务器(推荐)为了替代低效的“轮询”,您可以部署自建服务器。
配置:在芯步控制台将消息推送地址配置为您服务器的
/api/receive_data。优势:每当设备数据变化,设备会主动上报,您可以直接在处理函数中实时调用计费模块,实现“准实时”计费。
6. 实战场景演练
场景:某办公室空调分时段计费
需求
高峰期(9:00-11:00, 14:00-17:00):1.2元/度
平期:0.8元/度
谷期(23:00-次日7:00):0.4元/度
晚上22:00自动关闭空调。
二次开发逻辑流程
初始化:在数据库中写入设备ID
AC3_001,当前底数0.0kWh,余额100元。轮询:服务器每5分钟执行一次脚本,发现时间是
15:00(高峰),当前功率2000W,电量增加了0.2kWh。扣费
0.2 * 1.2 = 0.24元。更新数据库,余额变为99.76元。联动控制:到了晚上
22:00,服务器Cron触发断点指令。调用API发送{“power1”:0},设备物理断开,空调关机。预警:如果余额扣除后发现
< 0,调用API发送关机指令,并触发短信通知管理员。
7. 总结
基于AC3-10A计量版的二次开发,重点在于利用开放接口将底层的物理数据转化为业务逻辑。
核心代码:签名生成函数 + 电量解析函数 + 时段判断逻辑。
部署:若设备数量少(<100台),使用定时轮询即可;若设备数量多,开启自建消息服务器接收实时上报数据。
注意:AC3-10A[计量版]支持2200W(10A*220V)以内的阻性负载,接入空调、冰箱等感性负载时请预留余量(不超过1500W)。