ESPEasy规则引擎教程:实现复杂自动化场景的完整指南

【免费下载链接】ESPEasy Easy MultiSensor device based on ESP8266/ESP32 【免费下载链接】ESPEasy 项目地址: https://gitcode.com/gh_mirrors/es/ESPEasy

ESPEasy规则引擎是ESP8266/ESP32多传感器设备的强大自动化核心,让您无需编程即可创建智能家居、工业监控和环境控制系统。通过简单的规则语法,您可以实现设备联动、定时任务、条件判断等复杂自动化场景。本终极教程将带您从基础到高级,掌握ESPEasy规则引擎的完整使用方法!🚀

1. ESPEasy规则引擎基础入门

要启用规则引擎功能,首先需要在ESPEasy的Web界面中开启规则选项。访问 Tools → Advanced 页面,勾选"Rules"复选框并提交。启用后,您将在界面中看到新增的Rules标签页,这就是您的自动化控制中心。

ESPEasy规则配置界面

规则的基本语法结构非常简单:

on <触发条件> do
  <执行动作>
endon

例如,一个简单的系统启动规则:

on System#Boot do
  GPIO,12,0
  LoopTimerSet,1,10
endon

这个规则在系统启动时执行,将GPIO12设为低电平,并设置一个10秒的循环定时器。

2. 设备事件触发机制详解

ESPEasy规则引擎的核心是事件驱动机制。当设备状态发生变化时,会自动触发相应的事件。每个设备都可以生成多种事件类型,最常用的是设备值变化事件。

2.1 开关设备触发示例

开关设备是最基础的事件源之一。当开关状态变化时,规则引擎可以立即响应:

on Switch1#State do
  if [Switch1#State]=1
    // 开关打开时的操作
    Publish,mqtt/topic/status,ON
  else
    // 开关关闭时的操作  
    Publish,mqtt/topic/status,OFF
  endif
endon

开关设备配置界面

2.2 传感器数据触发

传感器设备可以定时或按需发送数据,规则引擎可以处理这些数据变化:

on Temperature#Value do
  if [Temperature#Value] > 25
    // 温度过高,开启风扇
    GPIO,13,1
    SendToHTTP,192.168.1.100,8080,/alert?temp=[Temperature#Value]
  endif
endon

3. 定时器与循环控制

定时器是自动化场景中不可或缺的功能。ESPEasy提供了多种定时器控制命令:

3.1 循环定时器

on System#Boot do
  // 每30秒执行一次规则
  TimerSet,1,30
endon

on Rules#Timer=1 do
  // 读取传感器数据
  TaskValueSet,1,1,[Dummy#Value]
  // 重启定时器
  TimerSet,1,30
endon

3.2 延时执行

on Button#Pressed do
  // 立即执行的操作
  GPIO,12,1
  // 5秒后执行的操作
  TimerSet,2,5
endon

on Rules#Timer=2 do
  GPIO,12,0
endon

4. 条件判断与逻辑运算

ESPEasy规则引擎支持强大的条件判断功能,包括AND/OR逻辑运算:

4.1 多条件判断

on SensorCheck do
  if [Temp#Value] > 25 and [Humidity#Value] > 70
    // 高温高湿情况
    Event,AlertHighTempHumid
  endif
  
  if [Temp#Value] < 10 or [Humidity#Value] < 30
    // 低温或低湿情况
    Event,AlertLowConditions
  endif
endon

4.2 字符串比较

ESPEasy也支持字符串变量的比较:

on mqtt/topic/command do
  LetStr,cmd,[mqtt/topic/command]
  if [str#cmd#V#l]=on
    gpio,12,1
  else
    gpio,12,0
  endif
endon

5. 数据采集与处理

对于需要数据处理的场景,ESPEasy提供了丰富的数据处理功能:

5.1 脉冲计数器数据处理

脉冲计数器设备可以统计脉冲次数,规则引擎可以对这些数据进行处理:

on Pulse#Count do
  // 每100个脉冲执行一次操作
  if [Pulse#Count] % 100 = 0
    Let,water_flow=[Pulse#Count]/100
    Publish,mqtt/water/flow,[water_flow]
  endif
endon

脉冲计数器配置界面

5.2 传感器校准与数据处理

对于需要精确测量的传感器,可以使用两点校准功能:

on Sensor#RawValue do
  // 应用校准公式
  Let,calibrated_value=([Sensor#RawValue]-241)*(19.9832-9.0041)/(565-241)+9.0041
  TaskValueSet,2,1,[calibrated_value]
endon

传感器两点校准界面

6. 复杂自动化场景实例

6.1 智能温室控制系统

on System#Boot do
  // 初始化所有设备
  GPIO,12,0  // 风扇关闭
  GPIO,13,0  // 加湿器关闭
  GPIO,14,0  // 加热器关闭
  // 设置定时检查
  TimerSet,1,60
endon

on Rules#Timer=1 do
  // 温度控制
  if [Temp#Value] > 30
    GPIO,12,1  // 开启风扇
    GPIO,14,0  // 关闭加热器
  elseif [Temp#Value] < 18
    GPIO,12,0  // 关闭风扇
    GPIO,14,1  // 开启加热器
  else
    GPIO,12,0
    GPIO,14,0
  endif
  
  // 湿度控制
  if [Humidity#Value] < 50
    GPIO,13,1  // 开启加湿器
  else
    GPIO,13,0  // 关闭加湿器
  endif
  
  // 记录数据到MQTT
  Publish,greenhouse/temp,[Temp#Value]
  Publish,greenhouse/humid,[Humidity#Value]
  
  // 重启定时器
  TimerSet,1,60
endon

6.2 安防监控系统

on PIR#Motion do
  if [PIR#Motion]=1
    // 检测到运动
    GPIO,15,1  // 开启警报灯
    Publish,security/alert,MOTION_DETECTED
    // 拍照并上传
    Event,TakePhoto
    // 发送通知
    SendToHTTP,192.168.1.50,8080,/notify?type=motion
  else
    GPIO,15,0  // 关闭警报灯
  endif
endon

on TakePhoto do
  // 控制摄像头拍照
  GPIO,16,1
  Delay,100
  GPIO,16,0
  // 等待照片处理
  TimerSet,2,5
endon

on Rules#Timer=2 do
  // 上传照片到服务器
  SendToHTTP,192.168.1.50,8080,/upload?camera=1
endon

7. 高级技巧与最佳实践

7.1 避免事件嵌套

ESPEasy规则引擎对事件嵌套有深度限制(建议不超过3层)。为避免嵌套问题,可以使用AsyncEvent:

on MainTrigger do
  if [Sensor#Value] > 50
    AsyncEvent,HighTempAlert
  endif
endon

on HighTempAlert do
  // 处理高温警报
  Publish,alerts/high_temp,[Sensor#Value]
  GPIO,12,1
endon

7.2 使用虚拟设备存储数据

虚拟设备(Dummy Device)是规则引擎的强大工具,可以存储临时数据:

on System#Boot do
  // 初始化虚拟设备值
  TaskValueSet,4,1,0  // 计数器清零
  TaskValueSet,4,2,0  // 状态标志清零
endon

on Button#Press do
  // 使用虚拟设备记录按钮按下次数
  Let,count=[Dummy#Counter]+1
  TaskValueSet,4,1,[count]
  
  if [count] % 10 = 0
    Publish,button/press_count,[count]
  endif
endon

7.3 错误处理与日志记录

on Rules#Timer=5 do
  // 定期检查设备状态
  if [WiFi#Connected]=0
    // WiFi断开,记录错误并尝试重连
    LogEntry,WiFi connection lost, attempting reconnect
    WiFiDisconnect
    Delay,5000
    WiFiConnect
    TimerSet,6,30  // 30秒后检查连接状态
  endif
endon

on Rules#Timer=6 do
  if [WiFi#Connected]=1
    LogEntry,WiFi reconnected successfully
  else
    LogEntry,WiFi reconnect failed
    // 发送警报
    Publish,system/error,WiFi_Connection_Failed
  endif
endon

8. 性能优化建议

  1. 规则缓存:在高级设置中启用"Enable Rules Cache"可以显著提高规则处理速度
  2. 定时器优化:避免设置过短的定时器间隔,建议不低于10秒
  3. 事件精简:只监听必要的事件,避免不必要的规则触发
  4. 内存管理:复杂的规则链可能消耗较多内存,定期监控设备内存使用情况
  5. 调试技巧:使用LogEntry命令记录规则执行过程,便于调试

9. 常见问题排查

9.1 规则不执行

  • 检查规则是否已启用(Tools → Advanced → Rules)
  • 确认设备名称和值名称拼写正确
  • 检查事件名称是否包含非法字符(避免使用#、[、]等特殊字符)

9.2 定时器不工作

  • 确认定时器编号唯一
  • 检查定时器是否在正确的事件中设置
  • 确保定时器值合理(单位为秒)

9.3 MQTT集成问题

  • 确认MQTT控制器配置正确
  • 检查主题名称和权限
  • 验证网络连接状态

总结

ESPEasy规则引擎为ESP8266/ESP32设备提供了强大的自动化能力,让您无需复杂编程即可实现智能控制系统。从简单的开关控制到复杂的多设备联动,规则引擎都能轻松应对。通过本教程的学习,您已经掌握了从基础到高级的规则编写技巧,现在可以开始创建属于自己的智能自动化项目了!

记住,实践是最好的老师。从简单的规则开始,逐步增加复杂度,您会发现ESPEasy规则引擎的强大之处。祝您在智能设备自动化的道路上越走越远!🎯

【免费下载链接】ESPEasy Easy MultiSensor device based on ESP8266/ESP32 【免费下载链接】ESPEasy 项目地址: https://gitcode.com/gh_mirrors/es/ESPEasy

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐