Alles anzeigenFür dein Vorhaben bedarfs es nicht zwingend gleich eine Doorpi Installation, es gab mal in einer CT einen Beitrag zu einer Türklingel im Heimnetz:
Die asterisk Telefonanlage ruft die Nummer in einer von einem Python Script erzeugte call Datei an wenn ein GPIO ausgelöst wird.
Also:Einrichten eines Voip Telefons in der Fritzbox:
https://avm.de/service/fritzbo…-anmelden-und-einrichten/
Diese Zugangsdaten in der Datei /etc/asterisk/sip.conf eintragen:
CodeAlles anzeigen[general] allowguest=no port = 5060 bindaddr = 0.0.0.0 qualify = no disable = all allow = alaw allow = ulaw videosupport = no dtmfmode = rfc2833 srvlookup = yes ;Wer sein Subnetz abgeändert hat, muss hier die Parameter anpassen localnet=192.168.178.0/255.255.255.0 directmedia = no nat = no register=klingelpi:MakeTheBoxRING@192.168.178.1/624 ;Die Caller-ID wird bei Anrufen auf kompatiblen Telefonen angezeigt. callerid=Klingel <624> ;Die Channel-ID. Sie wird in der .call-Datei benötigt: [624] ;Sie ist frei wählbar, muss aber am Ende korrekt sein, damit der Anruf ausgelöst wird type = friend insecure = invite,port nat = no canreinvite = no ;---Hier muss bei neueren FritzOS-Versionen der Benutzername eingetragen werden authuser = klingelpi username = klingelpi fromuser = klingelpi ;--- fromdomain = fritz.box ;...und hier das Passwort... secret = MakeTheBoxRING ;Die IP der Fritzbox: host = 192.168.178.1 ;... dtmfmode = rfc2833 context = incoming disallow = all callerid= Klingel allow = ulaw allow = alaw transport = udp
Restart von asterisk oder den Pi restarte
Anlegen oder aus oben verlinkter Quelle die Datei klingelscript.py
CodeAlles anzeigenimport time import shutil import RPi.GPIO as gpio import os import sys #Einstellungen klingel_gpio = 4 #GPIO, der mit der Schaltung verbunden ist callfilepfad = "/home/pi/klingel.call" #Dateipfad in dem das Script die .call-Datei ablegt sipkanal = "624" #Name des SIP-Kanals (in eckigen Klammern in der SIP.conf) sipziel = "**9" #Ziel des Anrufes (Beispiel: **9 als Rundruf der Fritz!Box) sipwartezeit = "2" #Wartezeit bevor wieder aufgelegt wird ### #Hier wird die .call-Datei zusammengebaut und abgespeichert callfile = "Channel: SIP/" + sipkanal + "/" + sipziel + "\nApplication: Playback\nWaitTime:" + sipwartezeit + "\nData: /var/lib/asterisk/sounds/custom/play" cf = open(callfilepfad, "w") cf.write(callfile) cf.close() ### gpio.setmode(gpio.BCM) gpio.setup(klingel_gpio, gpio.IN, pull_up_down=gpio.PUD_UP) def voip(): try: shutil.copyfile(callfilepfad,'/var/spool/asterisk/outgoing/anruf.call') print(text) except Exception: pass while True: time.sleep(0.01) if not gpio.input(klingel_gpio): time.sleep(0.1) if not gpio.input(klingel_gpio): voip() time.sleep(5)
Bei dem Script fehlt formatbedingt durch das Forum die letzte Zeile!
skript ausfürbar machen
Eintragung in crontab für den Autostart:
Füg die Zeile dann ganz unten ein:
Genutzt wird der GPIO 4, um diesen anzusteuern wurde ein Optokoppler genutzt der Eingangsseitig mit der 8V ~ angesteuert wurde.
Eine Beispielschaltung findet man zB hier: https://www.ichbinzustaendig.d…-mittag-klingel-hack.html
Hallo Loetauge,
deine beschreibung ist genau das was ich brauche. Bin allerdings auf das Problem gestoßen dass kein Call rausgeht. Bin recht neu in dem Thema Raspberry...meinst du du könntest mir helfen? ich sehe dass der Eingang am GPIO ankommt aber der call geht nicht raus...Muss die bindaddr = 0.0.0.0 sein?