mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Add generate home assistant config command (#208)
* Add generate home assistant config command * Lint * Lint
This commit is contained in:
		| @@ -1,5 +1,6 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import automation | ||||
| from esphomeyaml.const import CONF_DEVICE_CLASS, CONF_ID, CONF_INTERNAL, CONF_INVERTED, \ | ||||
| @@ -154,4 +155,14 @@ def register_binary_sensor(var, config): | ||||
|     add_job(setup_binary_sensor_core_, binary_sensor_var, mqtt_var, config) | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'binary_sensor', config, | ||||
|                                  include_state=True, include_command=False) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_DEVICE_CLASS in config: | ||||
|         ret['device_class'] = config[CONF_DEVICE_CLASS] | ||||
|     return ret | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BINARY_SENSOR' | ||||
|   | ||||
| @@ -21,3 +21,7 @@ def to_code(config): | ||||
|         yield | ||||
|     rhs = hub.make_presence_sensor(config[CONF_NAME], make_address_array(config[CONF_MAC_ADDRESS])) | ||||
|     binary_sensor.register_binary_sensor(rhs, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -51,3 +51,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_ESP32_TOUCH_BINARY_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -24,3 +24,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_GPIO_BINARY_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -24,3 +24,7 @@ def to_code(config): | ||||
|     rhs = hub.make_touch_component(config[CONF_NAME], config[CONF_PAGE_ID], | ||||
|                                    config[CONF_COMPONENT_ID]) | ||||
|     binary_sensor.register_binary_sensor(rhs, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -40,3 +40,7 @@ def to_code(config): | ||||
|     addr = [HexInt(int(x, 16)) for x in config[CONF_UID].split('-')] | ||||
|     rhs = hub.make_tag(config[CONF_NAME], ArrayInitializer(*addr, multiline=False)) | ||||
|     binary_sensor.register_binary_sensor(rhs, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -21,3 +21,7 @@ def to_code(config): | ||||
|         yield | ||||
|     rhs = hub.make_card(config[CONF_NAME], config[CONF_UID]) | ||||
|     binary_sensor.register_binary_sensor(rhs, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -119,3 +119,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_REMOTE_RECEIVER' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -19,3 +19,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_STATUS_BINARY_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -26,3 +26,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEMPLATE_BINARY_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return binary_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ID, CONF_MQTT_ID, CONF_INTERNAL | ||||
| from esphomeyaml.helpers import Pvariable, esphomelib_ns, setup_mqtt_component, add, \ | ||||
| @@ -88,3 +89,10 @@ def cover_stop_to_code(config, action_id, arg_type): | ||||
|     rhs = var.make_stop_action(template_arg) | ||||
|     type = StopAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'cover', config, include_state=True, include_command=True) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     return ret | ||||
|   | ||||
| @@ -45,3 +45,12 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEMPLATE_COVER' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = cover.core_to_hass_config(data, config) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_OPTIMISTIC in config: | ||||
|         ret['optimistic'] = config[CONF_OPTIMISTIC] | ||||
|     return ret | ||||
|   | ||||
| @@ -1,10 +1,11 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ID, CONF_MQTT_ID, CONF_OSCILLATION_COMMAND_TOPIC, \ | ||||
|     CONF_OSCILLATION_STATE_TOPIC, CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC, CONF_INTERNAL, \ | ||||
|     CONF_SPEED, CONF_OSCILLATING | ||||
|     CONF_SPEED, CONF_OSCILLATING, CONF_OSCILLATION_OUTPUT, CONF_NAME | ||||
| from esphomeyaml.helpers import Application, Pvariable, add, esphomelib_ns, setup_mqtt_component, \ | ||||
|     TemplateArguments, get_variable, templatable, bool_ | ||||
|  | ||||
| @@ -128,3 +129,15 @@ def fan_turn_on_to_code(config, action_id, arg_type): | ||||
|             yield None | ||||
|         add(action.set_speed(template_)) | ||||
|     yield action | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'fan', config, include_state=True, include_command=True) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_OSCILLATION_OUTPUT in config: | ||||
|         default = mqtt.get_default_topic_for(data, 'fan', config[CONF_NAME], 'oscillation/state') | ||||
|         ret['oscillation_state_topic'] = config.get(CONF_OSCILLATION_STATE_TOPIC, default) | ||||
|         default = mqtt.get_default_topic_for(data, 'fan', config[CONF_NAME], 'oscillation/command') | ||||
|         ret['oscillation_command__topic'] = config.get(CONF_OSCILLATION_COMMAND_TOPIC, default) | ||||
|     return ret | ||||
|   | ||||
| @@ -27,3 +27,7 @@ def to_code(config): | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return fan.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import fan | ||||
| from esphomeyaml.components import fan, mqtt | ||||
| from esphomeyaml.const import CONF_HIGH, CONF_LOW, CONF_MAKE_ID, CONF_MEDIUM, CONF_NAME, \ | ||||
|     CONF_OSCILLATION_OUTPUT, CONF_OUTPUT, CONF_SPEED, CONF_SPEED_COMMAND_TOPIC, \ | ||||
|     CONF_SPEED_STATE_TOPIC | ||||
| @@ -43,3 +43,14 @@ def to_code(config): | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = fan.core_to_hass_config(data, config) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     default = mqtt.get_default_topic_for(data, 'fan', config[CONF_NAME], 'speed/state') | ||||
|     ret['speed_state_topic'] = config.get(CONF_SPEED_STATE_TOPIC, default) | ||||
|     default = mqtt.get_default_topic_for(data, 'fan', config[CONF_NAME], 'speed/command') | ||||
|     ret['speed_command__topic'] = config.get(CONF_SPEED_COMMAND_TOPIC, default) | ||||
|     return ret | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ALPHA, CONF_BLUE, CONF_BRIGHTNESS, CONF_COLORS, \ | ||||
|     CONF_DEFAULT_TRANSITION_LENGTH, CONF_DURATION, CONF_EFFECTS, CONF_EFFECT_ID, \ | ||||
| @@ -448,3 +449,24 @@ def light_turn_on_to_code(config, action_id, arg_type): | ||||
|             yield None | ||||
|         add(action.set_effect(template_)) | ||||
|     yield action | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=True, | ||||
|                         white_value=True): | ||||
|     ret = mqtt.build_hass_config(data, 'light', config, include_state=True, include_command=True, | ||||
|                                  platform='mqtt_json') | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if brightness: | ||||
|         ret['brightness'] = True | ||||
|     if rgb: | ||||
|         ret['rgb'] = True | ||||
|     if color_temp: | ||||
|         ret['color_temp'] = True | ||||
|     if white_value: | ||||
|         ret['white_value'] = True | ||||
|     for effect in config.get(CONF_EFFECTS, []): | ||||
|         ret["effect"] = True | ||||
|         effects = ret.setdefault("effect_list", []) | ||||
|         effects.append(next(x for x in effect.values())[CONF_NAME]) | ||||
|     return ret | ||||
|   | ||||
| @@ -19,3 +19,8 @@ def to_code(config): | ||||
|     rhs = App.make_binary_light(config[CONF_NAME], output) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=False, rgb=False, color_temp=False, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -32,3 +32,8 @@ def to_code(config): | ||||
|                               cold_white, warm_white) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=False, color_temp=True, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -102,3 +102,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_FAST_LED_LIGHT' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=False, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -82,3 +82,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_FAST_LED_LIGHT' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=False, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -22,3 +22,8 @@ def to_code(config): | ||||
|     rhs = App.make_monochromatic_light(config[CONF_NAME], output) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=False, color_temp=False, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -30,3 +30,8 @@ def to_code(config): | ||||
|     rhs = App.make_rgb_light(config[CONF_NAME], red, green, blue) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=False, | ||||
|                                      white_value=False) | ||||
|   | ||||
| @@ -34,3 +34,8 @@ def to_code(config): | ||||
|     rhs = App.make_rgbw_light(config[CONF_NAME], red, green, blue, white) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=False, | ||||
|                                      white_value=True) | ||||
|   | ||||
| @@ -60,3 +60,8 @@ def to_code(config): | ||||
|                                red, green, blue, cold_white, warm_white) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return light.core_to_hass_config(data, config, brightness=True, rgb=True, color_temp=True, | ||||
|                                      white_value=True) | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| from collections import OrderedDict | ||||
| import re | ||||
|  | ||||
| import voluptuous as vol | ||||
| @@ -10,7 +11,10 @@ from esphomeyaml.const import CONF_BIRTH_MESSAGE, CONF_BROKER, CONF_CLIENT_ID, C | ||||
|     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, CONF_ON_JSON_MESSAGE | ||||
|     CONF_TOPIC_PREFIX, CONF_TRIGGER_ID, CONF_USERNAME, CONF_WILL_MESSAGE, CONF_ON_JSON_MESSAGE, \ | ||||
|     CONF_STATE_TOPIC, CONF_MQTT, CONF_ESPHOMEYAML, CONF_NAME, CONF_AVAILABILITY, \ | ||||
|     CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, CONF_INTERNAL | ||||
| from esphomeyaml.core import ESPHomeYAMLError | ||||
| from esphomeyaml.helpers import App, ArrayInitializer, Pvariable, RawExpression, \ | ||||
|     StructInitializer, TemplateArguments, add, esphomelib_ns, optional, std_string, templatable, \ | ||||
|     uint8, bool_, JsonObjectRef, process_lambda, JsonObjectConstRef | ||||
| @@ -239,3 +243,66 @@ def required_build_flags(config): | ||||
|     if CONF_SSL_FINGERPRINTS in config: | ||||
|         return '-DASYNC_TCP_SSL_ENABLED=1' | ||||
|     return None | ||||
|  | ||||
|  | ||||
| def get_default_topic_for(data, component_type, name, suffix): | ||||
|     whitelist = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_' | ||||
|     sanitized_name = ''.join(x for x in name.lower().replace(' ', '_') if x in whitelist) | ||||
|     return '{}/{}/{}/{}'.format(data.topic_prefix, component_type, | ||||
|                                 sanitized_name, suffix) | ||||
|  | ||||
|  | ||||
| def build_hass_config(data, component_type, config, include_state=True, include_command=True, | ||||
|                       platform='mqtt'): | ||||
|     if config.get(CONF_INTERNAL, False): | ||||
|         return None | ||||
|     ret = OrderedDict() | ||||
|     ret['platform'] = platform | ||||
|     ret['name'] = config[CONF_NAME] | ||||
|     if include_state: | ||||
|         default = get_default_topic_for(data, component_type, config[CONF_NAME], 'state') | ||||
|         ret['state_topic'] = config.get(CONF_STATE_TOPIC, default) | ||||
|     if include_command: | ||||
|         default = get_default_topic_for(data, component_type, config[CONF_NAME], 'command') | ||||
|         ret['command_topic'] = config.get(CONF_STATE_TOPIC, default) | ||||
|     avail = config.get(CONF_AVAILABILITY, data.availability) | ||||
|     if avail: | ||||
|         ret['availability_topic'] = avail[CONF_TOPIC] | ||||
|         payload_available = avail[CONF_PAYLOAD_AVAILABLE] | ||||
|         if payload_available != 'online': | ||||
|             ret['payload_available'] = payload_available | ||||
|         payload_not_available = avail[CONF_PAYLOAD_NOT_AVAILABLE] | ||||
|         if payload_not_available != 'offline': | ||||
|             ret['payload_not_available'] = payload_not_available | ||||
|     return ret | ||||
|  | ||||
|  | ||||
| class GenerateHassConfigData(object): | ||||
|     def __init__(self, config): | ||||
|         if 'mqtt' not in config: | ||||
|             raise ESPHomeYAMLError("Cannot generate Home Assistant MQTT config if MQTT is not " | ||||
|                                    "used!") | ||||
|         mqtt = config[CONF_MQTT] | ||||
|         self.topic_prefix = mqtt.get(CONF_TOPIC_PREFIX, config[CONF_ESPHOMEYAML][CONF_NAME]) | ||||
|         birth_message = mqtt.get(CONF_BIRTH_MESSAGE) | ||||
|         if CONF_BIRTH_MESSAGE not in mqtt: | ||||
|             birth_message = { | ||||
|                 CONF_TOPIC: self.topic_prefix + '/status', | ||||
|                 CONF_PAYLOAD: 'online', | ||||
|             } | ||||
|         will_message = mqtt.get(CONF_WILL_MESSAGE) | ||||
|         if CONF_WILL_MESSAGE not in mqtt: | ||||
|             will_message = { | ||||
|                 CONF_TOPIC: self.topic_prefix + '/status', | ||||
|                 CONF_PAYLOAD: 'offline' | ||||
|             } | ||||
|         if not birth_message or not will_message: | ||||
|             self.availability = None | ||||
|         elif birth_message[CONF_TOPIC] != will_message[CONF_TOPIC]: | ||||
|             self.availability = None | ||||
|         else: | ||||
|             self.availability = { | ||||
|                 CONF_TOPIC: birth_message[CONF_TOPIC], | ||||
|                 CONF_PAYLOAD_AVAILABLE: birth_message[CONF_PAYLOAD], | ||||
|                 CONF_PAYLOAD_NOT_AVAILABLE: will_message[CONF_PAYLOAD], | ||||
|             } | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import automation | ||||
| from esphomeyaml.const import CONF_ABOVE, CONF_ACCURACY_DECIMALS, CONF_ALPHA, CONF_BELOW, \ | ||||
| @@ -211,3 +212,18 @@ def register_sensor(var, config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SENSOR' | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'sensor', config, include_state=True, include_command=False) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_UNIT_OF_MEASUREMENT in config: | ||||
|         ret['unit_of_measurement'] = config[CONF_UNIT_OF_MEASUREMENT] | ||||
|     if CONF_EXPIRE_AFTER in config: | ||||
|         expire = config[CONF_EXPIRE_AFTER] | ||||
|         if expire is not None: | ||||
|             ret['expire_after'] = expire.total_seconds | ||||
|     if CONF_ICON in config: | ||||
|         ret['icon'] = config[CONF_ICON] | ||||
|     return ret | ||||
|   | ||||
| @@ -52,3 +52,7 @@ def required_build_flags(config): | ||||
|     if config[CONF_PIN] == 'VCC': | ||||
|         return '-DUSE_ADC_SENSOR_VCC' | ||||
|     return None | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -65,3 +65,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_ADS1115_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -35,3 +35,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BH1750' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -21,3 +21,7 @@ def to_code(config): | ||||
|         yield | ||||
|     rhs = hub.make_rssi_sensor(config[CONF_NAME], make_address_array(config[CONF_MAC_ADDRESS])) | ||||
|     sensor.register_sensor(rhs, config) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -72,3 +72,9 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BME280' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_PRESSURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -92,3 +92,10 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BME680' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_PRESSURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_GAS_RESISTANCE])] | ||||
|   | ||||
| @@ -34,3 +34,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BMP085_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_PRESSURE])] | ||||
|   | ||||
| @@ -65,3 +65,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_BMP280' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_PRESSURE])] | ||||
|   | ||||
| @@ -40,3 +40,11 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_CSE7766' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_VOLTAGE, CONF_CURRENT, CONF_POWER): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -29,3 +29,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DALLAS_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -46,3 +46,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DHT_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -31,3 +31,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DHT12_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -26,3 +26,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DUTY_CYCLE_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -22,3 +22,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_ESP32_HALL_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -32,3 +32,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_HDC1080_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -55,3 +55,11 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_HLW8012' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_VOLTAGE, CONF_CURRENT, CONF_POWER): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -71,3 +71,11 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_HMC5883L' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_FIELD_STRENGTH_X, CONF_FIELD_STRENGTH_Y, CONF_FIELD_STRENGTH_Z, CONF_HEADING): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -30,3 +30,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_HTU21D_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -44,3 +44,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_HX711' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -51,3 +51,11 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_INA219' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_BUS_VOLTAGE, CONF_SHUNT_VOLTAGE, CONF_CURRENT, CONF_POWER): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -62,3 +62,15 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_INA3221' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for channel in (CONF_CHANNEL_1, CONF_CHANNEL_2, CONF_CHANNEL_3): | ||||
|         if channel not in config: | ||||
|             continue | ||||
|         conf = config[channel] | ||||
|         for key in (CONF_BUS_VOLTAGE, CONF_SHUNT_VOLTAGE, CONF_CURRENT, CONF_POWER): | ||||
|             if key in conf: | ||||
|                 ret.append(sensor.core_to_hass_config(data, conf[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -32,3 +32,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MAX6675_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -36,3 +36,11 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MHZ19' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_CO2, CONF_TEMPERATURE): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -69,3 +69,12 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MPU6050' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_ACCEL_X, CONF_ACCEL_Y, CONF_ACCEL_Z, CONF_GYRO_X, CONF_GYRO_Y, CONF_GYRO_Z, | ||||
|                 CONF_TEMPERATURE): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -27,3 +27,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MQTT_SUBSCRIBE_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -35,3 +35,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MS5611' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_PRESSURE])] | ||||
|   | ||||
| @@ -85,3 +85,12 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_PMSX003' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_PM_1_0, CONF_PM_2_5, CONF_PM_10_0, CONF_TEMPERATURE, CONF_HUMIDITY, | ||||
|                 CONF_FORMALDEHYDE): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -65,3 +65,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_PULSE_COUNTER_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -49,3 +49,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_ROTARY_ENCODER_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -36,3 +36,8 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SHT3XD' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return [sensor.core_to_hass_config(data, config[CONF_TEMPERATURE]), | ||||
|             sensor.core_to_hass_config(data, config[CONF_HUMIDITY])] | ||||
|   | ||||
| @@ -78,3 +78,12 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TCS34725' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_RED_CHANNEL, CONF_GREEN_CHANNEL, CONF_BLUE_CHANNEL, CONF_CLEAR_CHANNEL, | ||||
|                 CONF_ILLUMINANCE, CONF_COLOR_TEMPERATURE): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -27,3 +27,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEMPLATE_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -55,3 +55,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TSL2561' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -39,3 +39,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_ULTRASONIC_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -20,3 +20,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_UPTIME_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -20,3 +20,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_WIFI_SIGNAL_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -45,3 +45,12 @@ def to_code(config): | ||||
|     if CONF_BATTERY_LEVEL in config: | ||||
|         conf = config[CONF_BATTERY_LEVEL] | ||||
|         sensor.register_sensor(dev.Pmake_battery_level_sensor(conf[CONF_NAME]), conf) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_TEMPERATURE, CONF_MOISTURE, CONF_ILLUMINANCE, CONF_CONDUCTIVITY, | ||||
|                 CONF_BATTERY_LEVEL): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -37,3 +37,11 @@ def to_code(config): | ||||
|     if CONF_BATTERY_LEVEL in config: | ||||
|         conf = config[CONF_BATTERY_LEVEL] | ||||
|         sensor.register_sensor(dev.Pmake_battery_level_sensor(conf[CONF_NAME]), conf) | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     ret = [] | ||||
|     for key in (CONF_TEMPERATURE, CONF_HUMIDITY, CONF_BATTERY_LEVEL): | ||||
|         if key in config: | ||||
|             ret.append(sensor.core_to_hass_config(data, config[key])) | ||||
|     return ret | ||||
|   | ||||
| @@ -1,8 +1,10 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_INVERTED, CONF_MQTT_ID, CONF_INTERNAL | ||||
| from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_INVERTED, CONF_MQTT_ID, CONF_INTERNAL, \ | ||||
|     CONF_OPTIMISTIC | ||||
| from esphomeyaml.helpers import App, Pvariable, add, esphomelib_ns, setup_mqtt_component, \ | ||||
|     TemplateArguments, get_variable | ||||
|  | ||||
| @@ -100,3 +102,14 @@ def switch_turn_on_to_code(config, action_id, arg_type): | ||||
|     rhs = var.make_turn_on_action(template_arg) | ||||
|     type = TurnOnAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'switch', config, include_state=True, include_command=True) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_ICON in config: | ||||
|         ret['icon'] = config[CONF_ICON] | ||||
|     if CONF_OPTIMISTIC in config: | ||||
|         ret['optimistic'] = config[CONF_OPTIMISTIC] | ||||
|     return ret | ||||
|   | ||||
| @@ -29,3 +29,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_GPIO_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -23,3 +23,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_OUTPUT_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -146,3 +146,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_REMOTE_TRANSMITTER' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -20,3 +20,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_RESTART_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -20,3 +20,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SHUTDOWN_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -42,3 +42,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEMPLATE_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -43,3 +43,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_UART_SWITCH' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return switch.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml import automation | ||||
| from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_INTERNAL, CONF_MQTT_ID, CONF_ON_VALUE, \ | ||||
|     CONF_TRIGGER_ID | ||||
| @@ -58,3 +59,12 @@ def register_text_sensor(var, config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEXT_SENSOR' | ||||
|  | ||||
|  | ||||
| def core_to_hass_config(data, config): | ||||
|     ret = mqtt.build_hass_config(data, 'sensor', config, include_state=True, include_command=False) | ||||
|     if ret is None: | ||||
|         return None | ||||
|     if CONF_ICON in config: | ||||
|         ret['icon'] = config[CONF_ICON] | ||||
|     return ret | ||||
|   | ||||
| @@ -25,3 +25,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MQTT_SUBSCRIBE_TEXT_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return text_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -28,3 +28,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_TEMPLATE_TEXT_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return text_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
| @@ -17,3 +17,7 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_VERSION_TEXT_SENSOR' | ||||
|  | ||||
|  | ||||
| def to_hass_config(data, config): | ||||
|     return text_sensor.core_to_hass_config(data, config) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user