add default settings for use_notify and poll_interval

This commit is contained in:
Stefan Lehmann
2017-10-24 18:59:50 +02:00
parent 866cbb2ae2
commit 14c0552e89
3 changed files with 17 additions and 10 deletions

View File

@@ -43,6 +43,8 @@ CONFIG_SCHEMA = vol.Schema({
vol.Required(CONF_DEVICE): cv.string,
vol.Required(CONF_PORT): cv.port,
vol.Optional(CONF_IP_ADDRESS): cv.string,
vol.Optional(CONF_ADS_POLL_INTERVAL, default=1000): cv.positive_int,
vol.Optional(CONF_ADS_USE_NOTIFY, default=True): cv.boolean,
})
}, extra=vol.ALLOW_EXTRA)
@@ -57,13 +59,16 @@ def setup(hass, config):
net_id = conf.get(CONF_DEVICE)
ip_address = conf.get(CONF_IP_ADDRESS)
port = conf.get(CONF_PORT)
poll_interval = conf.get(CONF_ADS_POLL_INTERVAL)
use_notify = conf.get(CONF_ADS_USE_NOTIFY)
# create a new ads connection
client = pyads.Connection(net_id, port, ip_address)
# connect to ads client and try to connect
try:
ads = AdsHub(client)
ads = AdsHub(client, poll_interval=poll_interval,
use_notify=use_notify)
except pyads.pyads.ADSError as e:
_LOGGER.error('Could not connect to ADS host (netid={}, port={})'
.format(net_id, port))
@@ -101,7 +106,7 @@ NotificationItem = namedtuple(
class AdsHub:
""" Representation of a PyADS connection. """
def __init__(self, ads_client):
def __init__(self, ads_client, poll_interval, use_notify):
from pyads import PLCTYPE_BOOL, PLCTYPE_BYTE, PLCTYPE_INT, \
PLCTYPE_UINT, ADSError
@@ -117,6 +122,8 @@ class AdsHub:
self.PLCTYPE_INT = PLCTYPE_INT
self.PLCTYPE_UINT = PLCTYPE_UINT
self.ADSError = ADSError
self.poll_interval = poll_interval
self.use_notify = use_notify
self._client = ads_client
self._client.open()

View File

@@ -26,8 +26,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_ADSVAR): cv.string,
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
vol.Optional(CONF_ADS_USE_NOTIFY, default=True): cv.boolean,
vol.Optional(CONF_ADS_POLL_INTERVAL, default=1000): cv.positive_int,
vol.Optional(CONF_ADS_USE_NOTIFY): cv.boolean,
vol.Optional(CONF_ADS_POLL_INTERVAL): cv.positive_int,
})
@@ -40,8 +40,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
adsvar = config.get(CONF_ADSVAR)
name = config.get(CONF_NAME)
device_class = config.get(CONF_DEVICE_CLASS)
use_notify = config.get(CONF_ADS_USE_NOTIFY)
poll_interval = config.get(CONF_ADS_POLL_INTERVAL)
use_notify = config.get(CONF_ADS_USE_NOTIFY, ads_hub.use_notify)
poll_interval = config.get(CONF_ADS_POLL_INTERVAL, ads_hub.poll_interval)
ads_sensor = AdsBinarySensor(ads_hub, name, adsvar, device_class,
use_notify, poll_interval)

View File

@@ -26,8 +26,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Optional(CONF_ADSTYPE, default=ads.ADSTYPE_INT): vol.In(
[ads.ADSTYPE_INT, ads.ADSTYPE_UINT, ads.ADSTYPE_BYTE]
),
vol.Optional(CONF_ADS_USE_NOTIFY, default=True): cv.boolean,
vol.Optional(CONF_ADS_POLL_INTERVAL, default=1000): cv.positive_int,
vol.Optional(CONF_ADS_USE_NOTIFY): cv.boolean,
vol.Optional(CONF_ADS_POLL_INTERVAL): cv.positive_int,
vol.Optional(CONF_ADS_FACTOR): cv.positive_int,
})
@@ -42,8 +42,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
adstype = config.get(CONF_ADSTYPE)
name = config.get(CONF_NAME)
unit_of_measurement = config.get(CONF_UNIT_OF_MEASUREMENT)
use_notify = config.get(CONF_ADS_USE_NOTIFY)
poll_interval = config.get(CONF_ADS_POLL_INTERVAL)
use_notify = config.get(CONF_ADS_USE_NOTIFY, ads_hub.use_notify)
poll_interval = config.get(CONF_ADS_POLL_INTERVAL, ads_hub.poll_interval)
factor = config.get(CONF_ADS_FACTOR)
entity = AdsSensor(ads_hub, adsvar, adstype, name,