Browse Source

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)
pull/1402/head
lumapu 1 year ago
parent
commit
14c5a7ad32
  1. 5
      src/CHANGES.md
  2. 2
      src/defines.h
  3. 9
      src/hm/hmInverter.h
  4. 12
      src/hms/hmsRadio.h
  5. 12
      src/web/RestApi.h
  6. 2
      src/web/lang.json

5
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

2
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 {

9
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) {

12
src/hms/hmsRadio.h

@ -9,6 +9,8 @@
#include "cmt2300a.h"
#include "../hm/radio.h"
#define CMT_SWITCH_CHANNEL_CYCLE 5
template<uint32_t DTU_SN = 0x81001765>
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__*/

12
src/web/RestApi.h

@ -68,7 +68,7 @@ class RestApi {
DynamicJsonDocument json(128);
JsonObject dummy = json.as<JsonObject>();
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;
}
}
}

2
src/web/lang.json

@ -871,7 +871,7 @@
{
"token": "BTN_CLEAR",
"en": "clear",
"de": "l&ouuml;schen"
"de": "l&ouml;schen"
},
{
"token": "BTN_AUTOSCROLL",

Loading…
Cancel
Save