mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Fix and optimize digitalloggers platform (#9203)
* Fix and optimize digitalloggers platform * Fix line length * Fix hanging indentation * Add missing docstring * Add period to end of docstring * Add second blank line
This commit is contained in:
parent
5d800c1d51
commit
38071501b4
@ -46,7 +46,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
import dlipower
|
import dlipower
|
||||||
|
|
||||||
host = config.get(CONF_HOST)
|
host = config.get(CONF_HOST)
|
||||||
controllername = config.get(CONF_NAME)
|
controller_name = config.get(CONF_NAME)
|
||||||
user = config.get(CONF_USERNAME)
|
user = config.get(CONF_USERNAME)
|
||||||
pswd = config.get(CONF_PASSWORD)
|
pswd = config.get(CONF_PASSWORD)
|
||||||
tout = config.get(CONF_TIMEOUT)
|
tout = config.get(CONF_TIMEOUT)
|
||||||
@ -61,37 +61,42 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
_LOGGER.error("Could not connect to DIN III Relay")
|
_LOGGER.error("Could not connect to DIN III Relay")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
devices = []
|
outlets = []
|
||||||
parent_device = DINRelayDevice(power_switch)
|
parent_device = DINRelayDevice(power_switch)
|
||||||
|
|
||||||
devices.extend(
|
outlets.extend(
|
||||||
DINRelay(controllername, device.outlet_number, parent_device)
|
DINRelay(controller_name, parent_device, outlet)
|
||||||
for device in power_switch
|
for outlet in power_switch[0:]
|
||||||
)
|
)
|
||||||
|
|
||||||
add_devices(devices, True)
|
add_devices(outlets)
|
||||||
|
|
||||||
|
|
||||||
class DINRelay(SwitchDevice):
|
class DINRelay(SwitchDevice):
|
||||||
"""Representation of a individual DIN III relay port."""
|
"""Representation of a individual DIN III relay port."""
|
||||||
|
|
||||||
def __init__(self, name, outletnumber, parent_device):
|
def __init__(self, controller_name, parent_device, outlet):
|
||||||
"""Initialize the DIN III Relay switch."""
|
"""Initialize the DIN III Relay switch."""
|
||||||
|
self._controller_name = controller_name
|
||||||
self._parent_device = parent_device
|
self._parent_device = parent_device
|
||||||
self.controllername = name
|
self._outlet = outlet
|
||||||
self.outletnumber = outletnumber
|
|
||||||
self._outletname = ''
|
self._outlet_number = self._outlet.outlet_number
|
||||||
self._is_on = False
|
self._name = self._outlet.description
|
||||||
|
self._state = self._outlet.state == 'ON'
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"""Return the display name of this relay."""
|
"""Return the display name of this relay."""
|
||||||
return self._outletname
|
return '{}_{}'.format(
|
||||||
|
self._controller_name,
|
||||||
|
self._name
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_on(self):
|
def is_on(self):
|
||||||
"""Return true if relay is on."""
|
"""Return true if relay is on."""
|
||||||
return self._is_on
|
return self._state
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def should_poll(self):
|
def should_poll(self):
|
||||||
@ -100,41 +105,36 @@ class DINRelay(SwitchDevice):
|
|||||||
|
|
||||||
def turn_on(self, **kwargs):
|
def turn_on(self, **kwargs):
|
||||||
"""Instruct the relay to turn on."""
|
"""Instruct the relay to turn on."""
|
||||||
self._parent_device.turn_on(outlet=self.outletnumber)
|
self._outlet.on()
|
||||||
|
|
||||||
def turn_off(self, **kwargs):
|
def turn_off(self, **kwargs):
|
||||||
"""Instruct the relay to turn off."""
|
"""Instruct the relay to turn off."""
|
||||||
self._parent_device.turn_off(outlet=self.outletnumber)
|
self._outlet.off()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Trigger update for all switches on the parent device."""
|
"""Trigger update for all switches on the parent device."""
|
||||||
self._parent_device.update()
|
self._parent_device.update()
|
||||||
self._is_on = (
|
|
||||||
self._parent_device.statuslocal[self.outletnumber - 1][2] == 'ON'
|
outlet_status = self._parent_device.get_outlet_status(
|
||||||
)
|
self._outlet_number)
|
||||||
self._outletname = '{}_{}'.format(
|
|
||||||
self.controllername,
|
self._name = outlet_status[1]
|
||||||
self._parent_device.statuslocal[self.outletnumber - 1][1]
|
self._state = outlet_status[2] == 'ON'
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DINRelayDevice(object):
|
class DINRelayDevice(object):
|
||||||
"""Device representation for per device throttling."""
|
"""Device representation for per device throttling."""
|
||||||
|
|
||||||
def __init__(self, device):
|
def __init__(self, power_switch):
|
||||||
"""Initialize the DINRelay device."""
|
"""Initialize the DINRelay device."""
|
||||||
self._device = device
|
self._power_switch = power_switch
|
||||||
self.statuslocal = None
|
self._statuslist = None
|
||||||
|
|
||||||
def turn_on(self, **kwargs):
|
def get_outlet_status(self, outlet_number):
|
||||||
"""Instruct the relay to turn on."""
|
"""Get status of outlet from cached status list."""
|
||||||
self._device.on(**kwargs)
|
return self._statuslist[outlet_number - 1]
|
||||||
|
|
||||||
def turn_off(self, **kwargs):
|
|
||||||
"""Instruct the relay to turn off."""
|
|
||||||
self._device.off(**kwargs)
|
|
||||||
|
|
||||||
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Fetch new state data for this device."""
|
"""Fetch new state data for this device."""
|
||||||
self.statuslocal = self._device.statuslist()
|
self._statuslist = self._power_switch.statuslist()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user