From b3e57e3b5748e6634b6a4f233b09a9db8694f61d Mon Sep 17 00:00:00 2001 From: Bandie Date: Sun, 7 Nov 2021 19:46:13 +0100 Subject: [PATCH] foodoor ist oben! --- foodoord | 140 -------------------------------------------------- foodoord_oben | 71 ++++++++----------------- 2 files changed, 22 insertions(+), 189 deletions(-) delete mode 100755 foodoord diff --git a/foodoord b/foodoord deleted file mode 100755 index 153cf35..0000000 --- a/foodoord +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/env python2 - -import os -import stat -import time -import pifacedigitalio -import urllib2 -import signal -import sys -import grp -from ConfigParser import SafeConfigParser - -#Read config -parser = SafeConfigParser() -parser.read('/etc/foodoord.conf') - -url = parser.get('door_firstlevel', 'status_url') -old_api = parser.get('door_firstlevel_old', 'status_url') - - -#Definitions for output -LED_RED=6 -LED_GREEN=7 -RELAYS_LOCK=0 -RELAYS_UNLOCK=1 - -#Definitions for input -DOOR_BELL=0 -REED_RELAYS=1 #not implementet yet - -#Definitions for LEDcolor -RED=1 -GREEN=2 -ORANGE=3 - -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 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) - - - 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") - - 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) - - def set_led(color): - if (color==RED): - pifacedigital.leds[LED_RED].turn_on() - pifacedigital.leds[LED_GREEN].turn_off() - - elif (color==GREEN): - pifacedigital.leds[LED_GREEN].turn_on() - pifacedigital.leds[LED_RED].turn_off() - - elif (color==ORANGE): - pifacedigital.leds[LED_RED].turn_on() - pifacedigital.leds[LED_GREEN].turn_on() - - pifacedigital = pifacedigitalio.PiFaceDigital() - signal.signal(signal.SIGTERM, signal_handler) - - #Startsettings - STATUS = False - pifacedigital.leds[LED_RED].turn_on() - - #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] - - if (Pipe == "close" and STATUS): - pifacedigital.relays[RELAYS_LOCK].toggle() - time.sleep(1) - pifacedigital.relays[RELAYS_LOCK].toggle() - 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) - - elif (Pipe == "open"): - pifacedigital.relays[RELAYS_UNLOCK].toggle() - time.sleep(2) - pifacedigital.relays[RELAYS_UNLOCK].toggle() - - if (STATUS==False): - - try: - urllib2.urlopen(url+'&door=aerie&locked=0', timeout=2) - urllib2.urlopen(old_api+'&status=open', timeout=2) - except: - pass - - STATUS = True - - set_led(GREEN) - time.sleep(0.1) diff --git a/foodoord_oben b/foodoord_oben index 4e514c2..153cf35 100755 --- a/foodoord_oben +++ b/foodoord_oben @@ -1,10 +1,10 @@ -#! /usr/bin/python +#!/usr/bin/env python2 import os import stat import time import pifacedigitalio -import requests +import urllib2 import signal import sys import grp @@ -14,9 +14,9 @@ from ConfigParser import SafeConfigParser parser = SafeConfigParser() parser.read('/etc/foodoord.conf') -doorapi = parser.get('doorstatus', 'status_url') -consumerkey = parser.get('doorstatus', 'key') -consumersecret = parser.get('doorstatus', 'secret') +url = parser.get('door_firstlevel', 'status_url') +old_api = parser.get('door_firstlevel_old', 'status_url') + #Definitions for output LED_RED=6 @@ -40,15 +40,18 @@ if __name__ == "__main__": def doorbell(event): if (STATUS): pifacedigital.relays[RELAYS_UNLOCK].toggle() - time.sleep(1.5) + time.sleep(2) pifacedigital.relays[RELAYS_UNLOCK].toggle() + #print 'got doorbell' def close_button(event): global STATUS STATUS = False - write_state("closed") - - update_api(True) + try: + urllib2.urlopen(url+'&door=aerie&locked=1', timeout=2) + urllib2.urlopen(old_api+'&status=closed', timeout=2) + except: + pass set_led(RED) @@ -62,8 +65,11 @@ if __name__ == "__main__": listener.deactivate() os.remove("/var/run/foodoord.pipe") - write_state("closed") - update_api(True) + 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) @@ -83,28 +89,6 @@ if __name__ == "__main__": pifacedigital = pifacedigitalio.PiFaceDigital() signal.signal(signal.SIGTERM, signal_handler) - signal.signal(signal.SIGINT, signal_handler) - - def write_state(state): - try: - handle = open("/tmp/door_state", "w") - handle.write(state) - handle.close() - except: - pass - - def update_api(locked): - #if locked: - # - # try: - # os.system("/usr/bin/mosquitto_pub -h mqtt.chaospott.de -t foobar/aerie/licht -m 'zentral-aus'") - # except: - # pass - 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 - #Startsettings STATUS = False @@ -128,16 +112,10 @@ if __name__ == "__main__": time.sleep(1) pifacedigital.relays[RELAYS_LOCK].toggle() STATUS = False - - write_state("closed") - - update_api(True) try: - r = requests.get(url+'&door=aerie&locked=1', timeout=2) - #print (r.status_code) - r = requests.get(old_api+'&status=closed', timeout=2) - #print (r.status_code) + urllib2.urlopen(url+'&door=aerie&locked=1', timeout=2) + urllib2.urlopen(old_api+'&status=closed', timeout=2) except: pass @@ -145,23 +123,18 @@ if __name__ == "__main__": elif (Pipe == "open"): pifacedigital.relays[RELAYS_UNLOCK].toggle() - time.sleep(1.5) + time.sleep(2) pifacedigital.relays[RELAYS_UNLOCK].toggle() if (STATUS==False): try: - r = requests.get(url+"&door=aerie&locked=0", timeout=2) - #print (r.status_code) - r = requests.get(old_api+'&status=open', timeout=2) - #print (r.status_code) + urllib2.urlopen(url+'&door=aerie&locked=0', timeout=2) + urllib2.urlopen(old_api+'&status=open', timeout=2) except: pass - update_api(False) - write_state("open") STATUS = True set_led(GREEN) time.sleep(0.1) -