Refactoring and new entities

This commit is contained in:
Yurii
2023-11-22 17:52:16 +03:00
parent 5443ab82ce
commit 8bccfcb95d

View File

@@ -42,7 +42,7 @@ public:
bool publishNumberOutdoorSensorOffset(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.outdoor.type != 1, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_outdoor_sensor_offset");
@@ -66,7 +66,7 @@ public:
bool publishNumberIndoorSensorOffset(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.indoor.type != 1, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_indoor_sensor_offset");
@@ -152,7 +152,7 @@ public:
bool publishSwitchEmergencyUseEquitherm(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.sensors.outdoor.type != 1, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_emergency_use_equitherm");
@@ -174,7 +174,7 @@ public:
bool publishSwitchHeating(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating");
@@ -194,7 +194,7 @@ public:
bool publishSwitchHeatingTurbo(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating_turbo");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating_turbo");
@@ -214,7 +214,7 @@ public:
bool publishNumberHeatingTarget(byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating_target");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating_target");
@@ -259,7 +259,7 @@ public:
bool publishSensorHeatingSetpoint(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating_setpoint");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating_setpoint");
@@ -277,7 +277,7 @@ public:
bool publishSensorCurrentHeatingMinTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_current_heating_min_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_current_heating_min_temp");
@@ -295,7 +295,7 @@ public:
bool publishSensorCurrentHeatingMaxTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_current_heating_max_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_current_heating_max_temp");
@@ -358,7 +358,7 @@ public:
bool publishSwitchDHW(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_dhw");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_dhw");
@@ -378,7 +378,7 @@ public:
bool publishNumberDHWTarget(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_dhw_target");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_dhw_target");
@@ -401,7 +401,7 @@ public:
bool publishSensorCurrentDHWMinTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_current_dhw_min_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_current_dhw_min_temp");
@@ -419,7 +419,7 @@ public:
bool publishSensorCurrentDHWMaxTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_current_dhw_max_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_current_dhw_max_temp");
@@ -660,7 +660,7 @@ public:
bool publishNumberEquithermFactorT(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/settings");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.pid.enable, 'offline', 'online') }}");
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_equitherm_t");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_equitherm_t");
@@ -701,7 +701,7 @@ public:
bool publishSelectTuningRegulator(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY_MODE)] = F("all");
doc[FPSTR(HA_COMMAND_TOPIC)] = devicePrefix + F("/state/set");
doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"tuning\": {\"regulator\": {% if value == 'Equitherm' %}0{% elif value == 'PID' %}1{% endif %}}}");
@@ -752,7 +752,7 @@ public:
bool publishBinSensorHeating(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating");
@@ -768,7 +768,7 @@ public:
bool publishBinSensorDHW(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_dhw");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_dhw");
@@ -784,7 +784,7 @@ public:
bool publishBinSensorFlame(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_flame");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_flame");
@@ -800,7 +800,7 @@ public:
bool publishBinSensorFault(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.otStatus, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_fault");
@@ -817,7 +817,7 @@ public:
bool publishBinSensorDiagnostic(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_diagnostic");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_diagnostic");
@@ -833,7 +833,7 @@ public:
bool publishSensorFaultCode(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.fault, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_fault_code");
@@ -864,10 +864,27 @@ public:
return publish(getTopic("sensor", "rssi").c_str(), doc);
}
bool publishSensorUptime(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_uptime");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_uptime");
doc[FPSTR(HA_ENTITY_CATEGORY)] = F("diagnostic");
doc[FPSTR(HA_DEVICE_CLASS)] = F("duration");
doc[FPSTR(HA_STATE_CLASS)] = F("measurement");
doc[FPSTR(HA_UNIT_OF_MEASUREMENT)] = F("s");
doc[FPSTR(HA_NAME)] = F("Uptime");
doc[FPSTR(HA_ICON)] = F("mdi:clock-start");
doc[FPSTR(HA_STATE_TOPIC)] = devicePrefix + F("/state");
doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{{ value_json.states.uptime|int(0) }}");
return publish(getTopic("sensor", "uptime").c_str(), doc);
}
bool publishSensorModulation(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_modulation_level");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_modulation_level");
@@ -885,7 +902,7 @@ public:
bool publishSensorPressure(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_pressure");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_pressure");
@@ -925,7 +942,7 @@ public:
bool publishSensorIndoorTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][0][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY_MODE)] = F("any");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_indoor_temp");
@@ -965,7 +982,7 @@ public:
bool publishSensorOutdoorTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][0][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][0][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY_MODE)] = F("any");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_outdoor_temp");
@@ -984,7 +1001,7 @@ public:
bool publishSensorHeatingTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating_temp");
@@ -1002,7 +1019,7 @@ public:
bool publishSensorDHWTemp(bool enabledByDefault = true) {
StaticJsonDocument<1536> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_dhw_temp");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_dhw_temp");
@@ -1021,7 +1038,7 @@ public:
bool publishClimateHeating(byte minTemp = 20, byte maxTemp = 90, bool enabledByDefault = true) {
StaticJsonDocument<2560> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_heating");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_heating");
@@ -1065,7 +1082,7 @@ public:
bool publishClimateDHW(byte minTemp = 40, byte maxTemp = 60, bool enabledByDefault = true) {
StaticJsonDocument<2560> doc;
doc[FPSTR(HA_AVAILABILITY)][F("topic")] = devicePrefix + F("/status");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/status");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_dhw");
@@ -1100,6 +1117,53 @@ public:
}
bool publishButtonRestart(bool enabledByDefault = true) {
StaticJsonDocument<1024> doc;
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_restart");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_restart");
doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config");
doc[FPSTR(HA_DEVICE_CLASS)] = F("restart");
doc[FPSTR(HA_NAME)] = F("Restart");
doc[FPSTR(HA_COMMAND_TOPIC)] = devicePrefix + F("/state/set");
doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"restart\": true}}");
return publish(getTopic("button", "restart").c_str(), doc);
}
bool publishButtonFaultReset(bool enabledByDefault = true) {
StaticJsonDocument<1024> doc;
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.fault, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_fault_reset");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_fault_reset");
doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config");
doc[FPSTR(HA_DEVICE_CLASS)] = F("restart");
doc[FPSTR(HA_NAME)] = F("Fault reset");
doc[FPSTR(HA_COMMAND_TOPIC)] = devicePrefix + F("/state/set");
doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"faultReset\": true}}");
return publish(getTopic("button", "fault_reset").c_str(), doc);
}
bool publishButtonDiagnosticReset(bool enabledByDefault = true) {
StaticJsonDocument<1024> doc;
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_TOPIC)] = devicePrefix + F("/state");
doc[FPSTR(HA_AVAILABILITY)][FPSTR(HA_VALUE_TEMPLATE)] = F("{{ iif(value_json.states.diagnostic, 'online', 'offline') }}");
doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault;
doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_diagnostic_reset");
doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_diagnostic_reset");
doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config");
doc[FPSTR(HA_DEVICE_CLASS)] = F("restart");
doc[FPSTR(HA_NAME)] = F("Diagnostic reset");
doc[FPSTR(HA_COMMAND_TOPIC)] = devicePrefix + F("/state/set");
doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"actions\": {\"diagnosticReset\": true}}");
return publish(getTopic("button", "diagnostic_reset").c_str(), doc);
}
bool deleteNumberOutdoorTemp() {
return publish(getTopic("number", "outdoor_temp").c_str());
}