Added working mode

This commit is contained in:
ftc
2026-01-14 22:02:04 +03:00
parent 236a019432
commit 34e3063819
+19 -3
View File
@@ -27,10 +27,14 @@ IPAddress subnet(MY_NET);
#define TCP_PORT 15000 #define TCP_PORT 15000
#define T_UPDATE_INTERVAL 1000 #define T_UPDATE_INTERVAL 1000
#define MODE_OFF 0
#define MODE_ON 1
#define REGISTER_TARGET_T 0 #define REGISTER_TARGET_T 0
#define REGISTER_HYSTERESIS 1 #define REGISTER_HYSTERESIS 1
#define REGISTER_CUR_TEMP 2 #define REGISTER_CUR_TEMP 2
#define REGISTER_CUR_STATE 3 #define REGISTER_CUR_STATE 3
#define REGISTER_MODE 4
ModbusIP mb; ModbusIP mb;
OneWire oneWire(TEMP_SENSOR_PIN); OneWire oneWire(TEMP_SENSOR_PIN);
@@ -45,6 +49,7 @@ int t_target = 7000;
int hyst = 200; int hyst = 200;
int cur_t = 0; int cur_t = 0;
int cur_state = 0; int cur_state = 0;
int mode = 1;
bool TryLoad(char *filename) bool TryLoad(char *filename)
{ {
@@ -54,6 +59,8 @@ bool TryLoad(char *filename)
t_target = atoi(s.c_str()); t_target = atoi(s.c_str());
s = f.readStringUntil('\n'); s = f.readStringUntil('\n');
hyst = atoi(s.c_str()); hyst = atoi(s.c_str());
s = f.readStringUntil('\n');
mode = atoi(s.c_str());
f.close(); f.close();
if (t_target == 0) return false; if (t_target == 0) return false;
return true; return true;
@@ -71,6 +78,7 @@ void SaveTo(char *filename)
if (!f) return; if (!f) return;
f.println(t_target); f.println(t_target);
f.println(hyst); f.println(hyst);
f.println(mode);
f.close(); f.close();
} }
@@ -114,6 +122,7 @@ void setup()
mb.addHreg(REGISTER_HYSTERESIS, hyst); mb.addHreg(REGISTER_HYSTERESIS, hyst);
mb.addHreg(REGISTER_CUR_TEMP, cur_t); mb.addHreg(REGISTER_CUR_TEMP, cur_t);
mb.addHreg(REGISTER_CUR_STATE, cur_state); mb.addHreg(REGISTER_CUR_STATE, cur_state);
mb.addHreg(REGISTER_MODE, mode);
// //
sensor.begin(); sensor.begin();
sensor.setResolution(12); sensor.setResolution(12);
@@ -141,10 +150,15 @@ void loop()
mb.task(); mb.task();
t_target = mb.Hreg(REGISTER_TARGET_T); t_target = mb.Hreg(REGISTER_TARGET_T);
hyst = mb.Hreg(REGISTER_HYSTERESIS); hyst = mb.Hreg(REGISTER_HYSTERESIS);
mode = mb.Hreg(REGISTER_MODE);
if (cur_t < t_target - hyst) cur_state = 1; if (cur_t < t_target - hyst) cur_state = 1;
else if (cur_t > t_target + hyst) cur_state = 0; else if (cur_t > t_target + hyst) cur_state = 0;
mb.Hreg(REGISTER_CUR_STATE, cur_state); mb.Hreg(REGISTER_CUR_STATE, cur_state);
digitalWrite(RELAY_PIN, cur_state); if (mode == MODE_OFF)
{
cur_state = 0;
}
digitalWrite(RELAY_PIN, cur_state);
if (u) if (u)
{ {
SaveState(); SaveState();
@@ -157,11 +171,13 @@ void loop()
lcd.print((cur_t) / 100.0, 2); lcd.print((cur_t) / 100.0, 2);
lcd.print(" ("); lcd.print(" (");
lcd.print(t_target / 100); lcd.print(t_target / 100);
lcd.print(")"); lcd.print(") ");
if (mode == MODE_ON) lcd.print("ON");
else lcd.print("OFF");
lcd.setCursor(0, 1); lcd.setCursor(0, 1);
lcd.print("S: "); lcd.print("S: ");
lcd.print(cur_state); lcd.print(cur_state);
lcd.print("WiFi: "); lcd.print(" WiFi: ");
lcd.print(WiFi.status()); lcd.print(WiFi.status());
} }
mb.Hreg(REGISTER_TARGET_T, t_target); mb.Hreg(REGISTER_TARGET_T, t_target);