diff --git a/main/ZmqttDiscovery.ino b/main/ZmqttDiscovery.ino index d262d6c2e4..80fe4a4475 100644 --- a/main/ZmqttDiscovery.ino +++ b/main/ZmqttDiscovery.ino @@ -254,6 +254,15 @@ void createDiscovery(const char* sensor_type, } } + // We check if the class belongs to HAAS class list + bool HASSUnit = false; + int num_units = sizeof(availableHASSUnits) / sizeof(availableHASSUnits[0]); + for (int i = 0; i < num_units; i++) { // see class list and size into config_mqttDiscovery.h + if (strcmp(availableHASSUnits[i], unit_of_meas) == 0) { + HASSUnit = true; + } + } + sensor["name"] = s_name; //name sensor["uniq_id"] = unique_id; //unique_id if (retainCmd) @@ -266,7 +275,7 @@ void createDiscovery(const char* sensor_type, sensor["pl_on"] = payload_on; // payload_on if (payload_off[0]) sensor["pl_off"] = payload_off; //payload_off - if (unit_of_meas[0] && HASSClass) + if (unit_of_meas[0] && HASSUnit) sensor["unit_of_meas"] = unit_of_meas; //unit_of_measurement*/ if (off_delay != 0) sensor["off_delay"] = off_delay; //off_delay diff --git a/main/config_mqttDiscovery.h b/main/config_mqttDiscovery.h index a6d9b1c306..8befac18a3 100644 --- a/main/config_mqttDiscovery.h +++ b/main/config_mqttDiscovery.h @@ -216,4 +216,24 @@ const char* availableHASSClasses[] = {"battery", "power_factor", "voltage"}; +// From https://github.com/home-assistant/core/blob/d7ac4bd65379e11461c7ce0893d3533d8d8b8cbf/homeassistant/const.py#L379 +// List of units available in Home Assistant +const char* availableHASSUnits[] = {"W", + "kW", + "V", + "A", + "W", + "°C", + "°F", + "ms", + "s", + "hPa" + "kg", + "lb", + "µS/cm", + "lx", + "%", + "dB", + "B"}; + #endif