CATALOG

智能插座/通断器类设备的远程控制与电量计量,是充电桩、共享设备等场景的常见需求。芯步的开放接口采用HTTP签名机制,以下方案从签名计算、指令下发到定时任务实现,梳理完整的对接流程。

1. 解决概述

1.1 背景与需求

在许多商业和工业场景中(如汽车充电桩、智能配电、共享设备、远程机房管理),我们需要对高负载线路(最高50A)进行远程监控与管理。核心需求包括:

  • 远程控制:随时随地通过软件平台断开或接通电路。

  • 定时任务:按照预设时间表自动断电/通电(如低谷电价充电、限时使用)。

  • 电量监测:实时读取电压、电流、功率、用电度数,用于计费或能耗分析。

1.2 方案架构

本方案基于芯步开放平台的标准HTTP接口。用户无需搭建复杂的MQTT服务器,只需通过芯步提供的API,即可实现业务系统(小程序/APP/PC管理端)与50A带计量智能设备的快速对接。

核心流程:

业务系统 -> 调用芯步API(携带签名) -> 芯步云平台 -> 下发热指令 -> 50A智能设备(执行通断/上报数据)

2. 对接准备工作

在开始编码前,需完成以下准备工作:

  1. 硬件准备:确认采购的设备型号为50A级带计量功能的智能通断器/插座(如芯步智能通断器大功率系列)。

  2. 平台账号:注册芯步开放平台账号。

  3. 获取密钥:登录物联网控制台,在“开发设置”中获取以下关键信息:

    • AppID:应用唯一标识。

    • AppSecret:开发者密码(用于计算签名)。

    • Device ID:将50A设备配对绑定到平台后,获取的唯一设备编号。

  4. 网络环境:确保设备已连接Wi-Fi/4G网络,且平台显示设备“在线”。

3. 核心技术:接口鉴权(签名计算)

芯步的开放接口采用动态签名验证,所有API请求均需携带签名。签名算法规则如下

  • 参数ts(当前UTC时间戳,秒级,10位数字),sign(签名)。

  • 计算公式

    Step 1: encrypt_secret = md5(AppSecret) // 将AppSecret进行MD5加密Step 2: sign_str = encrypt_secret + ts // 字符串拼接Step 3: sign = md5(sign_str) // 再次进行MD5

  • 示例(伪代码):

4. 功能实现一:获取计量数据(电量查询)

要实现计费或监控,首先需读取设备的电量数据。

  • 接口说明:向设备下发查询指令,或通过平台消息推送获取。最直接的方式是调用设备状态接口。

  • 请求地址POST https://api.thingboot.com/{AppId}/device/status/?sign={sign}&ts={ts}

  • 请求Body (JSON)

  • 返回数据解析(重点关注计量字段):根据芯步设备通用协议,返回数据中通常包含:

    • power:当前功率(W)

    • voltage:电压(V)。

    • current:电流(A),对于50A设备,此范围覆盖0-50A。

    • energy:累计用电量(kWh),用于计费逻辑。

5. 功能实现二:远程定时通断控制

这是本方案的核心功能。芯步支持两种方式实现“定时通断”:业务层定时任务(推荐,逻辑最灵活)和设备硬件定时(简单稳定)。

5.1 方法一:业务层定时任务(推荐)

在您的服务器或云函数中设置定时器(如Cron Job),时间到达时调用控制接口。

  • 接口地址POST https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}

  • 请求Body

  • 场景示例

    • 定时开启:每晚10点(电价低谷),系统自动调用上述接口,order置为1,充电桩开始充电。

    • 定时关闭:次日早8点,系统调用接口,order置为0,停止充电。

5.2 方法二:设备内置定时命令(无网络依赖)

如果不想依赖业务服务器,可利用设备内置的倒计时或定时功能。这对50A设备尤其有用,即使断网,设备也能在设定时间后自动断开,保障安全

  • Reset命令(先断后通/临时通电):常用于收费供电场景。

    • 需求:用户扫码支付后,继电器吸合(通电),1小时后自动断开。

    • 指令

      执行此命令后,设备会立即接通电源,并在1小时(设定时间)后自动切断。即使手机APP退出,设备硬件也会执行切断动作,极其可靠。

6. 代码实战示例

以下以PythoncURL为例,演示如何实现“通电1小时后自动断电”的完整闭环。

Python 3 实现

cURL 命令示例

7. 异常处理与最佳实践

考虑到50A设备通常用于高功率场景(如充电桩、大功率电器),安全性和稳定性至关重要。遵循以下规范:

  1. 负载安全

    • 虽然设备支持50A,请在代码逻辑中加入过载保护。定时读取计量数据,若电流超过阈值(如55A),立即下发{"power": 0}命令强制断电。

  2. 接口限频

    • 芯步接口限制1次/秒的请求频率,请勿在循环中无延迟轮询状态,以免触发5009错误

  3. 时间戳同步

    • 签名中的ts使用Unix时间戳(秒),请确保您的服务器时间与中国时间同步,误差过大会导致bad ts错误

  4. 状态同步(State Sync)

    • 设备可能通过物理按键被人为关闭,导致系统显示“通电”而实际“断电”。每次执行关键动作前,先调用/device/status/接口查询实时状态。

  5. 私有化部署

    • 若涉及计费核心数据,可咨询芯步技术支持进行私有化部署,API指令仅在局域网或专网传输,避免公网延迟抖动

8. 总结

通过芯步开放平台对接50A带计量设备,开发者只需关注HTTP请求的签名生成业务逻辑,无需关心底层网络穿透或协议细节。

  • 控制方面:利用power指令实现基础开关,利用reset指令实现精准延时断开

  • 数据方面:通过状态查询接口获取电流、电压、电量,为计费系统提供依据。

  • 实施路径:注册账号 -> 获取AppID/Secret -> 调用API -> 实现50A高功率设备的智能化定时管理。