#ifndef RelayController_h #define RelayController_h #include class RelayController { private: // 继电器引脚定义 const int _relayPin22; // GPIO22继电器 const int _relayPin23; // GPIO23继电器 const int _relayPin4; // GPIO4定时继电器 // 状态枚举 enum RelayState { HIGH_Z, ON }; RelayState _relay22State; RelayState _relay23State; RelayState _relay4State; // GPIO22超时检测变量 unsigned long _relay22StartTime; bool _relay22TimeoutCheck; float _gpio6TempAtRelay22On; // 新增:温度滞后控制变量 bool _relay22TempHold; // 标记是否因高温开启需要滞后关闭 // 定时继电器与时间管理变量 const unsigned long _dailyOnHour = 8; const unsigned long _onDuration = 15 * 60 * 1000; unsigned long _relay4LastOnCycle; unsigned long _relay4OnTime; unsigned long _powerOnTime; unsigned long _simulatedUnixTime; public: // 构造函数 RelayController(int pin22, int pin23, int pin4); // 初始化 void begin(); // 继电器控制方法 void setRelay22HighZ(); void turnOnRelay22(float currentGpio6Temp); void setRelay23HighZ(); void turnOnRelay23(); void setRelay4HighZ(); void turnOnRelay4(); // 主控制逻辑(增加温度滞后控制) void controlByTempConditions(float tempGpio2, float tempGpio3, float tempGpio6, float diffThreshold = 15.0, float gpio6High = 35.0, float gpio6Low = 15.0, float highTempOn = 35.0, // 开启温度 float highTempOff = 25.0); // 关闭温度 // 定时任务处理 void handleTimedTasks(float currentGpio6Temp); // 时间管理 void updateNtpTime(); unsigned long getCurrentUnixTime(); int getCurrentHour(); unsigned long get24hCycleCount(); unsigned long getPowerOnTime(); // 获取状态 String getRelay22State(); String getRelay23State(); String getRelay4State(); }; #endif