Intendation; foodoord_oben - right API™
This commit is contained in:
		
							
								
								
									
										180
									
								
								foodoord_oben
									
									
									
									
									
								
							
							
						
						
									
										180
									
								
								foodoord_oben
									
									
									
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| #!/usr/bin/env python2 | ||||
| # vim: ts=2 sw=2 et | ||||
|  | ||||
| import os | ||||
| import stat | ||||
| @@ -14,8 +15,9 @@ from ConfigParser import SafeConfigParser | ||||
| parser = SafeConfigParser() | ||||
| parser.read('/etc/foodoord.conf') | ||||
|  | ||||
| url = parser.get('door_firstlevel', 'status_url') | ||||
| old_api = parser.get('door_firstlevel_old', 'status_url') | ||||
| doorapi = parser.get('doorstatus', 'status_url') | ||||
| consumerkey = parser.get('doorstatus', 'key') | ||||
| consumersecret = parser.get('doorstatus', 'secret') | ||||
|  | ||||
|  | ||||
| #Definitions for output | ||||
| @@ -33,108 +35,110 @@ RED=1 | ||||
| GREEN=2 | ||||
| ORANGE=3 | ||||
|  | ||||
|  | ||||
| def update_api(locked): | ||||
|     try: | ||||
|         os.system("/usr/bin/curl -XPOST --header 'Content-Type: application/json' --data '{ \"consumer_key\": \"" + consumerkey  + "\", \"consumer_secret\": \"" + consumersecret + "\", \"aerie\": " + str(locked).lower() + " }' '" + doorapi  + "' ") | ||||
|     except: | ||||
|         pass | ||||
|  | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|  | ||||
| 	 | ||||
|   def doorbell(event): | ||||
|     if (STATUS): | ||||
|       pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
|       time.sleep(2) | ||||
|       pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
|       #print 'got doorbell' | ||||
|  | ||||
| 	def doorbell(event): | ||||
| 		if (STATUS): | ||||
| 			pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
| 			time.sleep(2) | ||||
| 			pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
| 			#print 'got doorbell' | ||||
|   def close_button(event): | ||||
|     global STATUS | ||||
|     STATUS = False | ||||
|     try: | ||||
|       update_api(True) | ||||
|     except: | ||||
|       pass | ||||
|  | ||||
| 	def close_button(event): | ||||
| 		global STATUS  | ||||
| 		STATUS = False | ||||
| 		try: | ||||
| 			urllib2.urlopen(url+'&door=aerie&locked=1', timeout=2) | ||||
| 			urllib2.urlopen(old_api+'&status=closed', timeout=2) | ||||
| 		except: | ||||
| 			pass | ||||
|  | ||||
| 		set_led(RED) | ||||
|     set_led(RED) | ||||
|  | ||||
|  | ||||
| 	listener = pifacedigitalio.InputEventListener() | ||||
| 	listener.register(0, pifacedigitalio.IODIR_RISING_EDGE, doorbell, settle_time=10) | ||||
| 	listener.register(1, pifacedigitalio.IODIR_RISING_EDGE, close_button, settle_time=5) | ||||
| 	listener.activate() | ||||
|   listener = pifacedigitalio.InputEventListener() | ||||
|   listener.register(0, pifacedigitalio.IODIR_RISING_EDGE, doorbell, settle_time=10) | ||||
|   listener.register(1, pifacedigitalio.IODIR_RISING_EDGE, close_button, settle_time=5) | ||||
|   listener.activate() | ||||
|  | ||||
| 	def signal_handler(signal, frame): | ||||
| 		listener.deactivate() | ||||
| 		os.remove("/var/run/foodoord.pipe") | ||||
|   def signal_handler(signal, frame): | ||||
|     listener.deactivate() | ||||
|     os.remove("/var/run/foodoord.pipe") | ||||
|  | ||||
| 		try: | ||||
| 			urllib2.urlopen(url+'&door=aerie&locked=1', timeout=2) | ||||
| 			urllib2.urlopen(old_api+'&status=closed', timeout=2) | ||||
| 		except: | ||||
| 			pass | ||||
| 				 | ||||
| 		set_led(RED) | ||||
| 		sys.exit(0) | ||||
|     try: | ||||
|       update_api(True) | ||||
|     except: | ||||
|       pass | ||||
|  | ||||
| 	def set_led(color): | ||||
| 		if (color==RED): | ||||
| 			pifacedigital.leds[LED_RED].turn_on() | ||||
| 			pifacedigital.leds[LED_GREEN].turn_off() | ||||
|     set_led(RED) | ||||
|     sys.exit(0) | ||||
|  | ||||
| 		elif (color==GREEN): | ||||
| 			pifacedigital.leds[LED_GREEN].turn_on() | ||||
| 			pifacedigital.leds[LED_RED].turn_off() | ||||
|   def set_led(color): | ||||
|     if (color==RED): | ||||
|       pifacedigital.leds[LED_RED].turn_on() | ||||
|       pifacedigital.leds[LED_GREEN].turn_off() | ||||
|  | ||||
| 		elif (color==ORANGE): | ||||
| 			pifacedigital.leds[LED_RED].turn_on() | ||||
| 			pifacedigital.leds[LED_GREEN].turn_on() | ||||
|     elif (color==GREEN): | ||||
|       pifacedigital.leds[LED_GREEN].turn_on() | ||||
|       pifacedigital.leds[LED_RED].turn_off() | ||||
|  | ||||
| 	pifacedigital = pifacedigitalio.PiFaceDigital() | ||||
| 	signal.signal(signal.SIGTERM, signal_handler) | ||||
|     elif (color==ORANGE): | ||||
|       pifacedigital.leds[LED_RED].turn_on() | ||||
|       pifacedigital.leds[LED_GREEN].turn_on() | ||||
|  | ||||
| 	#Startsettings  | ||||
| 	STATUS = False | ||||
| 	pifacedigital.leds[LED_RED].turn_on() | ||||
|   pifacedigital = pifacedigitalio.PiFaceDigital() | ||||
|   signal.signal(signal.SIGTERM, signal_handler) | ||||
|  | ||||
| 	#Setting up FiFo to get sshd-output | ||||
| 	try: | ||||
| 		os.mkfifo("/var/run/foodoord.pipe") | ||||
| 		os.chown("/var/run/foodoord.pipe", -1, grp.getgrnam('foodoor')[2]) | ||||
| 		os.chmod("/var/run/foodoord.pipe", stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP) | ||||
| 	except OSError: | ||||
| 		pass | ||||
|   #Startsettings | ||||
|   STATUS = False | ||||
|   pifacedigital.leds[LED_RED].turn_on() | ||||
|  | ||||
| 	with open("/var/run/foodoord.pipe", "r") as ssh_input: | ||||
| 		while 1: | ||||
| 			#Read sshd-output from pipe  | ||||
| 			Pipe = ssh_input.readline()[:-1] | ||||
| 		 | ||||
| 			if (Pipe == "close" and STATUS): | ||||
| 				pifacedigital.relays[RELAYS_LOCK].toggle() | ||||
| 				time.sleep(1) | ||||
| 				pifacedigital.relays[RELAYS_LOCK].toggle() | ||||
| 				STATUS = False | ||||
|   #Setting up FiFo to get sshd-output | ||||
|   try: | ||||
|     os.mkfifo("/var/run/foodoord.pipe") | ||||
|     os.chown("/var/run/foodoord.pipe", -1, grp.getgrnam('foodoor')[2]) | ||||
|     os.chmod("/var/run/foodoord.pipe", stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP) | ||||
|   except OSError: | ||||
|     pass | ||||
|  | ||||
| 				try: | ||||
| 					urllib2.urlopen(url+'&door=aerie&locked=1', timeout=2) | ||||
| 					urllib2.urlopen(old_api+'&status=closed', timeout=2) | ||||
| 				except: | ||||
| 					pass | ||||
| 				 | ||||
| 				set_led(RED) | ||||
|   with open("/var/run/foodoord.pipe", "r") as ssh_input: | ||||
|     while 1: | ||||
|       #Read sshd-output from pipe | ||||
|       Pipe = ssh_input.readline()[:-1] | ||||
|  | ||||
| 			elif (Pipe == "open"): | ||||
| 				pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
| 				time.sleep(2) | ||||
| 				pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
|       if (Pipe == "close" and STATUS): | ||||
|         pifacedigital.relays[RELAYS_LOCK].toggle() | ||||
|         time.sleep(1) | ||||
|         pifacedigital.relays[RELAYS_LOCK].toggle() | ||||
|         STATUS = False | ||||
|  | ||||
| 				if (STATUS==False): | ||||
| 					 | ||||
| 					try: | ||||
| 						urllib2.urlopen(url+'&door=aerie&locked=0', timeout=2) | ||||
| 						urllib2.urlopen(old_api+'&status=open', timeout=2) | ||||
| 					except: | ||||
| 						pass | ||||
|         try: | ||||
|           update_api(True) | ||||
|         except: | ||||
|           pass | ||||
|  | ||||
| 				STATUS = True | ||||
| 				 | ||||
| 				set_led(GREEN) | ||||
| 			time.sleep(0.1) | ||||
|         set_led(RED) | ||||
|  | ||||
|       elif (Pipe == "open"): | ||||
|         pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
|         time.sleep(2) | ||||
|         pifacedigital.relays[RELAYS_UNLOCK].toggle() | ||||
|  | ||||
|         if (STATUS==False): | ||||
|  | ||||
|           try: | ||||
|             update_api(False) | ||||
|           except: | ||||
|             pass | ||||
|  | ||||
|         STATUS = True | ||||
|  | ||||
|         set_led(GREEN) | ||||
|       time.sleep(0.1) | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #! /usr/bin/python | ||||
| # vim: ts=2 sw=2 et | ||||
|  | ||||
| import os | ||||
| import stat | ||||
| @@ -37,61 +38,61 @@ ORANGE=3 | ||||
|  | ||||
|  | ||||
| def write_state(state): | ||||
|     try:     | ||||
|         handle = open("/tmp/door_state", "w")   | ||||
|         handle.write(state) | ||||
|         handle.close() | ||||
|     except: | ||||
|         pass | ||||
|   try: | ||||
|     handle = open("/tmp/door_state", "w") | ||||
|     handle.write(state) | ||||
|     handle.close() | ||||
|   except: | ||||
|     pass | ||||
|  | ||||
|  | ||||
| def update_api(locked): | ||||
|     try: | ||||
|         os.system("/usr/bin/curl -XPOST --header 'Content-Type: application/json' --data '{ \"consumer_key\": \"" + consumerkey  + "\", \"consumer_secret\": \"" + consumersecret + "\", \"cellar\": " + str(locked).lower() + " }' '" + doorapi  + "' ") | ||||
|     except: | ||||
|         pass | ||||
|   try: | ||||
|     os.system("/usr/bin/curl -XPOST --header 'Content-Type: application/json' --data '{ \"consumer_key\": \"" + consumerkey  + "\", \"consumer_secret\": \"" + consumersecret + "\", \"cellar\": " + str(locked).lower() + " }' '" + doorapi  + "' ") | ||||
|   except: | ||||
|     pass | ||||
|  | ||||
| if __name__ == "__main__": | ||||
|      | ||||
|     #Startsettings | ||||
|     STATUS=False | ||||
|     gpio.setmode(gpio.BCM) | ||||
|     gpio.setup(PIN_OPEN, gpio.OUT) | ||||
|     gpio.setup(PIN_CLOSE, gpio.OUT) | ||||
|     #Setting up FiFo to get sshd-output | ||||
|     try: | ||||
|         os.mkfifo("/var/run/foodoord.pipe") | ||||
| 	os.chown("/var/run/foodoord.pipe", -1, grp.getgrnam('foodoor')[2]) | ||||
| 	os.chmod("/var/run/foodoord.pipe", stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP) | ||||
|     except OSError: | ||||
| 	pass | ||||
|   #Startsettings | ||||
|   STATUS=False | ||||
|   gpio.setmode(gpio.BCM) | ||||
|   gpio.setup(PIN_OPEN, gpio.OUT) | ||||
|   gpio.setup(PIN_CLOSE, gpio.OUT) | ||||
|   #Setting up FiFo to get sshd-output | ||||
|   try: | ||||
|     os.mkfifo("/var/run/foodoord.pipe") | ||||
|     os.chown("/var/run/foodoord.pipe", -1, grp.getgrnam('foodoor')[2]) | ||||
|     os.chmod("/var/run/foodoord.pipe", stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP) | ||||
|   except OSError: | ||||
|     pass | ||||
|  | ||||
|     with open("/var/run/foodoord.pipe", "r") as ssh_input: | ||||
|         while 1: | ||||
|             #Read sshd-output from pipe | ||||
|             Pipe = ssh_input.readline()[:-1] | ||||
|   with open("/var/run/foodoord.pipe", "r") as ssh_input: | ||||
|     while 1: | ||||
|       #Read sshd-output from pipe | ||||
|       Pipe = ssh_input.readline()[:-1] | ||||
|  | ||||
|             if (Pipe == "close"): | ||||
|                 gpio.output(PIN_CLOSE,1) | ||||
|                 time.sleep(1) | ||||
|                 gpio.output(PIN_CLOSE,0) | ||||
|       if (Pipe == "close"): | ||||
|         gpio.output(PIN_CLOSE,1) | ||||
|         time.sleep(1) | ||||
|         gpio.output(PIN_CLOSE,0) | ||||
|  | ||||
|                 write_state("closed") | ||||
|                	update_api(True) | ||||
|         write_state("closed") | ||||
|         update_api(True) | ||||
|  | ||||
|  | ||||
|             elif (Pipe == "open"): | ||||
|       elif (Pipe == "open"): | ||||
|  | ||||
|                 #Locking | ||||
|                 gpio.output(PIN_OPEN,1) | ||||
|                 time.sleep(1) | ||||
|                 gpio.output(PIN_OPEN,0) | ||||
|         #Locking | ||||
|         gpio.output(PIN_OPEN,1) | ||||
|         time.sleep(1) | ||||
|         gpio.output(PIN_OPEN,0) | ||||
|  | ||||
|         #Save State | ||||
|         write_state("open") | ||||
|  | ||||
|         #Status Update | ||||
|         update_api(False) | ||||
|                  | ||||
|                 #Save State | ||||
|                 write_state("open") | ||||
|  | ||||
|                 #Status Update | ||||
|                 update_api(False) | ||||
|                  | ||||
|             time.sleep(0.2) | ||||
|       time.sleep(0.2) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user