CATALOG

芯步的3路智能墙壁开关通过HTTP API开放了完整的控制与查询能力,二次开发的核心在于调用power1/power2/power3参数下发指令,并通过平台消息推送获取状态变更。以下是具体实现方案:

一、 准备工作与环境搭建

在开始二次开发前,你需要确保硬件设备已安装并接入网络,同时在芯步开放平台获取必要的开发凭证。

  1. 硬件准备

    • 设备:芯步 UNI-KG-3(3路物理按键面板开关)或智能触摸墙壁开关3路

    • 网络:该设备支持 Wi-Fi 2.4GHz 直连,无需网关。请确保设备通电并已通过官方App配网成功,获取到唯一的 Device ID(设备ID)

  2. 平台凭证获取

    • 注册并登录芯步工作台。

    • 在“开发设置”中获取 AppID(应用ID)和 AppSecret(开发者密码)。这两个参数是调用HTTP接口的钥匙

二、 API接口签名与鉴权机制

芯步的开放接口采用动态签名验证,所有HTTP请求(无论是控制还是查询)都需要携带有效的签名。签名的生成算法如下(通用步骤):

  1. 准备参数

    • AppSecret:从控制台获取的密钥。

    • ts:当前的Unix时间戳(秒级)。

  2. 计算过程

    • 第一步:计算 MD5(AppSecret),得到32位小写字符串。

    • 第二步:将第一步的结果拼接上时间戳,格式为 MD5(AppSecret) + ts

    • 第三步:计算第二步结果字符串的MD5值。

    • 公式为:sign = md5( md5(AppSecret) + ts )

二次开发时,需要在你的代码中实现上述函数,生成sign参数附加在请求URL中。时间戳ts通常允许前后5分钟的误差,需要注意服务器时间的校准。

三、 核心功能开发:远程开关控制

这是最基础的需求,通过向设备下发power指令实现。

  • 请求地址https://api.thingboot.com/{AppID}/device/control/

  • 请求方法POST

  • URL参数?sign={计算出的签名}&ts={当前时间戳}

  • 请求体 (JSON)

  • 指令集详情

    • 开/关控制:对于3路开关,分别对应 power1power2power3。值为 1(开)或 0(关)

    • 瞬动控制(点动):适用于控制卷帘门或车库门等需要短暂通电的场景。使用 point1,值为毫秒数。例如 {"point1":"500"} 表示第一路通电500ms后自动断开

四、 状态同步开发:查询与被动接收

为了实现“远程状态查询”,你有两种技术手段可选:HTTP主动查询(推荐用于轮询)和消息推送(推荐用于实时更新UI)。

方案一:主动查询状态 (获取设备最新详情)

虽然芯步的控制接口主要以下发指令为主,但通常物联网系统会提供获取设备详情的接口。你可以调用该接口获取设备的当前属性。

由于3路开关的状态属于设备属性,你需要调用 设备详情接口(通常位于API列表中的“查询设备信息”)。

  • 典型逻辑:系统会返回该设备的所有数据点,包括 power1power2power3 的当前状态值。

  • 使用场景:当你打开管理后台时,调用一次该接口刷新所有开关状态。

方案二:被动接收状态变更 (消息推送机制)

这是判断开关“究竟有没有被按下”的关键。物理按键面板开关被手指按下时,状态发生了变化,平台会主动将这一变化推送给开发者配置的服务器,从而实现“实时同步”。

  • 工作原理:芯步支持“自建消息服务器”。你需要在工作台配置一个公网URL(例如 https://yourdomain.com/api/yoyo/callback)来接收设备上报的数据

  • 数据格式:当用户按下墙壁上的物理按键时,平台会向你的服务器发送POST请求,携带如下数据:

  • 二次开发任务

    1. 在你的后端(如Java, Python, Go, PHP)中开发一个/callback接口。

    2. 接收平台发送的JSON数据,解析data字段中的power1/power2/power3值。

    3. 更新你本地数据库中的设备状态,或通过WebSocket推送至你的前端界面(如微信小程序或Web管理后台),实现界面状态的实时刷新。

五、 简易代码开发示例 (Python Flask)

以下是一个极简的Python示例,展示了如何同时实现控制指令下发 和 接收物理按键状态更新:

1. 控制端代码 (下发指令)

2. 接收端代码 (接收按键事件 - Flask服务)

六、 总结与架构

通过芯步的开放接口,你无需关注底层通信协议(Wi-Fi/MQTT),只需聚焦于HTTP层面的交互:

  1. 下行控制:通过/device/control/接口携带签名,利用power1/2/3参数即可完成远程开关与查询。

  2. 上行感知:配置“消息推送”服务,将物理按键的按下动作实时同步至你的业务系统,这是实现“开关状态查询”闭环的关键环节。