mirror of
https://github.com/lumapu/ahoy.git
synced 2025-04-30 02:36:20 +02:00
parent
50f7d7e47d
commit
e76722ad33
7 changed files with 23 additions and 2 deletions
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
## 0.8.110 - 2024-04-11
|
## 0.8.110 - 2024-04-11
|
||||||
* revert CMT2300A changes #1553
|
* revert CMT2300A changes #1553
|
||||||
|
* merged PR: fix closing tag #1584
|
||||||
|
* add disable retain flag #1582
|
||||||
|
|
||||||
## 0.8.109 - 2024-04-09
|
## 0.8.109 - 2024-04-09
|
||||||
* fix hal patch
|
* fix hal patch
|
||||||
|
|
|
@ -165,6 +165,7 @@ typedef struct {
|
||||||
char pwd[MQTT_PWD_LEN];
|
char pwd[MQTT_PWD_LEN];
|
||||||
char topic[MQTT_TOPIC_LEN];
|
char topic[MQTT_TOPIC_LEN];
|
||||||
uint16_t interval;
|
uint16_t interval;
|
||||||
|
bool enableRetain;
|
||||||
} cfgMqtt_t;
|
} cfgMqtt_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -490,6 +491,7 @@ class settings {
|
||||||
snprintf(mCfg.mqtt.pwd, MQTT_PWD_LEN, "%s", DEF_MQTT_PWD);
|
snprintf(mCfg.mqtt.pwd, MQTT_PWD_LEN, "%s", DEF_MQTT_PWD);
|
||||||
snprintf(mCfg.mqtt.topic, MQTT_TOPIC_LEN, "%s", DEF_MQTT_TOPIC);
|
snprintf(mCfg.mqtt.topic, MQTT_TOPIC_LEN, "%s", DEF_MQTT_TOPIC);
|
||||||
mCfg.mqtt.interval = 0; // off
|
mCfg.mqtt.interval = 0; // off
|
||||||
|
mCfg.mqtt.enableRetain = true;
|
||||||
|
|
||||||
mCfg.inst.sendInterval = SEND_INTERVAL;
|
mCfg.inst.sendInterval = SEND_INTERVAL;
|
||||||
mCfg.inst.rstYieldMidNight = false;
|
mCfg.inst.rstYieldMidNight = false;
|
||||||
|
@ -746,6 +748,7 @@ class settings {
|
||||||
obj[F("pwd")] = mCfg.mqtt.pwd;
|
obj[F("pwd")] = mCfg.mqtt.pwd;
|
||||||
obj[F("topic")] = mCfg.mqtt.topic;
|
obj[F("topic")] = mCfg.mqtt.topic;
|
||||||
obj[F("intvl")] = mCfg.mqtt.interval;
|
obj[F("intvl")] = mCfg.mqtt.interval;
|
||||||
|
obj[F("retain")] = mCfg.mqtt.enableRetain;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
getVal<uint16_t>(obj, F("port"), &mCfg.mqtt.port);
|
getVal<uint16_t>(obj, F("port"), &mCfg.mqtt.port);
|
||||||
|
@ -755,6 +758,7 @@ class settings {
|
||||||
getChar(obj, F("clientId"), mCfg.mqtt.clientId, MQTT_CLIENTID_LEN);
|
getChar(obj, F("clientId"), mCfg.mqtt.clientId, MQTT_CLIENTID_LEN);
|
||||||
getChar(obj, F("pwd"), mCfg.mqtt.pwd, MQTT_PWD_LEN);
|
getChar(obj, F("pwd"), mCfg.mqtt.pwd, MQTT_PWD_LEN);
|
||||||
getChar(obj, F("topic"), mCfg.mqtt.topic, MQTT_TOPIC_LEN);
|
getChar(obj, F("topic"), mCfg.mqtt.topic, MQTT_TOPIC_LEN);
|
||||||
|
getVal<bool>(obj, F("retain"), &mCfg.mqtt.enableRetain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,9 @@ class PubMqtt {
|
||||||
else
|
else
|
||||||
snprintf(mTopic.data(), mTopic.size(), "%s", subTopic);
|
snprintf(mTopic.data(), mTopic.size(), "%s", subTopic);
|
||||||
|
|
||||||
|
if(!mCfgMqtt->enableRetain)
|
||||||
|
retained = false;
|
||||||
|
|
||||||
mClient.publish(mTopic.data(), qos, retained, payload);
|
mClient.publish(mTopic.data(), qos, retained, payload);
|
||||||
yield();
|
yield();
|
||||||
mTxCnt++;
|
mTxCnt++;
|
||||||
|
|
|
@ -710,6 +710,7 @@ class RestApi {
|
||||||
obj[F("pwd")] = (strlen(mConfig->mqtt.pwd) > 0) ? F("{PWD}") : String("");
|
obj[F("pwd")] = (strlen(mConfig->mqtt.pwd) > 0) ? F("{PWD}") : String("");
|
||||||
obj[F("topic")] = String(mConfig->mqtt.topic);
|
obj[F("topic")] = String(mConfig->mqtt.topic);
|
||||||
obj[F("interval")] = String(mConfig->mqtt.interval);
|
obj[F("interval")] = String(mConfig->mqtt.interval);
|
||||||
|
obj[F("retain")] = (bool)mConfig->mqtt.enableRetain;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getNtp(JsonObject obj) {
|
void getNtp(JsonObject obj) {
|
||||||
|
|
|
@ -246,6 +246,10 @@
|
||||||
<span id="apiResultMqtt"></span>
|
<span id="apiResultMqtt"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-8 col-sm-3">{#RETAIN}</div>
|
||||||
|
<div class="col-4 col-sm-9"><input type="checkbox" name="retain"/></div>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -282,7 +286,7 @@
|
||||||
<div id="screenSaver"></div>
|
<div id="screenSaver"></div>
|
||||||
<div class="row mb-3" id="luminanceOption">
|
<div class="row mb-3" id="luminanceOption">
|
||||||
<div class="col-12 col-sm-3 my-2">{#DISP_LUMINANCE}</div>
|
<div class="col-12 col-sm-3 my-2">{#DISP_LUMINANCE}</div>
|
||||||
<div class="col-12 col-sm-9"><input type="number" name="disp_cont" min="0" max="255"></select></div>
|
<div class="col-12 col-sm-9"><input type="number" name="disp_cont" min="0" max="255"></div>
|
||||||
</div>
|
</div>
|
||||||
<p class="des">{#DISP_PINOUT}</p>
|
<p class="des">{#DISP_PINOUT}</p>
|
||||||
<div id="dispPins"></div>
|
<div id="dispPins"></div>
|
||||||
|
@ -291,7 +295,7 @@
|
||||||
<p class="des">{#GRAPH_OPTIONS}</p>
|
<p class="des">{#GRAPH_OPTIONS}</p>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-12 col-sm-3 my-2">{#GRAPH_SHOW_RATIO}</div>
|
<div class="col-12 col-sm-3 my-2">{#GRAPH_SHOW_RATIO}</div>
|
||||||
<div class="col-12 col-sm-9"><input type="number" name="disp_graph_ratio" min="0" max="100"></select></div>
|
<div class="col-12 col-sm-9"><input type="number" name="disp_graph_ratio" min="0" max="100"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="graphSize"></div>
|
<div id="graphSize"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -922,6 +926,7 @@
|
||||||
function parseMqtt(obj) {
|
function parseMqtt(obj) {
|
||||||
for(var i of [["Addr", "broker"], ["Port", "port"], ["ClientId", "clientId"], ["User", "user"], ["Pwd", "pwd"], ["Topic", "topic"], ["Interval", "interval"]])
|
for(var i of [["Addr", "broker"], ["Port", "port"], ["ClientId", "clientId"], ["User", "user"], ["Pwd", "pwd"], ["Topic", "topic"], ["Interval", "interval"]])
|
||||||
document.getElementsByName("mqtt"+i[0])[0].value = obj[i[1]];
|
document.getElementsByName("mqtt"+i[0])[0].value = obj[i[1]];
|
||||||
|
document.getElementsByName("retain")[0].checked = obj.retain
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseNtp(obj) {
|
function parseNtp(obj) {
|
||||||
|
|
|
@ -413,6 +413,11 @@
|
||||||
"en": "Send Inverter data in a fixed interval, even if there is no change. A value of '0' disables the fixed interval. The data is published once it was successfully received from inverter. (default: 0)",
|
"en": "Send Inverter data in a fixed interval, even if there is no change. A value of '0' disables the fixed interval. The data is published once it was successfully received from inverter. (default: 0)",
|
||||||
"de": "Wechselrichterdaten in fixem Intervall schicken, auch wenn es keine Änderung gab. Ein Wert von '0' deaktiviert das fixe Intervall, die Wechselrichterdaten werden übertragen, sobald neue zur Verfügung stehen. (Standard: 0)"
|
"de": "Wechselrichterdaten in fixem Intervall schicken, auch wenn es keine Änderung gab. Ein Wert von '0' deaktiviert das fixe Intervall, die Wechselrichterdaten werden übertragen, sobald neue zur Verfügung stehen. (Standard: 0)"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"token": "RETAIN",
|
||||||
|
"en": "enable retain flag",
|
||||||
|
"de": "'Retain Flag' aktivieren"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"token": "DISPLAY_CONFIG",
|
"token": "DISPLAY_CONFIG",
|
||||||
"en": "Display Config",
|
"en": "Display Config",
|
||||||
|
|
|
@ -583,6 +583,7 @@ class Web {
|
||||||
request->arg("mqttTopic").toCharArray(mConfig->mqtt.topic, MQTT_TOPIC_LEN);
|
request->arg("mqttTopic").toCharArray(mConfig->mqtt.topic, MQTT_TOPIC_LEN);
|
||||||
mConfig->mqtt.port = request->arg("mqttPort").toInt();
|
mConfig->mqtt.port = request->arg("mqttPort").toInt();
|
||||||
mConfig->mqtt.interval = request->arg("mqttInterval").toInt();
|
mConfig->mqtt.interval = request->arg("mqttInterval").toInt();
|
||||||
|
mConfig->mqtt.enableRetain = (request->arg("retain") == "on");
|
||||||
|
|
||||||
// serial console
|
// serial console
|
||||||
mConfig->serial.debug = (request->arg("serDbg") == "on");
|
mConfig->serial.debug = (request->arg("serDbg") == "on");
|
||||||
|
|
Loading…
Add table
Reference in a new issue