add connection status entity for inverter

This commit is contained in:
Christopher Fenner 2023-09-22 14:24:54 +02:00 committed by GitHub
parent d419fd4794
commit 5b9aa508c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -61,6 +61,7 @@ void MqttHandleHassClass::publishConfig()
publishInverterNumber(inv, "Limit NonPersistent Absolute", "mdi:speedometer", "config", "cmd/limit_nonpersistent_absolute", "status/limit_absolute", "W", 10, 2250); publishInverterNumber(inv, "Limit NonPersistent Absolute", "mdi:speedometer", "config", "cmd/limit_nonpersistent_absolute", "status/limit_absolute", "W", 10, 2250);
publishInverterNumber(inv, "Limit Persistent Absolute", "mdi:speedometer", "config", "cmd/limit_persistent_absolute", "status/limit_absolute", "W", 10, 2250); publishInverterNumber(inv, "Limit Persistent Absolute", "mdi:speedometer", "config", "cmd/limit_persistent_absolute", "status/limit_absolute", "W", 10, 2250);
publishInverterBinarySensor(inv, "Status", "connectivity", "diagnostic", "status/reachable", "1", "0");
publishInverterBinarySensor(inv, "Reachable", "status/reachable", "1", "0"); publishInverterBinarySensor(inv, "Reachable", "status/reachable", "1", "0");
publishInverterBinarySensor(inv, "Producing", "status/producing", "1", "0"); publishInverterBinarySensor(inv, "Producing", "status/producing", "1", "0");
@ -225,7 +226,7 @@ void MqttHandleHassClass::publishInverterNumber(
publish(configTopic, buffer); publish(configTopic, buffer);
} }
void MqttHandleHassClass::publishInverterBinarySensor(std::shared_ptr<InverterAbstract> inv, const char* caption, const char* subTopic, const char* payload_on, const char* payload_off) void MqttHandleHassClass::publishInverterBinarySensor(std::shared_ptr<InverterAbstract> inv, const char* caption, const char* device_class, const char* category, const char* subTopic, const char* payload_on, const char* payload_off)
{ {
String serial = inv->serialString(); String serial = inv->serialString();
@ -242,6 +243,12 @@ void MqttHandleHassClass::publishInverterBinarySensor(std::shared_ptr<InverterAb
DynamicJsonDocument root(1024); DynamicJsonDocument root(1024);
root["name"] = String(inv->name()) + " " + caption; root["name"] = String(inv->name()) + " " + caption;
root["uniq_id"] = serial + "_" + sensorId; root["uniq_id"] = serial + "_" + sensorId;
if (strcmp(device_class, "")) {
root["dev_cla"] = device_class;
}
if (strcmp(category, "")) {
root["ent_cat"] = category;
}
root["stat_t"] = statTopic; root["stat_t"] = statTopic;
root["pl_on"] = payload_on; root["pl_on"] = payload_on;
root["pl_off"] = payload_off; root["pl_off"] = payload_off;
@ -269,4 +276,4 @@ void MqttHandleHassClass::publish(const String& subtopic, const String& payload)
String topic = Configuration.get().Mqtt_Hass_Topic; String topic = Configuration.get().Mqtt_Hass_Topic;
topic += subtopic; topic += subtopic;
MqttSettings.publishGeneric(topic.c_str(), payload.c_str(), Configuration.get().Mqtt_Hass_Retain); MqttSettings.publishGeneric(topic.c_str(), payload.c_str(), Configuration.get().Mqtt_Hass_Retain);
} }