mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 23:21:54 +00:00 
			
		
		
		
	Generic Switch inversion support fixes #14
This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| import voluptuous as vol | import voluptuous as vol | ||||||
|  |  | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_NAME, CONF_MQTT_ID | from esphomeyaml.const import CONF_ICON, CONF_INVERTED, CONF_MQTT_ID | ||||||
| from esphomeyaml.helpers import App, Pvariable, add, setup_mqtt_component | from esphomeyaml.helpers import App, Pvariable, add, setup_mqtt_component | ||||||
|  |  | ||||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||||
| @@ -10,6 +10,7 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | |||||||
|  |  | ||||||
| MQTT_SWITCH_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | MQTT_SWITCH_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||||
|     vol.Optional(CONF_ICON): cv.icon, |     vol.Optional(CONF_ICON): cv.icon, | ||||||
|  |     vol.Optional(CONF_INVERTED): cv.boolean, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| MQTT_SWITCH_ID_SCHEMA = MQTT_SWITCH_SCHEMA.extend({ | MQTT_SWITCH_ID_SCHEMA = MQTT_SWITCH_SCHEMA.extend({ | ||||||
| @@ -24,6 +25,8 @@ def setup_mqtt_switch(obj, config): | |||||||
| def setup_switch(obj, config): | def setup_switch(obj, config): | ||||||
|     if CONF_ICON in config: |     if CONF_ICON in config: | ||||||
|         add(obj.set_icon(config[CONF_ICON])) |         add(obj.set_icon(config[CONF_ICON])) | ||||||
|  |     if CONF_INVERTED in config: | ||||||
|  |         add(obj.set_inverted(config[CONF_INVERTED])) | ||||||
|  |  | ||||||
|  |  | ||||||
| def register_switch(var, config): | def register_switch(var, config): | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ from esphomeyaml.components import switch | |||||||
| from esphomeyaml.components.ir_transmitter import IR_TRANSMITTER_COMPONENT_CLASS | from esphomeyaml.components.ir_transmitter import IR_TRANSMITTER_COMPONENT_CLASS | ||||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_CARRIER_FREQUENCY, CONF_COMMAND, CONF_DATA, \ | from esphomeyaml.const import CONF_ADDRESS, CONF_CARRIER_FREQUENCY, CONF_COMMAND, CONF_DATA, \ | ||||||
|     CONF_ID, CONF_IR_TRANSMITTER_ID, CONF_LG, CONF_NAME, CONF_NBITS, CONF_NEC, CONF_PANASONIC, \ |     CONF_ID, CONF_IR_TRANSMITTER_ID, CONF_LG, CONF_NAME, CONF_NBITS, CONF_NEC, CONF_PANASONIC, \ | ||||||
|     CONF_RAW, CONF_REPEAT, CONF_SONY, CONF_TIMES, CONF_WAIT_TIME |     CONF_RAW, CONF_REPEAT, CONF_SONY, CONF_TIMES, CONF_WAIT_TIME, CONF_INVERTED | ||||||
| from esphomeyaml.core import ESPHomeYAMLError | from esphomeyaml.core import ESPHomeYAMLError | ||||||
| from esphomeyaml.helpers import ArrayInitializer, HexIntLiteral, MockObj, Pvariable, get_variable | from esphomeyaml.helpers import ArrayInitializer, HexIntLiteral, MockObj, Pvariable, get_variable | ||||||
|  |  | ||||||
| @@ -45,6 +45,7 @@ PLATFORM_SCHEMA = vol.All(switch.PLATFORM_SCHEMA.extend({ | |||||||
|         vol.Optional('wait_time_us'): cv.invalid(WAIT_TIME_MESSAGE), |         vol.Optional('wait_time_us'): cv.invalid(WAIT_TIME_MESSAGE), | ||||||
|     })), |     })), | ||||||
|     vol.Optional(CONF_IR_TRANSMITTER_ID): cv.variable_id, |     vol.Optional(CONF_IR_TRANSMITTER_ID): cv.variable_id, | ||||||
|  |     vol.Optional(CONF_INVERTED): cv.invalid("IR Transmitters do not support inverted mode!"), | ||||||
| }).extend(switch.MQTT_SWITCH_ID_SCHEMA.schema), cv.has_at_least_one_key(*IR_KEYS)) | }).extend(switch.MQTT_SWITCH_ID_SCHEMA.schema), cv.has_at_least_one_key(*IR_KEYS)) | ||||||
|  |  | ||||||
| # pylint: disable=invalid-name | # pylint: disable=invalid-name | ||||||
|   | |||||||
| @@ -1,10 +1,13 @@ | |||||||
|  | import voluptuous as vol | ||||||
|  |  | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.components import switch | from esphomeyaml.components import switch | ||||||
| from esphomeyaml.const import CONF_ID, CONF_NAME | from esphomeyaml.const import CONF_ID, CONF_NAME, CONF_INVERTED | ||||||
| from esphomeyaml.helpers import App, variable | from esphomeyaml.helpers import App, variable | ||||||
|  |  | ||||||
| PLATFORM_SCHEMA = switch.PLATFORM_SCHEMA.extend({ | PLATFORM_SCHEMA = switch.PLATFORM_SCHEMA.extend({ | ||||||
|     cv.GenerateID('restart_switch'): cv.register_variable_id, |     cv.GenerateID('restart_switch'): cv.register_variable_id, | ||||||
|  |     vol.Optional(CONF_INVERTED): cv.invalid("Restart switches do not support inverted mode!"), | ||||||
| }).extend(switch.MQTT_SWITCH_SCHEMA.schema) | }).extend(switch.MQTT_SWITCH_SCHEMA.schema) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,10 +1,13 @@ | |||||||
|  | import voluptuous as vol | ||||||
|  |  | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.components import switch | from esphomeyaml.components import switch | ||||||
| from esphomeyaml.const import CONF_ID, CONF_NAME | from esphomeyaml.const import CONF_ID, CONF_NAME, CONF_INVERTED | ||||||
| from esphomeyaml.helpers import App, variable | from esphomeyaml.helpers import App, variable | ||||||
|  |  | ||||||
| PLATFORM_SCHEMA = switch.PLATFORM_SCHEMA.extend({ | PLATFORM_SCHEMA = switch.PLATFORM_SCHEMA.extend({ | ||||||
|     cv.GenerateID('shutdown_switch'): cv.register_variable_id, |     cv.GenerateID('shutdown_switch'): cv.register_variable_id, | ||||||
|  |     vol.Optional(CONF_INVERTED): cv.invalid("Shutdown switches do not support inverted mode!"), | ||||||
| }).extend(switch.MQTT_SWITCH_SCHEMA.schema) | }).extend(switch.MQTT_SWITCH_SCHEMA.schema) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -186,15 +186,15 @@ class Literal(Expression): | |||||||
|  |  | ||||||
|  |  | ||||||
| # From https://stackoverflow.com/a/14945195/8924614 | # From https://stackoverflow.com/a/14945195/8924614 | ||||||
| def cpp_string_escape(s, encoding='utf-8'): | def cpp_string_escape(string, encoding='utf-8'): | ||||||
|     if isinstance(s, unicode): |     if isinstance(string, unicode): | ||||||
|         s = s.encode(encoding) |         string = string.encode(encoding) | ||||||
|     result = '' |     result = '' | ||||||
|     for c in s: |     for character in string: | ||||||
|         if not (32 <= ord(c) < 127) or c in ('\\', '"'): |         if not (32 <= ord(character) < 127) or character in ('\\', '"'): | ||||||
|             result += '\\%03o' % ord(c) |             result += '\\%03o' % ord(character) | ||||||
|         else: |         else: | ||||||
|             result += c |             result += character | ||||||
|     return '"' + result + '"' |     return '"' + result + '"' | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ void setup() { | |||||||
|  |  | ||||||
| void loop() { | void loop() { | ||||||
|   App.loop(); |   App.loop(); | ||||||
|   delay(1); |   delay(16); | ||||||
| } | } | ||||||
| """) | """) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user