~ubuntu-branches/ubuntu/trusty/coherence/trusty

« back to all changes in this revision

Viewing changes to coherence/backends/light.py

  • Committer: Bazaar Package Importer
  • Author(s): Arnaud Quette
  • Date: 2008-06-12 16:49:04 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20080612164904-894cpjy93grsdo76
Tags: 0.5.6-1
* New upstream release (Closes: #474729)
* debian/control:
  - allow Depends on python2.5 or python2.4 (Closes: #485592)
  - update Standards-Version to 3.8.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Licensed under the MIT license
 
2
# http://opensource.org/licenses/mit-license.php
 
3
 
 
4
# Copyright 2008, Frank Scholz <coherence@beebits.net>
 
5
 
 
6
import louie
 
7
 
 
8
from coherence.backend import Backend
 
9
 
 
10
class SimpleLight(Backend):
 
11
 
 
12
    """ this is a backend for a simple light
 
13
        that only can be switched on or off
 
14
 
 
15
        therefore we need to inform Coherence
 
16
        about the state, and a method to change it
 
17
 
 
18
        everything else is done by Coherence
 
19
    """
 
20
 
 
21
    implements = ['BinaryLight']
 
22
    logCategory = 'simple_light'
 
23
 
 
24
    def __init__(self, server, **kwargs):
 
25
        self.name = kwargs.get('name','SimpleLight')
 
26
        self.server = server
 
27
        self.state = 0 # we start switched off
 
28
        louie.send('Coherence.UPnP.Backend.init_completed', None, backend=self)
 
29
 
 
30
    def upnp_init(self):
 
31
        if self.server:
 
32
            self.server.switch_power_server.set_variable(0, 'Target', self.state)
 
33
            self.server.switch_power_server.set_variable(0, 'Status', self.state)
 
34
 
 
35
    def upnp_SetTarget(self,**kwargs):
 
36
        self.info('upnp_SetTarget %r', kwargs)
 
37
        self.state = int(kwargs['NewTargetValue'])
 
38
        if self.server:
 
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
 
42
        return {}
 
43
 
 
44
 
 
45
class BetterLight(Backend):
 
46
 
 
47
    implements = ['DimmableLight']
 
48
    logCategory = 'better_light'
 
49
 
 
50
    def __init__(self, server, **kwargs):
 
51
        self.name = kwargs.get('name','BetterLight')
 
52
        self.server = server
 
53
        self.state = 0 # we start switched off
 
54
        self.loadlevel = 50 # we start with 50% brightness
 
55
 
 
56
        louie.send('Coherence.UPnP.Backend.init_completed', None, backend=self)
 
57
 
 
58
    def upnp_init(self):
 
59
        if self.server:
 
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)
 
64
 
 
65
    def upnp_SetTarget(self,**kwargs):
 
66
        self.info('upnp_SetTarget %r', kwargs)
 
67
        self.state = int(kwargs['NewTargetValue'])
 
68
        if self.server:
 
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
 
72
        return {}
 
73
 
 
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)
 
78
        if self.server:
 
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
 
82
        return {}
 
83
 
 
84
 
 
85
if __name__ == '__main__':
 
86
 
 
87
    from coherence.base import Coherence
 
88
 
 
89
    def main():
 
90
        config = {}
 
91
        config['logmode'] = 'warning'
 
92
        c = Coherence(config)
 
93
        f = c.add_plugin('SimpleLight')
 
94
        f = c.add_plugin('BetterLight')
 
95
 
 
96
    from twisted.internet import reactor
 
97
    reactor.callWhenRunning(main)
 
98
    reactor.run()