- setRelais kann jetzt in drei Modi betrieben werden
authorfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Sat, 24 Feb 2007 09:42:34 +0000 (09:42 +0000)
committerfelix <felix@a944a559-bf0e-0410-8ddc-85264b264b6c>
Sat, 24 Feb 2007 09:42:34 +0000 (09:42 +0000)
  TOGGLE_RELAIS, SWITCH_ON_RELAIS und SWITCH_OFF_RELAIS
- if Konstrukt durch xor (^) ersetzt

git-svn-id: https://www.internetallee.de/svn/bytewurf@12 a944a559-bf0e-0410-8ddc-85264b264b6c

projekte/netzschalter/src/nws.py

index bb43b1d..17855a9 100644 (file)
@@ -13,6 +13,10 @@ class Netzdose:
     
     CMD_LENGTH = 8
     
+    TOGGLE_RELAIS        = 1
+    SWITCH_ON_RELAIS     = 2
+    SWITCH_OFF_RELAIS    = 3
+    
     def __init__(self, host='morefx.dyndns.org', port=10001):
         self.host = host
         self.port = port
@@ -46,16 +50,17 @@ class Netzdose:
                 log.error("Konnte Socket nicht richtig schliessen: %s" % (e) )
         self.connected = False
                 
-    def setRelais(self, relais, disconnect = True):
+    def setRelais(self, relais, disconnect = True, mode = TOGGLE_RELAIS):
         """Setze das Relais mit der Nummer 'nummer'"""
         log = logging.getLogger()
         try:
             state = self.readRelais(disconnect=False)
-            position = (1<<relais)
-            if state & position:
-                state = state & (~position)
-            else:
-                state = state | position
+            if mode == Netzdose.TOGGLE_RELAIS:
+                state ^= (1<<relais)
+            elif mode == Netzdose.SWITCH_ON_RELAIS:
+                state |= (1<<relais)
+            elif mode == Netzdose.SWITCH_ON_RELAIS:
+                state &= (1<<relais)
             relaisCmd = "%c%c%c\0\0\0\0%c" % (Netzdose.START_CMD, Netzdose.CMD_SETRELAIS, state, Netzdose.STOP_CMD)
             if self.connect():
                 try: