Anruf von fb bei fhem Ereignis

Coolzero82

Mitglied
Mitglied seit
24 Sep 2013
Beiträge
345
Punkte für Reaktionen
2
Punkte
18
Hallo, ich hoffe hier kann mir einer helfen.
Ich habe auf meiner 7390 fhem laufen und habe dort 3 Rauchmelder integriert.
Ich würde das gerne so ein richten, das wenn einer der Rauchmelder Alarm gibt ich einen Anruf auf meinem Handy bekomme!
Ist das überhaupt möglich, und wenn ja wie kann ich das erreichen?

Danke
 
Mit folgendem Telnetbefehl lässt sich ein Anruf nach außen initieren:
Code:
echo "ATD0123456" | nc 127.0.0.1 1011
Ist schon etwas älter, sollte aber noch gehen.

Damit wird die Wahlhilfe verwendet, um zunächst beim externen Ziel klingeln zu lassen, dann kommt "Ihr Anruf wird gehalten..." und es klingelt an der für die Wahlhilfe eingestellten Nebenstelle.

Da Du nur das externe Klingeln brauchs, stellst Du die Wahlhilfe auf einen ungenutzten Anschluss ein.
 
Hallo Andre, was bedeutet dein Befehl im einzelnen? Was ist der externe Teil?

Und wie kann ich das in fhem nutzen?
 
Also, das ist das Kommando, mit dem man auf der Konsole oder in einem Shelskript ein Kommando an den Telefondienst der Fritzbox (also 127.0.0.1 = lokales Gerät, Port 1011) sendet (netcat "nc") "|" (AltGr+<) ist unter Linux eine sogenannte Pipe. Normalerweise würde netcat Tastatureingaben direkt an die angegebene Adresse senden. Wir wollen aber einen Befehl (AT), der noch aus den prähistorischen zeiten der Modemtechnik stammt, und wählt (D wie Dial) an eine Nummer 012345 an den Telefondämon senden. Echo würde normalerweise auf der Standardausgabe (also der aktiven Konsole) einfach das ausgeben, was in den Anführungszeichen steht. Netcat würde etwas, das auf der aktiven Konsole eingegeben wird, an den Telefondienst der <fritzbox geben. Die Pipe verbindet das, die Ausgaben, werden nicht in die Konsole geschrieben, sondern in die Pipe, und von Netcat nicht aus der Konsole, sondern aus der Pipe gelesen.

Du musst letztlich in FHEM ein Skript starten, das diesen Befehl enthält.
 
Hallo, und danke für die ausführliche Erklärung, ich glaub ich habs verstanden:)
Mal sehn ob ich das in fhem so eingebaut bekomme
 
Vor dem Einbauen im Fhem teste am Besten via telnet, ob bei Dir der Port des telefond 1011 offen ist. Je nach Firmware kann es sein, dass der noch zu ist (kann über Telefoncode geöffnet werden). Da ich unterwegs bin, kann ich den nötigen Code gerade nicht raussuchen.
Ich empfehle eh, freetz mit Callmonitor Paket auf die FBF zu installieren, weil einem das ermöglicht, viele Funktionen per Telefon zu schalten (ich verwende dazu Rufnummern mit 000 zum Einleiten, weil das im Telefonnetz nicht zugestellt wird). Callmonitor ruft dann je nach versuchter Rufnummer ein Skript auf. Du kannst also z.B. mit out:request auf 0001 ein skript starten, das das Licht einschaltet.
Callmonitor aktiviert automatisch die Schnittstelle bzw. wenn es nicht automatisch geht, zeigt er an, was man zu dauerhaften Aktivierung wählen muss...
 
Hallo, danke für den tip, hab freetz drauf, aber callmonitor nicht, kann ich das nachinstallieren?
 
Moin

Welche (TCP) Dienste auf deiner Box laufen siehst du mit...
Code:
deepbase # netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:51111           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:51112           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8081          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2002            0.0.0.0:*               LISTEN
[B][COLOR="#FF0000"]tcp        0      0 127.0.0.1:1011          0.0.0.0:*               LISTEN[/COLOR][/B]
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN
tcp        0      0 :::49443                :::*                    LISTEN
tcp        0      0 :::5060                 :::*                    LISTEN
tcp        0      0 :::4200                 :::*                    LISTEN
tcp        0      0 :::49000                :::*                    LISTEN
tcp        0      0 :::139                  :::*                    LISTEN
tcp        0      0 :::49200                :::*                    LISTEN
tcp        0      0 :::80                   :::*                    LISTEN
tcp        0      0 :::1012                 :::*                    LISTEN
tcp        0      0 :::8181                 :::*                    LISTEN
tcp        0      0 :::43157                :::*                    LISTEN
tcp        0      0 :::21                   :::*                    LISTEN
tcp        0      0 :::53                   :::*                    LISTEN
tcp        0      0 :::22                   :::*                    LISTEN
tcp        0      0 :::8182                 :::*                    LISTEN
tcp        0      0 :::23                   :::*                    LISTEN
tcp        0      0 :::43416                :::*                    LISTEN
tcp        0      0 :::8089                 :::*                    LISTEN
tcp        0      0 :::443                  :::*                    LISTEN
tcp        0      0 :::445                  :::*                    LISTEN
Alles was auf 127.0.0.1 (localhost) läuft, kann nur direkt von/auf der Box erreicht werden.
Wenn dein FHEM-Server auf der Box laufen tut, musst du da auch nichts ändern.
Erst wenn du aus dem (lokalen) Netz den Zugriff brauchst, empfiehlt es sich den telefon Dienst zu beenden,
um ihn, meinetwegen auf 192.168.178.1 (fritz.box) aus dem lokalen Netz erreichbar zu machen.
Code:
deepbase # killall telefon
telefon: telefon: SIGTERM received!SIGTERM received!

deepbase # killall: dect_manager: no process killed
telefon: SIGCHLD PID 2865 received!

deepbase # telefon a192.168.178.1
Jan 31 08:51:07 telefon[2868]: use clock_gettime(CLOCK_MONOTONIC)!
Jan 31 08:51:07 telefon[2868]: set initial telefon time from linux time to 8:51:07 31.01 2014!
Jan 31 08:51:07 telefon[2868]: No S0NT!
Jan 31 08:51:07 telefon[2868]: NoOldMSNNames
telefon: SIGCHLD PID 2869 received!
deepbase # telefon: SIGCHLD PID 2874 received!

deepbase # netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:51111           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:51112           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8081          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2002            0.0.0.0:*               LISTEN
[B][COLOR="#FF0000"]tcp        0      0 192.168.178.1:1011      0.0.0.0:*               LISTEN[/COLOR][/B]
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN
tcp        0      0 :::49443                :::*                    LISTEN
tcp        0      0 :::5060                 :::*                    LISTEN
tcp        0      0 :::4200                 :::*                    LISTEN
tcp        0      0 :::49000                :::*                    LISTEN
tcp        0      0 :::139                  :::*                    LISTEN
tcp        0      0 :::49200                :::*                    LISTEN
tcp        0      0 :::80                   :::*                    LISTEN
tcp        0      0 :::1012                 :::*                    LISTEN
tcp        0      0 :::8181                 :::*                    LISTEN
tcp        0      0 :::43157                :::*                    LISTEN
tcp        0      0 :::21                   :::*                    LISTEN
tcp        0      0 :::53                   :::*                    LISTEN
tcp        0      0 :::22                   :::*                    LISTEN
tcp        0      0 :::8182                 :::*                    LISTEN
tcp        0      0 :::23                   :::*                    LISTEN
tcp        0      0 :::43416                :::*                    LISTEN
tcp        0      0 :::8089                 :::*                    LISTEN
tcp        0      0 :::443                  :::*                    LISTEN
tcp        0      0 :::445                  :::*                    LISTEN

Dieser Dienst muss immer laufen (wegen telefonie), was Andre meint:
Da ich unterwegs bin, kann ich den nötigen Code gerade nicht raussuchen.
...ist die Callmonitor Schnittstelle.
Die läuft auf Port 1012 und kann per Telefon ein/ausgeschaltet werden.
Code:
Ab x.03.99 Unterstützung für JFritz ausschalten (Anrufmonitor an TCP-Port 1012) #96*4* <--Telefoncode
Ab x.03.99 Unterstützung für JFritz einschalten (Anrufmonitor an TCP-Port 1012) #96*5* <--Telefoncode
 
Zuletzt bearbeitet:
[Edit Novize: Überflüssiges Fullquote des Beitrags #2 gelöscht - siehe Foren-Regeln]

Hallo Andrea,
mit deinem Befehl hat es in Putty direkt geklappt, Handy hat mit ca. 3-5 Sek. Zeitverzögerung geklingelt, dafür erstmal Danke.
Aber hab dann noch drei :) sachen, zum einen hat das Handy "nur" ca 5 mal geklingelt, kann man das erhöhen oder kann das an meiner Mailbox liegen!?
Im Anschluss an den Handy Anruf hat mein Haustelefon angefangen zu klingeln, das sollte so nicht sein. Wieso ist das so? Und wie kann ich das abstellen?
Dritte und letzte Frage, meine Mailbox ist dann dran gegangen, und da kam dann immer "Verbindung wird gehalten", kann man dort auch einen eigenen Text oder gar eine mp3 einspielen?

Danke für eure Hilfe bis hier hin
 
[Edit Novize: Überflüssiges Fullquote des eigenen Beitrags direkt darüber gelöscht - siehe Foren-Regeln]

Keiner mehr einen Tip?
 
Abend

1. Zu dem Haustelefon fällt mir nix ein.
2. Anrufe über das "Telefonmodem" (echo "ATD0123456" | nc localhost 1011) gehen über Fon1.
3. Der Anruf wurde also von Fon1 initiiert, hebt einer auf der Gegenseite ab,
aber Fon1 liegt noch auf der Gabel, wird der Anruf was? Richtig! Gehalten!
4. Das hört dann der AB, der nach 5 mal Klingeln rangeht.
5. Yep 8.3 Sekunden in Schleife abgespielt (bei meiner 7360SL).
Telefonie --> Eigene Rufnummern --> Anschlusseinstellungen --> Wartemusik (ändern)

...so oder ähnlich.
 
Zuletzt bearbeitet:
Has in Fhem umgesetzt bekommen, und funktioniert sogar mit eigener Ansage bei Alarm. Danke für die Hilfe
 
Hallo,
muss hier nochmal nachfragen, ich bin mit Fhem von der FB umgezogen auf einen Cubietruck, kann ich auch von diesem aus über die FB einen Anruf wie oben auf mein Handy tätigen? Wie muss ich dann vorgehen?
echo "ATD0123456" | nc 127.0.0.1 1011
kann ja dann nicht funktionieren!? kann ich anstatt 127.0.0.1 1011 die IP der FritzBox eingeben?
Hab auch eine neue FB, ist jetzt eine 7490 mit OS 6.30 und freetz.

Code:
netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 0.0.0.0:2002            0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:1011          0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      
tcp        0      0 :::49443                :::*                    LISTEN      
tcp        0      0 :::5060                 :::*                    LISTEN      
tcp        0      0 :::49000                :::*                    LISTEN      
tcp        0      0 :::55822                :::*                    LISTEN      
tcp        0      0 :::80                   :::*                    LISTEN      
tcp        0      0 :::81                   :::*                    LISTEN      
tcp        0      0 :::1012                 :::*                    LISTEN      
tcp        0      0 :::8181                 :::*                    LISTEN      
tcp        0      0 :::53                   :::*                    LISTEN      
tcp        0      0 :::22                   :::*                    LISTEN      
tcp        0      0 :::8182                 :::*                    LISTEN      
tcp        0      0 :::23                   :::*                    LISTEN      
tcp        0      0 :::8183                 :::*                    LISTEN      
tcp        0      0 :::765                  :::*                    LISTEN

Danke
 
Keiner eine Idee?
 
Moins

Mit dem Abschalten von /var/flash/calllog funktioniert (bei mir) auch diese Wählprozedur nicht mehr.

Alternative wäre das Wählen über die Fritz!Box API.
Bin mir aber nicht zu 100% sicher ob das damit noch geht.
Lies dazu bitte auch mal das hier.
 
Zuletzt bearbeitet:
Wenn ich wüsste wie ich das jetzt noch in fhem einbinde dann würde ich es mal versuchen ....
 
Das FRITZ!Box-API auf PHP-Basis dürfte eher nicht mehr funktionieren, denn das dabei verwendete CGI-Binary "webcm" fehlt ja ab der 06.30.

Auf das Wählen per HTTP-Emulation (wie von Pikachu im verlinkten Thread vorgeschlagen) würde ich mich im Moment auf nicht mehr stützen, da ja bei der 06.36 (bzw. der folgenden Releaseversion) da kaum ein Stein auf dem anderen bleibt und das Problem der "deep links" auch die Telefonie-Funktionen sicherlich treffen wird. Da würde ich aufs Release warten, damit da wieder eine gewisse Stabilität einkehrt und so eine Lösung länger als 4-8 Wochen hält.

Was noch ginge, wäre halt das Wiederbeleben der "webcm"-Schnittstelle, das setzt aber bei der 06.30 das Kopieren des Binaries aus einer Vorgängerversion voraus und bei den neuen "06.35 ff."-Versionen braucht es dann sogar den "webcm" aus einem Entwickler-Image.

Da das alles aber ohnehin heftige Änderungen an der Firmware erfordert, kann man vielleicht besser gleich auf einen eigenen (Soft-)Client für das SIP-Protokoll zurückgreifen und über dessen Anmeldung am FRITZ!Box-Registrar dann entsprechende Anrufe auslösen. Das dürfte eine Lösung sein, die auch entsprechende Zukunft hat (der interne Registrar wird sicherlich bestehen bleiben), sicher ist (Credentials werden für das Auslösen des Anrufs benötigt) und sogar mit den Boxen funktioniert, die nur für IP-Telefonie geeignet sind.

Mir fällt aus dem Stand auch kein passendes (skriptsteuerbares) Client-Programm als CLI-Version ein, aber eine Suche im Netz bringt da sicherlich einiges zutage, notfalls macht das auch ein minimales Asterisk (als reiner SIP-Client, obwohl Asterisk natürlich mit der ganzen Modularität und den angebotenen Interfaces eher die Haubitze ist, wo es ein Florett auch machen würde), sogar auf der FRITZ!Box selbst (aber parallel zur AVM-Telefonie) oder auf einem RasPi ... aber eigentlich reicht schon ein minimaler Client, der nur den INVITE-Request absetzt (dann klingelt es schon mal bei Angerufenen) und ggf. noch eine Media-Datei abspielen kann (dann muß er RTP ebenfalls noch kennen). Da das eigentlich eine CTI-Basisfunktion ist (outbound call with hold), sollte es so etwas tatsächlich schon geben, spannend wird es wohl erst dann, wenn es um die Eignung für "embedded systems" geht. Aber wenn das auf einem Cubietruck laufen soll, stehen ja ein paar mehr Resourcen zur Verfügung als in so einer FRITZ!Box, da kann es dann auch mal ein Java-Programm o.ä. sein.

EDIT: Oben etwas aus dem Auge verloren: Auch ein Asterisk direkt auf dem Cubietruck kann natürlich über SIP eine Nummer in der FRITZ!Box wählen, das braucht keinerlei Modifikation der FRITZ!Box.
 
Zuletzt bearbeitet:
Hallo und danke für die Ausführliche Hilfe, leider hab ich nur die hälfte verstanden :(

Würde die Ursprüngliche Lösung noch funktionieren wenn Fhem lokal auf der FB läuft?

Gibt es einen Telnet Befehl welchen ich vom Cubie Testweise an die FB schicken kann um zu testen ob der Anruf ausgelöst wird?

Danke
 
Würde die Ursprüngliche Lösung noch funktionieren wenn Fhem lokal auf der FB läuft?
Nimm's mir nicht übel ... aber warum fragst Du anstelle selbst zu testen? Scheitert es daran, daß Deine FRITZ!Box mit Freetz (lt. Signatur) keinen Telnet-Zugang mehr bietet und Du das Kommando nicht selbst auf der FRITZ!Box eingeben kannst? Ich bin etwas verwirrt ...

Gibt es einen Telnet Befehl welchen ich vom Cubie Testweise an die FB schicken kann um zu testen ob der Anruf ausgelöst wird?
Das kommt u.a. darauf an, was Du so an Software auf dem Cubietruck installiert hast ... ein beliebter Weg der Telnet-Automatisierung ist das Programm "expect".

Aber das macht wohl erst dann Sinn, wenn Du die erste Frage selbst beantwortet hast ... nach #15 könnte es ja auch ohne weitere sein, daß schon das AT-Kommando an den "telefon"-Daemon nicht mehr funktioniert.

Dieser Daemon "lauscht" auch nur auf localhost:1011 und das läßt sich von außen natürlich nicht ohne weiteres aufrufen, weil er eben nur auf localhost hört, wie ein "netstat -anp | grep 1011" sofort zeigt ... selbst wer jetzt auf die Idee kommt, anstelle des "normalen Aufrufs" dieses Daemons (der wird mit "telefon a127.0.0.1" gestartet) es einfach mal mit einer anderen IP-Adresse hinter dem "a" zu versuchen, beißt auf Granit ... der Daemon besteht auf 127.0.0.1 bei diesem Port.

Bleibt also (nur als Beispiel und wenn es denn über localhost tatsächlich gehen sollte) eine nc-basierte Chain (zwei nc-Instanzen mit einer Pipe) als Alternative, wenn man es nicht über Telnet machen will, was ich schon aufgrund der schlechten Möglichkeiten für Rückmeldungen mit Status eher nicht machen würde. Auch stunnel würde funktionieren und noch so viele andere Möglichkeiten, daß man sie hier unmöglich alle aufzählen kann. Das kommt eben ganz darauf an, was in dem Freetz-Image so alles vorhanden ist und das können wir unmöglich wissen.

EDIT: Um noch mal auf meinen vorherigen Beitrag zurückzukommen ... ich würde so etwas immer noch eher mit einem SIP-CLI-Client machen, da gäbe es z.B. pjsua oder sipcmd als mögliche Projekte.

Damit kann man auch solche "Alarmrufe" auslösen und das hat dann am Ende den Vorteil, daß es mit jedem beliebigen SIP-Registrar funktioniert und nicht FRITZ!Box-spezifisch ist. Da dabei diese Clients natürlich auf dem auslösenden System und nicht auf der FRITZ!Box laufen müssen, schränkt das die Möglichkeiten der verwendeten Programmiersprachen auch nicht so stark ein, wie es so ein "embedded device" machen würde, wobei die zwei von mir erwähnten Projekte wohl sogar in C sind. Da so ein SIP-Client dann eben außerhalb der FRITZ!Box läuft, ist das auch nichts, was man in ein Freetz-Package verwandeln könnte.
 
Zuletzt bearbeitet:
Ergänzung meinerseits, weil ich ohnehin gerade am Testen war: Das Senden eines AT-Kommandos für "DIAL" funktioniert bei der 06.30 für die 7490 noch genauso wie früher ... damit ist also das Wählen einer Nummer tatsächlich möglich, allerdings wird wohl fest nach FON1 "durchgestellt" und die Einstellungen der Wählhilfe (bei mir "ISDN- und Schnurlos-Telefone") werden nicht berücksichtigt. Damit der Wählvorgang ausgelöst wird, mußte ich auch zwingend die Rufnummer im ATD-Kommando mit # beenden (wie bei der "Schnellwahl", um "en bloc mode" zu forcieren).

Ob es über andere AT-Kommandos möglich ist, das Endgerät auszuwählen, weiß ich nicht ... es ist mir bisher nicht gelungen, mich in die interne TCP-Verbindung (der telefon-Daemon verbindet sich bei mir immer selbst mit dem Port 1011, vermutlich "reden" da mind. zwei Threads miteinander auf diesem etwas ungewöhnlichen Weg, aber das ist ja wohl auch schon sehr sehr alter Code) einzuklinken und da mal mitzuschneiden.
 
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.