mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Validate MQTT enabled for MQTT options
This commit is contained in:
		| @@ -33,8 +33,10 @@ FAN_SPEED_HIGH = FanSpeed.FAN_SPEED_HIGH | |||||||
| FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||||
|     cv.GenerateID(): cv.declare_variable_id(FanState), |     cv.GenerateID(): cv.declare_variable_id(FanState), | ||||||
|     cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTFanComponent), |     cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTFanComponent), | ||||||
|     vol.Optional(CONF_OSCILLATION_STATE_TOPIC): cv.publish_topic, |     vol.Optional(CONF_OSCILLATION_STATE_TOPIC): vol.All(cv.requires_component('mqtt'), | ||||||
|     vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): cv.subscribe_topic, |                                                         cv.publish_topic), | ||||||
|  |     vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): vol.All(cv.requires_component('mqtt'), | ||||||
|  |                                                           cv.subscribe_topic), | ||||||
| }) | }) | ||||||
|  |  | ||||||
| FAN_PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(FAN_SCHEMA.schema) | FAN_PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(FAN_SCHEMA.schema) | ||||||
|   | |||||||
| @@ -570,6 +570,14 @@ def mqtt_qos(value): | |||||||
|     return one_of(0, 1, 2)(value) |     return one_of(0, 1, 2)(value) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def requires_component(comp): | ||||||
|  |     def validator(value): | ||||||
|  |         if comp not in CORE.config: | ||||||
|  |             raise vol.Invalid("This option requires component {}".format(comp)) | ||||||
|  |         return value | ||||||
|  |     return validator | ||||||
|  |  | ||||||
|  |  | ||||||
| uint8_t = vol.All(int_, vol.Range(min=0, max=255)) | uint8_t = vol.All(int_, vol.Range(min=0, max=255)) | ||||||
| uint16_t = vol.All(int_, vol.Range(min=0, max=65535)) | uint16_t = vol.All(int_, vol.Range(min=0, max=65535)) | ||||||
| uint32_t = vol.All(int_, vol.Range(min=0, max=4294967295)) | uint32_t = vol.All(int_, vol.Range(min=0, max=4294967295)) | ||||||
| @@ -723,15 +731,16 @@ MQTT_COMPONENT_AVAILABILITY_SCHEMA = vol.Schema({ | |||||||
|  |  | ||||||
| MQTT_COMPONENT_SCHEMA = vol.Schema({ | MQTT_COMPONENT_SCHEMA = vol.Schema({ | ||||||
|     vol.Optional(CONF_NAME): string, |     vol.Optional(CONF_NAME): string, | ||||||
|     vol.Optional(CONF_RETAIN): boolean, |     vol.Optional(CONF_RETAIN): vol.All(requires_component('mqtt'), boolean), | ||||||
|     vol.Optional(CONF_DISCOVERY): boolean, |     vol.Optional(CONF_DISCOVERY): vol.All(requires_component('mqtt'), boolean), | ||||||
|     vol.Optional(CONF_STATE_TOPIC): publish_topic, |     vol.Optional(CONF_STATE_TOPIC): vol.All(requires_component('mqtt'), publish_topic), | ||||||
|     vol.Optional(CONF_AVAILABILITY): vol.Any(None, MQTT_COMPONENT_AVAILABILITY_SCHEMA), |     vol.Optional(CONF_AVAILABILITY): vol.All(requires_component('mqtt'), | ||||||
|  |                                              vol.Any(None, MQTT_COMPONENT_AVAILABILITY_SCHEMA)), | ||||||
|     vol.Optional(CONF_INTERNAL): boolean, |     vol.Optional(CONF_INTERNAL): boolean, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| MQTT_COMMAND_COMPONENT_SCHEMA = MQTT_COMPONENT_SCHEMA.extend({ | MQTT_COMMAND_COMPONENT_SCHEMA = MQTT_COMPONENT_SCHEMA.extend({ | ||||||
|     vol.Optional(CONF_COMMAND_TOPIC): subscribe_topic, |     vol.Optional(CONF_COMMAND_TOPIC): vol.All(requires_component('mqtt'), subscribe_topic), | ||||||
| }) | }) | ||||||
|  |  | ||||||
| COMPONENT_SCHEMA = vol.Schema({ | COMPONENT_SCHEMA = vol.Schema({ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user