Skip to content
Snippets Groups Projects
Commit 87e2b634 authored by jkerdreu's avatar jkerdreu
Browse files

Added missing error handling

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/fork@1770 b32b6428-25c9-4566-ad07-03861ab6144f
parent f51e1a2a
No related branches found
No related tags found
No related merge requests found
......@@ -25,12 +25,9 @@ class OutputChannel(object):
def on(self):
self.ipx.relay_on(self.chan)
self.state.value = True
def off(self):
self.ipx.relay_off(self.chan)
self.state.value = False
def new_lamp(ipx,channel,addr,group):
lamp = OutputChannel(ipx,channel,addr,'light',group)
......
......@@ -8,6 +8,7 @@ from . import devices
import platform
import socket
import time
PACKAGE_NAME = "xaal.ipx800"
logger = tools.get_logger(PACKAGE_NAME,'DEBUG')
......@@ -28,6 +29,7 @@ class GW(gevent.Greenlet):
port = int(cfg['port'])
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((host, port))
logger.info("IPX800 connected")
def setup_ouputs(self):
""" load nodes from config file"""
......@@ -64,10 +66,13 @@ class GW(gevent.Greenlet):
self.engine.add_device(gw)
def _run(self):
fd = self.sock.makefile()
while 1:
line = fd.readline().strip('\r\n')
self.parse_line(line)
try:
line = self.sock.makefile().readline().strip('\r\n')
except Exception as e:
self.network_error(e)
else:
self.parse_line(line)
def parse_line(self,line):
if line == 'OK': return
......@@ -86,6 +91,12 @@ class GW(gevent.Greenlet):
def send(self,data):
data = data + "\r\n"
self.sock.send(data.encode('utf-8'))
def network_error(self,msg):
logger.info("Network Error IPX800: %s" %msg)
self.sock.close()
self.connect()
time.sleep(2)
def relay_on(self,ID):
msg = 'Set%02d1' % ID
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment