芯步的3路智能墙壁开关通过HTTP API开放了完整的控制与查询能力,二次开发的核心在于调用power1/power2/power3参数下发指令,并通过平台消息推送获取状态变更。以下是具体实现方案:
一、 准备工作与环境搭建
在开始二次开发前,你需要确保硬件设备已安装并接入网络,同时在芯步开放平台获取必要的开发凭证。
硬件准备
设备:芯步
UNI-KG-3(3路物理按键面板开关)或智能触摸墙壁开关3路。网络:该设备支持 Wi-Fi 2.4GHz 直连,无需网关。请确保设备通电并已通过官方App配网成功,获取到唯一的
Device ID(设备ID)。
平台凭证获取
注册并登录芯步工作台。
在“开发设置”中获取 AppID(应用ID)和 AppSecret(开发者密码)。这两个参数是调用HTTP接口的钥匙。
二、 API接口签名与鉴权机制
芯步的开放接口采用动态签名验证,所有HTTP请求(无论是控制还是查询)都需要携带有效的签名。签名的生成算法如下(通用步骤):
准备参数
AppSecret:从控制台获取的密钥。ts:当前的Unix时间戳(秒级)。
计算过程
第一步:计算
MD5(AppSecret),得到32位小写字符串。第二步:将第一步的结果拼接上时间戳,格式为
MD5(AppSecret) + ts。第三步:计算第二步结果字符串的MD5值。
公式为:
sign = md5( md5(AppSecret) + ts )。
二次开发时,需要在你的代码中实现上述函数,生成
sign参数附加在请求URL中。时间戳ts通常允许前后5分钟的误差,需要注意服务器时间的校准。
三、 核心功能开发:远程开关控制
这是最基础的需求,通过向设备下发power指令实现。
请求地址:
https://api.thingboot.com/{AppID}/device/control/请求方法:
POSTURL参数:
?sign={计算出的签名}&ts={当前时间戳}请求体 (JSON)
指令集详情
开/关控制:对于3路开关,分别对应
power1、power2、power3。值为1(开)或0(关)。瞬动控制(点动):适用于控制卷帘门或车库门等需要短暂通电的场景。使用
point1,值为毫秒数。例如{"point1":"500"}表示第一路通电500ms后自动断开。
四、 状态同步开发:查询与被动接收
为了实现“远程状态查询”,你有两种技术手段可选:HTTP主动查询(推荐用于轮询)和消息推送(推荐用于实时更新UI)。
方案一:主动查询状态 (获取设备最新详情)
虽然芯步的控制接口主要以下发指令为主,但通常物联网系统会提供获取设备详情的接口。你可以调用该接口获取设备的当前属性。
由于3路开关的状态属于设备属性,你需要调用 设备详情接口(通常位于API列表中的“查询设备信息”)。
典型逻辑:系统会返回该设备的所有数据点,包括
power1、power2、power3的当前状态值。使用场景:当你打开管理后台时,调用一次该接口刷新所有开关状态。
方案二:被动接收状态变更 (消息推送机制)
这是判断开关“究竟有没有被按下”的关键。物理按键面板开关被手指按下时,状态发生了变化,平台会主动将这一变化推送给开发者配置的服务器,从而实现“实时同步”。
工作原理:芯步支持“自建消息服务器”。你需要在工作台配置一个公网URL(例如
https://yourdomain.com/api/yoyo/callback)来接收设备上报的数据。数据格式:当用户按下墙壁上的物理按键时,平台会向你的服务器发送POST请求,携带如下数据:
二次开发任务
在你的后端(如Java, Python, Go, PHP)中开发一个
/callback接口。接收平台发送的JSON数据,解析
data字段中的power1/power2/power3值。更新你本地数据库中的设备状态,或通过WebSocket推送至你的前端界面(如微信小程序或Web管理后台),实现界面状态的实时刷新。
五、 简易代码开发示例 (Python Flask)
以下是一个极简的Python示例,展示了如何同时实现控制指令下发 和 接收物理按键状态更新:
1. 控制端代码 (下发指令)
2. 接收端代码 (接收按键事件 - Flask服务)
六、 总结与架构
通过芯步的开放接口,你无需关注底层通信协议(Wi-Fi/MQTT),只需聚焦于HTTP层面的交互:
下行控制:通过
/device/control/接口携带签名,利用power1/2/3参数即可完成远程开关与查询。上行感知:配置“消息推送”服务,将物理按键的按下动作实时同步至你的业务系统,这是实现“开关状态查询”闭环的关键环节。