modbus pooling/tomeout fix

This commit is contained in:
2019-07-14 01:44:06 +03:00
parent 6c0c3ce77e
commit c78891a423
2 changed files with 13 additions and 11 deletions

View File

@@ -1137,19 +1137,21 @@ int Item::checkModbusDimmer() {
data = node.getResponseBuffer(0); data = node.getResponseBuffer(0);
debugSerial << F("MB: ") << itemArr->name << F(" Val: ") << _HEX(data) << endl; debugSerial << F("MB: ") << itemArr->name << F(" Val: ") << _HEX(data) << endl;
checkModbusDimmer(data); checkModbusDimmer(data);
// Looking 1 step ahead for modbus item, which uses same register
Item nextItem(pollingItem->next);
if (pollingItem && nextItem.isValid() && nextItem.itemType == CH_MODBUS && nextItem.getArg(0) == addr &&
nextItem.getArg(1) == reg) {
nextItem.checkModbusDimmer(data);
pollingItem = pollingItem->next;
if (!pollingItem)
pollingItem = items->child;
}
} else } else
debugSerial << F("Modbus polling error=") << _HEX(result) << endl; debugSerial << F("Modbus polling error=") << _HEX(result) << endl;
modbusBusy = 0; modbusBusy = 0;
// Looking 1 step ahead for modbus item, which uses same register
Item nextItem(pollingItem->next);
if (pollingItem && nextItem.isValid() && nextItem.itemType == CH_MODBUS && nextItem.getArg(0) == addr &&
nextItem.getArg(1) == reg) {
nextItem.checkModbusDimmer(data);
pollingItem = pollingItem->next;
if (!pollingItem)
pollingItem = items->child;
}
} }

View File

@@ -20,7 +20,7 @@ env_default =
; mega2560-5100 ; mega2560-5100
; Arduino Mega + Ethernet shield Wiznet 5500 ; Arduino Mega + Ethernet shield Wiznet 5500
mega2560-5500 ; mega2560-5500
; LightHub controller HW revision 2.1 and above (Wiznet 5500 CS on pin 53) ; LightHub controller HW revision 2.1 and above (Wiznet 5500 CS on pin 53)
; lighthub21 ; lighthub21
@@ -29,7 +29,7 @@ env_default =
; due-5100 ; due-5100
; Arduino DUE + Ethernet shield Wiznet 5500 ; Arduino DUE + Ethernet shield Wiznet 5500
; due-5500 due-5500
; ESP 8266 ; ESP 8266
; esp8266-wifi ; esp8266-wifi