Publish HASS config when deleting, editing or adding a inverter

This commit is contained in:
Thomas Basler 2022-07-18 23:34:32 +02:00
parent aaca7ad0b6
commit 526137da98
4 changed files with 20 additions and 2 deletions

View File

@ -53,11 +53,13 @@ public:
void init();
void loop();
void publishConfig();
void forceUpdate();
private:
void publishField(std::shared_ptr<InverterAbstract> inv, uint8_t channel, byteAssign_fieldDeviceClass_t fieldType, bool clear = false);
bool _wasConnected = false;
bool _updateForced = false;
};
extern MqttHassPublishingClass MqttHassPublishing;

View File

@ -16,6 +16,11 @@ void MqttHassPublishingClass::init()
void MqttHassPublishingClass::loop()
{
if (_updateForced) {
publishConfig();
_updateForced = false;
}
if (MqttSettings.getConnected() && !_wasConnected) {
// Connection established
_wasConnected = true;
@ -26,6 +31,11 @@ void MqttHassPublishingClass::loop()
}
}
void MqttHassPublishingClass::forceUpdate()
{
_updateForced = true;
}
void MqttHassPublishingClass::publishConfig()
{
if (!Configuration.get().Mqtt_Hass_Enabled) {

View File

@ -7,6 +7,7 @@
#include "AsyncJson.h"
#include "Configuration.h"
#include "Hoymiles.h"
#include "MqttHassPublishing.h"
#include "helper.h"
void WebApiInverterClass::init(AsyncWebServer* server)
@ -143,6 +144,8 @@ void WebApiInverterClass::onInverterAdd(AsyncWebServerRequest* request)
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
inv->Statistics()->setChannelMaxPower(c, inverter->MaxChannelPower[c]);
}
MqttHassPublishing.forceUpdate();
}
void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
@ -217,7 +220,6 @@ void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
return;
}
INVERTER_CONFIG_T& inverter = Configuration.get().Inverter[root[F("id")].as<uint8_t>()];
char* t;
@ -250,6 +252,8 @@ void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
inv->Statistics()->setChannelMaxPower(c, inverter.MaxChannelPower[c]);
}
MqttHassPublishing.forceUpdate();
}
void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
@ -311,4 +315,6 @@ void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
request->send(response);
Hoymiles.removeInverterByPos(inverter_id);
MqttHassPublishing.forceUpdate();
}

View File

@ -211,5 +211,5 @@ void WebApiMqttClass::onMqttAdminPost(AsyncWebServerRequest* request)
request->send(response);
MqttSettings.performReconnect();
MqttHassPublishing.publishConfig();
MqttHassPublishing.forceUpdate();
}