Ich komme leider noch nicht ganz zu recht mit meinem Vorhaben.
Ich möchte ein notify triggern wenn ein Anruf (eingehend oder ausgehend) über FB_Callmonitor erfolgt.
Aktuell sieht mein notify so aus:
define FritzBoxAnruf notify FritzBox:event:.* {TelefonMonitor ($EVENT)}
Dazu habe ich in 99_myUtils.pm folgende Methode:
sub TelefonMonitor($) {
my ( $event, $arg ) = split( ':', $_[0] );
$arg = ltrim($arg);
my $title = '';
my $number = '';
if($arg eq 'ring' ){
$title = 'Anruf eingehend';
}elsif($arg eq 'call'){
$title = 'Anruf ausgehend';
}
$number = ???;
Log(3,"$title: $number");
}
Hier kann ich als Event call oder ring abfragen. Schon mal gut.
Wie komme ich an dieser Stelle aber an das Reading external_number vom Callmonitor?
Am Ende möchte ich eine Nachricht versenden mit der Info über eingehend/ausgehend und der externen Nummer.
warum doppelt (http://forum.fhem.de/index.php/topic,48481.0.html)?
Warum so kompliziert?
define FritzBoxAnruf notify FritzBox:event:.(call|ring) {Log 3, ReadingsVal("FritzBox", "external_number","")}
Alternativ gehts noch einfacher mit DOIF.
Gruß
Markus
Hallo,
warum ein notify. Der FB_CALLMONITOR hat doch vier Methoden, wo Du eine eigene Routine reinhängen kannst.
Die Methoden werden als Attribute definiert und lauten, siehe auch <Device specific help>:
method_call, method_connect, method_disconnect, method_ring
Grüße Jörg
Zitat von: JoWiemann am 31 Januar 2016, 15:55:13
Hallo,
warum ein notify. Der FB_CALLMONITOR hat doch vier Methoden, wo Du eine eigene Routine reinhängen kannst.
Die Methoden werden als Attribute definiert und lauten, siehe auch <Device specific help>:
method_call, method_connect, method_disconnect, method_ring
Grüße Jörg
Nicht das ich wüsste. Ich glaube das verwechselst du mit dem TelefonMonitor Modul von Elektrolurch.
Mist, stimmt. Asche auf mein Haupt.
Grüße Jörg
Jetzt antwortet ihr auch noch alle auf den Thread auf den ich nur bemerkt habe, dass die Frage doppelt gestellt wurde 8)
Zitat von: Otto123 am 31 Januar 2016, 18:30:08
Jetzt antwortet ihr auch noch alle auf den Thread auf den ich nur bemerkt habe, dass die Frage doppelt gestellt wurde 8)
Ja das stimmt, hab ihn oben als ersten gesehen und draufgegangen da CALLMONITOR im Titel stand. Erst später bemerkt, dass es der zweite war.
Zitat von: Markus Bloch am 31 Januar 2016, 18:34:35
Ja das stimmt, hab ihn oben als ersten gesehen und draufgegangen da CALLMONITOR im Titel stand. Erst später bemerkt, dass es der zweite war.
na ja und das war ja auch noch ich, der den hoch geschoben hat :P
Ja, tut mir leid. Beim ersten Post gab es ein Connection refused. Daher noch einmal.
Mist, der erste Post ging wohl doch durch. Kann den jemand löschen/zusammenfügen?
Vielen Danke für eure Hinweise !
Hat mir schon sehr geholfen. Kann mir jemand vielleicht noch einen Schubs in Sachen external-name geben?
Ich habe den Callmonitor so angelegt:
define FritzBox FB_CALLMONITOR 192.168.178.1
attr FritzBox fritzbox-user Test
attr FritzBox fritzbox-remote-phonebook 1
attr FritzBox fritzbox-remote-phonebook-via tr064
Wen ich nun direkt per get FritzBox showPhonebookEntries die Einträge des Adressbuches abfrage bekomme ich eine Liste.
Super. Aber wenn ich in meiner Methode versuche über $name = ReadingsVal("FritzBox","external_name",99); an den Namen zu kommen steht da immer nur unknown. Was mach ich falsch?
Du hast die Rückwärtssuche nicht aktiviert. Das Telefonbuch hast du zwar eingelesen, aber es wird momentan nicht benutzt. Dir fehlt das Attribut reverse-search. Diese muss mit einer Liste von zu durchsuchenden "Anbietern" gefüllt sein in welcher Reihenfolge nach einem Namen gesucht werden soll.
Beispiel:
reverse-search phonebook,klicktel.de,dasoertliche.de
bedeutet, bei einer Rückwärtssuche einer Nummer zuerst im Telefonbuch nachschauen (was ja schon eingelesen ist), falls kein Eintrag, dann bei klicktel.de nachschlagen, falls nicht, usw.
Gruß
Markus
Hm, leider auch nicht:
define FritzBox FB_CALLMONITOR 192.168.178.1
attr FritzBox fritzbox-user Test
attr FritzBox fritzbox-remote-phonebook-via tr064
attr FritzBox reverse-search phonebook,klicktel.de,dasoertliche.de
Auch hier ergibt ReadingsVal("FritzBox","external_name",99) nur unknown. In den Logs steht auch nicht mehr.
Komisch, da get FritzBox showPhonebookEntries eben die ganze LIste aufführt.
external_name wird erst beim nächsten Anruf-Event richtig gesetzt. Nachträglich wird das nicht korrigiert. Also ab jetzt an beim nächsten Anruf wird dann der Name nachgeschlagen.
Gruß
Markus
Leider nicht. Weder bei ein- noch ausgehenden Anrufen.
Immer noch unknown. Kann ich da irgendwo nachsehen, wo wie was?
Du hast das Attribut fritzbox-remote-phonebook wieder entfernt, damit ist das Telefonbuch nicht mehr eingelesen.
Halleluja !
Perfekt, danke für Deine Geduld.
Funktioniert wie gewünscht. Wobei man ja einige attr setzen muss, wo mir nicht klar war, dass man da mehrere setzen muss.
Ich gebe zu, dass die Anzahl der Attribute nicht umbedingt übersichtlich ist. Sie bringt dem Nutzer aber eine riesige Flexibilität in der Anwendung.
In der Zeit die ich schon bei FHEM bin, habe ich gelernt, dass jeder ganz andere Anforderungen oder Einsatzzwecke für ein Modul in seiner Umgebung hat. Daher eine hohe Flexibilität durch so viele Parameter.
für deinen Zweck reicht (fritzbox-remote-phonebook-via tr064 ist standardmäßig so gesetzt):
define FritzBox FB_CALLMONITOR 192.168.178.1
attr FritzBox fritzbox-user Test
attr FritzBox fritzbox-remote-phonebook 1
attr FritzBox reverse-search phonebook,klicktel.de,dasoertliche.de
Was ich dir noch empfehlen würde ist das setzen des Attributes "local-area-code" mit deiner Ortsvorwahl um Ortsgespräche richtig zu erkennen und korrekt über Internet auflösen zu können.
Andere (z.B. Ich) haben keine Usernamen auf der FritzBox eingerichtet. Wiederum andere haben ältere FritzBox-Modelle, wo man das Telefonbuch nur über einen Telnet-Zugang abfragen kann, andere haben Telefonanlagen da dran, wo die führenden Nullen entfernt werden müssen, usw. usw.
Das ganze ist mit der Zeit und den Einsatzszenarien bei den verschiedensten Usern so gewachsen.
Viele Grüße
Markus
Ist ja durchaus der Grund für FHEM, die Flexibilität.
local-area-code noch gesetzt, guter Hinweis !
Bis zum nächsten Problem ;-)