CATALOG

芯步的2路直流智能开关提供了完整的HTTP API接口,支持远程控制和定时任务。以下方案将带你从接口准备、签名计算,到定时调度脚本的实现,一步步完成二次开发。

一、 技术背景与准备

芯步的智能硬件产品(如智能触摸墙壁开关、智能控制器)均开放了HTTP API接口。这意味着你可以通过任何支持HTTP协议的编程语言(Python, Java, Go, PHP, Shell等)向云端发送指令,云端再将指令下发至设备,从而实现控制

在进行二次开发前,请确认具备以下前置条件:

  1. 硬件设备:已购买并完成配网的“2路智能开关”(如智能触摸墙壁开关2路或智能控制器2路)

  2. 开发者凭证

    • AppID:应用唯一标识。

    • AppSecret:应用密钥,用于签名计算。

    • 以上两者可在芯步控制台的“开发设置”中获取

  3. 设备ID:在控制台查看目标设备的 device 字符串(通常是一串数字或字母组合)

二、 核心接口与签名机制

要实现控制,核心是调用芯步的API。出于安全考虑,所有API请求都需要进行签名校验。

1. 接口地址与参数

  • 请求URLhttps://api.thingboot.com/{AppID}/device/control/

  • 请求方法POST

  • Query参数

    • sign: 接口签名。

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

  • Body参数 (JSON)

    • device: 你的设备ID。

    • order: 控制指令(JSON对象)。

2. 签名算法

签名生成逻辑 YourSign = md5(md5(AppSecret) + ts)

  • AppSecret 进行MD5加密(得到32位小写字符串)。

  • 将上述结果拼接上当前时间戳 ts

  • 将拼接后的字符串再次进行MD5加密,得到最终的 sign

3. 支持的指令集

对于2路直流智能开关order 参数支持以下命令

指令功能Order JSON 示例说明
控制线路1{"power1": 1}{"power1": 0}1为开启,0为关闭
控制线路2{"power2": 1}{"power2": 0}1为开启,0为关闭
线路1点动{"point1": 2000}先通电,延时后断电,单位毫秒(ms)
线路2点动{"point2": 2000}先通电,延时后断电,单位毫秒(ms)
线路1互锁{"reset1": 3000}先断电,延时后通电,单位毫秒(ms)
批量控制{"batch":{"relay":[1,2],"power":"1"}}同时控制1、2路开启

三、 解决方案实施:Python脚本实现定时控制

本节将展示如何使用Python编写一个定时任务脚本,实现“每天定时开启,定时关闭”或“工作循环控制”的功能。

步骤1:环境准备

确保你的开发环境安装了 requests 库(用于发送HTTP请求)和 hashlib(用于签名)。

步骤2:编写核心控制模块

需要实现两个核心函数:签名生成函数 和 命令下发函数。

步骤3:实现定时调度方案

你可以根据实际场景选择合适的方案。

方案A:使用 schedule 库实现周期性任务

若脚本需要在后台长期运行,推荐使用此方案。以下代码实现了 “每隔10秒执行一次点动(先通后断)” 的场景,适用于需要定时冲洗、定时喷淋等工业场景。

方案B:结合Linux Crontab(适合简单定时)

如果是简单的定时开关,你可能不想写死循环。这种情况下,可以将控制逻辑写成单次执行脚本,利用系统的Crontab来触发。

  1. 保存脚本:将上述 control_device 函数单独保存为 switch.py,并通过命令行参数接收指令。

  2. 配置Crontab

四、 进阶应用:高级自动化模式

利用API接口,你不仅限于简单的开关,还可以实现更复杂的逻辑。

  1. 状态保持(防冲突):在无人值守场景下,你可能不希望现场人员手动按开关把灯关掉。可以使用“状态保持”指令,强制开关在被人为关闭后的几秒内自动恢复

    • 指令示例:{"power1": {"keep": "1", "revert": "5"}} —— 强制线路1保持开启,如果有人手动关闭,5秒后自动恢复。

  2. 场景联动:你可以将芯步的API集成到 Node-REDHome Assistant 等开源智能家居平台中。通过HTTP节点调用上述API,配合传感器(如温湿度、光照),实现“当光照低于10Lux时,自动开启2路开关”。

  3. MQTT直连(私有化部署) :如果你对实时性要求比较高或数据不上云,据产品资料显示,部分直流控制器支持 自定义MQTT 协议。你可以获取设备接入信息后,直接在局域网内通过MQTT协议订阅和控制设备,响应速度将提升至毫秒级

五、 常见问题与调试

  1. 签名错误 (Sign Error)

    • 请检查时间戳 ts 是否为秒级(10位数字),不要传成了毫秒级(13位)。

    • 检查 AppSecret 在两次MD5过程中是否包含空格或换行符。

    • 确认拼接顺序是 MD5(AppSecret) + ts,不要搞反

  2. 设备离线

    • 接口若返回设备离线,请检查设备电源是否接通,Wi-Fi信号是否强。

  3. 线路状态获取

    • 本方案侧重于“控制”。若需实时获取开关当前状态,可利用平台的消息推送机制(Webhook),或在定时脚本中增加状态查询接口(视具体产品物模型而定)

总结

通过对芯步2路直流智能开关开放接口的二次开发,你可以轻松构建出符合业务场景的自动化控制系统。核心步骤归纳为:

  1. 获取凭证(AppID, AppSecret, DeviceID)。

  2. 实现签名(MD5嵌套)。

  3. 封装指令(利用point命令实现自动复位,power命令实现常开常关)。

  4. 挂载调度(使用Python Schedule库或系统Crontab)。