don't detect HCs if there not active - #238

This commit is contained in:
Paul
2020-01-02 18:05:40 +01:00
parent c8b4f57b32
commit d2316518ac
4 changed files with 28 additions and 26 deletions

View File

@@ -25,7 +25,7 @@ def clr(color, text):
def remove_float_support(): def remove_float_support():
flags = " ".join(env['LINKFLAGS']) flags = " ".join(env['LINKFLAGS'])
print(clr(Color.BLUE, "** LINKFLAGS = %ss" % flags)) print(clr(Color.BLUE, "LINKFLAGS = %ss" % flags))
flags = flags.replace("-u _printf_float", "") flags = flags.replace("-u _printf_float", "")
flags = flags.replace("-u _scanf_float", "") flags = flags.replace("-u _scanf_float", "")
newflags = flags.split() newflags = flags.split()

View File

@@ -1199,7 +1199,10 @@ void _process_RC35StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
return; return;
} }
uint8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it, 0-3 int8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it, 0-3
if (hc_num == -1) {
return;
}
// ignore if the value is 0 (see https://github.com/proddy/EMS-ESP/commit/ccc30738c00f12ae6c89177113bd15af9826b836) // ignore if the value is 0 (see https://github.com/proddy/EMS-ESP/commit/ccc30738c00f12ae6c89177113bd15af9826b836)
if (EMS_RxTelegram->data[EMS_OFFSET_RC35StatusMessage_setpoint] != 0x00) { if (EMS_RxTelegram->data[EMS_OFFSET_RC35StatusMessage_setpoint] != 0x00) {
@@ -1357,29 +1360,25 @@ void _process_RC30Set(_EMS_RxTelegram * EMS_RxTelegram) {
// return which heating circuit it is, 0-3 for HC1 to HC4 // return which heating circuit it is, 0-3 for HC1 to HC4
// based on type 0x3E (HC1), 0x48 (HC2), 0x52 (HC3), 0x5C (HC4) // based on type 0x3E (HC1), 0x48 (HC2), 0x52 (HC3), 0x5C (HC4)
uint8_t _getHeatingCircuit(_EMS_RxTelegram * EMS_RxTelegram) { int8_t _getHeatingCircuit(_EMS_RxTelegram * EMS_RxTelegram) {
uint8_t hc_num; // check to see we have an active HC. Assuming first byte must have some bit status set.
switch (EMS_RxTelegram->type) { // see https://github.com/proddy/EMS-ESP/issues/238
case EMS_TYPE_RC35StatusMessage_HC1: if (EMS_RxTelegram->data[0] == 0x00) {
case EMS_TYPE_RC35Set_HC1: return -1;
default: }
hc_num = 1; // also default
break; int8_t hc_num = 0; // default is HC1
case EMS_TYPE_RC35StatusMessage_HC2:
case EMS_TYPE_RC35Set_HC2: if ((EMS_RxTelegram->type == EMS_TYPE_RC35StatusMessage_HC2) || (EMS_RxTelegram->type = EMS_TYPE_RC35Set_HC2)) {
hc_num = 2; hc_num = 1;
break; } else if ((EMS_RxTelegram->type == EMS_TYPE_RC35StatusMessage_HC3) || (EMS_RxTelegram->type = EMS_TYPE_RC35Set_HC3)) {
case EMS_TYPE_RC35StatusMessage_HC3: hc_num = 2;
case EMS_TYPE_RC35Set_HC3: } else if ((EMS_RxTelegram->type == EMS_TYPE_RC35StatusMessage_HC4) || (EMS_RxTelegram->type = EMS_TYPE_RC35Set_HC4)) {
hc_num = 3; hc_num = 3;
break; } else {
case EMS_TYPE_RC35StatusMessage_HC4: return -1; // not a valid HC
case EMS_TYPE_RC35Set_HC4:
hc_num = 4;
break;
} }
hc_num--;
EMS_Thermostat.hc[hc_num].active = true; EMS_Thermostat.hc[hc_num].active = true;
return (hc_num); return (hc_num);
@@ -1400,7 +1399,10 @@ void _process_RC35Set(_EMS_RxTelegram * EMS_RxTelegram) {
return; return;
} }
uint8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it? int8_t hc_num = _getHeatingCircuit(EMS_RxTelegram); // which HC is it, 0-3
if (hc_num == -1) {
return;
}
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc_num].mode, EMS_OFFSET_RC35Set_mode); // night, day, auto _setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc_num].mode, EMS_OFFSET_RC35Set_mode); // night, day, auto
_setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc_num].daytemp, EMS_OFFSET_RC35Set_temp_day); // is * 2 _setValue(EMS_RxTelegram, &EMS_Thermostat.hc[hc_num].daytemp, EMS_OFFSET_RC35Set_temp_day); // is * 2

View File

@@ -456,7 +456,7 @@ void _processType(_EMS_RxTelegram * EMS_RxTelegram);
void _debugPrintPackage(const char * prefix, _EMS_RxTelegram * EMS_RxTelegram, const char * color); void _debugPrintPackage(const char * prefix, _EMS_RxTelegram * EMS_RxTelegram, const char * color);
void _ems_clearTxData(); void _ems_clearTxData();
void _removeTxQueue(); void _removeTxQueue();
uint8_t _getHeatingCircuit(_EMS_RxTelegram * EMS_RxTelegram); int8_t _getHeatingCircuit(_EMS_RxTelegram * EMS_RxTelegram);
// global so can referenced in other classes // global so can referenced in other classes
extern _EMS_Sys_Status EMS_Sys_Status; extern _EMS_Sys_Status EMS_Sys_Status;

View File

@@ -1 +1 @@
#define APP_VERSION "1.9.5b8" #define APP_VERSION "1.9.5b9"