1
# Licensed under the MIT license
2
# http://opensource.org/licenses/mit-license.php
4
# Copyright 2008, Frank Scholz <coherence@beebits.net>
8
from coherence.backend import Backend
10
class SimpleLight(Backend):
12
""" this is a backend for a simple light
13
that only can be switched on or off
15
therefore we need to inform Coherence
16
about the state, and a method to change it
18
everything else is done by Coherence
21
implements = ['BinaryLight']
22
logCategory = 'simple_light'
24
def __init__(self, server, **kwargs):
25
self.name = kwargs.get('name','SimpleLight')
27
self.state = 0 # we start switched off
28
louie.send('Coherence.UPnP.Backend.init_completed', None, backend=self)
32
self.server.switch_power_server.set_variable(0, 'Target', self.state)
33
self.server.switch_power_server.set_variable(0, 'Status', self.state)
35
def upnp_SetTarget(self,**kwargs):
36
self.info('upnp_SetTarget %r', kwargs)
37
self.state = int(kwargs['NewTargetValue'])
39
self.server.switch_power_server.set_variable(0, 'Target', self.state)
40
self.server.switch_power_server.set_variable(0, 'Status', self.state)
41
print "we have been switched to state", self.state
45
class BetterLight(Backend):
47
implements = ['DimmableLight']
48
logCategory = 'better_light'
50
def __init__(self, server, **kwargs):
51
self.name = kwargs.get('name','BetterLight')
53
self.state = 0 # we start switched off
54
self.loadlevel = 50 # we start with 50% brightness
56
louie.send('Coherence.UPnP.Backend.init_completed', None, backend=self)
60
self.server.switch_power_server.set_variable(0, 'Target', self.state)
61
self.server.switch_power_server.set_variable(0, 'Status', self.state)
62
self.server.dimming_server.set_variable(0, 'LoadLevelTarget', self.loadlevel)
63
self.server.dimming_server.set_variable(0, 'LoadLevelStatus', self.loadlevel)
65
def upnp_SetTarget(self,**kwargs):
66
self.info('upnp_SetTarget %r', kwargs)
67
self.state = int(kwargs['NewTargetValue'])
69
self.server.switch_power_server.set_variable(0, 'Target', self.state)
70
self.server.switch_power_server.set_variable(0, 'Status', self.state)
71
print "we have been switched to state", self.state
74
def upnp_SetLoadLevelTarget(self,**kwargs):
75
self.info('SetLoadLevelTarget %r', kwargs)
76
self.loadlevel = int(kwargs['NewLoadlevelTarget'])
77
self.loadlevel = min(max(0,self.loadlevel),100)
79
self.server.dimming_server.set_variable(0, 'LoadLevelTarget', self.loadlevel)
80
self.server.dimming_server.set_variable(0, 'LoadLevelStatus', self.loadlevel)
81
print "we have been dimmed to level", self.loadlevel
85
if __name__ == '__main__':
87
from coherence.base import Coherence
91
config['logmode'] = 'warning'
93
f = c.add_plugin('SimpleLight')
94
f = c.add_plugin('BetterLight')
96
from twisted.internet import reactor
97
reactor.callWhenRunning(main)