Hi,
I'm fairly new to Python programming, and I wrote some code for a RaspberryPi that controls my astronomical observatory building.
It controls the opening and closing of the roof by receiving packets sent by a website hosted on the same RaspberryPi.
You can click on links on that site to open or close the roof.
This works fine so far, but now I also need to be able to open the roof by reading two inputs.
That also works as long as I comment out the code used for the packet reception, but not both at the same time.
I removed the code from the (working) functions in the code below, the problem must be in the main code I guess.
Thanks in advance for any input.
Albert
I'm fairly new to Python programming, and I wrote some code for a RaspberryPi that controls my astronomical observatory building.
It controls the opening and closing of the roof by receiving packets sent by a website hosted on the same RaspberryPi.
You can click on links on that site to open or close the roof.
This works fine so far, but now I also need to be able to open the roof by reading two inputs.
That also works as long as I comment out the code used for the packet reception, but not both at the same time.
I removed the code from the (working) functions in the code below, the problem must be in the main code I guess.
Thanks in advance for any input.
Albert
#!/usr/bin/python # Last modification Dec 11 2016, Albert van Duin import RPi.GPIO as GPIO import time import socket import subprocess import os loop = 1 # enable software loop telescope = 0 # telescope is off alarm = 0 # no alarm data = '' text = '' GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) # ROOF GPIO.setup(16, GPIO.OUT) # TELESCOPE GPIO.setup(18, GPIO.OUT) # ALARM GPIO.setup(22, GPIO.IN) # ROOF DIRECTION 1 = opening 0 = closing GPIO.setup(13, GPIO.IN) # ROOF POWER, direction determined by GPIO22 GPIO.setup(24, GPIO.IN) # OPEN_POSITION GPIO.setup(26, GPIO.IN) # CLOSE_POSITION GPIO.setup(15, GPIO.IN) # PARK_POSITION TCP_IP = '192.168.0.198' TCP_PORT = 5005 BUFFER_SIZE = 20 # Normally 1024, but we want a faster response s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((TCP_IP, TCP_PORT)) s.listen(1) def open_roof(): # function definition # code removed return def close_roof(): # function definition # code removed return def emergency_close(): #function definition # code removed return def telescope_on(): #function definition # code removed return def telescope_off(): #function definition # code removed return def alarm_on(): # function definition # code removed return def alarm_off(): # function definition # code removed return def stop(): #function definition # code removed return #--------------------------------------------------------------------------------------------- while loop == 1: # Main Program Loop runs until stopped by the STOP packet conn, addr = s.accept() print 'Connection address:', addr while 1: if (GPIO.input(22) == 1 and GPIO.input(13) == 1): #check inputs from LesveDome open_roof() if (GPIO.input(22) == 0 and GPIO.input(13) == 1): close_roof() data = conn.recv(BUFFER_SIZE) # look if a packet has arrived if not data: break # if no packet received print "received data:", data # if packet received: print packet if data == 'ROOF_OPEN': open_roof() if data == 'ROOF_CLOSE': close_roof() if data == 'EMERGENCY': emergency_close() if data == 'TELESCOPE_ON': telescope_on() if data == 'TELESCOPE_OFF': telescope_off() if data == 'ALARM_ON': alarm_on() if data == 'ALARM_OFF': alarm_off() if data == 'STOP': stop() conn.send(text) # echo message text to sender print "Script was halted at: ", time.strftime('%X %x %Z') # if loop is no longer 1, close down script conn.close() GPIO.cleanup()