Publish HASS config when deleting, editing or adding a inverter
This commit is contained in:
parent
aaca7ad0b6
commit
526137da98
@ -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;
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
@ -211,5 +211,5 @@ void WebApiMqttClass::onMqttAdminPost(AsyncWebServerRequest* request)
|
||||
request->send(response);
|
||||
|
||||
MqttSettings.performReconnect();
|
||||
MqttHassPublishing.publishConfig();
|
||||
MqttHassPublishing.forceUpdate();
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user