芯步智能墙壁插座10A开放完整的HTTP API接口,支持远程开关控制和状态查询,可接入Web、App、小程序等任意软件项目。以下从接口协议、签名算法、状态查询实现三个层面说明二次开发方案。
一、 接口概述与准备
芯步的智能硬件产品(包括UNI-QC-10A系列插座)主打通用性与私有化部署能力。其接口采用标准的HTTP协议,这意味着无论你是用Python、Java、Go、PHP还是Node.js,甚至是Shell脚本,只要能够发起网络请求,都可以完成二次开发。
在开始开发之前,你需要准备以下三样关键信息(可通过登录芯步控制台获取):
AppID:应用的唯一标识。
AppSecret:开发者密码,用于生成签名。
Device ID:设备的唯一ID(可在控制台查看或通过设备拉取接口获取)。
二、 核心难点解析:签名机制
为了保证API调用的安全性,芯步的接口使用了动态签名机制。所有请求都需要携带sign(签名)和ts(时间戳)。这是一个二次MD5加密的过程,具体的算法逻辑如下
1. 将 AppSecret 进行一次 MD5 加密,得到字符串 secret_md5。 2. 将 secret_md5 拼接上当前的时间戳 ts(秒级),得到字符串 sign_str = secret_md5 + ts。 3. 将 sign_str 整体再进行一次 MD5 加密,得到最终的签名 sign。
公式化表达:sign = md5( md5(AppSecret) + ts )
这种双重加密机制可以有效防止重放攻击,在私有化部署或公网环境中保护你的设备控制权限。
三、 功能实现:如何查询开关状态与电量
“远程开关状态查询”属于设备状态获取范畴。虽然具体的查询命令格式需参考最新的API文档,但根据芯步的标准物模型(物模型),通常通过以下方式实现:
1. 主动查询(获取实时状态)
如果你的需求是主动查询(例如:点击App上的刷新按钮),你需要调用设备状态查询接口(具体接口路径请参考官方最新API文档,通常涉及/device/status/query类路径)。
请求方法:POST
请求参数:通常需要传入
device(设备ID)。返回参数:设备当前的运行状态,主要是
power字段(1表示开启,0表示关闭)。如果是计量版,还会返回电压、电流、功率等实时数据。
2. 异步接收(状态实时同步)
对于需要实时监测的场景(如:监控大屏),采用自建消息服务器的方式。芯步支持私有化部署和设备事件推送,当插座状态发生变化时(如手动按下开关或自动断电),设备会主动通过HTTP请求将消息推送到你指定的服务器地址(Webhook)。这种方式比轮询更实时、对服务器压力更小。
3. 控制与查询的一体化逻辑
虽然你的需求是“状态查询”,但在实际开发中,通常需要配合控制指令。以下是一个典型的二次开发代码逻辑示例(以Python为例),展示如何生成签名并下发“查询”或“控制”指令
四、 进阶开发:计量数据的获取
如果你使用的是计量版(UNI-QC-10A-P),除了开关状态,你还可以获取电压、电流和功率数据。这对于能耗监测类的应用场景(如:统计空调耗电量、分析设备运行状态)非常有用。
二次开发时,你可以通过两种方式获取这类数据:
定时轮询:设置一个定时任务(如每5分钟),调用接口查询实时功率。
事件上报:设置功率阈值,当功率变化超过一定范围或达到上报周期时,设备自动向服务器上报数据。
五、 私有化与局域网方案
该方案的一大亮点是支持私有化部署。如果你的应用场景是内网环境(如工厂车间、学校机房)且不允许数据上公网,芯步的接口支持纯局域网环境运行。
公网模式:调用
api.thingboot.com。局域网模式:如果你知道设备的Local IP,可以直接在局域网内下发HTTP命令,完全脱离外网,响应速度在毫秒级,且无需支付云服务流量费。
总结
通过芯步的开放接口进行二次开发,核心在于理解其双重MD5签名机制。实现“远程开关状态查询”通常有两种路径:一是通过主动调用API获取实时快照,二是通过配置消息服务器接收实时推送。开发者可根据自身对实时性及服务器负载的要求灵活选择。