Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tellstick dimmer #27

Merged
merged 4 commits into from
Feb 5, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions homeassistant/components/light/tellstick.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
""" Support for Tellstick lights. """
import logging
# pylint: disable=no-name-in-module, import-error
from homeassistant.components.light import ATTR_BRIGHTNESS
from homeassistant.const import ATTR_FRIENDLY_NAME
from homeassistant.helpers import ToggleDevice
import tellcore.constants as tellcore_constants


def setup_platform(hass, config, add_devices_callback, discovery_info=None):
""" Find and return tellstick lights. """

try:
import tellcore.telldus as telldus
except ImportError:
logging.getLogger(__name__).exception(
"Failed to import tellcore")
return []

core = telldus.TelldusCore()
switches_and_lights = core.devices()
lights = []

for switch in switches_and_lights:
if switch.methods(tellcore_constants.TELLSTICK_DIM):
lights.append(TellstickLight(switch))
add_devices_callback(lights)


class TellstickLight(ToggleDevice):
""" Represents a tellstick light """
last_sent_command_mask = (tellcore_constants.TELLSTICK_TURNON |
tellcore_constants.TELLSTICK_TURNOFF |
tellcore_constants.TELLSTICK_DIM |
tellcore_constants.TELLSTICK_UP |
tellcore_constants.TELLSTICK_DOWN)

def __init__(self, tellstick):
self.tellstick = tellstick
self.state_attr = {ATTR_FRIENDLY_NAME: tellstick.name}
self.brightness = 0

@property
def name(self):
""" Returns the name of the switch if any. """
return self.tellstick.name

@property
def is_on(self):
""" True if switch is on. """
return self.brightness > 0

def turn_off(self, **kwargs):
""" Turns the switch off. """
self.tellstick.turn_off()
self.brightness = 0

def turn_on(self, **kwargs):
""" Turns the switch on. """
brightness = kwargs.get(ATTR_BRIGHTNESS)

if brightness is None:
self.brightness = 255
else:
self.brightness = brightness

self.tellstick.dim(self.brightness)

@property
def state_attributes(self):
""" Returns optional state attributes. """
attr = {
ATTR_FRIENDLY_NAME: self.name
}

attr[ATTR_BRIGHTNESS] = int(self.brightness)

return attr

def update(self):
""" Update state of the light. """
last_command = self.tellstick.last_sent_command(
self.last_sent_command_mask)

if last_command == tellcore_constants.TELLSTICK_TURNON:
self.brightness = 255
elif last_command == tellcore_constants.TELLSTICK_TURNOFF:
self.brightness = 0
elif (last_command == tellcore_constants.TELLSTICK_DIM or
last_command == tellcore_constants.TELLSTICK_UP or
last_command == tellcore_constants.TELLSTICK_DOWN):
last_sent_value = self.tellstick.last_sent_value()
if last_sent_value is not None:
self.brightness = last_sent_value
28 changes: 15 additions & 13 deletions homeassistant/components/switch/tellstick.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
""" Support for Tellstick switches. """
import logging

from homeassistant.helpers import ToggleDevice
from homeassistant.const import ATTR_FRIENDLY_NAME

try:
import tellcore.constants as tc_constants
except ImportError:
# Don't care for now. Warning will come when get_switches is called.
pass
from homeassistant.const import ATTR_FRIENDLY_NAME
from homeassistant.helpers import ToggleDevice
import tellcore.constants as tellcore_constants


def get_devices(hass, config):
Expand All @@ -21,15 +17,21 @@ def get_devices(hass, config):
return []

core = telldus.TelldusCore()
switches = core.devices()
switches_and_lights = core.devices()

switches = []

for switch in switches_and_lights:
if not switch.methods(tellcore_constants.TELLSTICK_DIM):
switches.append(TellstickSwitchDevice(switch))

return [TellstickSwitch(switch) for switch in switches]
return switches


class TellstickSwitch(ToggleDevice):
class TellstickSwitchDevice(ToggleDevice):
""" represents a Tellstick switch within home assistant. """
last_sent_command_mask = (tc_constants.TELLSTICK_TURNON |
tc_constants.TELLSTICK_TURNOFF)
last_sent_command_mask = (tellcore_constants.TELLSTICK_TURNON |
tellcore_constants.TELLSTICK_TURNOFF)

def __init__(self, tellstick):
self.tellstick = tellstick
Expand All @@ -51,7 +53,7 @@ def is_on(self):
last_command = self.tellstick.last_sent_command(
self.last_sent_command_mask)

return last_command == tc_constants.TELLSTICK_TURNON
return last_command == tellcore_constants.TELLSTICK_TURNON

def turn_on(self, **kwargs):
""" Turns the switch on. """
Expand Down