Complete PeriphExec Management Guide
Complete PeriphExec Management Guide
Synchronized Device Documentation
This page corresponds to the synchronized Chinese source. Commands, JSON examples, API paths, field names, and screenshots are kept aligned with the Chinese device-side source documentation.
What This Page Covers
- Web console page purpose and related device-side configuration model.
- Available fields, operational workflow, and safety checks.
- Validation steps, logs, and maintenance recommendations.
Source Reference
The detailed operational source is preserved below so implementation details stay exact while the English navigation, titles, and reading path remain available.
外设执行管理完整指南
一、功能概述
外设执行(Periph-Exec)是 FastBee 系统的自动化规则引擎,通过配置**触发器(Trigger)和动作(Action)**实现设备联动。配置存储在 /config/periph_exec.json 中。
出厂默认规则均为 enabled: false,不会在未知接线环境中自动执行。新增或导入规则后,建议先保存为禁用状态,确认目标外设、引脚和动作参数正确后再启用。

规则列表用于快速核对触发器、动作数量、启用状态和手动执行入口。新增或编辑规则时,请先确认目标外设已存在且处于预期启用状态。
上图把页面中的“触发器、规则、动作、执行结果”对应到运行时链路。现场配置时优先保证每条规则名称可读、触发条件单一明确、动作顺序可回滚。
新增规则时按生命周期图推进:禁用保存、校验参数、手动执行、启用运行、异常回滚。这样能避免未知接线环境中规则一保存就驱动现场负载。
配置页面里的触发器和动作可以按上图快速归类。先确认触发来源,再选择控制、采集、输出或系统动作,保存后用“执行一次”和日志验证。
如果不确定该选哪种触发器,先按时序对比图判断数据来源:平台命令用平台触发,固定节拍用定时触发,按钮或数据源变化用事件触发,没有事件源的传感器或 Modbus 采集才用轮询触发。
涉及继电器、电机、Modbus 写入、系统重启或 OTA 等强动作时,保存前按安全检查图逐项确认。建议先禁用保存,再手动执行单个动作,确认日志和上报正常后再启用自动触发。
核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| 规则(Rule) | 完整的自动化逻辑单元 | IF-THEN语句 |
| 触发器(Trigger) | 何时执行规则(条件) | IF部分 |
| 动作(Action) | 执行什么操作(结果) | THEN部分 |
| 执行模式(execMode) | 动作执行策略 | 同步/异步 |
| 上报数据(reportAfterExec) | 执行后是否上报状态 | 反馈机制 |
规则结构
{
"id": "exec_1717392000",
"name": "高温报警",
"enabled": true,
"execMode": 0,
"triggers": [
{ /* 触发器配置 */ }
],
"actions": [
{ /* 动作配置 */ }
],
"reportAfterExec": true
}二、Web界面操作指南
2.1 访问外设执行页面
方式1:独立页面(推荐)
- 点击左侧菜单 外设配置
- 页面自动切换到 外设执行管理 标签
- 显示规则列表表格
方式2:从外设联动进入
- 在外设列表中点击某外设
- 查看关联的规则
2.2 创建新规则
操作步骤
点击新增按钮
- 右上角 新增规则
填写基础配置
字段 必填 说明 示例 规则名称 ✅ 有业务含义的名称 高温报警上报数据 - 执行后上报状态到云平台 ✅ 默认启用 启用 - 规则是否生效 首次建议关闭,确认后启用 配置触发器(第二部分)
- 点击 添加触发 按钮
- 选择触发类型(平台/事件/定时/轮询)
- 填写对应参数
配置动作(第三部分)
- 点击 添加动作 按钮
- 选择动作类型(GPIO/PWM/脚本等)
- 选择目标外设
- 填写动作参数
保存规则
- 点击 保存 按钮
- 系统验证配置
- 写入
periph_exec.json
界面布局
┌────────────────────────────────────────────────────┐
│ 新增外设执行 [×] │
├────────────────────────────────────────────────────┤
│ 【基础配置】 │
│ 规则名称: [高温报警_____________] │
│ ☑ 上报数据 ☑ 启用 │
├────────────────────────────────────────────────────┤
│ 触发配置 [+ 添加触发] │
│ ┌──────────────────────────────────────────────┐ │
│ │ 1 [×] 删除 │ │
│ │ 触发类型: [轮询触发 ▼] │ │
│ │ 目标外设: [dht_room ▼] │ │
│ │ 轮询间隔: [5 ] 秒 超时: [1000] ms │ │
│ │ 重试次数: [2 ] 次 延迟: [100 ] ms │ │
│ │ 比较操作: [大于 ▼] 比较值: [30] │ │
│ └──────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────┤
│ 执行动作配置 [+ 添加动作] │
│ ┌──────────────────────────────────────────────┐ │
│ │ 1 [×] 删除 │ │
│ │ 动作类型: [高电平 ▼] │ │
│ │ 目标外设: [relay_fan ▼] │ │
│ │ 执行模式: [同步 ▼] │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 2 [×] 删除 │ │
│ │ 动作类型: [触发事件 ▼] │ │
│ │ 事件ID: [alarm_high_temp___] │ │
│ └──────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────┤
│ [取消] [保存] │
└────────────────────────────────────────────────────┘2.3 触发器配置详解
触发器类型对比
| 类型 | 触发时机 | 适用场景 | 配置难度 |
|---|---|---|---|
| 平台触发 | 收到云平台指令 | IoT平台远程控制 | ⭐⭐ |
| 事件触发 | 系统/传感器事件 | 按键按下/WiFi连接 | ⭐⭐⭐ |
| 定时触发 | 时间到达 | 周期采集/定时开关 | ⭐ |
| 轮询触发 | 轮询检测条件满足 | 传感器值判断 | ⭐⭐ |
类型1:平台触发(triggerType=0)
触发条件:收到云平台下发的MQTT/Modbus指令
配置参数
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 目标外设 | ✅ | 接收指令的外设 | uart_modbus |
| 操作符 | ✅ | 匹配/设置模式 | 匹配 |
| 比较值 | 条件 | 匹配的指令内容 | {"cmd":"on"} |
操作符说明
| 操作符值 | 名称 | 说明 |
|---|---|---|
| 0 | 匹配模式 | 接收数据等于比较值时触发 |
| 1 | 设置模式 | 接收数据直接作为动作参数 |
配置示例
{
"triggerType": 0,
"triggerPeriphId": "uart_modbus",
"operatorType": 0,
"compareValue": "{\"cmd\":\"fan_on\"}"
}触发流程:
云平台发送: {"cmd":"fan_on"}
↓
UART接收数据
↓
匹配 compareValue
↓
触发规则执行动作类型2:事件触发(triggerType=4)
触发条件:系统事件、传感器数据事件、按键事件
事件分类
| 事件类别 | 事件ID前缀 | 说明 |
|---|---|---|
| 系统事件 | sys: | WiFi/MQTT/NTP状态变化 |
| 传感器数据 | ds: | 传感器读取数据 |
| 按键事件 | button_ | 物理按键按下 |
| Modbus控制 | mc: | Modbus子设备事件 |
| 自定义事件 | 无前缀 | 用户自定义事件 |
配置步骤
选择事件类别
- 从下拉框选择(系统/传感器/按键等)
选择具体事件
- 根据类别自动加载事件列表
配置条件判断(传感器事件)
- 比较操作符:等于/大于/小于/区间等
- 比较值:阈值
配置示例(温度>30℃)
{
"triggerType": 4,
"eventId": "ds:dht_room.temperature",
"operatorType": 2,
"compareValue": "30"
}常用系统事件
| 事件ID | 触发时机 |
|---|---|
sys:wifi.connected | WiFi连接成功 |
sys:wifi.disconnected | WiFi断开 |
sys:mqtt.connected | MQTT连接成功 |
sys:mqtt.disconnected | MQTT断开 |
sys:boot.completed | 系统启动完成 |
按键事件
外设需配置为 GPIO_INTERRUPT 类型(type=18/19/20),自动生成事件:
按键按下: button_{periphId}.pressed
按键长按: button_{periphId}.long_press类型3:定时触发(triggerType=1)
触发条件:时间到达指定间隔或时间点
定时模式
| 模式 | timerMode | 说明 | 适用场景 |
|---|---|---|---|
| 间隔定时 | 0 | 每隔X秒执行 | 周期采集 |
| 每日定时 | 1 | 每天固定时间执行 | 定时开关 |
间隔定时配置
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 间隔秒数 | ✅ | 执行间隔(1~86400秒) | 60(1分钟) |
每日定时配置
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 时间点 | ✅ | 执行时间(HH:MM格式) | 08:30 |
配置示例
// 间隔定时:每5分钟执行
{
"triggerType": 1,
"timerMode": 0,
"intervalSec": 300
}
// 每日定时:每天早上8:30执行
{
"triggerType": 1,
"timerMode": 1,
"timePoint": "08:30"
}类型4:轮询触发(triggerType=5)
触发条件:主动轮询传感器数据并判断条件
与事件触发的区别
| 特性 | 事件触发 | 轮询触发 |
|---|---|---|
| 数据来源 | 被动接收事件 | 主动读取传感器 |
| 实时性 | 高(事件驱动) | 中(依赖轮询间隔) |
| 适用传感器 | 所有类型 | 本地传感器 |
| 配置复杂度 | 高(需配置事件) | 低(直接选外设) |
实际配置中可以回到“触发器时序对比”图确认选择:轮询触发会主动占用外设或总线资源,适合没有事件源的数据;事件触发更适合已经由传感器读取动作、按键状态机或系统事件产生的数据源。
配置参数
| 参数 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|
| 目标外设 | ✅ | - | - | 要轮询的传感器 |
| 轮询间隔 | ✅ | 60秒 | 5~86400秒 | 读取间隔 |
| 响应超时 | - | 1000ms | 100~5000ms | 读取超时时间 |
| 重试次数 | - | 2次 | 0~3次 | 失败重试 |
| 轮询延迟 | - | 100ms | 20~1000ms | 两次读取间隔 |
| 比较操作 | ✅ | - | 0~9 | 条件判断 |
| 比较值 | 条件 | - | - | 阈值 |
比较操作符
| operatorType | 名称 | 示例 | 说明 |
|---|---|---|---|
| 0 | 等于 | value == 30 | 精确匹配 |
| 1 | 不等于 | value != 0 | 非零判断 |
| 2 | 大于 | value > 30 | 上限报警 |
| 3 | 小于 | value < 10 | 下限报警 |
| 4 | 大于等于 | value >= 30 | 包含边界 |
| 5 | 小于等于 | value <= 10 | 包含边界 |
| 6 | 区间内 | compareValue="20,30" | 正常范围 |
| 7 | 区间外 | compareValue="20,30" | 异常范围 |
| 8 | 包含 | value.contains("ON") | 字符串匹配 |
| 9 | 不包含 | !value.contains("OFF") | 字符串匹配 |
配置示例(温度>30℃报警)
{
"triggerType": 5,
"triggerPeriphId": "dht_room",
"intervalSec": 5,
"pollResponseTimeout": 1000,
"pollMaxRetries": 2,
"pollInterPollDelay": 100,
"operatorType": 2,
"compareValue": "30"
}执行流程:
每隔5秒
↓
读取 dht_room 传感器
↓
获取 temperature 值
↓
判断: temperature > 30 ?
↓ 是
触发规则执行动作2.4 动作配置详解
动作类型速查表
| actionType | 名称 | 参数 | 目标外设 | 说明 |
|---|---|---|---|---|
| 0 | 高电平 | 无 | ✅ GPIO | 输出HIGH |
| 1 | 低电平 | 无 | ✅ GPIO | 输出LOW |
| 2 | 闪烁 | actionValue=间隔ms | ✅ GPIO | 周期性闪烁 |
| 3 | 呼吸灯 | actionValue=周期ms | ✅ PWM | 渐变效果 |
| 4 | 设置PWM | actionValue=占空比 | ✅ PWM | 0~4095 |
| 5 | 设置DAC | actionValue=0~255 | ✅ DAC | 模拟输出 |
| 6 | 系统重启 | 无 | ❌ | 重启设备 |
| 7 | 恢复出厂 | 无 | ✖ | 重置配置为默认值 |
| 8 | NTP同步 | 无 | ❌ | 同步时间 |
| 9 | OTA升级 | actionValue=URL | ❌ | 远程升级 |
| 10 | 调用外设 | actionValue=方法 | ✅ 任意 | 调用外设方法 |
| 15 | 命令脚本 | actionValue=脚本 | ❌ | PERIPH/DELAY序列 |
| 16 | Modbus线圈 | actionValue=0/1 | ✅ Modbus | 控制继电器 |
| 17 | Modbus寄存器 | actionValue=值 | ✅ Modbus | 写寄存器 |
| 18 | Modbus轮询 | 自动配置 | ✅ Modbus | 读取数据 |
| 19 | 传感器读取 | actionValue=配置 | ✅ 传感器 | 采集数据 |
| 21 | 触发事件 | actionValue=事件ID | ❌ | 发射事件 |
| 22 | 启用规则 | targetPeriphId=规则ID | ❌ | 动态启用 |
| 23 | 禁用规则 | targetPeriphId=规则ID | ❌ | 动态禁用 |
| 24 | 显示数字 | actionValue="12.34" | ✅ 数码管 | 7段显示 |
| 25 | 显示文本 | actionValue="PLAY" | ✅ 数码管 | 字符显示 |
| 26 | 清屏 | 无 | ✅ 显示屏 | 清空内容 |
| 27 | OLED显示 | actionValue=模板 | ✅ OLED | 多行文本 |
动作1~0/1:GPIO高/低电平
最基础的控制动作
配置参数
| 参数 | 必填 | 说明 |
|---|---|---|
| 目标外设 | ✅ | GPIO数字输出外设ID |
配置示例
{
"actionType": 0,
"targetPeriphId": "relay_fan"
}动作2:闪烁
配置参数
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
| 目标外设 | ✅ | GPIO外设 | led_status |
| 闪烁间隔 | ✅ | 亮/灭时间(ms) | 500 |
配置示例
{
"actionType": 2,
"targetPeriphId": "led_alarm",
"actionValue": "500"
}效果:LED每500ms翻转一次(1秒周期)
动作15:命令脚本
灵活的多步控制
支持的命令
| 命令 | 格式 | 说明 |
|---|---|---|
| PERIPH | PERIPH <id> <动作> [值] | 控制外设 |
| DELAY | DELAY <毫秒> | 延时 |
| LOG | LOG <消息> | 打印日志 |
| MQTT | MQTT <qos> <payload> | 发送消息 |
PERIPH子命令
| 子命令 | 格式 | 说明 |
|---|---|---|
| HIGH | PERIPH led1 HIGH | 高电平 |
| LOW | PERIPH led1 LOW | 低电平 |
| PWM | PERIPH motor PWM 2048 | 设置PWM |
| BLINK | PERIPH led BLINK 500 | 闪烁 |
| COLOR | PERIPH strip COLOR #FF0000 | NeoPixel颜色 |
配置示例(流水灯)
{
"actionType": 15,
"actionValue": "PERIPH led1 LOW\nDELAY 300\nPERIPH led1 HIGH\nPERIPH led2 LOW\nDELAY 300\nPERIPH led2 HIGH\nPERIPH led3 LOW\nDELAY 300\nPERIPH led3 HIGH\nLOG 流水灯一轮完成"
}执行流程:
点亮led1 → 延时300ms → 熄灭led1
↓
点亮led2 → 延时300ms → 熄灭led2
↓
点亮led3 → 延时300ms → 熄灭led3
↓
打印日志动作19:传感器读取
配置参数
{
"actionType": 19,
"targetPeriphId": "dht_room",
"actionValue": "{\"dataField\":\"temperature\",\"decimalPlaces\":1}"
}actionValue字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| dataField | 字符串 | "temperature" | 要读取的字段 |
| decimalPlaces | 整数 | 2 | 小数位数 |
| scaleFactor | 浮点 | 1.0 | 缩放系数 |
| offset | 浮点 | 0 | 偏移量 |
可用dataField
| 传感器类型 | dataField | 单位 |
|---|---|---|
| DHT | temperature, humidity | ℃, % |
| DS18B20 | temperature | ℃ |
| HC-SR04 | distance | cm |
| BH1750 | light | lux |
| BMP280 | temperature, pressure | ℃, hPa |
动作27:OLED显示
配置参数
{
"actionType": 27,
"targetPeriphId": "oled_ctrl",
"actionValue": "温度: ${temperature}℃\n湿度: ${humidity}%"
}模板变量
${temperature}- 从触发器数据中获取${humidity}- 从触发器数据中获取${value}- 当前轮询值
显示效果
┌─────────────────┐
│ 温度: 28.5℃ │
│ 湿度: 65% │
└─────────────────┘2.5 编辑规则
操作步骤
- 在规则列表找到目标规则
- 点击 编辑 按钮
- 模态窗自动填充当前配置
- 修改触发器或动作
- 点击 保存 确认
注意事项
- ⚠️ 触发器/动作可增删:点击删除按钮移除
- ⚠️ 修改后立即生效:保存后系统自动重新加载
- ⚠️ 引用检查:修改目标外设ID需确认外设存在
2.6 启用/禁用规则
操作方式
| 方式 | 操作 | 效果 |
|---|---|---|
| 列表快捷操作 | 点击启用/禁用按钮 | 立即切换 |
| 编辑模态窗 | 切换启用开关 | 保存后生效 |
使用场景
- 调试:禁用规则观察系统行为
- 临时停用:保留配置但不执行
- 测试:逐个启用规则排查问题
2.7 删除规则
操作步骤
- 点击 删除 按钮(红色)
- 确认对话框
- 从
periph_exec.json移除
⚠️ 警告
- ❌ 删除不可恢复
- 💡 建议先禁用观察
- 🔗 检查依赖:是否有其他规则引用
三、配置实战演练
3.1 场景1:智能温控系统
需求
- 每5秒读取DHT22温度
- 温度>30℃时启动风扇
- 温度<25℃时关闭风扇
- OLED显示当前温度
步骤1:配置外设
(参考外设配置文档,添加dht_room、relay_fan、oled_ctrl)
步骤2:创建高温启动规则
点击新增规则
基础配置
- 名称:
高温启动风扇 - 上报数据:✅
- 启用:✅
- 名称:
添加触发器
- 触发类型:轮询触发
- 目标外设:
dht_room - 轮询间隔:5秒
- 比较操作:大于
- 比较值:30
添加动作1
- 动作类型:高电平
- 目标外设:
relay_fan
添加动作2
- 动作类型:OLED显示
- 目标外设:
oled_ctrl - 动作值:
温度: ${temperature}℃\n状态: 风扇启动
保存
完整JSON配置
{
"id": "exec_high_temp_start",
"name": "高温启动风扇",
"enabled": true,
"execMode": 0,
"triggers": [
{
"triggerType": 5,
"triggerPeriphId": "dht_room",
"intervalSec": 5,
"pollResponseTimeout": 1000,
"pollMaxRetries": 2,
"pollInterPollDelay": 100,
"operatorType": 2,
"compareValue": "30"
}
],
"actions": [
{
"actionType": 0,
"targetPeriphId": "relay_fan",
"execMode": 0
},
{
"actionType": 27,
"targetPeriphId": "oled_ctrl",
"actionValue": "温度: ${temperature}℃\n状态: 风扇启动",
"execMode": 0
}
],
"reportAfterExec": true
}步骤3:创建低温关闭规则
(类似步骤2,比较操作改为"小于",比较值改为25,动作为低电平)
3.2 场景2:按键控制灯光
需求
- 短按按键:切换LED开关
- 长按按键:启动呼吸灯模式
配置外设
{
"peripherals": [
{
"id": "btn_ctrl",
"name": "控制按键",
"type": 18,
"enabled": true,
"pins": [0]
},
{
"id": "led_main",
"name": "主LED",
"type": 12,
"enabled": true,
"pins": [15],
"params": { "initialState": 0 }
}
]
}规则1:短按切换
{
"id": "exec_btn_short",
"name": "短按切换LED",
"enabled": true,
"triggers": [
{
"triggerType": 4,
"eventId": "button_btn_ctrl.pressed"
}
],
"actions": [
{
"actionType": 10,
"targetPeriphId": "led_main",
"actionValue": "toggle",
"execMode": 0
}
]
}规则2:长按呼吸灯
{
"id": "exec_btn_long",
"name": "长按呼吸灯",
"enabled": true,
"triggers": [
{
"triggerType": 4,
"eventId": "button_btn_ctrl.long_press"
}
],
"actions": [
{
"actionType": 3,
"targetPeriphId": "led_main",
"actionValue": "3000",
"execMode": 0
}
]
}3.3 场景3:定时上报传感器数据
需求
- 每1分钟读取温湿度
- 通过MQTT上报到云平台
规则配置
{
"id": "exec_periodic_report",
"name": "定时数据上报",
"enabled": true,
"triggers": [
{
"triggerType": 1,
"timerMode": 0,
"intervalSec": 60
}
],
"actions": [
{
"actionType": 19,
"targetPeriphId": "dht_room",
"actionValue": "{\"dataField\":\"temperature\"}",
"execMode": 0
},
{
"actionType": 15,
"actionValue": "MQTT 0 [{\"id\":\"temperature\",\"value\":\"${temperature}\"},{\"id\":\"humidity\",\"value\":\"${humidity}\"}]"
}
]
}四、执行模式详解
4.1 同步模式(execMode=0)
特点:
- 动作按顺序执行
- 前一个动作完成后才执行下一个
- 适合有依赖关系的动作
示例:
动作1: 读取传感器
↓ (等待完成)
动作2: 判断数值
↓ (等待完成)
动作3: 控制继电器4.2 异步模式(execMode=1)
特点:
- 动作立即返回,不等待完成
- 多个动作可并行执行
- 适合独立动作
示例:
动作1: 打开LED ─┐
动作2: 打开蜂鸣器 ├─ 同时执行
动作3: 发送MQTT ─┘4.3 选择建议
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 传感器读取→控制 | 同步 | 需要等待数据 |
| 多设备同时控制 | 异步 | 提高响应速度 |
| 命令脚本 | 同步 | 命令有顺序依赖 |
| 日志记录 | 异步 | 不影响主流程 |
五、常见错误与解决方案
5.1 配置错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 规则不触发 | enabled=false | 启用规则 |
| 触发条件不满足 | 比较值错误 | 检查传感器数据范围 |
| 动作无效果 | 目标外设未启用 | 确认外设enabled=true |
| 脚本报错 | 语法错误 | 查看日志排查 |
| 定时不准 | NTP未同步 | 确保网络连通 |
| 轮询超时 | 传感器响应慢 | 增加pollResponseTimeout |
| 事件不触发 | 事件ID错误 | 检查前缀和拼写 |
5.2 排查步骤
检查启用状态
- 规则enabled: true
- 外设enabled: true
查看统计信息
- 列表显示触发次数
- 0次表示未触发
查看日志
- Web界面日志
- 串口日志
简化测试
- 先测试单个触发器
- 先测试单个动作
手动触发
- 使用API触发规则
- 验证动作是否正常
检查数据源
- 传感器是否正常读取
- 事件是否正确发射
六、高级技巧
6.1 多触发器OR逻辑
一个规则可以有多个触发器,任一触发即执行:
{
"triggers": [
{ "triggerType": 4, "eventId": "button_btn1.pressed" },
{ "triggerType": 4, "eventId": "button_btn2.pressed" },
{ "triggerType": 1, "timerMode": 0, "intervalSec": 3600 }
]
}触发条件:按键1 或 按键2 或 每小时定时
6.2 规则联动
规则可以启用/禁用其他规则:
// 规则1:启用规则2
{
"actions": [
{
"actionType": 22,
"targetPeriphId": "exec_rule2_id"
}
]
}
// 规则2:禁用自己
{
"actions": [
{
"actionType": 23,
"targetPeriphId": "exec_rule2_id"
}
]
}6.3 使用系统事件
监听WiFi/MQTT状态变化:
{
"triggers": [
{
"triggerType": 4,
"eventId": "sys:wifi.connected"
}
],
"actions": [
{
"actionType": 15,
"actionValue": "LOG WiFi已连接,IP: ${ip}\nMQTT 0 {\"event\":\"wifi_connected\",\"ip\":\"${ip}\"}"
}
]
}6.4 性能优化
| 优化项 | 方法 | 效果 |
|---|---|---|
| 降低轮询频率 | 增加intervalSec | 减少CPU占用 |
| 使用事件触发 | 代替轮询 | 实时响应 |
| 禁用未使用规则 | enabled=false | 节省资源 |
| 合并相似规则 | 多触发器OR | 简化配置 |
| 异步执行独立动作 | execMode=1 | 提高响应 |
七、API参考
API 参考不仅用于接口调用,也可用于排查页面问题。若页面操作后状态没有变化,可按图检查浏览器请求、API 响应、Manager 方法、配置文件和日志是否在同一次操作中对应起来。
7.1 查询规则列表
GET /api/periph-exec/rules响应:
{
"success": true,
"data": [
{
"id": "exec_xxx",
"name": "高温报警",
"enabled": true,
"triggerCount": 2,
"actionCount": 3
}
]
}7.2 手动触发规则
POST /api/periph-exec/rules/{ruleId}/trigger7.3 启用/禁用规则
POST /api/periph-exec/rules/{ruleId}/toggle7.4 删除规则
DELETE /api/periph-exec/rules/{ruleId}八、相关文档
提示:外设执行是FastBee系统的核心功能,建议先从简单的定时触发+GPIO控制开始,逐步学习事件触发和脚本动作。
