Move data on import in rfxtrx integration into ConfigEntry (#38022)

* Move all data imported from yaml to ConfigEntry

* Revert changes that prevent updating yaml entry

* Cleanup code around time conversion
This commit is contained in:
Rob Bierbooms 2020-07-21 09:44:00 +02:00 committed by GitHub
parent 60009ec2f9
commit d9dba9142c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 23 additions and 32 deletions

View file

@ -29,7 +29,6 @@ from homeassistant.helpers.restore_state import RestoreEntity
from .const import ( from .const import (
ATTR_EVENT, ATTR_EVENT,
DATA_RFXTRX_CONFIG,
DEVICE_PACKET_TYPE_LIGHTING4, DEVICE_PACKET_TYPE_LIGHTING4,
EVENT_RFXTRX_EVENT, EVENT_RFXTRX_EVENT,
SERVICE_SEND, SERVICE_SEND,
@ -105,7 +104,9 @@ DEVICE_DATA_SCHEMA = vol.Schema(
{ {
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean, vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
vol.Optional(CONF_OFF_DELAY): vol.Any(cv.time_period, cv.positive_timedelta), vol.Optional(CONF_OFF_DELAY): vol.All(
cv.time_period, cv.positive_timedelta, lambda value: value.total_seconds()
),
vol.Optional(CONF_DATA_BITS): cv.positive_int, vol.Optional(CONF_DATA_BITS): cv.positive_int,
vol.Optional(CONF_COMMAND_ON): cv.byte, vol.Optional(CONF_COMMAND_ON): cv.byte,
vol.Optional(CONF_COMMAND_OFF): cv.byte, vol.Optional(CONF_COMMAND_OFF): cv.byte,
@ -135,21 +136,20 @@ CONFIG_SCHEMA = vol.Schema(
async def async_setup(hass, config): async def async_setup(hass, config):
"""Set up the RFXtrx component.""" """Set up the RFXtrx component."""
if DOMAIN not in config: if DOMAIN not in config:
hass.data[DATA_RFXTRX_CONFIG] = BASE_SCHEMA({})
return True return True
hass.data[DATA_RFXTRX_CONFIG] = config[DOMAIN] data = {
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_IMPORT},
data={
CONF_HOST: config[DOMAIN].get(CONF_HOST), CONF_HOST: config[DOMAIN].get(CONF_HOST),
CONF_PORT: config[DOMAIN].get(CONF_PORT), CONF_PORT: config[DOMAIN].get(CONF_PORT),
CONF_DEVICE: config[DOMAIN].get(CONF_DEVICE), CONF_DEVICE: config[DOMAIN].get(CONF_DEVICE),
CONF_DEBUG: config[DOMAIN][CONF_DEBUG], CONF_DEBUG: config[DOMAIN].get(CONF_DEBUG),
}, CONF_AUTOMATIC_ADD: config[DOMAIN].get(CONF_AUTOMATIC_ADD),
CONF_DEVICES: config[DOMAIN][CONF_DEVICES],
}
hass.async_create_task(
hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_IMPORT}, data=data,
) )
) )
return True return True
@ -169,11 +169,10 @@ async def async_setup_entry(hass, entry: config_entries.ConfigEntry):
def setup_internal(hass, config): def setup_internal(hass, config):
"""Set up the RFXtrx component.""" """Set up the RFXtrx component."""
# Setup some per device config # Setup some per device config
device_events = set() device_events = set()
device_bits = {} device_bits = {}
for event_code, event_config in hass.data[DATA_RFXTRX_CONFIG][CONF_DEVICES].items(): for event_code, event_config in config[CONF_DEVICES].items():
event = get_rfx_object(event_code) event = get_rfx_object(event_code)
device_id = get_device_id( device_id = get_device_id(
event.device, data_bits=event_config.get(CONF_DATA_BITS) event.device, data_bits=event_config.get(CONF_DATA_BITS)

View file

@ -24,12 +24,7 @@ from . import (
get_pt2262_cmd, get_pt2262_cmd,
get_rfx_object, get_rfx_object,
) )
from .const import ( from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST, DEVICE_PACKET_TYPE_LIGHTING4
COMMAND_OFF_LIST,
COMMAND_ON_LIST,
DATA_RFXTRX_CONFIG,
DEVICE_PACKET_TYPE_LIGHTING4,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -43,7 +38,7 @@ async def async_setup_entry(
device_ids = set() device_ids = set()
pt2262_devices = [] pt2262_devices = []
discovery_info = hass.data[DATA_RFXTRX_CONFIG] discovery_info = config_entry.data
def supported(event): def supported(event):
return isinstance(event, rfxtrxmod.ControlEvent) return isinstance(event, rfxtrxmod.ControlEvent)
@ -197,5 +192,5 @@ class RfxtrxBinarySensor(RfxtrxEntity, BinarySensorEntity):
self.async_write_ha_state() self.async_write_ha_state()
self._delay_listener = evt.async_call_later( self._delay_listener = evt.async_call_later(
self.hass, self._off_delay.total_seconds(), off_delay_listener self.hass, self._off_delay, off_delay_listener
) )

View file

@ -16,7 +16,6 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
async def async_step_import(self, import_config=None): async def async_step_import(self, import_config=None):
"""Handle the initial step.""" """Handle the initial step."""
await self.async_set_unique_id(DOMAIN) await self.async_set_unique_id(DOMAIN)
self._abort_if_unique_id_configured(import_config) self._abort_if_unique_id_configured(import_config)
return self.async_create_entry(title="RFXTRX", data=import_config) return self.async_create_entry(title="RFXTRX", data=import_config)

View file

@ -21,5 +21,4 @@ SERVICE_SEND = "send"
DEVICE_PACKET_TYPE_LIGHTING4 = 0x13 DEVICE_PACKET_TYPE_LIGHTING4 = 0x13
DATA_RFXTRX_CONFIG = "rfxtrx_config"
EVENT_RFXTRX_EVENT = "rfxtrx_event" EVENT_RFXTRX_EVENT = "rfxtrx_event"

View file

@ -14,7 +14,7 @@ from . import (
get_device_id, get_device_id,
get_rfx_object, get_rfx_object,
) )
from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST, DATA_RFXTRX_CONFIG from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -23,7 +23,7 @@ async def async_setup_entry(
hass, config_entry, async_add_entities, hass, config_entry, async_add_entities,
): ):
"""Set up config entry.""" """Set up config entry."""
discovery_info = hass.data[DATA_RFXTRX_CONFIG] discovery_info = config_entry.data
device_ids = set() device_ids = set()
def supported(event): def supported(event):

View file

@ -20,7 +20,7 @@ from . import (
get_device_id, get_device_id,
get_rfx_object, get_rfx_object,
) )
from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST, DATA_RFXTRX_CONFIG from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -31,7 +31,7 @@ async def async_setup_entry(
hass, config_entry, async_add_entities, hass, config_entry, async_add_entities,
): ):
"""Set up config entry.""" """Set up config entry."""
discovery_info = hass.data[DATA_RFXTRX_CONFIG] discovery_info = config_entry.data
device_ids = set() device_ids = set()
def supported(event): def supported(event):

View file

@ -20,7 +20,6 @@ from . import (
get_device_id, get_device_id,
get_rfx_object, get_rfx_object,
) )
from .const import DATA_RFXTRX_CONFIG
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -57,7 +56,7 @@ async def async_setup_entry(
hass, config_entry, async_add_entities, hass, config_entry, async_add_entities,
): ):
"""Set up platform.""" """Set up platform."""
discovery_info = hass.data[DATA_RFXTRX_CONFIG] discovery_info = config_entry.data
data_ids = set() data_ids = set()
def supported(event): def supported(event):

View file

@ -17,7 +17,7 @@ from . import (
get_device_id, get_device_id,
get_rfx_object, get_rfx_object,
) )
from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST, DATA_RFXTRX_CONFIG from .const import COMMAND_OFF_LIST, COMMAND_ON_LIST
DATA_SWITCH = f"{DOMAIN}_switch" DATA_SWITCH = f"{DOMAIN}_switch"
@ -28,7 +28,7 @@ async def async_setup_entry(
hass, config_entry, async_add_entities, hass, config_entry, async_add_entities,
): ):
"""Set up config entry.""" """Set up config entry."""
discovery_info = hass.data[DATA_RFXTRX_CONFIG] discovery_info = config_entry.data
device_ids = set() device_ids = set()
def supported(event): def supported(event):