CATALOG

这是一个关于芯步24路多线路集中控制器(也叫智能通用控制器)的对接方案。

我们就把它想象成一个“可以通过互联网遥控的超级排插”,有24个插孔,软件要做的就是通过网络告诉它“哪个孔通电,哪个孔断电”。

下面我会从准备工作、接口调用、项目里的代码封装,以及怎么处理异常这几个方面来聊。尽量说人话,少一些难懂的术语。

一、 搞清楚硬件的“脾气”和“暗号”

在写代码之前,我们先得摸清这个控制器的底细。

根据芯步的公开资料,这款24路控制器(型号通常为UNI-KZQ-TY-24)虽然长得像个铁盒子,但其实它内部已经集成了联网模块(Wi-Fi)。这意味着它不需要那些复杂的PLC或串口服务器,直接插上网线或者连上Wi-Fi,它就能跟云平台说话。

  • 控制对象:它支持24路独立的通断控制。如果你控制售货柜的24个弹簧马达,或者控制24个LED灯带,直接接上就行。如果是大功率压缩机,外接接触器,别把这小盒子烧了。

  • 通信协议:它使用HTTP协议。也就是说,不管你后端用Java、Python还是PHP,只要你能发HTTP请求,就能控制它

  • 核心指令:控制这个设备的关键参数是 order。例如,想打开第1路,就发 {"power1": 1};想关掉第8路,就发 {"power8": 0}

二、 对接前的准备工作

动手之前,先去芯步的官方平台注册一下(他们开放平台目前是免费的),拿到三把“钥匙”:

  1. AppID:你的应用ID,相当于车牌号。

  2. AppSecret:你的密钥,相当于密码,千万别把它写在前端代码里

  3. Device ID:就是那台24路控制器外壳上贴的ID号。

这里有个小坑要留意:芯步的接口为了安全,做了签名校验。也就是说,你不能直接明文发“开门”指令,得按照规则生成一个 sign 签名。

签名算法(这里用大白话解释一下):

  1. 先把你的 AppSecret 进行一次MD5加密,得到字符串A。

  2. 把当前的Unix时间戳拼在字符串A后面,得到字符串B。

  3. 再把字符串B进行一次MD5加密,最后得到的那串字符就是 sign

*公式:sign = md5( md5(AppSecret) + ts)*

三、 实战:用代码指挥第7号货道弹出可乐

假设现在有一个场景:用户在App上买了C7货道的可乐,软件需要控制控制器把第7路接通2秒钟,然后断开(模拟电机旋转一圈)。

第一步:计算签名(以Python为例)

这一步虽然麻烦,但是必须的。你可以把这个计算封装成一个工具函数。

第二步:下发指令(控制“开”)

我们需要调用这个地址:https://api.thingboot.com/{AppID}/device/control/

第三步:实现“点动”逻辑

售货机出货通常需要“转一下即停”。如果完全依赖软件发两条指令(先开再关),一旦那时候网络卡顿,电机可能就会一直转,导致卡货或多出货。

方案:利用设备本身的point(先通后断)命令。虽然官方文档里列了这个指令,但实际使用时,配合定时任务。稳妥的做法是:前端请求后端 -> 后端发{"power7": 1} -> 线程sleep 1秒 -> 后端发{"power7": 0}

四、 批量控制与性能优化

这有个24路的控制器,如果是一个大型售货柜(比如卖饮料+卖零食+带灯箱),我们可能需要同时控制多路。

芯步的接口是支持批量控制的,你可以通过一条指令控制多个设备,或者控制一个设备的多路开关

批量控制24路的小技巧:不要连续发24次HTTP请求,那样太慢了,而且可能会触发接口的频率限制(官方单个设备1次/秒)。最好是在你的代码里构建一个大的JSON对象,一次性把24路的状态全告诉它,或者只发变化的指令。

例如,如果需要开启库存盘点时的照明灯,可能一次要打开好几路,可以调用批量指令:

五、 高级玩法:本地化部署,断网也不怕

做自动售货机最怕什么?当然是延迟断网。如果每一次控制都要去绕一圈云端,万一光纤被挖断了,机器就全瘫了。

好消息是,芯步这套硬件支持私有化部署局域网控制

  • 云端模式:适合分布在不同地点的机器,运维方便,只要有网就行。

  • 局域网模式:如果你的软件项目跑在售货机内部的一块主板(比如树莓派或安卓工控板)上,可以直接通过内网IP控制控制器,那响应速度就是毫秒级的。

操作如下:

  1. 在路由器里把控制器的IP地址固定下来。

  2. 你的软件直接请求:http://192.168.1.xxx/...,不再走公网API。

六、 总结:整体对接架构图

捋一下整个流程,代码写起来就顺了:

  1. 硬件层:24路控制器接线完毕,连通Wi-Fi/网线,接入电源。

  2. 接口层:后端封装一个通用的 YoyoiotService 类,处理签名(Sign)、路由和重试机制。

  3. 业务层

    • 出货逻辑:用户扫码支付 -> 回调通知 -> 调用 control_device(device_id, 7, 1) -> Sleep 1s -> 调用 control_device(device_id, 7, 0)

    • 运维逻辑:管理员在后台点“开灯”,调用 control_device(device_id, 24, 1)

  4. 反馈闭环:这一点官方文档提到,200状态码只代表平台收到了指令,不代表设备执行成功。如果业务要求高,开通消息推送(设备执行后会主动告诉服务器“我开了”),用异步消息来更新数据库里的状态。

希望这些能帮到你。对接这种物联网硬件,关键就是把官方给的demo跑通,剩下的就是业务逻辑的堆叠了。如果在代码封装上有什么具体问题,随时再问~

控制器产品方案:
怎样在店铺照明设备控制中集成智能设备以实现4路独立线路控制
查看 >>
线下服务门店包间管理:如何将8路包间综合管理控制器接入到项目中
查看 >>
智慧教室灯光设备集中控制:怎样把12路分体智能配电控制箱集成到自己的项目中
查看 >>
如何在共享自习室独立包间控制中对接智能设备来实现包间智能语音联动控制
查看 >>
怎样接入8路防水防尘控制箱来实现远程控制8路线路
查看 >>
货柜场景方案:
自助售货柜通断电控制:如何把40A带计量联动控制智能空开接入到自己的项目中
查看 >>
自助售货柜通断电控制:怎样将40A额定 8800W 断路器接入到软件项目中
查看 >>
自助售货柜通断电控制:怎么将40A带计量数显远程智能空开接入到项目中
查看 >>
自助售货柜通断电控制:如何将智能大功率断路器计量版40A接入到软件项目中
查看 >>
怎么在自动售货柜控制中集成智能设备来实现点动/自锁模式切换
查看 >>
自动用途方案:
如何对接AC1-10A 物联网开关来实现过流自动断电控制
查看 >>
如何接入5位智能分控PDU以实现过流自动断电控制
查看 >>
共享棋牌室自动照明控制:怎样把智能人体存在传感器吸顶雷达版集成到自己的项目中
查看 >>
自动贩卖机电路管理:怎样将AC1智能通断器对接到项目中
查看 >>
自动售货柜电源控制:怎么将智能总控PDU5位对接到项目中
查看 >>