From: felix Date: Thu, 15 Feb 2007 19:36:33 +0000 (+0000) Subject: python version zum Schalten und Auslesen der c't Netzdose X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=c954e78d5aea2454f507b52b5e2b6f3f18dc0f63;p=bytewurf.git python version zum Schalten und Auslesen der c't Netzdose git-svn-id: https://www.internetallee.de/svn/bytewurf@9 a944a559-bf0e-0410-8ddc-85264b264b6c --- diff --git a/projekte/netzschalter/src/nws.py b/projekte/netzschalter/src/nws.py new file mode 100644 index 0000000..547e339 --- /dev/null +++ b/projekte/netzschalter/src/nws.py @@ -0,0 +1,141 @@ +#!/usr/bin/python +# $Id$ +import socket +import logging + +class Netzdose: + """Netzwerksteckdose aus der c't""" + START_CMD = 0x41 + STOP_CMD = 0x42 + + CMD_READRELAIS = 0x81 + CMD_SETRELAIS = 0x80 + + CMD_LENGTH = 8 + + def __init__(self, host='morefx.dyndns.org', port=10001): + self.host = host + self.port = port + self.connected = False + socket.setdefaulttimeout(10) + + def connect(self): + """Baue die Verbindung zum Netzwerkstecker auf""" + log = logging.getLogger() + if self.connected: + log.info("Wir sind schon mit jemandem verbunden.") + return True + try: + self.socket = socket.socket() + self.socket.connect( (socket.gethostbyname(self.host), self.port) ) + self.connected = True + except Exception, e: + log = logging.getLogger() + log.error("Fehler beim Verbinden mit %s:%s %s" % (self.host, self.port, e) ) + self.connected = False + return False + return True + + def disconnect(self): + """Unterbreche die Verbindung zum Netzwerkstecker""" + log = logging.getLogger() + if self.connected: + try: + self.socket.close() + except Exception, e: + log.error("Konnte Socket nicht richtig schliessen: %s" % (e) ) + self.connected = False + + def setRelais(self, relais, disconnect = True): + """Setze das Relais mit der Nummer 'nummer'""" + log = logging.getLogger() + try: + state = self.readRelais(disconnect=False) + position = (1< %s" % (self.host, self.port, stateStr) + +if __name__ == '__main__': + """Testen, ob die Klasse funzt""" + import time + + # Initialisiere den Logger + logging.basicConfig(level = logging.INFO) + + # hole eine Standard Netzdose (steht bei Christian) + box = Netzdose() + + print box + time.sleep(0.5) + + # Lese den Zustand aus + state = box.readRelais(disconnect=False) + for i in range(0,7): + if (state & (1<