Skip to content

API 接口参考 ​

Base URL 为 http://<设备IP>;AP 模式使用 http://192.168.4.1。除特别标注外,接口都需要登录后返回的 sessionId Cookie。会话保存在内存中,设备重启后需要重新登录。

通用约定 ​

开发候选补充(2026-10-04,UNTESTED):GET /api/peripherals/types在IO扩展器driver descriptor和PCA9685类型57中输出configSchemaVersion:1及configFields,包含key/type/unit/default/required以及min/max/exclusiveMin/maxBytes中的适用项;PCA另外输出保留地址及commandSchemaVersion:1/commandDescriptors。真实配置和规则表单消费这些结构,缺描述则保留输入并阻止相关保存。PCA配置仍须显式提供全部11字段,default仅用于新建表单;六命令中没有prepare/start,不改变原开发者权限、RESET/OE或上电确认流程。接口返回参数域不是现场电气额定、可自动重试许可或实物证明。

  • 请求和响应通常为 application/json;部分配置/控制接口也接受 application/x-www-form-urlencoded。
  • 登录接口只读取表单或 query 参数,不要发送 JSON body。
  • 成功响应通常包含 success: true;失败响应包含 HTTP 状态码和 error/message。
  • 内存压力下,重型接口可能返回 503 与 Retry-After,客户端应退避重试。
  • GET /api/health 免认证,适合设备探活和重启恢复判断。
  • “设备屏幕”与共享来源接口见设备屏幕和天气与远程资源。配置写入要求开发者模式;系统重启需要全局许可及卡片二次确认(Rev4 示例已显式配置,固件通用默认关闭)。Web 预览不执行真实控制,物理屏也不接收 Wi-Fi 凭据或提供 Web 网络配置快捷入口。

认证 ​

方法路径说明
POST/api/auth/login表单 username、password,返回 sessionId
POST/api/auth/logout使当前会话失效
GET/api/auth/session查询当前会话
POST/api/auth/change-password修改当前用户密码
powershell
curl.exe -s -c cookie.txt -X POST http://192.168.4.1/api/auth/login `
  -d "username=admin&password=admin123"
curl.exe -s -b cookie.txt http://192.168.4.1/api/system/status

首次登录后请立即修改默认密码。连续登录失败会触发账户锁定。

系统、健康与设备 ​

方法路径认证说明
GET/api/health否轻量探活
GET/api/system/info是芯片、固件和构建信息
GET/api/system/status是运行时状态、内存、网络和功能
GET/api/system/health否与/api/health相同的轻量健康响应,不提供全任务栈
GET/api/system/metrics是直接返回运行指标JSON,无success/data包装
GET/api/system/capabilities否编译能力和可用模块
GET/api/system/diag-bundle是重启原因和诊断信息
POST/api/system/task-stack-snapshot是+开发者模式单次SDK任务栈快照,48条上限、30秒冷却;后继候选尚未验证
POST/api/system/restart是重启设备
POST/api/system/factory-reset是恢复默认配置并重启
GET/POST/api/device/config是设备配置读写
GET/api/device/info是设备信息
GET/api/device/time是读取设备时间
POST/api/device/time/sync是NTP 同步

2026-10-04开发候选的完整/api/system/info?full=1和/api/system/diag-bundle还提供data.memory.capabilityPools:internal8、internalDma、psram8分别含observed/free/minFree/largestBlock(字节)。未观察的值为null,池有重叠且非原子快照,不能相加或作为功能独占用量。裸/api/system/info默认精简,显式full仍可能因内存保护降级;精简/probe响应不含该增量,旧固件也可能缺失,调用方应检查字段是否存在。语义和当前验证边界见内存口径。

任务栈POST不接受或保存配置,不驱动外设,也没有自动轮询。它可能暂时挂起调度,须由开发者明确发起。缺健康监控、SEVERE及以上、内部8-bit空闲不足32768字节、最大块不足8192字节、采集忙、冷却或超容量时不扫描。无后端/SDK返回0/数量越界/分配或时钟失败均不能视为完整空列表。

有效响应为success=true、data.status=observed及completeAtCapture=true;后端未观察结果为HTTP200、success=false、status=unknown、原因码,observedCount/tasks=null。身份/开发模式失败保留401/403,响应JSON溢出为503。冷却理由为CAPTURE_COOLDOWN,retryAfterMs表示剩余毫秒,不要求自动重试。

每个任务只返回taskNumber/priority/highWaterBytes/stateCode/name(name固定null);栈单位bytes,0是真实低水位而非未知。countBefore/countAfter/countChangedAroundCapture说明列表周围的数量变化;sampledAtUptimeMs为64位运行时标,captureDurationUs为SDK实测耗时,schedulerPausePossible=true、hardDeadlineEnforced=false、atomicSnapshot=false。这些字段不证明任务仍存活、最差路径或WDT通过。r20集中诊断r2的26项Host回归通过;完整固件与实机仍待验收,见健康监控。

健康探针示例:

powershell
curl.exe -s http://192.168.4.1/api/health

网络与配网 ​

方法路径认证说明
GET/api/wifi/status条件WiFi/AP 状态、IP 和信号
GET/api/wifi/scan条件扫描附近 WiFi
POST/api/wifi/config条件保存首次配网参数
POST/api/wifi/connect条件连接指定 SSID 并保存
GET/api/network/status是当前网络模式和适配器
GET/POST/api/network/config是读取/保存网络配置

配网接口仅在AP模式,或APSTA且STA未连接时允许匿名;其它状态需登录。不能将这些路由永久视为免认证。

mode:0 为 STA,1 为 AP;networkType:0 WiFi,1 W5500 以太网,2 EC801E-CN 4G。以太网和 4G 还需要对应功能已编译、外部硬件已接好并在“功能配置”中开启。

外设与自动化 ​

方法路径说明
GET/api/peripherals外设列表(支持 id、分页和筛选参数)
POST/PUT/api/peripherals、/api/peripherals/update、/api/peripherals/<id>新增或更新
DELETE/api/peripherals/<id>删除
GET/api/peripherals/types外设类型清单
POST/api/peripherals/enable、/disable启用/停用
GET/api/peripherals/read读取外设值;UART会消费RX,每次最多128字节,与规则共用接收流,见UART接收边界
POST/api/peripherals/write写入外设值
GET/api/peripherals/status运行状态
GET/api/peripherals/resources登录后只读配置规划与十三类受管运行资源快照;非硬件空闲检测
GET/api/peripherals/validate-pins引脚校验
GET/POST/api/periph-exec规则列表/新增
POST/api/periph-exec/update更新规则
POST/api/periph-exec/enable、/disable启用/停用规则
POST/api/periph-exec/run手动执行
GET/api/periph-exec/results执行结果

规则脚本 API(/api/rule-script*)只有在功能编译且 ruleScript 已启用时才会工作。规则最多 3 个触发器、4 个动作,触发器为 OR 关系。

/api/peripherals/resources 使用success/data包装。data.resources是配置规划,不能当作硬件实际占用;data.runtime是各管理器分别复制的I2C、SPI、UART、控制输出、编码器、DHT/RMT、外设/脚本LEDC、背光、ADC、GPIO、DAC、NeoPixel和步进登记。固定边界为schemaVersion=1/status=partial/complete=false/atomicAcrossSources=false/hardwareProbed=false/freeCapacityKnown=false。比较其它profileId只影响配置规划,运行记录仍属于runtime.activeProfileId。

每源status=busy或临时快照分配失败时,leaseCount/leases=null,不能解析为零占用。未支持的DAC/NeoPixel为unsupported;NeoPixel管理器同步尚未建立为PM_SYNCHRONIZATION_UNAVAILABLE。最终JSON内存不足返回503,不返回截断成功。页面仅手动刷新,不轮询、不清理资源或访问SDK硬件。

编码器active/interruptAttached/interruptCleanupPending/fault/cleanupPending区分事件接收、SDK确认与待清理。NeoPixelobjectAllocated及configuredLedCount不等于传输成功/RMT通道数;writeAttempted/releaseAttempted=false时结果为null,已尝试才给ABI结果码0~8(依次为成功、忙、内存不足、无效参数、隔离、初始化失败、发送失败、释放失败、owner变化)。步进pins固定为IN1~4,五个GPIO/保留掩码的bit0~3与之对应;最多16条,超出时truncated=true,running不证明实测位置。控制输出、编码器和步进与GPIO登记有父子关系,不能累加为不同引脚。

ADC要同时查看leases/units/channels/calibrationCount/calibrationCleanupPending,零消费者不代表单元释放;采样失败质量为read_failed=6,不能当有效零值。参见ADC生命周期及外设管理。这些后继接口仍待完整候选和实机验收,详见当前状态。

协议 ​

方法路径说明
GET/POST/api/protocol/config协议总配置
POST/api/protocol/mqtt/configMQTT/MQTTS 配置
POST/api/protocol/modbus-rtu/configModbus RTU 配置
GET/api/mqtt/statusMQTT 状态
POST/api/mqtt/reconnect、/disconnect连接控制
POST/api/mqtt/test保全原配置后暂存仅连接测试,延迟恢复;有连接和存储副作用
POST/api/mqtt/ntp-sync通过 MQTT/NTP 同步
GET/api/modbus/statusModbus 状态
POST/api/modbus/write通用写入
GET/POST/api/modbus/register/read、/write寄存器读写
POST/api/modbus/coil/control线圈控制

当前开发候选的/api/mqtt/test先创建并回读校验恢复记录,再暂存带connectionTestOnly的MQTT节点并重建主客户端;测试隔离业务上报、订阅和连接动作,结果检测后尝试恢复原配置。这仍有Flash写入、断连与重建副作用,不能当作只读探测。testRestorePending或“配置恢复待处理”表示尚未恢复完成;期间用户修改、存储故障或旧/损坏恢复记录会阻止自动覆盖,原证据保留。自动化验收须核对最终配置、恢复状态与正式连接,不能只看测试握手成功。旧固件行为以其版本为准,候选/部署边界见MQTT配置。Modbus当前定位为主站,FASTBEE_MODBUS_SLAVE_ENABLE默认关闭。

功能开关 ​

方法路径说明
GET/api/features/status查看编译/用户意图、准入、实例观察和预算估算
POST/api/features/config提交功能开关
POST/api/features/estimate估算 Flash/RAM 影响
POST/api/features/apply保存并重启使配置生效

active表示准入,activeMeaning=admission_only,不是驱动已初始化或线路可用证明。准入要求编译支持、用户启用、预算与依赖满足且没有运行期禁用;MQTTS依赖MQTT,命令脚本与规则脚本强制组合。低内存时准入可关闭,但实际对象可能仍在退役或被保留。

实际观察另看instanceObserved/instanceState/instanceScope/instanceReason。owner_lifetime只说明管理对象生命周期,transport_allocation只说明传输对象分配,均不证明服务器监听、TLS握手或物理动作。锁忙/未观察不能当作已释放。resourceAccounting=static_estimate、instanceMemoryMeasured=false表示预算仍为静态估算;字段及候选边界见功能配置。4MB环境的OTA因分区限制不编译;otaFs当前未实现文件系统升级,不能通过开启兼容配置键获得该能力。

OTA ​

只有 8MB/16MB A/B 分区环境注册以下接口:

方法路径说明
POST/api/ota/begin检查 ota_1 和内存并开始会话
POST/api/ota/uploadmultipart 上传固件
GET/api/ota/status查询进度
POST/api/ota/cancel取消会话
POST/api/ota/url从 URL 下载升级
POST/api/ota/update保留入口,仅返回提示,未实现本地更新

4MB正式环境未注册OTA路由,通常返回 404。501仅适用于已编入OTA但缺升级槽的路径。上传应用 firmware.bin,不能上传合并镜像或LittleFS;200须按阶段判断,并核验终态、重启和版本。完整流程见 OTA 升级。

配置传输、日志与文件 ​

方法路径说明
GET/api/config/transfer/list可导入导出的配置文件
GET/api/config/transfer/export导出指定配置
POST/api/config/transfer/import、/import-begin、/import-chunk旧逐文件入口;常规迁移使用整组流程
GET/api/logs、/api/logs/list、/api/logs/info日志查询
POST/api/logs/clear清理日志
GET/api/files、/api/files/content文件列表/读取(仅定制固件启用 FASTBEE_ENABLE_FILE_MANAGER=1)
POST/api/files/save保存文件(仅定制固件启用 FASTBEE_ENABLE_FILE_MANAGER=1)
GET/api/filesystemLittleFS 空间(仅定制固件启用 FASTBEE_ENABLE_FILE_MANAGER=1)

当前整组迁移包括暂存、预检、确认准备、单独重启及启动恢复状态核验,完整入口见设备配置。八文件白名单不包括network、protocol、users和auth。不能以旧逐文件写入替代整组校验。

日志查看器受功能状态控制;文件 API 只在定制构建显式启用对应宏时注册,当前发布版没有文件管理页面。能力不确定时先查询免认证的 /api/system/capabilities,再读取需要登录的状态接口。

SSE 实时事件 ​

GET /api/events 建立 Server-Sent Events 长连接。浏览器 EventSource 会自动携带 Cookie(同源时),可接收 sensor-data、modbus-data、mqtt-status 和 heartbeat 等事件。内存不足或并发超限时服务会返回 503,客户端应关闭连接并退避重连。

javascript
const events = new EventSource('/api/events');
events.addEventListener('sensor-data', (event) => {
  const data = JSON.parse(event.data);
  console.log(data);
});

版本与能力判断 ​

不要根据页面菜单猜测功能是否可用。集成程序应在启动时读取:

  1. /api/system/info:芯片、Flash、PSRAM 和固件版本(需要登录)。
  2. /api/system/capabilities:编译能力(免认证)。
  3. /api/features/status:用户开关、预算准入和有明确范围的实例观察;未观察不等于未占用。

接口变更以源码路由注册和本页为准;新增硬件或功能后请同步运行设备 API 冒烟测试。

蜂信物联 | fastbee.cn