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 init();
|
||||||
void loop();
|
void loop();
|
||||||
void publishConfig();
|
void publishConfig();
|
||||||
|
void forceUpdate();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void publishField(std::shared_ptr<InverterAbstract> inv, uint8_t channel, byteAssign_fieldDeviceClass_t fieldType, bool clear = false);
|
void publishField(std::shared_ptr<InverterAbstract> inv, uint8_t channel, byteAssign_fieldDeviceClass_t fieldType, bool clear = false);
|
||||||
|
|
||||||
bool _wasConnected = false;
|
bool _wasConnected = false;
|
||||||
|
bool _updateForced = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MqttHassPublishingClass MqttHassPublishing;
|
extern MqttHassPublishingClass MqttHassPublishing;
|
||||||
@ -16,6 +16,11 @@ void MqttHassPublishingClass::init()
|
|||||||
|
|
||||||
void MqttHassPublishingClass::loop()
|
void MqttHassPublishingClass::loop()
|
||||||
{
|
{
|
||||||
|
if (_updateForced) {
|
||||||
|
publishConfig();
|
||||||
|
_updateForced = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (MqttSettings.getConnected() && !_wasConnected) {
|
if (MqttSettings.getConnected() && !_wasConnected) {
|
||||||
// Connection established
|
// Connection established
|
||||||
_wasConnected = true;
|
_wasConnected = true;
|
||||||
@ -26,6 +31,11 @@ void MqttHassPublishingClass::loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MqttHassPublishingClass::forceUpdate()
|
||||||
|
{
|
||||||
|
_updateForced = true;
|
||||||
|
}
|
||||||
|
|
||||||
void MqttHassPublishingClass::publishConfig()
|
void MqttHassPublishingClass::publishConfig()
|
||||||
{
|
{
|
||||||
if (!Configuration.get().Mqtt_Hass_Enabled) {
|
if (!Configuration.get().Mqtt_Hass_Enabled) {
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include "AsyncJson.h"
|
#include "AsyncJson.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "Hoymiles.h"
|
#include "Hoymiles.h"
|
||||||
|
#include "MqttHassPublishing.h"
|
||||||
#include "helper.h"
|
#include "helper.h"
|
||||||
|
|
||||||
void WebApiInverterClass::init(AsyncWebServer* server)
|
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++) {
|
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
|
||||||
inv->Statistics()->setChannelMaxPower(c, inverter->MaxChannelPower[c]);
|
inv->Statistics()->setChannelMaxPower(c, inverter->MaxChannelPower[c]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MqttHassPublishing.forceUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
|
void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
|
||||||
@ -217,7 +220,6 @@ void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
INVERTER_CONFIG_T& inverter = Configuration.get().Inverter[root[F("id")].as<uint8_t>()];
|
INVERTER_CONFIG_T& inverter = Configuration.get().Inverter[root[F("id")].as<uint8_t>()];
|
||||||
|
|
||||||
char* t;
|
char* t;
|
||||||
@ -250,6 +252,8 @@ void WebApiInverterClass::onInverterEdit(AsyncWebServerRequest* request)
|
|||||||
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
|
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
|
||||||
inv->Statistics()->setChannelMaxPower(c, inverter.MaxChannelPower[c]);
|
inv->Statistics()->setChannelMaxPower(c, inverter.MaxChannelPower[c]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MqttHassPublishing.forceUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
|
void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
|
||||||
@ -311,4 +315,6 @@ void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
|
|||||||
request->send(response);
|
request->send(response);
|
||||||
|
|
||||||
Hoymiles.removeInverterByPos(inverter_id);
|
Hoymiles.removeInverterByPos(inverter_id);
|
||||||
|
|
||||||
|
MqttHassPublishing.forceUpdate();
|
||||||
}
|
}
|
||||||
@ -211,5 +211,5 @@ void WebApiMqttClass::onMqttAdminPost(AsyncWebServerRequest* request)
|
|||||||
request->send(response);
|
request->send(response);
|
||||||
|
|
||||||
MqttSettings.performReconnect();
|
MqttSettings.performReconnect();
|
||||||
MqttHassPublishing.publishConfig();
|
MqttHassPublishing.forceUpdate();
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user