[HowTo] Asterisk, Raspberry, Klingeleingang

ws65

Aktives Mitglied
Mitglied seit
23 Jan 2012
Beiträge
1,157
Punkte für Reaktionen
21
Punkte
38
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
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?
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,201
Beiträge
2,247,951
Mitglieder
373,765
Neuestes Mitglied
walterronald99
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.