Hörer abheben -> Aktion ODER check per script ob Hörer abgehoben ?

level20peon

Mitglied
Mitglied seit
11 Jul 2007
Beiträge
270
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

ist irgendjemandem bekannt ob es möglich ist, per Boardmittel oder Freetz oder Freetz-Package herauszufinden, ob gerade Fon-X abgehoben ist ?

Oder ist es alternativ möglich eine Aktion auszuführen, sobald Fon-X abgehoben wird ?
 
Wenn du aktionen ausfürhen willst, wenn jemand anruft oder der Hörer abgenommen ist musst du dich mit dem Callmonitor vertraut machen.

Zum Prüfen, ob gerade jemand telefoniert, gab es mal nen Thread, ich mach mich mal auf die Suche.


edit: Habs: hier
 
Danke für deine Antwort.

den Callmonitor hatte ich mir im Zuge meiner Suche angeschaut (auf Freetz.org), das hörte sich mit

bei eingehenden Anrufen

aber nicht nach dem an, was ich suchte. Ist dir denn explizit eine Möglichkeit bekannt damit auch bei "Hörer abnehmen" zu arbeiten ?

Kann es zur Zeit leider nicht testen, da die Firmware für meine 7170 zu groß ist (trotz lediglich drei Paketen), muss bis Ende des Monats warten, dann bekomme ich eine neue Box mit mehr Speicher.

Ansonsten vielen Dank für den Hinweis zu dem Script :D
 
Wie man in den events und listenern sieht kann ein sowie ausgehen reagieren. z.b. auf connect. mit *:connect
 
es funktioniert definitiv. Ich hatte früher callmonitor mit yac verwendet und konnte mir die Nachrichten a-la "XY hat den Höhrer abgenommen und führt gerade ein Gespräch mit YZ" oder "Das Gespräch von XY mit YZ wurde beendet" generieren.

Also, wie matze1985 bereits sagte, läuft es nicht statisch, sondern änderungsspezifisch. Ähnlich wie ein Flip-Flop mit der Reaktion auf steigende oder fallende Flanke.

Aber verrate uns auch, was du da vor hast. Vielleicht haben die anderen was davon. Und du bekommst evtl. andere Lösungsvorschläge. Also, nicht nur nehmen, sondern auch geben.

Dein Problem mit 7170 verstehe ich gar nicht. Schon von external gehört? Formatiere doch einen Stick mit ext2 oder ext3 und fertig ist es. Außerdem würde ich empfehlen, einige AVM-Features wegzuwerfen. Brauchst du z.B. mini? oder VPN von AVM? Es gibt da viele Wege.... Welche drei Pakete hast du denn?

MfG
 
ok, danke für den Hinweis hermann72pb.

Ich habe vor eine Schaltung mit meiner Türklingel zu realisieren, indem ich bei Betätigen der Klingel ein Relais / eine Schaltung ansteuere.
Dies soll dann das Abheben des Hörers simulieren, indem ein festgelegter Spannungsabfall erzeugt wird (ca 60 Volt im Leerlauf, bei Betätigung dann Abfall auf ca 12 Volt).

Genauere Spezifikationen kann ich zurzeit nicht nennen, die Schaltung ist noch in Planung.

Ich weiß, dass es hier anders gelöst wurde, der Umweg ist mir jedoch persönlich zu groß, wenn ich mit meiner oben beschriebenen Variante den "direkten" Weg gehen kann.

Auf der Seite der FritzBox stellt dann der Callmonitor die gewünschte Funktion bereit, das "Abheben" als Trigger zu erkennen und einen Internruf auszulösen. (Was ich ja nun dank euch in Erfahrung bringen konnte)

Ich beabsichtige nicht nur zu nehmen, jedoch steckt das Projekt noch in den Kinderschuhen, bei Fertigstellung habe ich vor dem einen Foreneintrag zu würdigen.

Die Möglichkeit von external ist mir bekannt, aber ich warte lieber noch zwei Wochen auf meine neue Box, anstatt mein Produktivsystem anzurühren. Auch habe ich Hilfe usw schon rausgeworfen, aber die Firmwares werden ja mit steigender Revision auch nicht unbedingt kleiner ;)
Zur Info: Ich nutze zur Zeit OpenVPN, OpenNTPD und Syslogd.

Danke für die Anregungen :D
 
Das wird nicht funktionieren. Callmonitor überwacht die wirklichen Anrufe, oder wenn man auf ankommende Anrufe mit dem Abheben des Hörers reagiert. Das was du beschreibst, gehört jedoch nicht zu Aktionen von Callmonitor.

Die von dir zitierte Lösung mit Parallelport-Adapter würde ich stattdessen dafür empfehlen. Ob man es scripttechnisch so löst, wie dort beschrieben, darüber kann man streiten. Aber hardwaremäßig und vom Kostenaufwand ist sie auf jeden Fall gut.

MfG
 
Hi,

heißt das jetzt das der CallMonitor nicht das abheben eines Hörers erkennen kann oder das die FRITZ!Box es nicht merken kann?

Gruß.
 
Der Callmonitor definitiv nicht, ich vermute, die Box auch nicht.
 
Wenn man FON1-3 den Analoganschlüssen fest zuordnet, ist keine Unterscheidung möglich. Macht auch imho keinen Sinn. Wenn man jedoch einem FON eine Inetrufnummer zuweist, kann man diese erkennen:
Code:
dtrace -c5 -s
[I]oder[/I]
dtrace -* -s
(Bei "Calling party number:").

Vielleicht ein Ansatzpunkt für ein Skript?

Habe nur leider keinen Analoganschluss - vielleicht kann man es auch direkt unterscheiden, ohne eine INet-Rufnummer zuzuordnen.
 
Hi,
Habe nur leider keinen Analoganschluss - vielleicht kann man es auch direkt unterscheiden, ohne eine INet-Rufnummer zuzuordnen.
meinst du deine FRITZ!Box hat keinen Anlaoganschluß oder du hast nur DSL nud VoIP?

Gruß.
 
Das kannst du doch aus Marcos Signatur auslesen. Arcor bietet bei seinen Anschlüßen ISDN an. Deswegen hat er auch keinen AnalogIn-Port in Benutzung.

Boxen von AVM ohne Analoganschluss kenne ich kaum, außer diesen professionellen Router. Aber darum geht es hier nicht.

MfG
 
sorry für den fullquote...

Wenn man FON1-3 den Analoganschlüssen fest zuordnet, ist keine Unterscheidung möglich. Macht auch imho keinen Sinn. Wenn man jedoch einem FON eine Inetrufnummer zuweist, kann man diese erkennen:
Code:
dtrace -c5 -s
[I]oder[/I]
dtrace -* -s
(Bei "Calling party number:").

Vielleicht ein Ansatzpunkt für ein Skript?

Habe nur leider keinen Analoganschluss - vielleicht kann man es auch direkt unterscheiden, ohne eine INet-Rufnummer zuzuordnen.


Großartige Idee, denn hardwaretechnisch ist das Erkennen wohl wirklich unmöglich bei der FritzBox.
Ich habe sogleich deinen Vorschlag einmal getestet und es sieht vielversprechend aus.

Eine Unterscheidung ohne Zuordnung einer Internet-Rufnummer ist zumindest via AVM-Menü nicht möglich, wo man nämlich nur eine Analog-Rufnummer eingeben kann.
Wenn ich jedoch den einzelnen Analog-Ports separate Internet-Rufnummern zuteile, so wird per dtrace eben diese Nummer auch ausgegeben:

Code:
Controller 5 (SEND)  D3    00:01:58:01
Protocol discriminator Q.931: 08
Call reference (from originator): 17
SETUP: 05
  bearer capability: 04 03 E0 90 E3
    Information transfer capability: speech
    Transfer mode: Circuit mode
    Information transfer rate: 64 kbit/s
  channel identification: 18 03 A1 83 88
    Interface type: other interface
    Preferred/exclusive: preferred
    D-channel indicator: not the D-channel
    Information channel selection: indicated in the following octets
  calling party number: 6C 0B 30 80 30 23 35 31 35 36 31 39 39
    Type of number: network specific number
    Numbering plan: unknown
    Calling party number: 0#[COLOR="Red"]1234567[/COLOR]
  calling party number: 6C 0B 01 80 30 23 35 31 35 36 31 39 39
    Type of number: unknown
    Numbering plan: ISDN/Telephony
    Calling party number: 0#[COLOR="Red"]1234567[/COLOR]
  calling party subaddress: 6D 0B 11 80 34 39 35 31 35 36 31 39 39

                    Controller 5 (RECEIVE)  D3    00:01:58:01
                    Protocol discriminator Q.931: 08
                    Call reference (to originator): 17
                    SETUP ACKNOWLEDGE: 0D
                      channel identification: 18 03 A9 83 88
                        Interface type: other interface
                        Preferred/exclusive: exclusive
                        D-channel indicator: not the D-channel
                        Information channel selection: indicated in the following octets
                      progress indicator: 1E 02 82 88
                        Location: public network/local user
                        Progress description: In-band information or appropriate pattern now available

So kann man einfach einen "imaginären" VoIP-Account in der FB einrichten und ihn dem entsprechenden Port zuordnen.

Wenn man per Konsole einen internruf auslösen kann wär das schon die halbe Miete ("echo "ATD**9" | nc 127.0.0.1 1011" funktioniert auf Anhieb nicht). Danke soweit, ich werd mir mal überlegen, wie man das implementieren könnte.
 
Zuletzt bearbeitet:
Zwischenzusammenfassung

Hi level20peon,

köntest du den akteullen Stand von Hardware, Software, Einstelungen der FRITZ!Box und eventeuller Programmierung in der FRITZ!Box bei Gelegenheit mal bitte zusammenfassen? Danke! :)

Wenn ich jetz alles richtig verstanden habe sieht es wie folgt aus:

Hardware:
Klingel wird mit einem Relay gekoppelt welches bei einem alten ausgeschlachteten analog Telefon das Höhrer abheben simmuliert.

Hardware FRITZ!Box:
Die FRITZ!Box selber erkennt leider hardwaremaässig nicht dieses Vorgang vo alleine. Oder es ist nicht abfragbar.

Software FRITZ!Box:
Daher legst du eine ausgedachte VoIP Festnetznummer in der FRITZ!Box an und legst sie auf den analogen FON-X-Port an dem das umgebaute Telefon mit Relay zur Klingelanlage hängt.

Wenn jetzt geklingelt wird, wird der Höhrer abgehoben und automatisch die anglegete ausgedachte VoIP Festnetznummer gewählt.

Programmierung FRITZ!Box:
Jetzt möchtest du noch hinbekommen das die FRITZ!Box dieses anrufen der ausgedachten VoIP-Nummer erkennt und einen Interen Anruf auf die oder ein anderes internes Telefon im Haus auslößt und dich dann mit der Freisprechanlage an der Tür verbindet.

Soweit alles ok? Bitte korregieren und ergänzen. :) Danke.

Was für ein Freisprechanlage an der Tür hast du den?

Könnte man nicht auch eine billige Freisprechanlga an der Tür einbauen und aus einem alten anlogtelefon mit Freisprechfunktion diese an den Lautsprecher und das Mikrofon an dern Türfreisprechanlage anklemmen?

Gruß WLAN-VoIP-Fan.
 
Nicht ganz,

Hardware:
Klingel wird mit einem Relay gekoppelt welches bei einem alten ausgeschlachteten analog Telefon das Höhrer abheben simmuliert.

Ich habe vor das komplette Telefon zu simulieren, durch eine Schaltung, die den entsprechenden Spannungsabfall erzeugt.
Dazu kann ich aber zu Zeits noch nichts genaueres sagen.


Hardware FRITZ!Box:
Die FRITZ!Box selber erkennt leider hardwaremaässig nicht dieses Vorgang vo alleine. Oder es ist nicht abfragbar.

Es passiert einfach hardwaremäßig in der FritzBox scheinbar nichts, da bei der Variante "Analoges Telefon an Port X will analoge Leitung benutzen" einfach nur durchgeschleift wird.


Software FRITZ!Box:
Daher legst du eine ausgedachte VoIP Festnetznummer in der FRITZ!Box an und legst sie auf den analogen FON-X-Port an dem das umgebaute Telefon mit Relay zur Klingelanlage hängt.

Wenn jetzt geklingelt wird, wird der Höhrer abgehoben und automatisch die anglegete ausgedachte VoIP Festnetznummer gewählt.

Wie gesagt, kein umgebautes Telefon... es wird auch nicht automatisch eine Nummer gewählt.
Was bis dato passiert ist, dass durch die Belegung mit einer VoIP-Nummer ein event in der FritzBox-Software ausgelöst wird (Bereits schon, bevor eine Nummer gewählt wird, alleine durch das Abheben des Hörers / Simulieren dieses Abhebens !)

Was nun im Folgenden passiert gilt es noch zu bestimmen. Ich würde gerne einfach einen Internruf auslösen. Noch besser wäre es, wenn dazu eine Caller-ID übermittelt werden könnte, damit auf dem Display "Türklingel" steht, aber das sind Feinheiten.


Programmierung FRITZ!Box:
Jetzt möchtest du noch hinbekommen das die FRITZ!Box dieses anrufen der ausgedachten VoIP-Nummer erkennt und einen Interen Anruf auf die oder ein anderes internes Telefon im Haus auslößt und dich dann mit der Freisprechanlage an der Tür verbindet.

Siehe letzter Absatz.


Was für ein Freisprechanlage an der Tür hast du den?

Könnte man nicht auch eine billige Freisprechanlga an der Tür einbauen und aus einem alten anlogtelefon mit Freisprechfunktion diese an den Lautsprecher und das Mikrofon an dern Türfreisprechanlage anklemmen?

Das würde die Sache sehr viel komplexer machen. Ich habe keine Freisprechanlage und habe somit auch nicht vor mich damit auseinanderzusetzen. Aufgrund der Natur meines Vorhabens ist es hier auch nicht möglich das "mal eben so" nachzurüsten, da müsste man einen anderen Weg gehen.


Hier wird sowas zB angegangen.
 
Hallo level20peon,

vielen Dank für deine Infos! :) Ich hoffe du hälst uns weiter auf dem laufenden über dein Projekt. Über ein HowTo bei Erfolg und warum die was weshalb wieso so und nicht anders gemacht habe würde ich mich sehr freuen wenn das Projekt erfolgreich abgeschlossen ist.

Gruß.
 
Hi,

die Türsprecheinrichtung ließe sich sogar komplett über Software steuern.
Natürlich ist so ein Telefon an der Tür nicht gerade ansprechend und der eine oder andere würde es nicht für eine Türklingel halten ;). Hier muss das Telefon entsprechend umgebaut werden.

Der Rest ließe sich über asterisk/dtmfbox realisieren. Bei der Ansteuerung über ATD weiss ich leider nicht, ob das überhaupt geht, da das Telefon in dem Moment bereits abgehoben wurde. Der direkte Rufaufbau über ein Software-PBX sollte aber funktionieren.

Da jedem Analog-Telefon eine Pseudo-Internetrufnummer zugewiesen wurde, kann man die Telefone nun einzeln ansteuern (z.B. indem man [email protected] anruft).

- Analog-Telefon (Tür) hebt ab
- Software-PBX erkennt die Nummer der Tür und nimmt den Anruf entgegen (CONFIRM).
- Software-PBX ruft SIP-Account an (z.B. [email protected]) und verbindet beide Anrufe.
- Fertig! ;)
 
So, inzwischen hatte ich ein wenig Zeit mich um mich um den Aufbau einer Schaltung zu kümmern. Das Layout befindet sich im Anhang (Anm: Die beiden Adern aus dem von mir verwendeten TAE-Stecker waren braun und weiß).

Stückliste:
1x Widerstand 1K 1W R1P
1x Elko 22UF 63V
1x Zener Diode BZV 85C 27
1x Zener Diode BZX 79C 9V1
1x Gleichrichter DB101G 50V 1A
1x Gleichrichter DF06M 50V 1A (Im Prinzip der selbe wie oben)
1x Relais RY-24W-K 24V 24W (Hochsensible Spule)

Bitte beachtet, dass ihr entsprechend andere Bauteile braucht, wenn eure Spannung abweicht (Ich habe meine Spannungen in der Skizze vermerkt).




Nun zum script:
Kurz gesagt, ich komme nicht weiter. Folgender Code wäre erstmal wunderbar, wenn da nicht die Einschränkungen der BusyBox grep binary wären:

dtrace -c5 -s | grep -o "Calling party number: 0#1234567" | while read line
do
INTERNRUF AUSLÖSEN
done

Problem 1: grep
das oben genannte script würde die gewünschte Aktion ausführen, wenn man hier "grep --line-buffered" benutzen könnte. Dies würde eine direkte Ausgabe bewirken. Ohne diesen Parameter gibt es eine Ausgabe erst, wenn das script beendet wird. Da eine unmittelbare Benachrichtigung bei einem Klingeln essentiell ist, ist dies erstmal ein ziemlicher showstopper. Die GNU grep binary hat glaub ich über 600KB, die passt bei mir leider nicht mit ins image. Ist es irgendwie möglich den einzelnen Parameter "--line-buffered" anderweitig nachzurüsten ?
Eine Alternativ wäre es das dtrace nur eine spezielle Nummer zu überwachen, das ist meines Wissens nach aber hier auch nicht machbar (oder ?).

Problem 2: Internruf auslösen
Im Forum gefundener Ansatz "echo "ATD**9" | nc 127.0.0.1 1011" funktioniert nicht. Ich habe leider keine Möglichkeit gefunden dies anders zu realisieren.


Also, so weit so gut, jeden Vorschlag würde ich sehr zu schätzen wissen.
 

Anhänge

  • PCB.jpg
    PCB.jpg
    93.5 KB · Aufrufe: 54
Zuletzt bearbeitet:
Nun, ein Jahr später, gibt es scheinbar immer noch keine "--line-buffered" Option im BusyBox grep. Selbst das Aktivieren der "enable long options" beim Kompilieren der BusyBox scheint dies nicht zu ermöglichen.
Gibt es eurerseits vielleicht inzwischen neue Ideen :D ? Wie könnte man diese Funktion integrieren, bzw wie bekommt man ein GNU grep auf die Box ?
 
Neue Optionen kommen nicht davon in die Busybox, daß man hier schreibt, daß man sie vermißt. Do kannst einen entsprechenden Patch an Busybox schicken und schauen, ob er aufgenommen wird.

Um GNU grep aufzunehmen, muß man es nur übersetzen. Aber oben hast Du schon geschrieben, daß es Dir zu groß ist.
 
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.