Browse Source

Merge 2563254d30 into c4fe30f118

pull/1864/merge
wasilukm 4 days ago
committed by GitHub
parent
commit
033e4e797d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      src/config/settings.h
  2. 2
      src/publisher/pubMqtt.h
  3. 1
      src/web/RestApi.h
  4. 14
      src/web/html/setup.html
  5. 9
      src/web/lang.json
  6. 1
      src/web/web.h

4
src/config/settings.h

@ -166,6 +166,7 @@ typedef struct {
bool json; bool json;
uint16_t interval; uint16_t interval;
bool enableRetain; bool enableRetain;
bool sendConfigOnConnect;
} cfgMqtt_t; } cfgMqtt_t;
typedef struct { typedef struct {
@ -473,6 +474,7 @@ class settings {
mCfg.mqtt.interval = 0; // off mCfg.mqtt.interval = 0; // off
mCfg.mqtt.json = false; // off mCfg.mqtt.json = false; // off
mCfg.mqtt.enableRetain = true; mCfg.mqtt.enableRetain = true;
mCfg.mqtt.sendConfigOnConnect = false;
mCfg.inst.sendInterval = SEND_INTERVAL; mCfg.inst.sendInterval = SEND_INTERVAL;
mCfg.inst.rstValsAtMidNight = false; mCfg.inst.rstValsAtMidNight = false;
@ -728,6 +730,7 @@ class settings {
obj[F("json")] = mCfg.mqtt.json; obj[F("json")] = mCfg.mqtt.json;
obj[F("intvl")] = mCfg.mqtt.interval; obj[F("intvl")] = mCfg.mqtt.interval;
obj[F("retain")] = mCfg.mqtt.enableRetain; obj[F("retain")] = mCfg.mqtt.enableRetain;
obj[F("sendConfigOnConnect")] = mCfg.mqtt.sendConfigOnConnect;
} else { } else {
getVal<uint16_t>(obj, F("port"), &mCfg.mqtt.port); getVal<uint16_t>(obj, F("port"), &mCfg.mqtt.port);
@ -739,6 +742,7 @@ class settings {
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); getVal<bool>(obj, F("retain"), &mCfg.mqtt.enableRetain);
getVal<bool>(obj, F("sendConfigOnConnect"), &mCfg.mqtt.sendConfigOnConnect);
} }
} }

2
src/publisher/pubMqtt.h

@ -303,6 +303,8 @@ class PubMqtt {
subscribe(mVal.data()); subscribe(mVal.data());
} }
subscribe(subscr[MQTT_SUBS_SET_TIME]); subscribe(subscr[MQTT_SUBS_SET_TIME]);
if(mCfgMqtt->sendConfigOnConnect)
sendDiscoveryConfig();
} }
void onDisconnect(espMqttClientTypes::DisconnectReason reason) { void onDisconnect(espMqttClientTypes::DisconnectReason reason) {

1
src/web/RestApi.h

@ -731,6 +731,7 @@ class RestApi {
obj[F("json")] = (bool) mConfig->mqtt.json; obj[F("json")] = (bool) mConfig->mqtt.json;
obj[F("interval")] = String(mConfig->mqtt.interval); obj[F("interval")] = String(mConfig->mqtt.interval);
obj[F("retain")] = (bool)mConfig->mqtt.enableRetain; obj[F("retain")] = (bool)mConfig->mqtt.enableRetain;
obj[F("sendConfigOnConnect")] = (bool)mConfig->mqtt.sendConfigOnConnect;
} }
void getNtp(JsonObject obj) { void getNtp(JsonObject obj) {

14
src/web/html/setup.html

@ -245,16 +245,17 @@
<div class="col-12 col-sm-9"><input type="number" name="mqttInterval" title="Invalid input" /></div> <div class="col-12 col-sm-9"><input type="number" name="mqttInterval" title="Invalid input" /></div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12 col-sm-3 my-2">Discovery Config (homeassistant)</div> <div class="col-8 col-sm-3">{#RETAIN}</div>
<div class="col-12 col-sm-9"> <div class="col-4 col-sm-9"><input type="checkbox" name="retain"/></div>
</div>
<div class="row mb-3">
<div class="col-8 col-sm-3">{#SEND_CONFIG_ON_CONNECT}</div>
<div class="col-4 col-sm-3"><input type="checkbox" name="sendConfigOnConnect"/></div>
<div class="col-10 col-sm-3">
<input type="button" name="mqttDiscovery" id="mqttDiscovery" class="btn" value="{#BTN_SEND}" onclick="sendDiscoveryConfig()"/> <input type="button" name="mqttDiscovery" id="mqttDiscovery" class="btn" value="{#BTN_SEND}" onclick="sendDiscoveryConfig()"/>
<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>
@ -990,6 +991,7 @@
document.getElementsByName("mqtt"+i[0])[0].value = obj[i[1]]; document.getElementsByName("mqtt"+i[0])[0].value = obj[i[1]];
document.getElementsByName("mqttJson")[0].checked = obj["json"]; document.getElementsByName("mqttJson")[0].checked = obj["json"];
document.getElementsByName("retain")[0].checked = obj.retain document.getElementsByName("retain")[0].checked = obj.retain
document.getElementsByName("sendConfigOnConnect")[0].checked = obj["sendConfigOnConnect"];
} }
function parseNtp(obj) { function parseNtp(obj) {

9
src/web/lang.json

@ -495,8 +495,8 @@
}, },
{ {
"token": "BTN_SEND", "token": "BTN_SEND",
"en": "send", "en": "Force send",
"de": "senden" "de": "Senden erzwingen"
}, },
{ {
"token": "BTN_REBOOT_SUCCESSFUL_SAVE", "token": "BTN_REBOOT_SUCCESSFUL_SAVE",
@ -822,6 +822,11 @@
"token": "NO_NETWORK_FOUND", "token": "NO_NETWORK_FOUND",
"en": "no network found", "en": "no network found",
"de": "kein Netzwerk gefunden" "de": "kein Netzwerk gefunden"
},
{
"token": "SEND_CONFIG_ON_CONNECT",
"en": "Send discovery config on MQTT connect",
"de": "Discovery-Konfiguration beim MQTT-Verbindungsaufbau senden"
} }
] ]
}, },

1
src/web/web.h

@ -598,6 +598,7 @@ class Web {
mConfig->mqtt.json = (request->arg("mqttJson") == "on"); mConfig->mqtt.json = (request->arg("mqttJson") == "on");
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.sendConfigOnConnect = (request->arg("sendConfigOnConnect") == "on");
mConfig->mqtt.enableRetain = (request->arg("retain") == "on"); mConfig->mqtt.enableRetain = (request->arg("retain") == "on");
// serial console // serial console

Loading…
Cancel
Save