一、我们到底要解决什么问题?
先聊聊“点动”和“自锁”这两个概念,搞清楚了后面就好办了。
自锁模式:就是常说的“开关”。你发指令“打开”,它就一直开着;发指令“关闭”,它才关掉。像控制照明灯、风扇、饮水机这些需要长时间通电的设备,就用自锁。
点动模式:像门铃或电控锁。发一次指令,通一下电,立马又断了。哪怕你网络卡了连发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毫秒:
发
{"power1": 1}让继电器吸合等待0.5秒
发
{"power1": 0}让它断开
用Python演示,逻辑很直白:
如果并发量大,点动用异步方式(如celery或redis延迟队列),避免线程阻塞。
四、使用硬件原生点动(进阶玩法)
新版本固件支持硬件级点动,即只发一次指令,设备自动完成通断。命令格式为 point 或 reset
point(先通后断):
{"point": {"relay": [1, 2], "interval": 1000}}→ 1、2号先通,1秒后自动断reset(先断后通):
{"reset": {"relay": [1], "interval": 500}}→ 1号先断,0.5秒后自动通
这种方式不受网络延时影响,也不需要在服务端做延时等待,响应干脆利落。
五、业务场景
灯、风扇:用自锁,省事
电插锁、门磁、急停:用点动,一般200~500ms足够,防止线圈烧坏
电机正反转:涉及两个继电器互锁,请一定要先断一个再通另一个,强烈用
reset指令加延时重要设备:如果后端是PLC或接触器,信号尽量拉长到1秒以上,留够响应时间
六、常见坑点
签名不对
md5(md5(AppSecret)+ts)容易拼错,检查ts单位是秒、拼接时无额外字符返回200但没反应:设备可能离线,监听异步推送确认执行结果
点动变长通:中间有异常没执行到断开指令,请用
try...finally或硬件原生point指令保证健壮性
芯步这套接口挺友好的,希望这篇能帮你少踩点坑。如果有更多问题,可以直接联系芯步的工程师,他们会免费提供全程技术支持。