CATALOG

一、我们到底要解决什么问题?

先聊聊“点动”和“自锁”这两个概念,搞清楚了后面就好办了。

  • 自锁模式:就是常说的“开关”。你发指令“打开”,它就一直开着;发指令“关闭”,它才关掉。像控制照明灯、风扇、饮水机这些需要长时间通电的设备,就用自锁

  • 点动模式:像门铃或电控锁。发一次指令,通一下电,立马又断了。哪怕你网络卡了连发10次,每次也就是“通-断-通-断”。像控制电插锁、电磁阀、报警器这种只需要脉冲信号的设备,点动最合适。

芯步的8路控制器本身是“自锁”底层的,因为基础命令 {"power1":1} 就是让继电器保持吸合。要实现点动,需要我们自己在软件层面模拟,也就是“通→等一会儿→断”的逻辑

二、搞清楚你的设备和钥匙

UNI-KZQ-TY-8的核心优势在于HTTP接口开放、支持局域网和私有化部署,响应速度极快,从命令下发到设备执行大约只需要80-120毫秒

  • 接口地址http(s)://api.thingboot.com/{你的AppID}/device/control/

  • 鉴权方式:签名sign = md5(md5(AppSecret) + ts)

  • 核心参数:device(设备ID)、order(JSON命令)

order常用值举例:

  • {"power1": 1} → 1号口吸合(通)

  • {"power1": 0} → 1号口断开(断)

  • {"batch": {"relay": [1,3], "power": 0}} → 1、3号口一起断

三、方案实现:两种模式的代码逻辑

自锁直接发指令即可,重点说一下点动模式的实现。

假设你的设备ID是 11223344,要控制第1路做点动,延时500毫秒:

  1. {"power1": 1} 让继电器吸合

  2. 等待0.5秒

  3. {"power1": 0} 让它断开

用Python演示,逻辑很直白:

如果并发量大,点动用异步方式(如celery或redis延迟队列),避免线程阻塞。

四、使用硬件原生点动(进阶玩法)

新版本固件支持硬件级点动,即只发一次指令,设备自动完成通断。命令格式为 pointreset

  • point(先通后断):{"point": {"relay": [1, 2], "interval": 1000}} → 1、2号先通,1秒后自动断

  • reset(先断后通):{"reset": {"relay": [1], "interval": 500}} → 1号先断,0.5秒后自动通

这种方式不受网络延时影响,也不需要在服务端做延时等待,响应干脆利落。

五、业务场景

  • 灯、风扇:用自锁,省事

  • 电插锁、门磁、急停:用点动,一般200~500ms足够,防止线圈烧坏

  • 电机正反转:涉及两个继电器互锁,请一定要先断一个再通另一个,强烈用 reset 指令加延时

  • 重要设备:如果后端是PLC或接触器,信号尽量拉长到1秒以上,留够响应时间

六、常见坑点

  1. 签名不对md5(md5(AppSecret)+ts) 容易拼错,检查ts单位是秒、拼接时无额外字符

  2. 返回200但没反应:设备可能离线,监听异步推送确认执行结果

  3. 点动变长通:中间有异常没执行到断开指令,请用 try...finally 或硬件原生 point 指令保证健壮性

芯步这套接口挺友好的,希望这篇能帮你少踩点坑。如果有更多问题,可以直接联系芯步的工程师,他们会免费提供全程技术支持