diff --git a/run.py b/run.py index b60ffc5..b3ebb29 100755 --- a/run.py +++ b/run.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import RPi.GPIO as GPIO import time import os @@ -6,77 +6,59 @@ import sys import re import subprocess -GPIO.setmode(GPIO.BCM) -GPIO.setup(26,GPIO.IN, pull_up_down = GPIO.PUD_UP) -GPIO.setup(21,GPIO.OUT) -GPIO.setup(6,GPIO.IN, pull_up_down = GPIO.PUD_UP) -GPIO.setup(20,GPIO.OUT) -GPIO.setmode(GPIO.BCM) -GPIO.setup(17, GPIO.OUT) +PinForkIn = 12 +PinForkOut = 20 +PinDialIn = 26 +PinDialOut = 21 +PinWecker = 17 # Command Pin to turn on/off the relay. +Hits = 10 # How many times should the bell be hit by the hammer? +HitsSleep = 0.06 # Sleep between every hit. +Dialcountdown = 500 # time until to dial the call in ms -os.system('linphonecsh exit') + +GPIO.setmode(GPIO.BCM) +GPIO.setup(PinDialIn,GPIO.IN, pull_up_down = GPIO.PUD_UP) +GPIO.setup(PinDialOut,GPIO.OUT) +GPIO.setup(PinForkOut,GPIO.OUT) +GPIO.setup(PinForkIn,GPIO.IN, pull_up_down = GPIO.PUD_UP) +GPIO.setmode(GPIO.BCM) +GPIO.setup(PinWecker, GPIO.OUT) + +os.system('/usr/bin/linphonecsh exit') time.sleep(1) -os.system('linphonecsh init') +os.system('/usr/bin/linphonecsh init') time.sleep(1) -os.system('linphonecsh soundcard playback') +os.system('/usr/bin/linphonecsh soundcard playback') time.sleep(1) -os.system('linphonecsh soundcard ring') +os.system('/usr/bin/linphonecsh soundcard ring') time.sleep(1) -os.system('linphonecsh register --username --host hg.eventphone.de --password ') +os.system('linphonecsh register --username $(sed -n 1p /boot/sip.txt) --host $(sed -n 2p /boot/sip.txt) --password $(sed -n 3p /boot/sip.txt)') def wecker(): - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - GPIO.output(17, 1) - time.sleep(0.04) - GPIO.output(17, 0) - time.sleep(0.04) - + for _ in range(Hits): + GPIO.output(PinWecker, 1) + time.sleep(HitsSleep) + GPIO.output(PinWecker, 0) + time.sleep(HitsSleep) def hangup(): - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) if FORK == 1: os.system('linphonecsh generic terminate') time.sleep(0.0001) else: - GPIO.input(6) + GPIO.input(PinForkIn) def answer(): - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) if FORK == 1: os.system("linphonecsh generic \"answer $(linphonecsh generic 'calls' | sed -n 4p | awk '{print $1}')\"") time.sleep(0.0001) else: - GPIO.input(6) + GPIO.input(PinForkIn) def dialnumber(): - DIAL = GPIO.input(26) + DIAL = GPIO.input(PinDialIn) NOM = 0 timeout = False countdown = 100 @@ -85,7 +67,7 @@ def dialnumber(): countdown = countdown -1 if DIAL != 1: if NOM == 0: - DIAL = GPIO.input(26) + DIAL = GPIO.input(PinDialIn) else: if NOM == 10: print("0", end='') @@ -96,27 +78,27 @@ def dialnumber(): elif DIAL == 1: NOM = NOM +1 time.sleep(0.109) - DIAL = GPIO.input(26) - countdown = 500 + DIAL = GPIO.input(PinDialIn) + countdown = Dialcountdown timeout = True def CALL(): - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) time.sleep(0.1) if FORK == 1: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) time.sleep(0.0001) - RINGCHECK = 'linphonecsh generic \'calls\' | sed -n 4p | awk \'{print $5}\'' + RINGCHECK = 'linphonecsh generic \'calls\' | sed -n 4p | awk \'{print $6}\'' RINGVALUE = subprocess.check_output(['bash', '-c', RINGCHECK ]).decode().strip() if RINGVALUE == 'IncomingReceived': wecker() - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) time.sleep(0.0001) else: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) time.sleep(0.0001) else: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) CMD = 'linphonecsh generic "answer $(linphonecsh generic \'calls\' | sed -n 4p | awk \'{print $1}\')"' VALUE = subprocess.check_output(['bash', '-c', CMD ]).decode().strip() if VALUE == 'There are no calls to answer.': @@ -129,13 +111,13 @@ def CALL(): f.close() os.system('linphonecsh dial $(cat dial.txt)') else: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) answer() while FORK == 0: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) time.sleep(0.001) else: - FORK = GPIO.input(6) + FORK = GPIO.input(PinForkIn) hangup() while True: