I'm working on an home automation app using python, but since migration this from my local setup to two physical machines(Server, Client) i am getting a connection refused error:
Traceback (most recent call last): File "/opt/web-apps/web2py/gluon/restricted.py", line 227, in restricted exec ccode in environment File "/opt/web-apps/web2py/applications/Home_Plugs/controllers/default.py", line 85, in File "/opt/web-apps/web2py/gluon/globals.py", line 393, in self._caller = lambda f: f() File "/opt/web-apps/web2py/gluon/tools.py", line 3440, in f return action(*a, **b) File "/opt/web-apps/web2py/applications/Home_Plugs/controllers/default.py", line 32, in toggle GPIO.setup(light.OnPin,GPIO.OUTPUT) File "applications/Home_Plugs/modules/GPIOClient.py", line 23, in setup File "applications/Home_Plugs/modules/GPIOClient.py", line 18, in send host = '192.168.1.79' File "/usr/lib64/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 111] Connection refused
Server Code:
#!/usr/bin/env python
import socket
import RPi.GPIO as GPIO
import sys
import logging
SETUP = chr(0)
OUTPUT = chr(1)
GPIO.setmode(GPIO.BOARD)
def gpio_setup(data):
pin,dir = ord(data[0]),ord(data[1])
GPIO.setup(pin,dir)
logging.gpioServerLog("setup" + str(pin) + str(dir))
return 0
def gpio_output(data):
pin,val = ord(data[0]),ord(data[1])
GPIO.output(pin,val)
logging.gpioServerLog("out" + str(pin) + str(val))
return 0
if __name__=='__main__':
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
serversock = socket.socket()
serversock.bind(ADDR)
serversock.listen(5)
while 1:
ret = None
logging.gpioServerLog('waiting for connection...')
clientsock, addr = serversock.accept()
logging.gpioServerLog('...connected from:' + str(addr))
data = clientsock.recv(BUFSIZ)
if data[0] == SETUP:
ret = gpio_setup(data[1:])
elif data[0] == OUTPUT:
ret = gpio_output(data[1:])
if ret:
clientsock.send('Thank you for conencting')
clientsock.send(ret)
clientsock.close()
Client Code:
#!/usr/bin/env python
# coding: utf8
import socket
import struct
SETUP_CMD = chr(0)
OUTPUT_CMD = chr(1)
OUTPUT = chr(0)
INPUT = chr(1)
ON = chr(1)
OFF = chr(0)
def send(data):
sock = socket.socket()
host = '192.168.1.79'
port = 21567
sock.connect((host,port))
sock.send(data)
sock.close
def setup(pin,dir):
data = struct.pack("ccc",SETUP_CMD,chr(pin),dir)
send(data)
def output(pin,val):
data = struct.pack("ccc",OUTPUT_CMD,chr(pin),val)
send(data)
Machines: Server - Raspbian Wheezy/Python 2.7 Client - CentOS 7/Python 2.7
I have disabled all firewalls to ensure no blocking of connections. Telnet works
i also have a test client.py script whihc also works when ran from client commandline:
#!/usr/bin/python
# This is client.py file
import socket # Import socket module
import GPIOClient as GPIO
import time
GPIO.setup(11,GPIO.OUTPUT)
GPIO.output(11,GPIO.ON)
time.sleep(1)
GPIO.setup(11,GPIO.INPUT)
Any help would be much appreciated
Any more information require please let me know
Thanks in Advance