Raspi als VoIP Schaltaktor

  • Hallo gemeinde .


    Ich hab folgendes Projekt.


    - eine SIP Pbx

    - eine Werkstatt mit SIP Telefon Drahtlos


    Jetzt möchte ich da ein Signalgerät bauen.

    Also wenn die Nebenstelle angerufen wird ,soll per Relais geschaltet eine Blitzleuchte mit Hupe angehen solang der Anruf anliegt.


    Ich hab dafür nen kleine ZeroW vorgsehen . Der einfach bei Anruf einen GPIO auf High setzten soll . Und wenn der Anrufer auflegt soll er wieder aus gehen.


    Dazu hab ich schon mal in nem anderem Forum gefragt (Doorpi) und da wurde empfohlen das einfach mit nem Asterisk zu machen.

    Aber so richtig komm ich da ni weiter.


    Hätte da jemand eine Idee ?

    Oder hat sowas schon mal umgesetzt?


    grüße Christian

  • So etwas ähnliches habe ich mal für meinen schwerhörigen Opa gebastelt. Damals habe ich noch mit C# und einer fertigen Bibliothek für den Fritzbox Callmonitor auf einen eingehenden und laufenden Anruf gewartet und dementsprechend eine Lampe angesteuert. Heutzutage würde ich wohl einen kleinen ESP8266/ESP32 und eine SIP-Bibliothek dafür benutzen.

    Kelvin

  • eine Blitzleuchte mit Hupe angehen solang der Anruf anliegt.


    Und wenn der Anrufer auflegt soll er wieder aus gehen.

    Es soll wirklich die ganze Zeit gehupt werden? Na ja, wenn man will ;)


    Dass dieses Signal so lange anliegt, wie der Anruf besteht, wird nicht so einfach, da man das mittels de normalen VoIP-Mitteln und einem weiteren VoIP-Gerät nicht erreichen kann.

    Dazu müsste die Telefonanlage die Möglichkeit liefern, dass man anzeigen lassen kann, ob ein bestimmter Anschluss 'busy' ist.


    Den Anruf zu signalisieren ist da weniger das Problem. Bei der FritzBox als 'Telefonanlage' kann man eingehende Anrufe über der Callmonitor (Port 1050 bei der F!B) in Erfahrung bringen. Doch auszuwerten, dass der Anruf beendet ist, ist schwieriger.


    Aus 'grauer Vorzeit', also dem Januar 2020:

    https://gsf.diphda.uberspace.d…-per-popup-auf-dashboard/

    Hier wird beschrieben, wie man mittels TR-64 Infornationen, auch wer anruft, per TR-64 auslesen kann.

    Selber denken,
    wie kann man nur?

  • Geht es hier wirklich darum, dass auch während eines bestehenden Gesprächs gehupt werden soll, oder eher darum, dass solange gehupt wird, bis jemand das Gespräch entgegennimmt oder der Anrufer aufgibt?


    Hat die PBX keinen einzigen analogen Port/lässt sich der nicht preisgünstig nachrüsten? Dafür gibt es billige Fertiggeräte für diese Aufgabe.

  • Doch auszuwerten, dass der Anruf beendet ist, ist schwieriger.

    Zumindest die FritzBox hat vier Ereignisse: RING (eingehender Anruf), CALL (ausgehender Anruf), CONNECT (Anruf angenommen), DISCONNECT (Anruf aufgelegt/beendet).


    Nach dieser Anleitung (https://www.macfix.de/entries/view/944283) kann man das sogar ganz simpel über's Terminal realisieren.



    Hat die PBX keinen einzigen analogen Port/lässt sich der nicht preisgünstig nachrüsten? Dafür gibt es billige Fertiggeräte für diese Aufgabe.

    Stimmt, so etwas gibt es auch noch. Am besten nach Seniorenhilfen und Zubehör für Schwerhörige suchen.

    Kelvin

  • Oh natürlich soll die nur Hupen wenn der Ruf Quasi Klingelt ^^

    Das war etwas Unpräzise von mir ausgedrückt.


    Und nein es liegt leider kein Analoger Port mehr vor.

    Und es ist ja auch keine Fritzbox.


    Das was es für den Analogport noch zu kaufen gibt ist auch mau.

    Kostet wenn auch über 100€ oder ist nur mit nem Mikrofon.Was auch nicht so praktikabel ist für mich an der Stelle.


    sicher gibt es auch für gute 200€ Fertige Gerät inkl. PoE . Aber will ja selbst was basteln :)

  • Hallo Christian,


    die "Aufgabenstellung" lässt mich nicht in Ruhe ... Eventuell benötige ich auch bald eine Zusatzklingel für VoIP.


    Deshalb habe ich noch ein wenig gebastelt. Nicht genau das was ich haben wollte, aber als erster Wurf ok. Vielleicht hilft es dir?


    Nützt natürlich nur etwas, wenn man vollen Zugriff auf asterisk hat.


    Ich habe zwei Rechner: "Server" (mit Debian stretch und laufenden asterisk, ...) und einen Raspberry Pi 1(Raspbian stretch)

    Der Raspberry Pi soll einen GPIO schalten, wenn die Nebenstelle "2000" angerufen wird.

    Der Raspberry Pi heißt bei mir ek2ms011, sonst die IP-Adresse des Raspberry PI nehmen!


    Neue Software auf dem Server: mosquitto-clients

    Neue Software auf dem Raspberry Pi: mosquitto und "flyte/pi-mqtt-gpio"


    Wir bauen die "config.yaml" für pi-mqtt-gpio zusammen, damit GPIO25 / Pin xx geschaltet wird:

    Nun starten wir das Ganze mit: python -m pi_mqtt_gpio.server config.yaml.


    Da sollten dann Statusmeldungen kommen, welche Topics alle beobachtet werden. usw.


    Auf dem Server in der "extensions.conf" von asterisk habe ich den Dialplan von der Nebenstelle 2000 geändert.

    ALT:

    Code
    exten => 2000,1,Dial(SIP/2001,99)
    exten => 2000,n,HangUp()

    NEU:

    Code
    exten => 2000,1,SYSTEM(/usr/bin/mosquitto_pub -h ek2ms011 -m 20000 -t local/V1/output/Licht/set_on_ms &)
    exten => 2000,n,SYSTEM(/usr/bin/mosquitto_pub -h ek2ms011 -m ON -t local/V1/output/Licht/set &)
    exten => 2000,n,Dial(SIP/2000,15,gU(angenommen))
    exten => 2000,n,TrySYSTEM(/usr/bin/mosquitto_pub -h ek2ms011 -m OFF -t local/V1/output/Licht/set &)
    exten => 2000,n,Hangup()
    
    [angenommen]
    exten => s,1,TrySYSTEM(/usr/bin/mosquitto_pub -h ek2ms011 -m OFF -t local/V1/output/Licht/set &)
    exten => s,n,Return()


    Jetzt nicht blind abschreiben, sondern ein wenig verstehen was da abgeht :)


    Wenn die 2000 angerufen wird, dann werden erst einmal zwei Nachrichten in verschiedene Topics an den MQTT-Server gesendet.

    1. Soll der GPIO nach 20 Sekunden (20000 msec) wieder ausgeschaltet werden

    2. Den GPIO einschalten

    Danach wird die Nebenstelle 2000 angerufen und wenn Anruf angenommen wird zu "angenommen" gesprungen. Sonst weiter in der Kette.

    Wenn der Timeout auftritt (hier 15 Sekunden) wird "OFF" zur MQTT-Server gesendet.


    Eine Situation ist nicht abgebildet.

    Wenn der Anrufer während des Klingelns einfach auflegt. Dazu bekomme ich in asterisk keine "Meldung/Extension"

    Deshalb habe ich den Topic "set_on_ms"gesetzt, dann wird der GPIO auf dem Raspberry Pi auf jeden Fall wieder zurück gesetzt.




    Weitere Alternativen welche mir noch eingefallen sind:

    • Fertiggerät: Snom PA1, welches aber bei 125,- € liegen soll.
    • baresip als zusätzliche Nebenstelle auf dem Raspberry Pi installieren. Der kann ab Version (0.6?) auch MQTT-Nachrichten versenden ... (stretch hat natürlich V 0.5.x)


    Viele Grüße

    Olaf (der aus dem DoorPi-Forum)

    Wer nicht gekennzeichnete Rechtschreibfehler findet darf sie gerne behalten..

  • Steht das Telefon eigentlich immer am selben Ort, wenn es nicht benutzt wird? Und klingelt nur das Telefon oder auch die Box?

    Man kann auch über ein Mikrofon das Klingelgeräusch abwarten und dann das Licht ansteuern.

    Kelvin

  • Kevin , das schnurlos Telefon klingelt auch ,aber das liegt ja gern mal irgendwo anders.



    Olaf


    danke schon mal für deine Idee .

    Zugriff auf den Asterisk hätte ich . Wäre also schon mal eine idee .
    Wobei ich ja am liebsten alles auf einem Gerät das zusammen fassen möchte.

    Ich hab da noch 2 Bekannte die da eine ähnliche Konstellation haben wo ich denen das basteln könnte.
    Die haben aber nur nen "normalen" Router mit TKA .


    Da klingt das mit Baresip recht interessant. Das muss ich mir direkt mal anschauen.


    Ich berichte

  • Ich hab da noch 2 Bekannte die da eine ähnliche Konstellation haben wo ich denen das basteln könnte.
    Die haben aber nur nen "normalen" Router mit TKA .

    Also, wenn du es ohne MQTT und Co realisieren willst, gibt es auf einschlägigen Verkaufsplattformen (der größeren oder kleineren Bucht) gebrauchte Fritzboxen, welche du mit den vorhandenen Anschlüssen (Analog/ISDN/VoIP) auch doch wieder den CallMonitor abfragen könntest.

    Nur als Alternativ-Vorschlag

    Selber denken,
    wie kann man nur?