This commit is contained in:
proddy
2021-09-13 20:45:56 +02:00
parent 1d259d14c8
commit c62e73d21e
2 changed files with 22 additions and 8 deletions

View File

@@ -1018,6 +1018,8 @@ void Mqtt::publish_mqtt_ha_sensor(uint8_t type, // EMSdevice
// normal HA sensor, not a boolean one
snprintf_P(topic, sizeof(topic), PSTR("sensor/%s/%s/config"), mqtt_base_.c_str(), uniq.c_str()); // topic
bool set_state_class = false;
// unit of measure and map the HA icon
if (uom != DeviceValueUOM::NONE) {
doc["unit_of_meas"] = EMSdevice::uom_to_string(uom);
@@ -1025,10 +1027,12 @@ void Mqtt::publish_mqtt_ha_sensor(uint8_t type, // EMSdevice
switch (uom) {
case DeviceValueUOM::DEGREES:
doc["ic"] = F_(icondegrees);
doc["ic"] = F_(icondegrees);
set_state_class = true;
break;
case DeviceValueUOM::PERCENT:
doc["ic"] = F_(iconpercent);
doc["ic"] = F_(iconpercent);
set_state_class = true;
break;
case DeviceValueUOM::SECONDS:
case DeviceValueUOM::MINUTES:
@@ -1039,21 +1043,26 @@ void Mqtt::publish_mqtt_ha_sensor(uint8_t type, // EMSdevice
doc["ic"] = F_(iconkb);
break;
case DeviceValueUOM::LMIN:
doc["ic"] = F_(iconlmin);
doc["ic"] = F_(iconlmin);
set_state_class = true;
break;
case DeviceValueUOM::WH:
case DeviceValueUOM::KWH:
doc["ic"] = F_(iconkwh);
doc["ic"] = F_(iconkwh);
set_state_class = true;
break;
case DeviceValueUOM::UA:
doc["ic"] = F_(iconua);
doc["ic"] = F_(iconua);
set_state_class = true;
break;
case DeviceValueUOM::BAR:
doc["ic"] = F_(iconbar);
doc["ic"] = F_(iconbar);
set_state_class = true;
break;
case DeviceValueUOM::W:
case DeviceValueUOM::KW:
doc["ic"] = F_(iconkw);
doc["ic"] = F_(iconkw);
set_state_class = true;
break;
case DeviceValueUOM::DBM:
doc["ic"] = F_(icondbm);
@@ -1065,6 +1074,11 @@ void Mqtt::publish_mqtt_ha_sensor(uint8_t type, // EMSdevice
default:
break;
}
// see if we need to set the state_class
if (set_state_class) {
doc["state_class"] = F("measurement");
}
}
JsonObject dev = doc.createNestedObject("dev");