CATALOG

芯步的设备本身就带“先断后通”(reset)这类延时命令,实现延时控制其实不用写复杂的定时逻辑——直接调用接口参数就行。下面我把硬件接线、接口调用、代码示例串起来说,偏口语化,方便你照着做。

一、 先看硬件:这套方案需要什么“料”?

要实现门禁和灯光联动,你需要把传统的“机械按钮”升级为“逻辑信号”。

  1. 核心设备:多路智能控制器选用芯步的4路、8路或12路智能照明控制器

    • 怎么接线? 把LED照明灯接在控制器的第1路(L1/N1)上;把门禁的电磁锁电源接在第2路(L2/N2)上。

    • 为什么要分开? 这样你可以独立控制门锁供电和灯光,互不干扰。

  2. 信号源:门禁读卡器/出门按钮你需要确认门禁系统是否有“信号输出”功能。大多数门禁在合法刷卡成功时,会输出一个短暂的 “开关量信号” (比如继电器瞬间闭合)。

    • 怎么接? 把这个信号线接到控制器自带的 “开关量输入端子”。这样一来,门禁就像一个人的手指,按了控制器的一个“虚拟按钮”。

物理拓扑图(大白话版):

门禁(刷卡/人脸识别成功) —— 触发信号 —— 【芯步控制器 输入端口】 —— 根据内部逻辑 —— 【芯步控制器 输出端口】 —— 控制 —— LED灯 / 警报器

二、 核心逻辑:不用写代码也能延时?(利用设备底层指令)

很多人在做二次开发时,容易犯一个错:把延时逻辑写在云端服务器里(比如设置一个Sleep函数)。这样一旦网络抖动,灯就关不上。

正确的做法是: 利用芯步设备内置的 “先断后通” 指令。

查询芯步的开放接口文档你会发现,控制照明路数的命令除了简单的 {"power1":1} (立即开) 和 {"power1":0} (立即关),还有一个神奇的指令叫 resetpoint

  • resetX (先断后通):这名字听着绕口,功能很实用:立刻开启,保持开启一段时间后自动关闭

    • 这不就是我们想要的“人来灯亮,人走灯灭”吗?

三、 实战开发:手把手写代码(Python版)

假设场景:当有人刷门禁,门锁打开的同时,门厅的灯也要亮,并且保持亮 60 秒后自动熄灭。

第一步:绑定事件

你需要写一个脚本(运行在服务器或树莓派上),这个脚本一直在后台跑,专门接收控制器的状态反馈。当脚本收到“门禁端口被触发”的消息时,就执行下面的代码。

第二步:调用API下发指令

这里我们调用芯步标准的HTTP接口。你不需要关心具体的电压电流,只要发送一个HTTPS请求就行了

重点解释:发送 {“reset1”: 60000} 这个指令后,控制器会立即闭合继电器(灯亮),同时在芯片内部开启一个倒计时。倒计时结束后自动断开(灯灭)。即使你的服务器这时候宕机了,60秒后灯依然会灭,因为它是由硬件执行的

第三步:进阶玩法(光感+延时)

如果觉得不管白天黑夜只要有人经过就开灯太浪费,可以在上述逻辑中间再加一层判断。

你可以再利用控制器的一个输入口,接一个光敏传感器修改后的逻辑:IF 门禁触发 == True AND 光敏传感器 == 低电平(表示天暗了):执行 {“reset1”: 60000}ELSE:只开门,不开灯。

这种“与”逻辑的判断也非常简单,只需要在你的脚本里加一个 if 语句判断对应输入端口的返回值就可以了

四、 避坑指南(说点实在的)

1. 该用 reset 还是 point

  • 门带灯(门厅照明):用 reset (先通电后断电)。这就是标准的人来灯亮,人走灯灭。

  • 电动门/道闸:用 point (先断电后通电?不,其实是脉冲信号)。point 指令是让继电器闭合一下马上断开,模拟“点动”按钮。这适用于那种按一下按钮,电机自己转,转到位自动停的道闸

2. 网络断了怎么办?如果WiFi断了,你的服务器发不下指令怎么办?这时候要靠硬接线你可以把出门按钮直接接到控制器的输入端,然后在控制器的后台管理界面(Web端)做一个 “联动” 设置:设定当输入端X有信号时,输出端Y执行 reset 60000。这样,即使外网断了,局域网内或者物理线缆依然能让灯光延时

3. 代码里的 Sign 算法很多新手都卡在 md5(md5(secret)+ts) 这一步。直接复制芯步官方提供的代码片段,把参数填进去,不要自己手写字符串拼接,容易因为字符集问题报签名错误

总结

你不用去写复杂的 sleep 或定时器。唯一的技巧就是:命令里把“延时时间”作为参数直接传给控制器。 这样既稳又准。