mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Add support for JVC remote transmitting and receiving (#423)
* Add support for JVC remote transmitting and receiving * Add missing import * Fix line length
This commit is contained in:
		| @@ -7,7 +7,7 @@ from esphomeyaml.components.remote_transmitter import RC_SWITCH_RAW_SCHEMA, \ | |||||||
|     RC_SWITCH_TYPE_D_SCHEMA, binary_code, build_rc_switch_protocol |     RC_SWITCH_TYPE_D_SCHEMA, binary_code, build_rc_switch_protocol | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_CHANNEL, CONF_CODE, CONF_COMMAND, CONF_DATA, \ | from esphomeyaml.const import CONF_ADDRESS, CONF_CHANNEL, CONF_CODE, CONF_COMMAND, CONF_DATA, \ | ||||||
|     CONF_DEVICE, CONF_FAMILY, CONF_GROUP, CONF_LG, CONF_NAME, CONF_NBITS, CONF_NEC, \ |     CONF_DEVICE, CONF_FAMILY, CONF_GROUP, CONF_JVC, CONF_LG, CONF_NAME, CONF_NBITS, CONF_NEC, \ | ||||||
|     CONF_PANASONIC, CONF_PROTOCOL, CONF_RAW, CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, \ |     CONF_PANASONIC, CONF_PROTOCOL, CONF_RAW, CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, \ | ||||||
|     CONF_RC_SWITCH_TYPE_B, CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D, CONF_SAMSUNG, CONF_SONY, \ |     CONF_RC_SWITCH_TYPE_B, CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D, CONF_SAMSUNG, CONF_SONY, \ | ||||||
|     CONF_STATE, CONF_ID |     CONF_STATE, CONF_ID | ||||||
| @@ -16,7 +16,7 @@ from esphomeyaml.cpp_types import int32 | |||||||
|  |  | ||||||
| DEPENDENCIES = ['remote_receiver'] | DEPENDENCIES = ['remote_receiver'] | ||||||
|  |  | ||||||
| REMOTE_KEYS = [CONF_NEC, CONF_LG, CONF_SONY, CONF_PANASONIC, CONF_SAMSUNG, CONF_RAW, | REMOTE_KEYS = [CONF_JVC, CONF_NEC, CONF_LG, CONF_SONY, CONF_PANASONIC, CONF_SAMSUNG, CONF_RAW, | ||||||
|                CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, |                CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, | ||||||
|                CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D] |                CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D] | ||||||
|  |  | ||||||
| @@ -24,6 +24,7 @@ CONF_REMOTE_RECEIVER_ID = 'remote_receiver_id' | |||||||
| CONF_RECEIVER_ID = 'receiver_id' | CONF_RECEIVER_ID = 'receiver_id' | ||||||
|  |  | ||||||
| RemoteReceiver = remote_ns.class_('RemoteReceiver', binary_sensor.BinarySensor) | RemoteReceiver = remote_ns.class_('RemoteReceiver', binary_sensor.BinarySensor) | ||||||
|  | JVCReceiver = remote_ns.class_('JVCReceiver', RemoteReceiver) | ||||||
| LGReceiver = remote_ns.class_('LGReceiver', RemoteReceiver) | LGReceiver = remote_ns.class_('LGReceiver', RemoteReceiver) | ||||||
| NECReceiver = remote_ns.class_('NECReceiver', RemoteReceiver) | NECReceiver = remote_ns.class_('NECReceiver', RemoteReceiver) | ||||||
| PanasonicReceiver = remote_ns.class_('PanasonicReceiver', RemoteReceiver) | PanasonicReceiver = remote_ns.class_('PanasonicReceiver', RemoteReceiver) | ||||||
| @@ -50,6 +51,9 @@ def validate_raw(value): | |||||||
|  |  | ||||||
| PLATFORM_SCHEMA = cv.nameable(binary_sensor.BINARY_SENSOR_PLATFORM_SCHEMA.extend({ | PLATFORM_SCHEMA = cv.nameable(binary_sensor.BINARY_SENSOR_PLATFORM_SCHEMA.extend({ | ||||||
|     cv.GenerateID(): cv.declare_variable_id(RemoteReceiver), |     cv.GenerateID(): cv.declare_variable_id(RemoteReceiver), | ||||||
|  |     vol.Optional(CONF_JVC): vol.Schema({ | ||||||
|  |         vol.Required(CONF_DATA): cv.hex_uint32_t, | ||||||
|  |     }), | ||||||
|     vol.Optional(CONF_LG): vol.Schema({ |     vol.Optional(CONF_LG): vol.Schema({ | ||||||
|         vol.Required(CONF_DATA): cv.hex_uint32_t, |         vol.Required(CONF_DATA): cv.hex_uint32_t, | ||||||
|         vol.Optional(CONF_NBITS, default=28): cv.one_of(28, 32, int=True), |         vol.Optional(CONF_NBITS, default=28): cv.one_of(28, 32, int=True), | ||||||
| @@ -84,6 +88,8 @@ PLATFORM_SCHEMA = cv.nameable(binary_sensor.BINARY_SENSOR_PLATFORM_SCHEMA.extend | |||||||
| def receiver_base(full_config): | def receiver_base(full_config): | ||||||
|     name = full_config[CONF_NAME] |     name = full_config[CONF_NAME] | ||||||
|     key, config = next((k, v) for k, v in full_config.items() if k in REMOTE_KEYS) |     key, config = next((k, v) for k, v in full_config.items() if k in REMOTE_KEYS) | ||||||
|  |     if key == CONF_JVC: | ||||||
|  |         return JVCReceiver.new(name, config[CONF_DATA]) | ||||||
|     if key == CONF_LG: |     if key == CONF_LG: | ||||||
|         return LGReceiver.new(name, config[CONF_DATA], config[CONF_NBITS]) |         return LGReceiver.new(name, config[CONF_DATA], config[CONF_NBITS]) | ||||||
|     if key == CONF_NEC: |     if key == CONF_NEC: | ||||||
|   | |||||||
| @@ -20,6 +20,7 @@ RemoteReceiverComponent = remote_ns.class_('RemoteReceiverComponent', | |||||||
| RemoteReceiveDumper = remote_ns.class_('RemoteReceiveDumper') | RemoteReceiveDumper = remote_ns.class_('RemoteReceiveDumper') | ||||||
|  |  | ||||||
| DUMPERS = { | DUMPERS = { | ||||||
|  |     'jvc': remote_ns.class_('JVCDumper', RemoteReceiveDumper), | ||||||
|     'lg': remote_ns.class_('LGDumper', RemoteReceiveDumper), |     'lg': remote_ns.class_('LGDumper', RemoteReceiveDumper), | ||||||
|     'nec': remote_ns.class_('NECDumper', RemoteReceiveDumper), |     'nec': remote_ns.class_('NECDumper', RemoteReceiveDumper), | ||||||
|     'panasonic': remote_ns.class_('PanasonicDumper', RemoteReceiveDumper), |     'panasonic': remote_ns.class_('PanasonicDumper', RemoteReceiveDumper), | ||||||
|   | |||||||
| @@ -7,17 +7,17 @@ from esphomeyaml.components.remote_transmitter import RC_SWITCH_RAW_SCHEMA, \ | |||||||
|     remote_ns |     remote_ns | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_CARRIER_FREQUENCY, CONF_CHANNEL, CONF_CODE, \ | from esphomeyaml.const import CONF_ADDRESS, CONF_CARRIER_FREQUENCY, CONF_CHANNEL, CONF_CODE, \ | ||||||
|     CONF_COMMAND, CONF_DATA, CONF_DEVICE, CONF_FAMILY, CONF_GROUP, CONF_INVERTED, CONF_LG, \ |     CONF_COMMAND, CONF_DATA, CONF_DEVICE, CONF_FAMILY, CONF_GROUP, CONF_INVERTED, CONF_JVC, \ | ||||||
|     CONF_NAME, CONF_NBITS, CONF_NEC, CONF_PANASONIC, CONF_PROTOCOL, CONF_RAW, CONF_RC_SWITCH_RAW, \ |     CONF_LG, CONF_NAME, CONF_NBITS, CONF_NEC, CONF_PANASONIC, CONF_PROTOCOL, CONF_RAW, \ | ||||||
|     CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D, \ |     CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, CONF_RC_SWITCH_TYPE_C, \ | ||||||
|     CONF_REPEAT, CONF_SAMSUNG, CONF_SONY, CONF_STATE, CONF_TIMES, \ |     CONF_RC_SWITCH_TYPE_D, CONF_REPEAT, CONF_SAMSUNG, CONF_SONY, CONF_STATE, CONF_TIMES, \ | ||||||
|     CONF_WAIT_TIME, CONF_ID |     CONF_WAIT_TIME, CONF_ID | ||||||
| from esphomeyaml.cpp_generator import Pvariable, add, get_variable, progmem_array | from esphomeyaml.cpp_generator import Pvariable, add, get_variable, progmem_array | ||||||
| from esphomeyaml.cpp_types import int32 | from esphomeyaml.cpp_types import int32 | ||||||
|  |  | ||||||
| DEPENDENCIES = ['remote_transmitter'] | DEPENDENCIES = ['remote_transmitter'] | ||||||
|  |  | ||||||
| REMOTE_KEYS = [CONF_NEC, CONF_LG, CONF_SAMSUNG, CONF_SONY, CONF_PANASONIC, CONF_RAW, | REMOTE_KEYS = [CONF_JVC, CONF_NEC, CONF_LG, CONF_SAMSUNG, CONF_SONY, CONF_PANASONIC, CONF_RAW, | ||||||
|                CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, |                CONF_RC_SWITCH_RAW, CONF_RC_SWITCH_TYPE_A, CONF_RC_SWITCH_TYPE_B, | ||||||
|                CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D] |                CONF_RC_SWITCH_TYPE_C, CONF_RC_SWITCH_TYPE_D] | ||||||
|  |  | ||||||
| @@ -25,6 +25,7 @@ CONF_REMOTE_TRANSMITTER_ID = 'remote_transmitter_id' | |||||||
| CONF_TRANSMITTER_ID = 'transmitter_id' | CONF_TRANSMITTER_ID = 'transmitter_id' | ||||||
|  |  | ||||||
| RemoteTransmitter = remote_ns.class_('RemoteTransmitter', switch.Switch) | RemoteTransmitter = remote_ns.class_('RemoteTransmitter', switch.Switch) | ||||||
|  | JVCTransmitter = remote_ns.class_('JVCTransmitter', RemoteTransmitter) | ||||||
| LGTransmitter = remote_ns.class_('LGTransmitter', RemoteTransmitter) | LGTransmitter = remote_ns.class_('LGTransmitter', RemoteTransmitter) | ||||||
| NECTransmitter = remote_ns.class_('NECTransmitter', RemoteTransmitter) | NECTransmitter = remote_ns.class_('NECTransmitter', RemoteTransmitter) | ||||||
| PanasonicTransmitter = remote_ns.class_('PanasonicTransmitter', RemoteTransmitter) | PanasonicTransmitter = remote_ns.class_('PanasonicTransmitter', RemoteTransmitter) | ||||||
| @@ -52,6 +53,9 @@ def validate_raw(value): | |||||||
|  |  | ||||||
| PLATFORM_SCHEMA = cv.nameable(switch.SWITCH_PLATFORM_SCHEMA.extend({ | PLATFORM_SCHEMA = cv.nameable(switch.SWITCH_PLATFORM_SCHEMA.extend({ | ||||||
|     cv.GenerateID(): cv.declare_variable_id(RemoteTransmitter), |     cv.GenerateID(): cv.declare_variable_id(RemoteTransmitter), | ||||||
|  |     vol.Optional(CONF_JVC): vol.Schema({ | ||||||
|  |         vol.Required(CONF_DATA): cv.hex_uint32_t, | ||||||
|  |     }), | ||||||
|     vol.Optional(CONF_LG): vol.Schema({ |     vol.Optional(CONF_LG): vol.Schema({ | ||||||
|         vol.Required(CONF_DATA): cv.hex_uint32_t, |         vol.Required(CONF_DATA): cv.hex_uint32_t, | ||||||
|         vol.Optional(CONF_NBITS, default=28): cv.one_of(28, 32, int=True), |         vol.Optional(CONF_NBITS, default=28): cv.one_of(28, 32, int=True), | ||||||
| @@ -92,6 +96,8 @@ def transmitter_base(full_config): | |||||||
|     name = full_config[CONF_NAME] |     name = full_config[CONF_NAME] | ||||||
|     key, config = next((k, v) for k, v in full_config.items() if k in REMOTE_KEYS) |     key, config = next((k, v) for k, v in full_config.items() if k in REMOTE_KEYS) | ||||||
|  |  | ||||||
|  |     if key == CONF_JVC: | ||||||
|  |         return JVCTransmitter.new(name, config[CONF_DATA]) | ||||||
|     if key == CONF_LG: |     if key == CONF_LG: | ||||||
|         return LGTransmitter.new(name, config[CONF_DATA], config[CONF_NBITS]) |         return LGTransmitter.new(name, config[CONF_DATA], config[CONF_NBITS]) | ||||||
|     if key == CONF_NEC: |     if key == CONF_NEC: | ||||||
|   | |||||||
| @@ -161,6 +161,7 @@ CONF_NEC = 'nec' | |||||||
| CONF_COMMAND = 'command' | CONF_COMMAND = 'command' | ||||||
| CONF_DATA = 'data' | CONF_DATA = 'data' | ||||||
| CONF_NBITS = 'nbits' | CONF_NBITS = 'nbits' | ||||||
|  | CONF_JVC = 'jvc' | ||||||
| CONF_LG = 'lg' | CONF_LG = 'lg' | ||||||
| CONF_SAMSUNG = 'samsung' | CONF_SAMSUNG = 'samsung' | ||||||
| CONF_SONY = 'sony' | CONF_SONY = 'sony' | ||||||
|   | |||||||
| @@ -820,6 +820,11 @@ switch: | |||||||
|     inverted: True |     inverted: True | ||||||
|     command_topic: custom_command_topic |     command_topic: custom_command_topic | ||||||
|     restore_mode: ALWAYS_OFF |     restore_mode: ALWAYS_OFF | ||||||
|  |   - platform: remote_transmitter | ||||||
|  |     name: "JVC Off" | ||||||
|  |     jvc: | ||||||
|  |       data: 0x10EF | ||||||
|  |     repeat: 25 | ||||||
|   - platform: remote_transmitter |   - platform: remote_transmitter | ||||||
|     name: "Panasonic TV Off" |     name: "Panasonic TV Off" | ||||||
|     nec: |     nec: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user