| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef RelayController_h
- #define RelayController_h
- #include <Arduino.h>
- 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
-
|