From 14c5a7ad3227c3701ecaef8b2dea8bea13dfbd9d Mon Sep 17 00:00:00 2001 From: lumapu Date: Sun, 4 Feb 2024 13:21:02 +0100 Subject: [PATCH] 0.8.72 * fixed translation #1403 * fixed sending commands to inverters which are soft turned off #1397 * reduce switchChannel command for HMS (only each 5th cycle it will be send now) --- src/CHANGES.md | 5 +++++ src/defines.h | 2 +- src/hm/hmInverter.h | 9 ++++----- src/hms/hmsRadio.h | 12 ++++++++++-- src/web/RestApi.h | 12 +++++++----- src/web/lang.json | 2 +- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/CHANGES.md b/src/CHANGES.md index 4a2e91f6a..82a6ed454 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,5 +1,10 @@ # Development Changes +## 0.8.72 - 2024-02-03 +* fixed translation #1403 +* fixed sending commands to inverters which are soft turned off #1397 +* reduce switchChannel command for HMS (only each 5th cycle it will be send now) + ## 0.8.71 - 2024-02-03 * fix heuristics reset * fix CMT missing frames problem diff --git a/src/defines.h b/src/defines.h index 6fbc5ff1c..f0ec528dd 100644 --- a/src/defines.h +++ b/src/defines.h @@ -13,7 +13,7 @@ //------------------------------------- #define VERSION_MAJOR 0 #define VERSION_MINOR 8 -#define VERSION_PATCH 71 +#define VERSION_PATCH 72 //------------------------------------- typedef struct { diff --git a/src/hm/hmInverter.h b/src/hm/hmInverter.h index d9db0b7f5..b62e985ae 100644 --- a/src/hm/hmInverter.h +++ b/src/hm/hmInverter.h @@ -152,7 +152,6 @@ class Inverter { static uint32_t *timestamp; // system timestamp static cfgInst_t *generalConfig; // general inverter configuration from setup - //static IApp *app; // pointer to app interface public: @@ -290,18 +289,18 @@ class Inverter { } bool setDevControlRequest(uint8_t cmd) { - if(InverterStatus::PRODUCING == status) { + if(InverterStatus::OFF != status) { mDevControlRequest = true; devControlCmd = cmd; //app->triggerTickSend(); // done in RestApi.h, because of "chicken-and-egg problem ;-)" } - return (InverterStatus::PRODUCING == status); + return (InverterStatus::OFF != status); } bool setDevCommand(uint8_t cmd) { - if(InverterStatus::PRODUCING == status) + if(InverterStatus::OFF != status) devControlCmd = cmd; - return (InverterStatus::PRODUCING == status); + return (InverterStatus::OFF != status); } void addValue(uint8_t pos, uint8_t buf[], record_t<> *rec) { diff --git a/src/hms/hmsRadio.h b/src/hms/hmsRadio.h index dd9af3acf..0fa1b6ab1 100644 --- a/src/hms/hmsRadio.h +++ b/src/hms/hmsRadio.h @@ -9,6 +9,8 @@ #include "cmt2300a.h" #include "../hm/radio.h" +#define CMT_SWITCH_CHANNEL_CYCLE 5 + template class CmtRadio : public Radio { typedef Cmt2300a CmtType; @@ -151,6 +153,10 @@ class CmtRadio : public Radio { } inline void sendSwitchChCmd(Inverter<> *iv, uint8_t ch) { + if(CMT_SWITCH_CHANNEL_CYCLE > ++mSwitchCycle) + return; + mSwitchCycle = 0; + /** ch: * 0x00: 860.00 MHz * 0x01: 860.25 MHz @@ -172,9 +178,10 @@ class CmtRadio : public Radio { inline void getRx(void) { packet_t p; p.millis = millis() - mMillis; - CmtStatus status = mCmt.getRx(p.packet, &p.len, 28, &p.rssi); - if(CmtStatus::SUCCESS == status) + if(CmtStatus::SUCCESS == mCmt.getRx(p.packet, &p.len, 28, &p.rssi)) { + mSwitchCycle = 0; mBufCtrl.push(p); + } if(p.packet[9] > ALL_FRAMES) { // indicates last frame setExpectedFrames(p.packet[9] - ALL_FRAMES); @@ -188,6 +195,7 @@ class CmtRadio : public Radio { bool mCmtAvail = false; bool mRqstGetRx = false; uint32_t mMillis; + uint8_t mSwitchCycle = 0; }; #endif /*__HMS_RADIO_H__*/ diff --git a/src/web/RestApi.h b/src/web/RestApi.h index 240a18f20..564d6c622 100644 --- a/src/web/RestApi.h +++ b/src/web/RestApi.h @@ -68,7 +68,7 @@ class RestApi { DynamicJsonDocument json(128); JsonObject dummy = json.as(); if(obj[F("path")] == "ctrl") - setCtrl(obj, dummy, "api"); + setCtrl(obj, dummy, "*"); else if(obj[F("path")] == "setup") setSetup(obj, dummy); } @@ -839,10 +839,12 @@ class RestApi { } jsonOut[F("id")] = jsonIn[F("id")]; - if(strncmp("api", clientIP, 3) != 0) { - if(mApp->isProtected(clientIP)) { - jsonOut[F("error")] = F(INV_IS_PROTECTED); - return false; + if(mConfig->sys.adminPwd[0] != '\0') { + if(strncmp("*", clientIP, 1) != 0) { // no call from API (MqTT) + if(mApp->isProtected(clientIP)) { + jsonOut[F("error")] = F(INV_IS_PROTECTED); + return false; + } } } diff --git a/src/web/lang.json b/src/web/lang.json index 78c7d6530..689fbb068 100644 --- a/src/web/lang.json +++ b/src/web/lang.json @@ -871,7 +871,7 @@ { "token": "BTN_CLEAR", "en": "clear", - "de": "l&ouuml;schen" + "de": "löschen" }, { "token": "BTN_AUTOSCROLL",