möchte hier mein erstes Asterisk Project auf dem Raspberry pi 2 vorstellen.
geplant ist für irgendwann mal eine Sip Video Sprechanlage.
da Sip Video mit der Fritzbox ja nicht geht, hab ich mich mal an Asterisk heran gewagt.
ist eigentlich gar nicht so schwer!
eine minimal konfiguration war schnell gebastelt, und schon kommen neue Ideen.
nun mein kleines Project:
Türklingel am Raspberry, weiterleiten auf Asterisk, Telefone nach Wahl klingeln, Bild von der Ip Camera auf Android App.
die meißten Teile davon hab ich durch googln im Internet gefunden.
erst mal einen Taster (bei mir ist es ein Relais)an GPIO23 gebastelt.
Taster, Relais schaltet 3,3V auf GPI23, und ein Wiederstand 10KOhm von Minus auf GPIO23, damit ein stabiler Zustand garantiert ist.
Beispiel hier: https://www.elektronik-kompendium.de/sites/raspberry-pi/2006051.htm
GPIO Belegung: https://www.elektronik-kompendium.de/sites/raspberry-pi/1907101.htm
jetz die Abfrage des GPIO, hab im Internet versch. Anleitungen gefunden, Shell Scripte und Python Scripte.
die shell Scripte funktionieren bei mir nicht richtig, deshalb hab ich die Python Sripte für mich angepasst.
hab jetzt 2 die funktioniren, 1 x über sipcmd und 1 x Asterisk direkt aufrufen, find ich besser.
gpio23_abfragenSipcmd.py
und
gpio23_abfragenAsterisk.py
die Scripte hab ich im Verzeichnis /var/www liegen und mit chmod 777 gpio23* ausführbar gemacht.
in der extensions.con von Asterisk muss der Abschnit [defaults] angepasst werden.
in etwa so:
und die richtigen Nummern müssen in der Sip.conf eingerichtet sein!
hab z.B auf der Nummer 607 die Android App Elcom Videofon eingerichtet.
wenn klingelt hab ich dann gleich ein Bild vom Eingang
ist noch keine Video Sprechanlage, aber für den Anfang reicht es.
Verbesserungs Vorschläge werden jederzeit gerne angenommen.
insbesondere das Python Sript doch mit einem Shell Sript ersetzen?
mal sehen wie groß die Belastung de Pi dadurch ist?
geplant ist für irgendwann mal eine Sip Video Sprechanlage.
da Sip Video mit der Fritzbox ja nicht geht, hab ich mich mal an Asterisk heran gewagt.
ist eigentlich gar nicht so schwer!
eine minimal konfiguration war schnell gebastelt, und schon kommen neue Ideen.
nun mein kleines Project:
Türklingel am Raspberry, weiterleiten auf Asterisk, Telefone nach Wahl klingeln, Bild von der Ip Camera auf Android App.
die meißten Teile davon hab ich durch googln im Internet gefunden.
erst mal einen Taster (bei mir ist es ein Relais)an GPIO23 gebastelt.
Taster, Relais schaltet 3,3V auf GPI23, und ein Wiederstand 10KOhm von Minus auf GPIO23, damit ein stabiler Zustand garantiert ist.
Beispiel hier: https://www.elektronik-kompendium.de/sites/raspberry-pi/2006051.htm
GPIO Belegung: https://www.elektronik-kompendium.de/sites/raspberry-pi/1907101.htm
jetz die Abfrage des GPIO, hab im Internet versch. Anleitungen gefunden, Shell Scripte und Python Scripte.
die shell Scripte funktionieren bei mir nicht richtig, deshalb hab ich die Python Sripte für mich angepasst.
hab jetzt 2 die funktioniren, 1 x über sipcmd und 1 x Asterisk direkt aufrufen, find ich besser.
gpio23_abfragenSipcmd.py
PHP:
#!/usr/bin/env python
import os,time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)
abgangsnummer = "606"
passwort = "PASSWORT"
anzeige = "Klingel"
ipAsterisk = "192.168.178.30"
zielnummer = "607"
dauer = 5
def anruf(abgangsnummer,passwort,anzeige,ipAsterisk,zielnummer,dauer):
try:
command = "sipcmd -a 'es klingelt an der Haustuer ' -P sip -p 5064 -u " + abgangsnummer
command = command + " -c " + passwort
command = command + " -w " + ipfritzbox
command = command + " -x 'c" + zielnummer + "' &"
os.system(command)
time.sleep(dauer + 2)
os.system('sudo killall sipcmd')
time.sleep(2)
os.system('sudo pkill -9 sipcmd')
except:
pass
try:
while True:
if GPIO.input(23) == GPIO.HIGH:
anruf(abgangsnummer,passwort,anzeige,ipAsterisk,zielnummer,dauer)
time.sleep(1)
pass
und
gpio23_abfragenAsterisk.py
PHP:
#!/usr/bin/env python
import os,time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_UP)
def anruf():
try:
os.system('asterisk -r -x "console dial 699"')
time.sleep(7)
os.system('asterisk -r -x "console hangup"')
time.sleep(2)
except:
pass
try:
while True:
if GPIO.input(23) == GPIO.HIGH:
anruf()
time.sleep(1)
pass
except KeyboardInterrupt:
print "Ctrl-C - quit"
finally:
GPIO.cleanup()
die Scripte hab ich im Verzeichnis /var/www liegen und mit chmod 777 gpio23* ausführbar gemacht.
in der extensions.con von Asterisk muss der Abschnit [defaults] angepasst werden.
in etwa so:
PHP:
[default]
exten => 699,1,Answer()
exten => 699,2,Set(CALLERID(NUM)="es klingelt an der Haustuer ")
exten => 699,3,Dial(SIP/607&SIP/603)
exten => 699,4,Hangup()]
und die richtigen Nummern müssen in der Sip.conf eingerichtet sein!
hab z.B auf der Nummer 607 die Android App Elcom Videofon eingerichtet.
wenn klingelt hab ich dann gleich ein Bild vom Eingang
ist noch keine Video Sprechanlage, aber für den Anfang reicht es.
Verbesserungs Vorschläge werden jederzeit gerne angenommen.
insbesondere das Python Sript doch mit einem Shell Sript ersetzen?
mal sehen wie groß die Belastung de Pi dadurch ist?