mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	MQTT different log level (#167)
* Add option to have different log level over MQTT * Add Test * Lint
This commit is contained in:
		| @@ -2,16 +2,16 @@ import re | ||||
|  | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import automation | ||||
| from esphomeyaml.components import logger | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_BIRTH_MESSAGE, CONF_BROKER, CONF_CLIENT_ID, CONF_DISCOVERY, \ | ||||
|     CONF_DISCOVERY_PREFIX, CONF_DISCOVERY_RETAIN, CONF_ID, CONF_KEEPALIVE, CONF_LOG_TOPIC, \ | ||||
|     CONF_ON_MESSAGE, CONF_PASSWORD, CONF_PAYLOAD, CONF_PORT, CONF_QOS, CONF_RETAIN, \ | ||||
|     CONF_SSL_FINGERPRINTS, CONF_TOPIC, CONF_TOPIC_PREFIX, CONF_TRIGGER_ID, CONF_USERNAME, \ | ||||
|     CONF_WILL_MESSAGE, CONF_REBOOT_TIMEOUT, CONF_SHUTDOWN_MESSAGE | ||||
|     CONF_DISCOVERY_PREFIX, CONF_DISCOVERY_RETAIN, CONF_ID, CONF_KEEPALIVE, CONF_LEVEL, \ | ||||
|     CONF_LOG_TOPIC, CONF_ON_MESSAGE, CONF_PASSWORD, CONF_PAYLOAD, CONF_PORT, CONF_QOS, \ | ||||
|     CONF_REBOOT_TIMEOUT, CONF_RETAIN, CONF_SHUTDOWN_MESSAGE, CONF_SSL_FINGERPRINTS, CONF_TOPIC, \ | ||||
|     CONF_TOPIC_PREFIX, CONF_TRIGGER_ID, CONF_USERNAME, CONF_WILL_MESSAGE | ||||
| from esphomeyaml.helpers import App, ArrayInitializer, Pvariable, RawExpression, \ | ||||
|     StructInitializer, \ | ||||
|     TemplateArguments, add, esphomelib_ns, optional, std_string | ||||
|     StructInitializer, TemplateArguments, add, esphomelib_ns, optional, std_string | ||||
|  | ||||
|  | ||||
| def validate_message_just_topic(value): | ||||
| @@ -68,7 +68,9 @@ CONFIG_SCHEMA = vol.Schema({ | ||||
|     vol.Optional(CONF_WILL_MESSAGE): MQTT_MESSAGE_SCHEMA, | ||||
|     vol.Optional(CONF_SHUTDOWN_MESSAGE): MQTT_MESSAGE_SCHEMA, | ||||
|     vol.Optional(CONF_TOPIC_PREFIX): cv.publish_topic, | ||||
|     vol.Optional(CONF_LOG_TOPIC): MQTT_MESSAGE_TEMPLATE_SCHEMA, | ||||
|     vol.Optional(CONF_LOG_TOPIC): vol.Any(None, MQTT_MESSAGE_BASE.extend({ | ||||
|         vol.Optional(CONF_LEVEL): logger.is_log_level, | ||||
|     }), validate_message_just_topic), | ||||
|     vol.Optional(CONF_SSL_FINGERPRINTS): vol.All(cv.only_on_esp8266, | ||||
|                                                  cv.ensure_list, [validate_fingerprint]), | ||||
|     vol.Optional(CONF_KEEPALIVE): cv.positive_time_period_seconds, | ||||
| @@ -98,6 +100,7 @@ def to_code(config): | ||||
|     rhs = App.init_mqtt(config[CONF_BROKER], config[CONF_PORT], | ||||
|                         config[CONF_USERNAME], config[CONF_PASSWORD]) | ||||
|     mqtt = Pvariable(config[CONF_ID], rhs) | ||||
|  | ||||
|     if not config.get(CONF_DISCOVERY, True): | ||||
|         add(mqtt.disable_discovery()) | ||||
|     elif CONF_DISCOVERY_RETAIN in config or CONF_DISCOVERY_PREFIX in config: | ||||
| @@ -106,6 +109,7 @@ def to_code(config): | ||||
|         add(mqtt.set_discovery_info(discovery_prefix, discovery_retain)) | ||||
|     if CONF_TOPIC_PREFIX in config: | ||||
|         add(mqtt.set_topic_prefix(config[CONF_TOPIC_PREFIX])) | ||||
|  | ||||
|     if CONF_BIRTH_MESSAGE in config: | ||||
|         birth_message = config[CONF_BIRTH_MESSAGE] | ||||
|         if not birth_message: | ||||
| @@ -124,20 +128,28 @@ def to_code(config): | ||||
|             add(mqtt.disable_shutdown_message()) | ||||
|         else: | ||||
|             add(mqtt.set_shutdown_message(exp_mqtt_message(shutdown_message))) | ||||
|  | ||||
|     if CONF_CLIENT_ID in config: | ||||
|         add(mqtt.set_client_id(config[CONF_CLIENT_ID])) | ||||
|  | ||||
|     if CONF_LOG_TOPIC in config: | ||||
|         log_topic = config[CONF_LOG_TOPIC] | ||||
|         if not log_topic: | ||||
|             add(mqtt.disable_log_message()) | ||||
|         else: | ||||
|             add(mqtt.set_log_message_template(exp_mqtt_message(log_topic))) | ||||
|  | ||||
|             if CONF_LEVEL in config: | ||||
|                 add(mqtt.set_log_level(logger.LOG_LEVELS[config[CONF_LEVEL]])) | ||||
|  | ||||
|     if CONF_SSL_FINGERPRINTS in config: | ||||
|         for fingerprint in config[CONF_SSL_FINGERPRINTS]: | ||||
|             arr = [RawExpression("0x{}".format(fingerprint[i:i + 2])) for i in range(0, 40, 2)] | ||||
|             add(mqtt.add_ssl_fingerprint(ArrayInitializer(*arr, multiline=False))) | ||||
|  | ||||
|     if CONF_KEEPALIVE in config: | ||||
|         add(mqtt.set_keep_alive(config[CONF_KEEPALIVE])) | ||||
|  | ||||
|     if CONF_REBOOT_TIMEOUT in config: | ||||
|         add(mqtt.set_reboot_timeout(config[CONF_REBOOT_TIMEOUT])) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user