Fritzbox Anruf steuert Aktion

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,
    Ich, möchte gerne Folgendes umsetzen:
    Bei einem Anruf der auf dem FritzBox ankommt bzw. über die FritzBox geht, möchte ich eine Aktion ausführen mit dem RaspberryPi.

    Anwendungsfall:
    Ich, beim Fernsehen auf der Couch. Es kommt ein Anruf an. Durch diesen Anruf wird ein Befehl auf dem Raspberry abgesetzt, damit das Fernsehprogramm pausiert.


    Was habe ich:


    FritzBox mit Aktueller Software
    RaspberryPi mit Raspbian und Wlan

    Steuerung um den Fernseher zu Pausieren

    Wie stelle ich es an, das die FritzBox Anrufe auf dem Raspberry "ankommen" (der Pi muss/soll jetzt nicht Klingel) und der daraufhin eine Aktion ausführt? Dabei ist es nicht wichtig, wie die Anrufer Nummer lautet wichtig ist nur das es Anruf vom Raspi verarbeitet wird.

    Danke im Voraus vielleicht hat ja jemand eine Idee.

    edit: Lösungen in Post 14 und 20

    Einmal editiert, zuletzt von Gazura36 (28. August 2015 um 13:04)

  • Hallo,

    mir fällt da die Network Caller ID (NCID) ein. Auf meiner Easybox (Arcor) läuft ein NCID-Server und ein kleines Tool auf meinem Notebook zeigt mir jeden Anruf mit Telefonnummer an. Einfach über Netzwerk. Ich nehme mal an, dass die Fritzbox auch so einen NCID-Server hat. Und für den Raspi gibt es einen entsprechenden Client. Eventuell reicht es aber auch, auf dem Port, auf dem die FritzBox die Caller ID sendet, zu lauschen.

    Gruß


  • Linphone "analysiert" anrufe von der FritzBox?

    Nö. Alle Anrufe auf dem Linphone klingeln lassen.

    Oder: Die Fritzbox sollte einen Anrufmonitor haben. Da könnte man sich einklinken, wenn es das noch gibt.

    z.B.http://www.burth-online.de/cms/index.php/…binationen.html
    Habe ich jetzt wild aus Google gegriffen.

    Viele Grüße

    Wer nicht gekennzeichnete Rechtschreibfehler findet darf sie gerne behalten..

  • Linphone auf dem RaspberryPi installieren und der RaspberryPi fungiert als DECT Telefon? Somit kann ich auf der FritzBox sagen, dass das Linphone (Raspberry) bei jedem Anruf klingeln soll. Damit muss ich nur noch die Verbindung schaffen, dass ich ein Script habe, das erkennt, dass Linphone grade einen Anruf rein bekommt richtig?

  • Ich habe jetzt nochmal Google befragt und bin dort auf etwas gestoßen, was ich als besser empfinde. Linphone ist mir für meine Zwecke etwas überdimensioniert
    Man kann mittels "telnet fritz.box 1012" im terminal sehen wer welche Nummer anruft. (Nur seit dem der Befehl gestartet wurde OHNE Historie)
    Das ganze sieht als output so aus:
    23.08.15 14:40:16;RING;0;0176Handynummer;493043Festnetznummer;SIP0;

    Das wichtige ist hierbei, das im output bei einem Anruf "RING" angezeigt wird. Aber das ist der Punk an dem ich nicht weiter komme.
    Meine Idee dahinter:
    Ein Script schreiben, in dem die telnet Verbindung zur FritzBox aufgebaut wird und überprüft wird ob ein Anruf ankommt. Aber wie kann ich den/das/die Shell output in einem script verwenden?

    Mein script mal in Sprache geschrieben:
    script header
    telnet fritz.box 1012

    if telnet fritz.box 1012 contains RING
    start actionscript (z.B. zum Stummschalten des Fernsehers)
    wait 20seconds (um sicher zugehen das alles ausgeführt wurde)
    start this script (das selbe script erneut starten)
    ends this "old" script (das Script beenden)

    Das mit dem neu starten des Scripts ist etwas umständlich aber sonst wird das actionscript immer ausgeführt, da im telnet output dann noch vom letzten Anruf "RING" steht.

    Aber wie schreibe ich das in einer richtigen Programmiersprache? bash, python whatever?

  • Wenn man einen Linux Sat Receiver hat, erledigt die o.g. Funktion
    des TE das PlugIn 'FritzCall'.
    Eine einfache Lösung - wenn auch etwas über Umwege - wäre
    auf dem Smartphone die App FritzPhone zu nutzen. Das Handy klingelt
    dann auch bei Anrufen zur FritzBox.
    Es gibt weiterhin Apps wie Automatic etc. die unter anderem auch bei Anruf/en bestimmte Aktionen auslösen
    können. Hier gibt es ziemlich viele Möglichkeiten, wie z.B auch einen
    SSH Befehl auf dem Raspi auszulösen.
    Ansonsten muss man zu - für diese Sachen - überdimensionierten Progs
    wie LinePhone oder Asterisk greifen. Damit ballert man sich meiner Meinung
    nach nur das System für den armen Raspi zu.

  • im split hast du die antwort der box

    Einmal editiert, zuletzt von arteck (26. August 2015 um 07:35)

  • Guten Morgen,

    wenn ich das o.g. Skript auf einem pi2 (mit meiner IP der FritzBox 7050 angepasst) starte erhalte ich die folgende Ausgabe:

    Code
    File "fritzi.py", line 4
        import telnetlib
        ^
    IndentationError: unexpected indent

    Kann mit der Fehlermeldung leider nichts anfangen... Auf dem pi2 läuft raspian und Python 2.7.3.

    Jemand eine Idee?

    Grüße M.

    EDIT: Habe den o.g. Fehler beseitigen können, bei mir sind scheinbar beim Kopieren ein paar Leerzeichen entstanden, die den o.g. Fehler produziert haben. Skript startet jetzt ohne Fehlermeldung, bringt mir aber keinerlei Ausgabe.

    Einmal editiert, zuletzt von Micky (26. August 2015 um 10:48)

  • Ich habe hier auf stackoverflow.com Antwort erhalten genau so wie ich es haben wollte.
    Dort hat der User tgo genau umsetzen können was ich weiter oben etwas Kryptisch ausgedrückt haben wollte.

    Hier die deutsche Übersetzung:

    Um eingehende Anrufen der FritzBox zu sehen muss einfach nur folgender Befehl

    Code
    telnet fritz.box 1012


    im terminal ausgeführt werden.
    Die Ausgabe sollte etwa so aussehen:

    Code
    24.08.15 14:03:05;RING;0;017mobilephonenumber;49304myhomenumber;SIP0;

    In meinen falle wolte ich einen Befehl ausführen der meinen TV stumm schaltet
    Hier ist die Anleitung (http://www.domoticz.com/wiki/Harmony_Hub_Control) wie ich meinen Fernseher mittels Web/RaspberryPi steuer (Phiilips Harmony Hub) fals jemand daran interresse hat.

    Um einen Befehl bei einem eingehenden Anruf auszuführen muss ein script namens action.sh erstellt werden.


    Nachdem das script erstellt wurde muss es ausführbar gemacht werden dies geschieht mittels

    Code
    chmod +x action.sh


    Danach kann das script mittels

    Code
    nc 192.168.1.1 1012 | /pfad/zum/script/action.sh

    gestartet werden.
    Uns schon wird ein Befehl bei einem ankommenden Anruf ausgeführt!

  • Sieht schonmal sehr vielversprechend aus, werde mich heut abend nochmal dran setzen... Die Clou wäre jetzt, wenn es jemand von den Skript-Profis schaffen würde einer Art Filter einzubauen, der abhängig von der eingehenden Rufnummer bestimmt Ereignisse startet...

    z.B.
    Nummer1 --> Pushover Nachricht
    Nummer2 --> Logfile erzeugen
    Nummer3 --> Kaffeemaschine einschalten ;)

    Jemand eine Idee, wie dies implementiert werden kann?

    Grüße M.

  • Würd mich jetzt nicht als Skript-Profi bezeichnen…… Aber…
    Du kannst für jede Nummer ein eigenes script erstellen.
    Sähe dann so aus:


    du kannst das Script auch ineinander verdoppeln. Kannst das ineinander ja mal versuchen. Aber der Übersichtshalber würde ich das vielleicht eher in einzelne Script packen.

    Einmal editiert, zuletzt von Gazura36 (27. August 2015 um 18:56)

  • mhmm, denk mal das bekommt man mit mehreren Schleifen auch in ein Skript. Dieses wäre dann deutlich leichter zu händeln... Also ein kleiner Aufruf in die Runde, wer hilft einem alten Mann über die Stras.... äääähm beim Skripten :D

    Grüße M.


  • Ich habe jetzt nochmal Google befragt und bin dort auf etwas gestoßen, was ich als besser empfinde. Linphone ist mir für meine Zwecke etwas überdimensioniert
    Man kann mittels "telnet fritz.box 1012" im terminal sehen wer welche Nummer anruft. (Nur seit dem der Befehl gestartet wurde OHNE Historie)
    Das ganze sieht als output so aus:
    23.08.15 14:40:16;RING;0;0176Handynummer;493043Festnetznummer;SIP0;

    http://www.wehavemorefun.de/fritzbox/Start…gang_per_telnet

    Ich würde davon die Finger lassen, zumal telnet mit jeder neuen Firmware-Version von AVM wieder Probleme machen kann.
    Dann lieber mit einem sip-client über eine klar definierte Schnittstelle mit Authentifizierung.

  • [font="sans-serif"][font="monospace, Courier"]Vielen Dank für deinen Hinweis,

    meine gute alte FritBox 7050 hat eh eine modifizierte Firmware. Aktuell ermittle ich über den calllog-monitor wer anruft und führe dann direkt die Skripte aus. Dahinter steht noch eine FritzBox 7270v3 als WLAN-AP, da diese eine deutlich bessere WLAN Reichweite besitzt. Wenn ich das o.g. Skript zum Laufen bringe, könnte ich meine alte FB7050 mal in den wohlverdienten Ruhestand schicken. Derzeit nutze ich sie um z.B. via WakeOnCall meinen HomeServer per etherwake zu booten.

    Also nochmal einen Aufruf in die Runde, wer hat Lust und Zeit dieses Skript so zu modifizieren, dass man je nach Anrufer eigende Befehle absetzen kann?

    Grüße M.
    [/font][/font]


  • [font="sans-serif"][font="monospace, Courier"]…… Also nochmal einen Aufruf in die Runde, wer hat Lust und Zeit dieses Skript so zu modifizieren, dass man je nach Anrufer eigende Befehle absetzen kann? ……[/font][/font]

    Wenn ich dich richtige Verstanden habe:
    So sähe das aus pro Nummer eine andere Aktion auszuführen.
    Nach wie vor über telnet ich persönlich sehe da für mich nicht so ein risiko, denn um angreifen zu können muss das Wlan Paswort ersteinmal bekannt sein. Ferner verändere ich mittels des Telen befehl nicht sondern lese lediglich.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!