CATALOG

一、先聊聊背景

做过共享自习室的朋友都知道,座位电源和灯光的自动控制是无人值守模式的痛点。用户在小程序下单后,怎么让对应座位的插座通电、台灯亮起?订单结束后又怎么自动断电?

传统方案要么让管理员手动去拔插头(太原始了),要么用复杂的PLC布线(成本高、不灵活)。

而我们的解决方案很简单:用芯步的智能通断器DC-10A + HTTP接口调用。这东西本质就是一个“联网的继电器”,你给它发个HTTP请求,它就帮你把电路接通或断开。一个设备控制一个座位,独立又灵活。

下面我就从头到尾捋一遍怎么对接。

二、DC-10A 是什么?先认识一下硬件

智能通断器DC-10A有几个特点,对自习室场景非常友好:

1. 直连WiFi,不需要网关这点很关键。有些智能设备需要额外买个网关(几百块),但DC-10A自己就能连家里/店里的2.4G WiFi,省了一笔硬件成本

2. 一路控制,简单直接它控制一路电路的通断。一个座位配一个DC-10A,控制这个座位的插座和灯(可以串在一起)。如果你们自习室有50个座位,就买50个DC-10A,每个独立控制,互不干扰。

3. 开放HTTP接口,随便什么语言都能调官方提供了标准的HTTP API,不管你的后端是Java、Python、PHP还是Node.js,甚至前端JavaScript(注意跨域问题),都能直接调用

4. 实时状态推送(这个很实用)当设备状态变化时(比如用户按了外接物理开关),它会主动推送消息到你指定的服务器地址,这样你的系统能实时同步设备状态,不用一直轮询

5. 支持点动模式(延时通断)比如你可以设置“通电3秒后自动断电”,不过自习室场景通常不需要这个,默认就是开/关两种状态。

三、准备工作:配网与获取凭证

硬件买回来后,得先把它配上网,然后拿到设备ID和API密钥。步骤如下:

3.1 设备配网(用小程序搞定)

芯步提供了一个“批量配网小程序”,操作很简单:

  1. 给DC-10A通电(用USB Type-C线供电,5V就行,手机充电头都能用)

  2. 长按设备上的按钮约10秒,直到指示灯快速闪烁(这是进入配网模式)

  3. 打开微信小程序“芯步”,登录账号(用手机号注册就行)

  4. 点击“添加设备”→选择“添加WiFi设备”→输入你们自习室的WiFi名称和密码(注意必须是2.4G频段,5G不行)

  5. 等待几秒钟,提示“配网成功”,设备就上线了

配完一个后,重复操作给所有设备配网。给每个设备设置一个有意义的名字,比如“A区-01号座位”,不然以后50个设备全叫“智能通断器”,你会疯的。

3.2 获取AppID、AppSecret和设备ID

登录芯步的控制台( ),在“开发设置”里能看到:

  • AppID:你的应用标识

  • AppSecret:你的应用密钥(别告诉任何人,也别写在前端代码里

然后在“设备管理”页面,能看到每个设备的设备ID(一串数字,比如1878),这就是你要控制的那个座位的标识

把这些信息整理成一个表格:

座位编号设备ID备注
A-011878靠窗座位
A-021879中间座位
.........

四、核心对接:代码怎么写?

这是最核心的部分。芯步的API有一个签名机制,目的是防止接口被乱调用。签名算法长这样:

  • ts 是当前时间戳(秒级),比如 1718000000

  • 先把 AppSecret 做一次MD5,得到32位字符串

  • 把这个字符串拼上 ts,再对整个拼接结果做一次MD5

4.1 完整的请求示例(伪代码/命令行)

为了方便理解,我直接用 curl 命令演示:

解释一下:

  • {"power":1} 表示接通电路(开灯/通电)

  • {"power":0} 表示断开电路(关灯/断电)

  • 设备ID可以传多个,用逗号隔开,比如 "1878,1879,1880",一次性控制多个座位

4.2 各语言的实现思路

Java(用OkHttp)

Python(用requests)

PHP

4.3 常用命令速查

场景order参数说明
开灯/通电{"power":1}接通电路
关灯/断电{"power":0}断开电路
点动(先通后断){"point":5000}通电5秒后自动断电
复位(先断后通){"reset":5000}断电5秒后自动通电

自习室通常只需要 power:1power:0

五、与自习室业务系统的集成流程

讲完技术细节,来说说实际业务流程怎么设计。

5.1 标准的预订-控制流程

第一步:用户下单用户在小程序上选择座位、支付,订单状态变为“已预订/进行中”。

第二步:系统自动通电后端收到支付成功的回调,调用DC-10A的接口:

设备响应后,座位插座和灯就通电了。用户到店直接坐下即可。

第三步:订单结束自动断电用户点击“结束学习”或预约时间到了,系统再次调用接口:

设备断电,防止下一个用户未付费蹭电。

5.2 设备状态的实时同步(重要!)

有个细节要注意:如果用户按了DC-10A外接的物理开关(可以用普通墙壁开关接到DC-10A的信号输入端),设备状态会变化,但你的系统不知道。

解决方案是配置状态推送(Webhook)

  1. 在芯步控制台设置一个回调URL,比如 https://你的域名/api/device/callback

  2. 当设备状态变化时,平台会主动POST消息到这个地址

  3. 你接收后更新数据库里该座位的状态

这样即使有人手动按开关,系统里也能同步显示“已关灯”状态。

5.3 一个座位多个设备的场景

有些自习室一个座位要控制多个设备(比如一个DC-10A控制插座,另一个控制台灯)。那就在一个座位下绑定多个设备ID,用户下单时依次发送控制命令。不过要注意并发请求,最好用队列或者异步任务处理。

六、部署与运维小贴士

1. 网络稳定性DC-10A连的是2.4G WiFi,确保自习室每个角落都有信号。如果自习室面积大,部署多个AP(无线接入点),同一个WiFi名称和密码,设备会自动连信号最强的那个

2. 设备的供电DC-10A需要5V直流供电,可以用手机充电头+USB线。但如果是装修时布线,买集中供电的5V电源,从弱电箱统一拉USB线到每个座位,这样不用每个座位都插一个充电头,整洁很多。

3. 签名的安全性千万不要在前端代码里写AppSecret!所有控制请求必须走后端。如果在小程序里直接调API,别人抓包看到你的密钥,就能随便控制所有座位了。

正确做法:小程序调用你自己的后端接口(比如 /api/seat/power),后端再调用芯步的API。这样密钥只存在服务器上。

4. 批量控制优化如果一个订单要同时开10个座位(比如团体预约),不要循环发10次HTTP请求,太慢了。直接用 device 参数传多个ID,用逗号隔开:

一次请求搞定

5. 响应时间官方说平均80-120ms的延迟,用户基本无感知。但如果网络不好可能会超时,加个重试机制(比如失败后隔1秒再试一次,最多3次)。

七、总结

把DC-10A对接到自习室系统,本质上就是学会调用一个带签名的HTTP接口。三步走:

  1. 配网:用小程序把设备连上WiFi

  2. 拿凭证:记下AppID、AppSecret和设备ID

  3. 调接口:下单时发 power:1,结束时发 power:0

这个方案的好处是:开发成本极低(一下午就能搞定对接),扩展方便(加座位就加设备),运维省心(直连WiFi,不需要网关)。

最后提醒一句:上线前先在测试环境把流程跑通,特别是签名生成那块容易错。如果遇到问题,芯步的文档和客服支持挺全的,直接找他们就行。

祝你的共享自习室生意兴隆,灯随人亮,人走灯灭!