CATALOG

AC3-10A计量版的核心能力是“电能计量+远程通断”,二次开发的关键在于合理利用开放接口,将设备端的实时电量数据与业务端的计费策略打通。以下是具体实现方案。

解决方案:基于AC3-10A计量版开放接口的分时段计费系统二次开发

1. 系统架构

要实现分时段计费,不能仅依赖设备本身(设备主要负责执行与感知),必须构建一个“云端/本地业务服务器 + 数据库”的系统。

  • 感知层:AC3-10A计量版设备。负责采集电压、电流、功率、累计电量,并执行通断指令。

  • 网络层:WiFi(2.4G)。设备直连路由器,通过HTTP协议與服务器通信。

  • 业务层(二次开发核心):您的应用服务器。

    • 定时任务模块:拉取电量数据。

    • 计费算法模块:根据时段计算费用。

    • 控制逻辑模块:超费/定时跳闸。

  • 存储层:MySQL/Redis等数据库。存储设备ID、电价模板、电量底数、订单记录。

2. 关键数据采集:如何获取电量

计费的基础是数据。AC3-10A计量版开放了metering(计量)接口。二次开发动作

  1. 主动拉取:在您的服务器中设置定时任务(Cron Job),例如每 5 分钟执行一次脚本。

  2. 调用接口:通过HTTP请求获取设备实时数据。

    • API示例https://api.thingboot.com/{AppId}/device/control/……

    • 命令参数{"metering":""} 或根据最新文档获取电量JSON包。

  3. 解析数据:设备会返回当前累计电能(kWh,千瓦时,即“度”)。

3. 分时段计费算法实现

这是核心逻辑,需要在您的服务器端实现,而不是在设备端。

3.1 电价模板设计(数据库表)您需要设计一个“时段策略表”:

字段名类型示例值说明
idint1
time_starttime22:00:00时段开始
time_endtime06:00:00时段结束(次日)
price_per_kwhdecimal0.30电价(元/度)
period_namevarchar谷段低谷期
适用的星期varchar1,2,3,4,5,6,7区分工作日/周末(可选)

3.2 增量计费逻辑不要直接用总电量乘以当前电价,因为总电量包含多个时段的混合。需要使用“增量法”

  1. 读取上次底数:从数据库查出该设备上次记录的累计电量(假设为 100.0 kWh)。

  2. 获取当前电量:调用接口获取当前累计电量(假设为 100.5 kWh)。

  3. 计算增量增量 = 当前电量 – 上次底数(即 0.5 kWh)。

  4. 判定当前时段:获取服务器当前时间,判断属于“峰/平/谷”。

  5. 计算费用本次费用 = 增量 × 当前时段电价

  6. 累加并存储总费用 += 本次费用。更新数据库中的“上次底数”为“当前电量”。

4. 核心API调用详解(代码级逻辑)

基于芯步的签名机制,以下是实现计费和控制的关键步骤。

4.1 生成动态签名(鉴权)为了防止接口被篡改,所有请求必须携带动态签名。

  • 公式Sign = md5( md5(AppSecret) + ts )

  • 代码示例(Python)

4.2 获取电量数据

  • 请求URLhttps://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自动关闭空调。

  • 二次开发逻辑流程

    1. 初始化:在数据库中写入设备ID AC3_001,当前底数 0.0kWh,余额 100元

    2. 轮询:服务器每5分钟执行一次脚本,发现时间是15:00(高峰),当前功率 2000W,电量增加了 0.2kWh

    3. 扣费0.2 * 1.2 = 0.24元。更新数据库,余额变为 99.76元

    4. 联动控制:到了晚上22:00,服务器Cron触发断点指令。调用API发送 {“power1”:0},设备物理断开,空调关机。

    5. 预警:如果余额扣除后发现 < 0,调用API发送关机指令,并触发短信通知管理员。

7. 总结

基于AC3-10A计量版的二次开发,重点在于利用开放接口将底层的物理数据转化为业务逻辑

  • 核心代码:签名生成函数 + 电量解析函数 + 时段判断逻辑。

  • 部署:若设备数量少(<100台),使用定时轮询即可;若设备数量多,开启自建消息服务器接收实时上报数据。

  • 注意:AC3-10A[计量版]支持2200W(10A*220V)以内的阻性负载,接入空调、冰箱等感性负载时请预留余量(不超过1500W)。