mirror of
https://github.com/esphome/esphome.git
synced 2024-11-22 15:08:10 +01: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:
parent
e4e315f723
commit
463ad6f94b
5 changed files with 26 additions and 7 deletions
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue