mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Implement MQTT discovery object_id generator (#3114)
This commit is contained in:
		| @@ -16,6 +16,7 @@ from esphome.const import ( | ||||
|     CONF_DISCOVERY_PREFIX, | ||||
|     CONF_DISCOVERY_RETAIN, | ||||
|     CONF_DISCOVERY_UNIQUE_ID_GENERATOR, | ||||
|     CONF_DISCOVERY_OBJECT_ID_GENERATOR, | ||||
|     CONF_ID, | ||||
|     CONF_KEEPALIVE, | ||||
|     CONF_LEVEL, | ||||
| @@ -105,6 +106,12 @@ MQTT_DISCOVERY_UNIQUE_ID_GENERATOR_OPTIONS = { | ||||
|     "mac": MQTTDiscoveryUniqueIdGenerator.MQTT_MAC_ADDRESS_UNIQUE_ID_GENERATOR, | ||||
| } | ||||
|  | ||||
| MQTTDiscoveryObjectIdGenerator = mqtt_ns.enum("MQTTDiscoveryObjectIdGenerator") | ||||
| MQTT_DISCOVERY_OBJECT_ID_GENERATOR_OPTIONS = { | ||||
|     "none": MQTTDiscoveryObjectIdGenerator.MQTT_NONE_OBJECT_ID_GENERATOR, | ||||
|     "device_name": MQTTDiscoveryObjectIdGenerator.MQTT_DEVICE_NAME_OBJECT_ID_GENERATOR, | ||||
| } | ||||
|  | ||||
|  | ||||
| def validate_config(value): | ||||
|     # Populate default fields | ||||
| @@ -166,6 +173,9 @@ CONFIG_SCHEMA = cv.All( | ||||
|             cv.Optional(CONF_DISCOVERY_UNIQUE_ID_GENERATOR, default="legacy"): cv.enum( | ||||
|                 MQTT_DISCOVERY_UNIQUE_ID_GENERATOR_OPTIONS | ||||
|             ), | ||||
|             cv.Optional(CONF_DISCOVERY_OBJECT_ID_GENERATOR, default="none"): cv.enum( | ||||
|                 MQTT_DISCOVERY_OBJECT_ID_GENERATOR_OPTIONS | ||||
|             ), | ||||
|             cv.Optional(CONF_USE_ABBREVIATIONS, default=True): cv.boolean, | ||||
|             cv.Optional(CONF_BIRTH_MESSAGE): MQTT_MESSAGE_SCHEMA, | ||||
|             cv.Optional(CONF_WILL_MESSAGE): MQTT_MESSAGE_SCHEMA, | ||||
| @@ -245,19 +255,27 @@ async def to_code(config): | ||||
|     discovery_retain = config[CONF_DISCOVERY_RETAIN] | ||||
|     discovery_prefix = config[CONF_DISCOVERY_PREFIX] | ||||
|     discovery_unique_id_generator = config[CONF_DISCOVERY_UNIQUE_ID_GENERATOR] | ||||
|     discovery_object_id_generator = config[CONF_DISCOVERY_OBJECT_ID_GENERATOR] | ||||
|  | ||||
|     if not discovery: | ||||
|         cg.add(var.disable_discovery()) | ||||
|     elif discovery == "CLEAN": | ||||
|         cg.add( | ||||
|             var.set_discovery_info( | ||||
|                 discovery_prefix, discovery_unique_id_generator, discovery_retain, True | ||||
|                 discovery_prefix, | ||||
|                 discovery_unique_id_generator, | ||||
|                 discovery_object_id_generator, | ||||
|                 discovery_retain, | ||||
|                 True, | ||||
|             ) | ||||
|         ) | ||||
|     elif CONF_DISCOVERY_RETAIN in config or CONF_DISCOVERY_PREFIX in config: | ||||
|         cg.add( | ||||
|             var.set_discovery_info( | ||||
|                 discovery_prefix, discovery_unique_id_generator, discovery_retain | ||||
|                 discovery_prefix, | ||||
|                 discovery_unique_id_generator, | ||||
|                 discovery_object_id_generator, | ||||
|                 discovery_retain, | ||||
|             ) | ||||
|         ) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user