CATALOG

芯步50A断路器本身具备开放HTTP接口,但“定时任务”需要在你的服务器端实现调度逻辑。这套方案的思路是:用HTTP接口做心跳和即时控制,用MQTT长连接做稳定的指令下发,并在服务端维护一个定时任务表

一、 技术准备与预备知识

在开始二次开发之前,需要明确该设备的通信特性:

  • 通信协议:设备支持 WiFi 2.4G 直连,无需网关。云端控制依赖 HTTP 接口。

  • 接口形态:芯步提供标准的 HTTP APIMQTT API

    • HTTP:适合低频操作(如下发一次定时设置、查询设备状态)。

    • MQTT:适合实时控制和状态监听(推荐用于二次开发,因为它无需轮询,实时性高且对服务器压力小)

  • 核心挑战:设备本身可能不具备复杂的 Cron 表达式解析能力(为了省电和简化硬件逻辑)。因此,“定时任务”的逻辑通常由你的业务服务器来执行,到了指定时间,服务器通过 API 向设备发送一次“通”或“断”的指令。

二、 整体架构方案

为了实现“定时通断”,需要构建一个由 业务服务器(或云函数)+ 定时任务调度器 + 芯步API 组成的系统。

工作流程如下:

  1. 用户配置:用户在客户端(APP/Web)设置定时规则(例如:每天 08:00 开启,18:00 关闭)。

  2. 任务存储:你的业务服务器接收配置,存入数据库,并注册定时任务。

  3. 时间到达:调度器检测到时间到达(如 08:00)。

  4. 指令下发:调度器调用芯步 API,传入设备ID和动作(闭合/断开)。

  5. 设备执行:设备接收指令,执行通断,并返回执行结果。

  6. 状态同步:通过 MQTT 订阅实时获取设备最终状态,确认操作成功。

三、 具体的二次开发步骤

1. 接口鉴权与基础连接

在进行任何控制前,需要完成签名计算。这是为了防止接口被恶意调用。根据芯步的规范,HTTP 请求需要携带 sign(签名)和 ts(时间戳)

签名算法示例(Python):

2. 核心功能实现:定时任务调度器

实现定时控制的关键在于服务端的 Scheduler。推荐使用轻量级的 APScheduler(Python)或 Node.jsnode-schedule,也可以利用 Redis 的 Keyspace Notifications 或 Linux 的 Cron。

逻辑实现方案:

  • 数据库设计:需要一个定时任务表,包含字段:id, device_id, action(on/off), cron_expr(或具体执行时间 execute_time), enabled

  • 任务注册:当用户在 UI 上点击“保存定时任务”时,服务器不仅存储到数据库,还需将任务加载到内存调度器中。

伪代码示例:

3. 两种定时模式的实现细节

根据应用场景,定时通断通常分为两种,处理方式略有不同:

模式场景案例实现方案
绝对定时每周一至周五 9:00 开,17:00 关服务器主导:使用 Cron 表达式。这种方案最稳定,不依赖设备端时钟。
相对延时30分钟后关闭,或 开启后持续供电2小时参数下发:部分断路器支持 on_time 参数。下发开启指令时,附带 on_time=7200(秒),设备内部计时自动关闭。如果硬件不支持,则仍需服务器在 2 小时后发送关闭指令。

4. 状态同步与可靠性保障(重要)

由于网络波动,可能会出现“服务器发了指令,但设备没反应”的情况。需要引入状态确认机制

  • 主动查询:在发送控制指令1秒后,调用 获取设备状态 的 API,确认断路器的 switch 状态是否与预期一致。

  • MQTT 实时同步开启 MQTT 接入。虽然控制可以用 HTTP,但在二次开发服务器上跑一个 MQTT Client 来订阅设备状态是极佳实践。代码示例:

四、 高级功能设计

  1. 循环任务与互锁如果连接的是电机或复杂设备,做逻辑互锁。例如:不管定时任务如何,如果检测到“过载”告警,服务器应自动终止后续的“闭合”定时任务,防止损坏设备

  2. 离线任务缓存如果配置定时任务时设备处于离线状态(WiFi断了),可以利用芯步云平台的能力。在控制台中查找是否有“云端定时”功能。若有,可以直接在平台设置定时,无需本地服务器参与,即使服务器关机,设备在线时也会同步时间并执行。

  3. 多时段编程对于 50A 这类用于大功率场景(如大型水泵、充电桩),往往需要支持多时段。前端 UI 可设计为时间表,后端将所有时间点解析为独立的 Job 存入调度器。需要注意的是,如果设备数量级很大(上千台),将调度器与业务分离,使用消息队列(RabbitMQ/Kafka)来缓冲这些控制指令,避免瞬间打满 API 限流阈值(芯步限制 1次/秒/设备)

五、 总结

通过二次开发芯步 50A 物联网断路器实现定时通断,核心工作并不在于驱动层(芯步已封装好),而在于业务逻辑层的设计

  • 小规模/原型验证:可以直接利用芯步控制台自带的功能,或写简单的 Python 脚本配合 Cron 定时运行。

  • 商业化/系统集成:需要搭建独立的任务调度服务,利用 HTTP API 下发指令,并搭配 MQTT 进行状态同步,同时处理好分布式锁(确保集群环境下定时任务不重复执行)和任务日志记录,才能构建一个稳定可靠的能源管理系统。