Skip to content

Commit

Permalink
Add support for LED toggle on smart plugs. (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
mrstegeman authored Feb 7, 2019
1 parent a0fd61b commit 3659f00
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 6 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "tplink-adapter",
"display_name": "TP-Link",
"version": "0.3.3",
"version": "0.3.4",
"description": "TP-Link smart plug/bulb adapter plugin for Mozilla IoT Gateway",
"author": "Mozilla IoT",
"main": "main.py",
Expand Down
26 changes: 22 additions & 4 deletions pkg/tplink_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ def __init__(self, adapter, _id, hs100_dev):
{
'@type': 'LevelProperty',
'label': 'Level',
'type': 'number',
'type': 'integer',
'unit': 'percent',
'minimum': 0,
'maximum': 100,
Expand All @@ -171,6 +171,15 @@ def __init__(self, adapter, _id, hs100_dev):
},
self.is_on(sysinfo))

self.properties['led-on'] = TPLinkPlugProperty(
self,
'led-on',
{
'label': 'LED On/Off',
'type': 'boolean',
},
self.is_led_on(sysinfo))

if has_emeter:
self.type = 'smartPlug'
elif self.is_dimmable(sysinfo):
Expand Down Expand Up @@ -210,12 +219,21 @@ def has_emeter(sysinfo):
@staticmethod
def is_on(sysinfo):
"""
Determine whether or not the light is on.
Determine whether or not the switch is on.
sysinfo -- current sysinfo dict for the device
"""
return bool(sysinfo['relay_state'])

@staticmethod
def is_led_on(sysinfo):
"""
Determine whether or not the LED is on.
sysinfo -- current sysinfo dict for the device
"""
return bool(1 - sysinfo['led_off'])

@staticmethod
def is_dimmable(sysinfo):
"""
Expand Down Expand Up @@ -277,7 +295,7 @@ def __init__(self, adapter, _id, hs100_dev):
{
'@type': 'ColorTemperatureProperty',
'label': 'Color Temperature',
'type': 'number',
'type': 'integer',
'unit': 'kelvin',
'minimum': temp_range[0],
'maximum': temp_range[1],
Expand All @@ -291,7 +309,7 @@ def __init__(self, adapter, _id, hs100_dev):
{
'@type': 'BrightnessProperty',
'label': 'Brightness',
'type': 'number',
'type': 'integer',
'unit': 'percent',
'minimum': 0,
'maximum': 100,
Expand Down
4 changes: 4 additions & 0 deletions pkg/tplink_property.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ def set_value(self, value):
try:
if self.name == 'on':
self.device.hs100_dev.state = 'ON' if value else 'OFF'
elif self.name == 'led-on':
self.device.hs100_dev.led = value
elif self.name == 'level':
self.device.hs100_dev.brightness = value
else:
Expand All @@ -53,6 +55,8 @@ def update(self, sysinfo, emeter):
"""
if self.name == 'on':
value = self.device.is_on(sysinfo)
elif self.name == 'led-on':
value = self.device.is_led_on(sysinfo)
elif self.name == 'level':
value = self.device.brightness(sysinfo)
elif self.name == 'instantaneousPower':
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pyHS100
pyHS100==0.3.4

0 comments on commit 3659f00

Please sign in to comment.