Fix insteon Hub v1 support (#16472)
* Fix support for Hub version 1 (i.e. pre-2014 Hub model 2242) * Bump insteonplm to 0.14.1 * Code review changes * Clean up and better document set_default_port * Simplify set_default_port based on code review * Remove Callable type import * Simplify port setuppull/16547/head
parent
f858938ada
commit
dcd7b9a529
|
@ -7,6 +7,8 @@ https://home-assistant.io/components/insteon/
|
|||
import asyncio
|
||||
import collections
|
||||
import logging
|
||||
from typing import Dict
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.core import callback
|
||||
|
@ -18,7 +20,7 @@ import homeassistant.helpers.config_validation as cv
|
|||
from homeassistant.helpers import discovery
|
||||
from homeassistant.helpers.entity import Entity
|
||||
|
||||
REQUIREMENTS = ['insteonplm==0.13.1']
|
||||
REQUIREMENTS = ['insteonplm==0.14.2']
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -27,9 +29,9 @@ DOMAIN = 'insteon'
|
|||
CONF_IP_PORT = 'ip_port'
|
||||
CONF_HUB_USERNAME = 'username'
|
||||
CONF_HUB_PASSWORD = 'password'
|
||||
CONF_HUB_VERSION = 'hub_version'
|
||||
CONF_OVERRIDE = 'device_override'
|
||||
CONF_PLM_HUB_MSG = ('Must configure either a PLM port or a Hub host, username '
|
||||
'and password')
|
||||
CONF_PLM_HUB_MSG = 'Must configure either a PLM port or a Hub host'
|
||||
CONF_ADDRESS = 'address'
|
||||
CONF_CAT = 'cat'
|
||||
CONF_SUBCAT = 'subcat'
|
||||
|
@ -66,6 +68,22 @@ EVENT_BUTTON_ON = 'insteon.button_on'
|
|||
EVENT_BUTTON_OFF = 'insteon.button_off'
|
||||
EVENT_CONF_BUTTON = 'button'
|
||||
|
||||
|
||||
def set_default_port(schema: Dict) -> Dict:
|
||||
"""Set the default port based on the Hub version."""
|
||||
# If the ip_port is found do nothing
|
||||
# If it is not found the set the default
|
||||
ip_port = schema.get(CONF_IP_PORT)
|
||||
if not ip_port:
|
||||
hub_version = schema.get(CONF_HUB_VERSION)
|
||||
# Found hub_version but not ip_port
|
||||
if hub_version == 1:
|
||||
schema[CONF_IP_PORT] = 9761
|
||||
else:
|
||||
schema[CONF_IP_PORT] = 25105
|
||||
return schema
|
||||
|
||||
|
||||
CONF_DEVICE_OVERRIDE_SCHEMA = vol.All(
|
||||
cv.deprecated(CONF_PLATFORM), vol.Schema({
|
||||
vol.Required(CONF_ADDRESS): cv.string,
|
||||
|
@ -88,12 +106,13 @@ CONFIG_SCHEMA = vol.Schema({
|
|||
DOMAIN: vol.All(
|
||||
vol.Schema(
|
||||
{vol.Exclusive(CONF_PORT, 'plm_or_hub',
|
||||
msg=CONF_PLM_HUB_MSG): cv.isdevice,
|
||||
msg=CONF_PLM_HUB_MSG): cv.string,
|
||||
vol.Exclusive(CONF_HOST, 'plm_or_hub',
|
||||
msg=CONF_PLM_HUB_MSG): cv.string,
|
||||
vol.Optional(CONF_IP_PORT, default=25105): int,
|
||||
vol.Optional(CONF_IP_PORT): cv.port,
|
||||
vol.Optional(CONF_HUB_USERNAME): cv.string,
|
||||
vol.Optional(CONF_HUB_PASSWORD): cv.string,
|
||||
vol.Optional(CONF_HUB_VERSION, default=2): vol.In([1, 2]),
|
||||
vol.Optional(CONF_OVERRIDE): vol.All(
|
||||
cv.ensure_list_csv, [CONF_DEVICE_OVERRIDE_SCHEMA]),
|
||||
vol.Optional(CONF_X10_ALL_UNITS_OFF): vol.In(HOUSECODES),
|
||||
|
@ -103,14 +122,7 @@ CONFIG_SCHEMA = vol.Schema({
|
|||
[CONF_X10_SCHEMA])
|
||||
}, extra=vol.ALLOW_EXTRA, required=True),
|
||||
cv.has_at_least_one_key(CONF_PORT, CONF_HOST),
|
||||
vol.Schema(
|
||||
{vol.Inclusive(CONF_HOST, 'hub',
|
||||
msg=CONF_PLM_HUB_MSG): cv.string,
|
||||
vol.Inclusive(CONF_HUB_USERNAME, 'hub',
|
||||
msg=CONF_PLM_HUB_MSG): cv.string,
|
||||
vol.Inclusive(CONF_HUB_PASSWORD, 'hub',
|
||||
msg=CONF_PLM_HUB_MSG): cv.string,
|
||||
}, extra=vol.ALLOW_EXTRA, required=True))
|
||||
set_default_port)
|
||||
}, extra=vol.ALLOW_EXTRA)
|
||||
|
||||
|
||||
|
@ -151,6 +163,7 @@ def async_setup(hass, config):
|
|||
ip_port = conf.get(CONF_IP_PORT)
|
||||
username = conf.get(CONF_HUB_USERNAME)
|
||||
password = conf.get(CONF_HUB_PASSWORD)
|
||||
hub_version = conf.get(CONF_HUB_VERSION)
|
||||
overrides = conf.get(CONF_OVERRIDE, [])
|
||||
x10_devices = conf.get(CONF_X10, [])
|
||||
x10_all_units_off_housecode = conf.get(CONF_X10_ALL_UNITS_OFF)
|
||||
|
@ -284,6 +297,7 @@ def async_setup(hass, config):
|
|||
port=ip_port,
|
||||
username=username,
|
||||
password=password,
|
||||
hub_version=hub_version,
|
||||
loop=hass.loop,
|
||||
workdir=hass.config.config_dir)
|
||||
else:
|
||||
|
|
|
@ -486,7 +486,7 @@ ihcsdk==2.2.0
|
|||
influxdb==5.0.0
|
||||
|
||||
# homeassistant.components.insteon
|
||||
insteonplm==0.13.1
|
||||
insteonplm==0.14.2
|
||||
|
||||
# homeassistant.components.sensor.iperf3
|
||||
iperf3==0.1.10
|
||||
|
|
Loading…
Reference in New Issue