ESPEasy系统变量详解:从基础到高级应用
什么是ESPEasy系统变量
ESPEasy系统变量是预定义的变量集合,它们提供了访问设备状态、环境信息和系统参数的便捷方式。这些变量以百分号(%)包围的形式使用,可以在规则、模板和显示配置中调用,极大地增强了ESPEasy的灵活性和功能性。
系统变量分类与应用
1. 设备基本信息变量
这些变量提供了设备的基本标识和状态信息:
%sysname%
:设备在Web界面中配置的名称%unit%
:设备单元编号(整数)%unit_0%
:3位数字格式的设备单元编号(如001)%mac%
:设备的MAC地址%mac_int%
:MAC地址的整数表示(仅后24位)%board_name%
:设备主板描述信息
应用场景:在MQTT主题或HTTP请求中使用这些变量可以创建唯一的设备标识,便于在多设备环境中区分数据来源。
2. 时间日期相关变量
ESPEasy提供了丰富的时间格式选项:
-
基础时间变量:
%systime%
:当前时间(HH:MM:SS)%lcltime%
:完整日期时间(YYYY-MM-DD HH:MM:SS)%unixtime%
:Unix时间戳
-
格式化选项:
%syshour_0%
:补零的小时(01-23)%sysmonth_s%
:月份缩写(Jan-Dec)%sysweekday_s%
:星期缩写(Sun-Sat)
-
日出日落计算:
%sunrise%
/%sunset%
:支持偏移计算(如%sunrise+30m%
)%s_sunrise%
:日出秒数(自午夜起)
专业提示:在光照控制规则中,可以使用%sunrise+30m%
这样的表达式来实现日出后30分钟才关闭灯光的逻辑。
3. 网络状态变量
%ip%
:当前IP地址%ssid%
:连接的WiFi名称%rssi%
:WiFi信号强度(dBm)%iswifi%
:WiFi连接状态(位掩码)%ismqtt%
:MQTT连接状态
调试技巧:通过监控%iswifi%
的值可以判断WiFi连接的不同阶段,对于网络问题诊断很有帮助。
4. 系统运行状态变量
%uptime%
:运行时间(分钟)%uptime_ms%
:运行时间(毫秒)%bootcause%
:启动原因代码%vcc%
:电源电压(VCC版本固件专用)%fs_free%
:文件系统剩余空间
重要提示:%bootcause%
可以帮助判断设备重启原因,在异常重启后采取相应措施。
标准转换函数
ESPEasy内置了多种实用的转换函数:
-
单位转换:
%c_c2f%(20.4)
:摄氏转华氏%c_ms2Bft%(5.1)
:风速(m/s)转蒲福风级
-
环境计算:
%c_dew_th%(18.6,67)
:根据温湿度计算露点%c_alt_pres_sea%(850,1000)
:根据气压计算海拔
-
时间格式化:
%c_m2dh%(1900)
:分钟转"天小时"格式%c_s2dhms%(100000)
:秒转"天小时分钟秒"格式
-
设备网络信息:
%c_u2ip%(1,0)
:根据单元号获取IP%c_utype%(1)
:获取设备类型代码
应用实例:在气象站项目中,可以使用%c_dew_th%([temp#T],[humidity#H])
直接计算并显示露点温度。
任务公式的高级应用
ESPEasy允许在任务中使用公式进行数据处理:
-
基本运算:
(%value%*9/5)+32 // 摄氏转华氏
-
引用其他任务值:
%c_dew_th%(%value%,[bme#H]) // 使用BME280的湿度值计算露点
-
FIR滤波器实现:
%pvalue% + (%value%-%pvalue%)/4 // 权重0.25的简单滤波器
工程建议:对于波动较大的传感器数据,使用FIR滤波器可以平滑数据,但要注意滤波系数与响应速度的平衡。
最佳实践与注意事项
-
变量类型注意:
- 部分变量输出字符串,不能直接用于数值比较
- 文档中标记为"Float output"的变量可用于数学运算
-
性能考虑:
- 复杂的公式计算会增加处理负担
- 频繁调用的规则中应避免过多转换运算
-
调试技巧:
- 在规则中使用
logentry
命令输出变量值进行调试 - 利用Web界面中的系统变量页面查看实时值
- 在规则中使用
-
兼容性提示:
- 部分功能需要特定版本的固件支持
- 某些转换函数是后期添加的,需确认固件版本
通过熟练掌握ESPEasy系统变量和转换函数,您可以构建出更加智能和灵活的物联网解决方案,充分发挥ESPEasy平台的潜力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考