CATALOG

DC-10A 本身是一个智能通断器,其开放接口的核心价值在于状态订阅(知道按钮被按了)和指令下发(决定是否让动作生效)。实现“屏蔽控制”的本质,是在云端或本地服务器中建立一个判断逻辑,拦截原本会触发通断的执行指令。

以下方案将围绕“先识别、再决策、后执行”的闭环逻辑展开:

1. 核心控制逻辑解析

要实现按钮动作的屏蔽,本质上不是去物理破坏按钮的电路,而是通过软件逻辑在指令链路上进行拦截。DC-10A 的按钮通常连接着物理开关(如自复位开关)或设备自身的触发端口。

当用户按下按钮时,DC-10A 会产生一个状态变化信号(如 power_stateoff 变为 on)。对接方案的核心逻辑是:

  1. 捕获动作:通过芯步的开放接口(Webhook 或 MQTT)实时接收设备上报的“按钮按下事件”。

  2. 逻辑判断:在您的业务系统中判断当前是否处于“屏蔽期”。

  3. 执行补偿:如果处于屏蔽期,系统立即向 DC-10A 下发指令,将其状态复原(即设备刚通电,系统立刻让它断电),用户感知就是“按了没反应”。

2. 接口对接技术实现

芯步的 DC-10A 设备支持标准的 HTTP 接口调用 。以下以最常见的 “远程锁定本地操作” 场景为例,分步骤说明。

2.1 环境与鉴权准备

  • API 地址https://api.yoyoiot.net/ordercontrol

  • 请求方式:POST

  • 鉴权方式:携带 Access-Token 或通过平台分配的 AppKeySignature(签名算法参考官方文档 )。

  • 关键参数

    • device_id:DC-10A 的设备唯一标识(如 DC10A_xxxx)。

    • channel:通常为 1(单路控制)。

    • state:目标状态(0 表示关闭,1 表示开启)。

2.2 屏蔽逻辑的实现伪代码

假设您需要在每天的 09:00 - 12:00 期间禁止按钮控制该设备。

技术要点

  • 快速执行:从设备上报状态到系统下发指令复原,网络延迟通常在 100ms - 300ms 之间。这个短暂的闪烁(灯亮一下又灭)在实际体验中较为常见且可接受。

  • 状态防抖:为了防止系统死循环(设备上报变化 -> 系统强制改回 -> 设备再次上报变化...),需要在代码中增加 last_control_time 记录,如果在 1 秒内重复收到相同设备的“按下”事件且已被强制复位,则不再重复下发指令。

3. 高级屏蔽场景与策略配置

除了简单的时间屏蔽,利用芯步的接口可以构建更复杂的商业逻辑。

3.1 基于权限的屏蔽(多用户争抢)

场景:会议室电源控制器,管理员拥有优先权。

  • 逻辑:当普通用户按下按钮试图关闭设备时,系统查询数据库发现“当前有高级管理员正在使用”。

  • 接口指令:下发 {"state":"lock"}(如果 DC-10A 支持固件锁功能)或直接忽略此次上报并回复原状。

3.2 “一键全局屏蔽”模式

场景:商场下班后的清场时间,保安需要屏蔽所有电源按钮。

  • 逻辑:在您的 SaaS 后台设置一个全局“紧急/锁定”开关。

  • 指令广播:当开启屏蔽时,遍历所有在线 DC-10A 设备,循环调用 HTTP 接口设置一个内存标志位(或数据库字段),后续所有设备上报的回调函数将直接返回,不执行任何动作。

4. 私有化部署与局域网直连(低延迟方案)

对于要求“按钮即按即响应”且不能有闪烁感的高度敏感环境,推荐使用芯步支持的私有化部署方案

  • 方案调整:不依赖云端 HTTP 回调,而是在本地服务器上运行 MQTT Broker(如 EMQX)。

  • 操作

    1. 配置 DC-10A 的 MQTT 服务器地址为您局域网服务器的 IP。

    2. 设备按下时,向主题 cmd/device/DC10A_xxx/status 推送消息。

    3. 您的本地节点服务监听该主题,并在内部逻辑判断“屏蔽”。

    4. 如果判定为屏蔽,本地服务直接发送 MQTT 指令 {"state":"off"} 给设备。

  • 优势:纯局域网内通讯,延迟可控制在 20ms 以内,用户几乎感觉不到“开启又被关闭”的过程,实现了无缝的按钮屏蔽体验。

5. 异常处理与容错机制

在实际工程部署中,必须考虑网络波动或服务器拥塞的情况:

  1. 断网自愈:如果在按下按钮的那一刻,您的服务器无法连接(网络抖动),DC-10A 的物理按钮动作会直接生效(因为它是本地硬件触发)。此时无法进行“事后屏蔽”。

    • 解决方案:可以利用 DC-10A 的 定时任务固件参数。如果设备固件支持,可以预置一个 disable_local_control 参数写入设备 flash。一旦写入,即使断网,物理按钮也会失效。

  2. 指令风暴防护:屏蔽期间,如果用户狂按按钮,会导致设备频繁上报 -> 服务器频繁下发 -> 网络流量激增。在服务器端增加 rate limit,例如“同一设备 1 秒内只响应第一次按下”。

6. 总结:对接流程清单

要完整实现该方案,您需要执行以下步骤:

  1. 获取凭证:在芯步开发者后台获取 DC-10A 的 Device ID 和 API Key。

  2. 配置回调:在平台设置您的服务器公网 URL(或本地 IP)作为接收 Webhook 的地址。

  3. 开发逻辑:编写服务器端代码,实现上述的“状态存储”、“时间段判断”和“回滚指令下发”。

  4. 本地联调:使用 Postman 模拟芯步的下发请求,测试您的屏蔽逻辑是否准确。

  5. 私有化(可选):如果对延迟或数据安全有比较高要求,部署本地 MQTT 服务并刷新设备固件配置。

通过这套方案,您可以在不改变任何物理接线的情况下,通过芯步的开放接口实现对 DC-10A 按钮动作的灵活、可编程屏蔽。