Поменял конфиг айтемов. Попробуем сделать защиту от сброса таргета в 0

This commit is contained in:
ftc
2024-10-20 10:55:57 +03:00
parent 437ea74c17
commit 00797e913a
2 changed files with 35 additions and 19 deletions
+34 -18
View File
@@ -4,6 +4,7 @@
#include "config.h" #include "config.h"
#include "LittleFS.h" #include "LittleFS.h"
//////////////////////////
// network // network
IPAddress my_ip(MY_IP); IPAddress my_ip(MY_IP);
@@ -11,32 +12,33 @@ IPAddress gateway(MY_GW);
IPAddress subnet(MY_NET); IPAddress subnet(MY_NET);
IPAddress sensor_ip(SENSOR_IP); IPAddress sensor_ip(SENSOR_IP);
// After how much time without connection we will //////////////////////////
// reboot (in millis) // Base config
#define NON_CONNECTED_REBOOT_TIMEOUT 60000
// dht sensor // dht sensor
#define DHTPIN D6 #define DHTPIN D6
#define DHTTYPE AM2301 #define DHTTYPE AM2301
DHT dht(DHTPIN, DHTTYPE); DHT dht(DHTPIN, DHTTYPE);
#define DHT_UPDATE_INTERVAL 500 #define DHT_UPDATE_INTERVAL 500
// relay // relay
#define RELAY_PIN D1 #define RELAY_PIN D1
#define T_UPDATE_INTERVAL 500
// external t
#define EXTERNAL_UPDATE_INTERVAL 1000
//////////////////////////
// logic consts // logic consts
// After how much time without connection we will
// reboot (in millis)
#define NON_CONNECTED_REBOOT_TIMEOUT 60000
// deviation from target t allowed (in degrees multiplied by 100) // deviation from target t allowed (in degrees multiplied by 100)
#define T_HYSTERESIS 150 #define T_HYSTERESIS 150
// relay cooldown temperature (after what t we allow to turn on relay again) (in degrees multiplied by 100) // relay cooldown temperature (after what t we allow to turn on relay again) (in degrees multiplied by 100)
#define RELAY_COOLDOWN_T 500 #define RELAY_COOLDOWN_T 500
// timeout to switch from external to internal temperature data (in milliseconds) // timeout to switch from external to internal temperature data (in milliseconds)
#define SWITCH_TO_INTERNAL_TIMEOUT 50000 #define SWITCH_TO_INTERNAL_TIMEOUT 50000
// interval for updating internal temperature
#define T_UPDATE_INTERVAL 500
// interval for updating external t
#define EXTERNAL_UPDATE_INTERVAL 1000
//////////////////////////
// modbus consts and works // modbus consts and works
#define TCP_PORT 15000 #define TCP_PORT 15000
@@ -52,7 +54,7 @@ DHT dht(DHTPIN, DHTTYPE);
#define REGISTER_TARGET_T 5 #define REGISTER_TARGET_T 5
// temperature from internal sensor // temperature from internal sensor
#define REGISTER_INTERNAL_T 6 #define REGISTER_INTERNAL_T 6
// temperatur from external sensor (received via modbus-tcp) // temperature from external sensor (received via modbus-tcp)
#define REGISTER_EXTERNAL_T 7 #define REGISTER_EXTERNAL_T 7
// critical relay temp (degrees multiplied by 100) // critical relay temp (degrees multiplied by 100)
@@ -72,21 +74,35 @@ int target_t = 0;
int internal_t = 0; int internal_t = 0;
int external_t = 0; int external_t = 0;
void LoadState() bool TryLoad(char *filename)
{ {
File f = LittleFS.open("/target_t.txt", "r"); File f = LittleFS.open(filename, "r");
if (!f) return; if (!f) return false;
String s = f.readStringUntil('\n'); String s = f.readStringUntil('\n');
target_t = atoi(s.c_str()); target_t = atoi(s.c_str());
f.close(); f.close();
if (target_t == 0) return false;
return true;
}
void LoadState()
{
if (TryLoad("/target_t.txt")) return;
TryLoad("/target_t.txt.bak");
}
void SaveTo(char *filename)
{
File f = LittleFS.open(filename, "w");
if (!f) return;
f.println(target_t);
f.close();
} }
void SaveState() void SaveState()
{ {
File f = LittleFS.open("/target_t.txt", "w"); SaveTo("/target_t.txt");
if (!f) return; SaveTo("/target_t.txt.bak");
f.println(target_t);
f.close();
} }
void setup() void setup()
+1 -1
View File
@@ -1,4 +1,4 @@
Number HEATER_NAME_Mode "HEATER_NAME mode" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_Mode:number"} Switch HEATER_NAME_Mode "HEATER_NAME mode" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_Mode:switch"}
Switch HEATER_NAME_State "HEATER_NAME state" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_State:switch"} Switch HEATER_NAME_State "HEATER_NAME state" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_State:switch"}
Number HEATER_NAME_RelayT "HEATER_NAME relay temperature [%.1f °C]" <temperature> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_RelayT:number"} Number HEATER_NAME_RelayT "HEATER_NAME relay temperature [%.1f °C]" <temperature> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_RelayT:number"}
Number HEATER_NAME_Overheat "HEATER_NAME relay overheated" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_Overheat:number"} Number HEATER_NAME_Overheat "HEATER_NAME relay overheated" <switch> {channel="modbus:data:HEATER_NAME:H:HEATER_NAME_Overheat:number"}