芯步的86型2路WiFi开关开放了完整的HTTP API接口,既支持远程云端控制,也能获取本地按键事件。这意味着你可以在保留传统按键手感的同时,为它开发App远程控制、定时任务或与其他设备联动的能力。以下方案从设计到代码实现,拆解整个二次开发过程。
一、 解决方案设计
二次开发的核心在于桥接“本地物理操作”与“远程网络控制”。基于UNI-KG-2设备的特性,我们采用云边协同架构。
设备层:芯步86型2路WiFi开关。负责接收物理按键点击(输入)和执行继电器通断(输出)。
业务层:您的业务服务器 / 芯步云。负责处理签名验证、设备状态同步、业务逻辑(如定时任务)。
控制层(客户端):手机APP或Web管理后台。通过调用HTTP API下发指令。
核心交互流程:
本地控制:用户触摸物理按键 -> 开关状态改变 -> 控制继电器 -> 设备主动上报状态至云端 -> 云端推送至APP。
远程控制:APP点击按钮 -> 调用芯步云端API -> 云端下发指令至设备 -> 设备执行动作 -> 返回结果至APP。
二、 本地二次开发:如何捕捉触摸事件
虽然设备是成品,但芯步提供了HTTP API接口,我们可以通过监听设备状态变化的上行消息,来实现“本地触发,云端联动”。
要使设备能够上报本地触摸事件,需要在开发控制台进行设置。
配置消息推送URL在芯步控制台,找到【开发设置】->【消息推送】。填入您的服务器公网地址:
https://yourdomain.com/api/device/callback。开启设备上报确保该2路开关的产品定义中,开启了“设备主动上报状态”功能。这样,当用户触摸物理按键时,开关会向云端推送一条JSON数据,云端再转发给您的服务器。
回调数据格式解析:当用户按下第1路物理按键时,您的服务器会收到如下格式的POST数据:
二次开发逻辑示例(Python Flask):
三、 远程二次开发:云端与控制集成
这是实现“双控制”的关键。您无需关心底层WiFi协议,只需调用平台统一的HTTP API。
第一步:获取凭证在芯步控制台的【开发设置】中获取:
AppID:应用的唯一标识。AppSecret:秘钥,用于计算签名 。
第二步:签名计算接口采用动态签名机制保障安全,规则如下:Sign = md5( md5(AppSecret) + ts )其中 ts 为Unix时间戳秒数 。
第三步:调用控制接口使用POST方法调用以下URL:https://api.thingboot.com/{AppID}/device/control/?sign={Sign}&ts={ts}
请求体示例(控制第一路开启):
(注意:针对不同的设备,命令格式可能为{"power1":"1"},具体参考产品手册)
二次开发代码示例(通用JavaScript Fetch):
四、 高级场景配置:解决“双控”冲突
在实现“本地+远程”双控时,常遇到物理开关关灯后,远程软件显示状态为“关”,但远程无法开灯的问题(死区状态)。利用该开关的状态保持(Lock)功能可以解决。
场景应用: 例如在酒店客房,客人拔出取电卡后,您希望强制关灯,但客人手动开灯无效。
开发配置:您可以下发特定JSON命令,锁定开关状态。
效果:用户手动打开第1路开关后,设备会在10秒后自动将其关闭。在此过程中,远程指令(如下发关闭)依然拥有最高优先级 。
五、 总结
二次开发芯步UNI-KG-2开关本质上是对其HTTP API的集成:
底层逻辑:通过API调用替代物理按键信号,实现远程命令下发;通过消息回调监听物理按键动作,实现本地状态的云端同步。
实施:先利用Postman调试令牌和接口,成功后再集成代码;并利用“状态保持”等特色功能优化用户体验。
注意事项:签名算法需精确拼接字符串,设备ID为字符串类型,请求时注意POST格式 。