Critical patch - turning heaters off and send alarm after 200 unsuccesfull attempts of retrieving temperature

This commit is contained in:
2017-11-28 23:25:59 +03:00
parent d1e0a96747
commit ef5137e34f
2 changed files with 22 additions and 9 deletions

View File

@@ -815,7 +815,7 @@ if (node.getResponseBuffer(0) & 8) //Active fault
{ {
result = node.readHoldingRegisters(2111-1, 1); result = node.readHoldingRegisters(2111-1, 1);
if (result == node.ku8MBSuccess) aJson.addNumberToObject(out,"flt", (int) node.getResponseBuffer(0)); if (result == node.ku8MBSuccess) aJson.addNumberToObject(out,"flt", (int) node.getResponseBuffer(0));
} } else aJson.addNumberToObject(out,"flt", 0);
delay(50); delay(50);
result = node.readHoldingRegisters(20-1, 4); result = node.readHoldingRegisters(20-1, 4);

View File

@@ -516,7 +516,7 @@ void modbusIdle(void) ;
void _handleHelp(int arg_cnt, char **args) void _handleHelp(int arg_cnt, char **args)
//(char* tokens) //(char* tokens)
{ {
Serial.println(F("Use the commands 'help', 'save', 'get' or 'item'.")); Serial.println(F("Use the commands: 'help' - this text\n'save' - save config in NVRAM\n'get' - get config from pre-configured URL\n'load' - load config from NVRAM\n'kill' - test watchdog"));
} }
void _kill(int arg_cnt, char **args) void _kill(int arg_cnt, char **args)
@@ -755,7 +755,7 @@ void setup() {
//Serial.begin(115200); //Serial.begin(115200);
cmdInit(115200); cmdInit(115200);
Serial.println(F("\nLazyhome.ru LightHub controller v0.91")); Serial.println(F("\nLazyhome.ru LightHub controller v0.92"));
for (short i=0;i<6;i++) mac[i]=EEPROM.read(i); for (short i=0;i<6;i++) mac[i]=EEPROM.read(i);
@@ -778,6 +778,9 @@ void setup() {
ArtnetSetup(); ArtnetSetup();
#if defined(__SAM3X8E__)
checkForRemoteSketchUpdate();
#endif
cmdAdd("help", _handleHelp); cmdAdd("help", _handleHelp);
cmdAdd("save", _saveConfig); cmdAdd("save", _saveConfig);
@@ -909,7 +912,7 @@ void modbusLoop(void)
void thermoLoop(void) void thermoLoop(void)
{ {
#define T_ATTEMPTS 20 #define T_ATTEMPTS 200
#define IET_TEMP 0 #define IET_TEMP 0
#define IET_ATTEMPTS 1 #define IET_ATTEMPTS 1
@@ -932,12 +935,20 @@ void thermoLoop(void)
if (extArr && (aJson.getArraySize(extArr)>1) ) if (extArr && (aJson.getArraySize(extArr)>1) )
{ {
int curtemp = aJson.getArrayItem(extArr, IET_TEMP)->valueint; int curtemp = aJson.getArrayItem(extArr, IET_TEMP)->valueint;
if (!aJson.getArrayItem(extArr, IET_ATTEMPTS)->valueint) {Serial.print(item->name);Serial.println(F(" Expired"));} else aJson.getArrayItem(extArr, IET_ATTEMPTS)->valueint--; if (!aJson.getArrayItem(extArr, IET_ATTEMPTS)->valueint)
{
Serial.print(item->name);Serial.println(F(" Expired"));
}
else
{
if (! (--aJson.getArrayItem(extArr, IET_ATTEMPTS)->valueint)) client.publish("/alarm",item->name);
}
Serial.print(item->name);Serial.print(F(" Set:"));Serial.print(temp); Serial.print(F(" Curtemp:"));Serial.print(curtemp); Serial.print(F( " cmd:")); Serial.print(cmd), Serial.print(item->name);Serial.print(F(" Set:"));Serial.print(temp); Serial.print(F(" Curtemp:"));Serial.print(curtemp); Serial.print(F( " cmd:")); Serial.print(cmd),
pinMode(pin,OUTPUT); pinMode(pin,OUTPUT);
if (cmd==CMD_OFF || cmd==CMD_HALT) {digitalWrite(pin,LOW);Serial.println(F(" OFF"));} if (cmd==CMD_OFF || cmd==CMD_HALT || aJson.getArrayItem(extArr, IET_ATTEMPTS)->valueint==0) {digitalWrite(pin,LOW);Serial.println(F(" OFF"));}
else else
{ {
if (curtemp+GIST<temp) {digitalWrite(pin,HIGH);Serial.println(F(" ON"));} //too cold if (curtemp+GIST<temp) {digitalWrite(pin,HIGH);Serial.println(F(" ON"));} //too cold
@@ -980,8 +991,10 @@ if (items)
} //if } //if
else if (extArray=aJson.getArrayItem(item,I_EXT)) else if (extArray=aJson.getArrayItem(item,I_EXT))
{ {
aJsonObject * att = aJson.getArrayItem(extArray, IET_ATTEMPTS);
aJson.getArrayItem(extArray, IET_TEMP)->valueint=t; aJson.getArrayItem(extArray, IET_TEMP)->valueint=t;
aJson.getArrayItem(extArray, IET_ATTEMPTS)->valueint=(int) T_ATTEMPTS; if (att->valueint == 0) client.publish("/alarmoff",item->name);
att->valueint =(int) T_ATTEMPTS;
} //if } //if