CATALOG

芯步的三开智能触摸开关支持通过 HTTP API 进行远程控制,你可以基于其开放接口,在自己的服务器上实现定时任务调度。以下方案涵盖硬件准备、接口对接原理、签名计算,以及定时任务的完整代码逻辑。

解决方案:基于芯步开放接口实现三开智能触摸开关定时控制照明

1. 概述

本方案的目标是通过调用芯步提供的开放 HTTP API 接口,结合您自己的服务器或云端逻辑(如定时任务),实现对“三开智能触摸开关”的远程定时控制。

核心逻辑是:您的服务器在预设的时间点,向芯步云平台发送经过签名的 HTTP 请求,平台将该指令下发给设备,从而控制对应照明的通断

2. 适用硬件与准备

  • 硬件:芯步 智能触摸墙壁开关(3路) 。该设备支持标准 86 盒安装,可直接替换家中原有开关,通常支持 WiFi 联网

  • 前置条件

    1. 设备已通电并成功连接至互联网。

    2. 已在芯步官网注册开发者账号,并创建了“工作台”。

    3. 设备已添加至您账号下的“物联网控制台”中,并能正常显示在线状态。

    4. 获取关键凭证:在控制台的“开发设置”中获取 AppIDAppSecret,并记录设备的唯一标识 Device ID

3. 接口对接机制

芯步开放平台采用标准的 HTTP 请求进行通信。为了安全,所有 API 请求均需携带签名。

  • 请求地址https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}

  • 请求方法: POST

  • 数据格式: JSON

  • 鉴权机制请求中必须包含签名 sign 和时间戳 tssign 的生成算法(伪代码):Step1: encode_1 = md5(AppSecret)Step2: raw_str = encode_1 + tsStep3: sign = md5(raw_str)注意:ts 为当前的 Unix 时间戳(秒),与服务器时间误差不宜过大

4. 命令协议详解:如何控制三路开关

本设备最核心的功能是通过 power1power2power3 命令分别独立控制开关的三路继电器

命令结构示例:

功能描述请求 Body (JSON)说明
开启第1路 (如客厅灯){"device":"设备ID", "order":{"power1":1}}1 代表开启,0 代表关闭
关闭第2路 (如餐厅灯){"device":"设备ID", "order":{"power2":0}}
开启第3路 (如走廊灯){"device":"设备ID", "order":{"power3":1}}
点动控制 (第1路){"device":"设备ID", "order":{"point1":"2000"}}线路先接通,延时后断开(单位毫秒),适用于暂态控制(如楼道灯)

5. 定时任务实现步骤

您可以选择在服务器端使用 Python、PHP、Java、Node.js 等任何支持 HTTP 请求的语言编写脚本。以下以 PythonLinux Crontab 为例。

第一步:编写 API 调用核心函数

你需要封装一个函数,用于向芯步发送指令。核心难点在于 sign 的计算。

第二步:设置定时任务(以 Linux Crontab 为例)

假设你的服务器需要实现每天 18:00 开启第1路照明23:00 关闭第1路照明

  1. 编写业务逻辑脚本 (control_light.py)

  1. 配置 Crontab 定时任务在终端输入 crontab -e,添加以下两行:

第三步:更复杂的定时场景(一周循环)

如果你需要实现“每周一至周五早上8点开灯”,逻辑与上类似,只需修改 Crontab 表达式即可:

6. 本地局域网控制(低延迟方案)

如果你的服务器与智能开关处于同一局域网内,且希望不受外网波动影响,芯步设备通常也支持局域网 HTTP 控制(需查阅具体固件支持情况)。

  • 原理:直接请求该设备在局域网内被分配的内网 IP 地址。

  • 优点:响应速度极快(毫秒级),不依赖外网带宽。

  • 注意:操作指令格式与云端 API 基本一致,但 IP 地址通常由路由器 DHCP 分配,在路由器中将该设备 IP 设为静态,以防 IP 变动导致控制失效

7. 最佳实践和需要注意的点

  1. 设备状态同步:单纯依靠定时指令是“单向”的。如果用户通过物理按键手动关闭了灯光,而你设定的定时任务到了时间依然会发送“开启”指令(虽然用户看不到,但灯会突然亮起)。在控制逻辑中配合状态查询接口(如有)或利用“点动模式”来避免误判。

  2. 时间同步:执行定时的服务器必须开启 NTP 自动对时,确保时间精准。

  3. 点动模式应用:对于卫生间或楼道照明,可以使用 point1 命令(例如 {"point1":"60000"},即开启1分钟后自动关闭),无需在服务器端写“关灯”指令,设备本地自动执行,更加稳定

  4. 调试:在进行代码编程前,强烈使用 Postman 这类工具手动构造一次签名和请求,确认 API 连通无误后再进行代码编写