CATALOG

这是一个关于如何将芯步AC1-10A智能通断器(或者他们家的包间控制器、照明控制器)集成到你自己的软件项目中的实战指南。

我们将以一个共享自习室/共享棋牌室的“用电管理”为背景,讲明白怎么把这套硬件玩转起来。

一、先聊聊痛点:为啥要折腾这个?

搞过共享空间的朋友都知道,最大的成本一是房租,二是电费,最大的麻烦是客户忘了关电客户下单了,灯亮了,空调开了;客户时间到了走了,灯却没关。一晚上下来,电费哗哗的,利润全跑电表里去了。

这时候,我们就需要给场所装上“大脑”。芯步的AC1-10A智能通断器(或者他们的包间控制器),说白了就是一个可以联网的继电器。你这头在服务器敲一行代码,他那头的2200W大电器(灯、麻将机、饮水机、甚至空调)立马就通电或者断电。

我们要做的,就是把这个硬件的HTTP开放接口,嫁接到你的小程序或管理后台里。

二、硬件是啥?—— 认识一下咱们的工具

我们主要用的是两个类型的设备,看你的需求选:

  1. 基础款(智能通断器AC1-10A):这家伙就是个单路开关,一对一。适合控制单个设备或者一个房间的总闸

  2. 进阶款(包间控制器/8路控制器):这玩意牛,8路输出。你一个房间里,第1路接照明灯,第2路接麻将机,第3路接空调,第4路接排气扇……全部独立控制,互不干涉

口语化解释: 你就把这些硬件当成一个插在电线中间的 “智能插座” ,只不过这个插座功率很大,而且可以通过网址链接(HTTP接口)来控制它的开和关。

三、核心干活环节:怎么把开关“塞”进代码里?

别慌,芯步的接口做得还算简单,不用搞复杂的SDK,就是发HTTP请求。

第一步:准备工作

你得先拿到三样东西(在芯步的控制台里找):

  1. AppID:你是谁?(你的应用标识)

  2. AppSecret:你的密码(用来加密的,别泄露)

  3. Device ID:你要控制哪台设备?(那个硬件盒子身上贴的码)

第二步:算一下签名

这是为了防止别人乱发指令控制你的开关。算法是这样的(其实就是防止篡改):

  1. 把你拿到的 AppSecret 先 MD5 加密一次。

  2. 把加密结果拼接上当前的时间戳(比如 1712280000)。

  3. 把拼接好的字符串再 MD5 加密一次。

最终你就得到了一个叫 sign 的东西。这一步你复制官方给的代码块,改一下密钥就行,不需要你从头写算法

第三步:发指令(开干!)

这是最爽的一步。你想开灯,就在你的服务器后端(记住是后端,别在前端直接调)发一个POST请求。

请求地址看起来像这样:https://api.thingboot.com/你的AppID/device/control/?sign=算出来的签名&ts=当前时间戳

请求内容(Body):

解读:“power1”:1 就是打开第1路电路。如果是 “power1”:0 就是关闭。如果是 “power2”:1 就是打开第2路

就这么简单!你的服务器一发这个请求,如果设备WiFi通着,灯马上就亮。

四、实战场景:共享棋牌室的“一键排钟”

咱们结合业务场景,聊聊怎么把这套接口玩出花。

第一种场景:用户下单,自动通电

业务逻辑: 客户在小程序付了2小时的钱,点击“开台”。后台逻辑:

  1. 收到支付成功的回调。

  2. 数据库里记录:房间A,订单号XXX,开始时间。

  3. 调用接口:

    • 发指令 {"power1": 1} (开灯)

    • 发指令 {"power2": 1} (开麻将机)

    • 发指令 {"power3": 1} (开空调)

  4. 高阶玩法: 如果设备支持语音,发一条指令 {"play:gbk:16":"欢迎光临,祝您玩的开心"},用语音播报提醒用户

第二种场景:时间快到了,弹窗提醒+“恐吓”

业务逻辑: 还剩5分钟。后台逻辑:

  1. 写一个定时任务,扫描即将到时间的订单。

  2. 发指令:{"play:gbk:16":"您本次消费还剩5分钟,如需续费请扫码"}

  3. 发指令:{"power2": 0} (偷偷把麻将机关一下,然后又开一下,制造一点小惊吓,提醒用户续费——这个属于骚操作,慎用,但很好用)。

第三种场景:超时断电,自动巡房

业务逻辑: 时间到了,用户没续费。后台逻辑:

  1. 订单状态变成“已过期”。

  2. 调用接口:

    • {"power2": 0} (关麻将机)

    • {"power1": 0} (关灯——注意:别全关!

  3. 关键点: 很多时候空调是预付费的,千万不能关总闸,否则客户交了电费没输密码,你一关总闸,空调外机主板电容放电,客户钱白充了。所以一般只关照明和娱乐设备,保留空调或者保留一个“总电源”给前台手动处理。

五、进阶技巧:怎么知道设备真的关了?(Webhook回调)

光发指令还不行,万一设备掉线了,你发了关,但没关掉怎么办?芯步提供了消息推送机制

你需要在你自己的服务器上写一个接收地址(比如 https://你的域名/api/device/callback)。在芯步后台配置好这个URL后,只要设备状态变了(不管是按键按的,还是你远程控制的),芯步的服务器会主动给你这个地址发一个POST请求。

逻辑处理:收到回调 -> 解析数据 -> 发现 power1 从 1 变成了 0 -> 更新数据库里房间A的状态为“已断电” -> 记录日志。这样你的后台数据就是准的,不用瞎猜。

六、给新手开发者的避坑指南

  1. 感性负载要注意: 说明书上写的2200W,那是指灯泡这种阻性负载。如果你接的是电机(麻将机)或者旧式空调,功率要除以3甚至除以5来算。不然容易烧触点

  2. 签名千万后端做: 再次强调,AppSecret(开发者密码)永远不要写在小程序前端或者APP代码里。必须在你的服务器后端计算签名,防止别人反编译你的APP盗取密钥

  3. 批量控制: 如果你想一次性把房间所有的灯关了,不用发8条指令。官方支持批量命令,比如发 {"batch":{"relay":[1,2,3,4,5,6,7,8],"power":0}},一条指令全关完

  4. 网络要求: 这玩意只支持 2.4G WiFi。现场布线的时候,如果5G WiFi和2.4G同名,可能会配网失败。现场专门开一个2.4G的访客网络给设备用,或者把路由器双频分开

总结

把芯步的AC1-10A集成到项目里,其实就是调三次API的事:第一次算签名,第二次开电,第三次关电。

有了这套接口,你的共享空间就从一个“靠人工跑腿”的场所,变成了一个全自动化的智能空间。省下来的电费和人力的时间,就是你赚到的纯利润。