From 5294617455702219e12e8737587da550670f0acf Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 11 Aug 2025 23:44:58 +0300 Subject: [PATCH] Fake "alarm off" event for legacy thermostat fixed scheduled execution fixed Aircon driver relability improvement (working on 1-way lines) --- lighthub/item.cpp | 5 +++-- lighthub/main.cpp | 2 +- lighthub/modules/out_ac.cpp | 3 +++ lighthub/utils.cpp | 4 ++-- lighthub/utils.h | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/lighthub/item.cpp b/lighthub/item.cpp index da97a5b..c8fafa7 100644 --- a/lighthub/item.cpp +++ b/lighthub/item.cpp @@ -1094,7 +1094,8 @@ int Item::Ctrl(itemCmd cmd, char* subItem, uint8_t flags, bool authorized) } /// - if (((flags & CTRL_SCHEDULED_CALL_RECURSION) == CTRL_SCHEDULED_CALL_RECURSION && itemType != CH_GROUP)) + if (((flags & CTRL_SCHEDULED_CALL_RECURSION) == CTRL_SCHEDULED_CALL_RECURSION && itemType == CH_GROUP)) + // if (((flags & CTRL_SCHEDULED_CALL_RECURSION) == CTRL_SCHEDULED_CALL_RECURSION && itemType != CH_GROUP)) { debugSerial<isAllowed(cmd)) #endif } tStore.tempX100=cmd.getFloat()*100.; //Save measurement - tStore.timestamp16=millisNZ(8) & 0xFFFFU; //And timestamp + tStore.timestamp16=millisNZ(8,0xFFFFU); //And timestamp debugSerial<name<> 8,0xFFFF)) + if (isTimeOver(tStore.timestamp16,millisNZ(8,0xFFFF),PERIOD_THERMOSTAT_FAILED >> 8,0xFFFF)) { errorSerial<name<data,0,sizeof(acPersistent::data)); +store->data[0]=255; +store->data[1]=255; +store->data[2]=0x22; store->mode=0; store->power=0; store->inCheck=0; diff --git a/lighthub/utils.cpp b/lighthub/utils.cpp index 5792ffb..f28bb5c 100644 --- a/lighthub/utils.cpp +++ b/lighthub/utils.cpp @@ -839,9 +839,9 @@ itemCmd mapInt(int32_t arg, aJsonObject* map) } //Same as millis() but never return 0 or -1 -uint32_t millisNZ(uint8_t shift) +uint32_t millisNZ(uint8_t shift, uint32_t mask) { - uint32_t now = millis()>>shift; + uint32_t now = (millis()>>shift) & mask; if (!now || !(now+1)) now=1; return now; } diff --git a/lighthub/utils.h b/lighthub/utils.h index 1e85863..2fccb24 100644 --- a/lighthub/utils.h +++ b/lighthub/utils.h @@ -73,7 +73,7 @@ bool isTimeOver(uint32_t timestamp, uint32_t currTime, uint32_t time, uint32_t m bool executeCommand(aJsonObject* cmd, int8_t toggle = -1); bool executeCommand(aJsonObject* cmd, int8_t toggle, itemCmd _itemCmd, aJsonObject* defaultItem=NULL, aJsonObject* defaultEmit=NULL, aJsonObject* defaultCan = NULL); itemCmd mapInt(int32_t arg, aJsonObject* map); -uint32_t millisNZ(uint8_t shift=0); +uint32_t millisNZ(uint8_t shift=0, uint32_t mask=0xFFFFFFFFUL); serialParamType str2SerialParam(char * str); String toString(const IPAddress& address); bool getPinVal(uint8_t pin);