diff --git a/main/ZmqttDiscovery.ino b/main/ZmqttDiscovery.ino index 3a4a224..6087e31 100644 --- a/main/ZmqttDiscovery.ino +++ b/main/ZmqttDiscovery.ino @@ -245,11 +245,20 @@ void createDiscovery(const char* sensor_type, sensor["stat_t"] = state_topic; } + // We check if the class belongs to HAAS class list + bool HASSClass = false; + int num_classes = sizeof(availableHASSClasses) / sizeof(availableHASSClasses[0]); + for (int i = 0; i < num_classes; i++) { // see class list and size into config_mqttDiscovery.h + if (strcmp(availableHASSClasses[i], device_class) == 0) { + HASSClass = true; + } + } + sensor["name"] = s_name; //name sensor["uniq_id"] = unique_id; //unique_id if (retainCmd) sensor["retain"] = retainCmd; // Retain command - if (device_class[0]) + if (device_class[0] && HASSClass) sensor["dev_cla"] = device_class; //device_class if (value_template[0]) sensor["val_tpl"] = value_template; //value_template @@ -257,7 +266,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]) + if (unit_of_meas[0] && HASSClass) 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 7ee88e5..39f91f6 100644 --- a/main/config_mqttDiscovery.h +++ b/main/config_mqttDiscovery.h @@ -196,4 +196,21 @@ void announceDeviceTrigger(bool use_gateway_info, # define stateClassTotalIncreasing "total_increasing" #endif +// From https://github.com/home-assistant/core/blob/d7ac4bd65379e11461c7ce0893d3533d8d8b8cbf/homeassistant/const.py#L225 +// List of classes available in Home Assistant +const char* availableHASSClasses[] = {"battery", + "carbon_monoxide", + "carbon_dioxide", + "humidity", + "illuminance", + "signal_strength", + "temperature", + "timestamp", + "pressure", + "power", + "current", + "energy", + "power_factor", + "voltage"}; + #endif