Post-merge fix: no local item control without emit tag, i2c scan fixed and removed

significant stability improvements: config re-load cleanup, MQTT submit
only if connected (ESPx very sensetive on it)
new: negative relay pin# - output invertion
This commit is contained in:
2019-04-06 22:53:36 +03:00
parent 8bf3c86a92
commit ebc908a3a1
4 changed files with 92 additions and 38 deletions

View File

@@ -656,8 +656,18 @@ int Item::Ctrl(short cmd, short n, int *Parameters, boolean send, int subItemN)
break;
case CH_RELAY: {
int k;
short inverse = 0;
if (iaddr < 0) {
iaddr = -iaddr;
inverse = 1;
}
pinMode(iaddr, OUTPUT);
digitalWrite(iaddr, k = ((cmd == CMD_ON || cmd == CMD_XON) ? HIGH : LOW));
if (inverse)
digitalWrite(iaddr, k = ((cmd == CMD_ON || cmd == CMD_XON) ? LOW : HIGH));
else
digitalWrite(iaddr, k = ((cmd == CMD_ON || cmd == CMD_XON) ? HIGH : LOW));
debugSerial<<F("Pin:")<<iaddr<<F("=")<<k<<endl;
break;
case CH_THERMO:
@@ -667,6 +677,7 @@ int Item::Ctrl(short cmd, short n, int *Parameters, boolean send, int subItemN)
case CH_PWM: {
int k;
short inverse = 0;
if (iaddr < 0) {
iaddr = -iaddr;
inverse = 1;
@@ -1038,13 +1049,15 @@ int Item::checkFM() {
else aJson.addNumberToObject(out, "pwr", 0);
if (ftemp > FM_OVERHEAT_CELSIUS && set) {
mqttClient.publish("/alarm/ovrht", itemArr->name);
if (mqttClient.connected())
mqttClient.publish("/alarm/ovrht", itemArr->name);
Ctrl(CMD_OFF); //Shut down
}
} else
debugSerial << F("Modbus polling error=") << _HEX(result);
outch = aJson.print(out);
mqttClient.publish(addrstr, outch);
if (mqttClient.connected())
mqttClient.publish(addrstr, outch);
free(outch);
aJson.deleteItem(out);
modbusBusy = 0;
@@ -1283,7 +1296,8 @@ int Item::SendStatus(short cmd, short n, int *Par, boolean deffered) {
return -1;
}
debugSerial<<F("Pub: ")<<addrstr<<F("->")<<valstr<<endl;
mqttClient.publish(addrstr, valstr,true);
if (mqttClient.connected())
mqttClient.publish(addrstr, valstr,true);
return 0;
}
}