From 370355b94b4bbbbeb3e82f46c5d72e5cea912fca Mon Sep 17 00:00:00 2001 From: Gustav Ahlberg Date: Wed, 8 Jul 2015 21:39:50 +0200 Subject: [PATCH] Added functionallity so that the tellstick switch can send it's signals repeatedly Because the tellstick sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. --- homeassistant/components/switch/tellstick.py | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/switch/tellstick.py b/homeassistant/components/switch/tellstick.py index 84f5d2b31d5..6f9070d28fb 100644 --- a/homeassistant/components/switch/tellstick.py +++ b/homeassistant/components/switch/tellstick.py @@ -3,6 +3,12 @@ homeassistant.components.switch.tellstick ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Support for Tellstick switches. + +Because the tellstick sends its actions via radio and from most +receivers it's impossible to know if the signal was received or not. +Therefore you can configure the switch to try to send each signal repeatedly +with the config parameter signal_repetitions (default is 1). +signal_repetitions: 3 """ import logging @@ -11,6 +17,8 @@ from homeassistant.const import ATTR_FRIENDLY_NAME from homeassistant.helpers.entity import ToggleEntity import tellcore.constants as tellcore_constants +SINGAL_REPETITIONS = 1 + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices_callback, discovery_info=None): @@ -22,6 +30,8 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): "Failed to import tellcore") return + signal_repetitions = config.get('signal_repetitions', SINGAL_REPETITIONS) + core = telldus.TelldusCore() switches_and_lights = core.devices() @@ -29,7 +39,7 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): for switch in switches_and_lights: if not switch.methods(tellcore_constants.TELLSTICK_DIM): - switches.append(TellstickSwitchDevice(switch)) + switches.append(TellstickSwitchDevice(switch, signal_repetitions)) add_devices_callback(switches) @@ -39,9 +49,10 @@ class TellstickSwitchDevice(ToggleEntity): last_sent_command_mask = (tellcore_constants.TELLSTICK_TURNON | tellcore_constants.TELLSTICK_TURNOFF) - def __init__(self, tellstick): + def __init__(self, tellstick, signal_repetitions): self.tellstick = tellstick self.state_attr = {ATTR_FRIENDLY_NAME: tellstick.name} + self.signal_repetitions = signal_repetitions @property def name(self): @@ -63,8 +74,10 @@ class TellstickSwitchDevice(ToggleEntity): def turn_on(self, **kwargs): """ Turns the switch on. """ - self.tellstick.turn_on() + for _ in range(self.signal_repetitions): + self.tellstick.turn_on() def turn_off(self, **kwargs): """ Turns the switch off. """ - self.tellstick.turn_off() + for _ in range(self.signal_repetitions): + self.tellstick.turn_off()