基于 homeassistant==0.69.1
site-packages/homeassistant/components/remote/__init__.py
REMOTE_SERVICE_SEND_COMMAND_SCHEMA = REMOTE_SERVICE_SCHEMA.extend({
# wwj: add ir_data_scratch
vol.Optional('ir_data_scratch'): cv.string,
vol.Required(ATTR_COMMAND): vol.All(cv.ensure_list, [cv.string]),
vol.Optional(ATTR_DEVICE): cv.string,
vol.Optional(
ATTR_NUM_REPEATS, default=DEFAULT_NUM_REPEATS): cv.positive_int,
vol.Optional(ATTR_DELAY_SECS): vol.Coerce(float),
})
site-packages/homeassistant/components/remote/xiaomi_miio.py
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
# wwj: add ir_data_scratch
vol.Optional('ir_data_scratch'): cv.string,
vol.Optional(CONF_NAME): cv.string,
vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT):
vol.All(int, vol.Range(min=0)),
vol.Optional(CONF_SLOT, default=DEFAULT_SLOT):
vol.All(int, vol.Range(min=1, max=1000000)),
vol.Optional(ATTR_HIDDEN, default=True): cv.boolean,
vol.Required(CONF_TOKEN): vol.All(str, vol.Length(min=32, max=32)),
vol.Optional(CONF_COMMANDS, default={}):
vol.Schema({cv.slug: COMMAND_SCHEMA}),
}, extra=vol.ALLOW_EXTRA)
def send_command(self, command, **kwargs):
"""Wrapper for _send_command."""
num_repeats = kwargs.get(ATTR_NUM_REPEATS)
delay = kwargs.get(ATTR_DELAY_SECS, DEFAULT_DELAY_SECS)
ir_data_scratch = kwargs.get("ir_data_scratch")
for _ in range(num_repeats):
if ir_data_scratch:
print("ir_data_scratch:",ir_data_scratch)
self._send_command(ir_data_scratch)
'''
for payload in command:
# command: dynamic_conmand # wwj
if payload in self._commands:
self._send_command(ir_data_scratch)
# for local_payload in self._commands[payload][CONF_COMMAND]:
# import IPython;IPython.embed()
# print("local_payload:", local_payload)
# self._send_command(local_payload)
else:
self._send_command(payload)
time.sleep(delay)
'''
while (utcnow() - start_time) < timedelta(seconds=timeout):
message = yield from hass.async_add_job(
device.read, slot)
_LOGGER.debug("Message received from device: '%s'", message)
if 'code' in message and message['code']:
# log_msg = "Received command is: {}".format(message['code'])
log_msg = message['code']
_LOGGER.info(log_msg)
hass.components.persistent_notification.async_create(
log_msg, title='Xiaomi Miio Remote')
# emit a event
hass.bus.fire('my_cool_event', { 'answer': 42 }) # Q: 未生效,使用persistent_notification也够
print("test fire event")
return