Callmonitor mit Anruferliste und Zusatzfunktionen: Unterschied zwischen den Versionen

Aus FHEMWiki
(Beschreibung des Callmonitors weitergeführt)
K (use POSIX; raus)
 
(7 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Callmonitor mit Anruferliste und Zusatzfunktionen '''
{{Randnotiz|RNTyp=r|RNText=Seit 06/2015 bietet das Modul [[FB_CALLLIST]] einen gleichwertigen Funktionsumfang zu der hier erläuterten manuellen Vorgehensweise. Die ursprünglich hier vorliegende Beschreibung sollte '''nicht mehr''' genutzt werden.}}
Die Beschreibung [[Callmonitor mit Anruferliste und Zusatzfunktionen]] basierte hauptsächlich auf dem Beitrag {{Link2Forum|Topic=19238|LinkText=Callmonitor für Anfänger}} im Fhem Forum. Die Information wurde hier entfernt, da mit dem Modul [[FB_CALLLIST]] eine offizielle und somit auch unterstützte Lösung für diese Anwendung verfügbar ist.


Dieser Eintrag basiert hauptsächlich auf der Diskussion "Callmonitor für Anfänger" im FHEM-Forum [http://forum.fhem.de/index.php/topic,19238.0.html].<br> 
Sofern sich spezifische Hinweise zur Umstellung auf die Modul-Implementierung ergeben sollten, können diese hier eingefügt werden.


Der hier gezeigte Beispielcode ist einem Post [[http://forum.fhem.de/index.php/topic,19238.msg163260.html#msg163260]] in oben genannter Diskussion entnommen. Er umfasst alle Bestandteile zum Anzeigen einer rollierenden Anruferliste.  
<!-- Gesamter Seiteninhalt auf "inaktiv" gesetzt --
Der hier gezeigte Beispielcode ist einem {{Link2Forum|Topic=19238|Message=163260|LinkText=Beitrag}} in oben genannter Diskussion entnommen. Er umfasst alle Bestandteile zum Anzeigen einer rollierenden Anruferliste.  
{{Randnotiz|RNTyp=y|RNText=Größtes Problem bei der Implementierung scheint zu sein, dass die Bezeichnung des Callmonitors (im Forenthread) nicht einheitlich durchgehalten wird. Im hier vorgestellten Code heißt er ''my_callmonitor''. Das muss sowohl in der Konfiguration als auch in der 99_myUtilsTelefon.pm konsistent durchgehalten werden}}


Die Zusatzfunktionen (z.B. Floorplan- Seitenwechsel mit Anzeige des Anrufers und dessen gleichzeitiger Ansage über TTS) sind auskommentiert. Sie können als Anregung verstanden werden.
Die Zusatzfunktionen (z.B. Floorplan- Seitenwechsel mit Anzeige des Anrufers und dessen gleichzeitiger Ansage über TTS) sind auskommentiert. Sie können als Anregung verstanden werden.
Achtung: Größtes Problem bei der Implementierung scheint zu sein, dass die Bezeichnung des Callmonitors nicht einheitlich durchgehalten wird.
In diesem Beispiel heißt er: "my_callmonitor"


== Aufgabenstellung ==
== Aufgabenstellung ==
Wie die Anruferliste erstellt wird und wie die Voraussetzungen für auszulösende Aktionen eingebunden werden wird im Abschnitt "Lösung" schrittweise erklärt. Die Anforderungen an die Anruferliste und auszulösende Aktionen werden folgend kurz dargestellt.
Wie die Anruferliste erstellt wird und wie die Voraussetzungen für auszulösende Aktionen eingebunden werden, wird im Abschnitt [[Callmonitor mit Anruferliste und Zusatzfunktionen#Lösung|Lösung]] schrittweise erklärt. Die Anforderungen an die Anruferliste und auszulösende Aktionen werden folgend kurz dargestellt.


=== Anforderungen an die Anruferliste ===
=== Anforderungen an die Anruferliste ===
Zeile 23: Zeile 23:
* Aktionen können auch gekapselt werden
* Aktionen können auch gekapselt werden


=== durchzuführende Schritte ===
=== Durchzuführende Schritte ===
Die Reihenfolge ist hier unerheblich. Die Liste soll lediglich einen groben Überblick über die folgenden einzelnen Schritte zur Orientierung geboten werden
Die Reihenfolge ist hier unerheblich. Die Liste soll lediglich einen groben Überblick über die einzelnen erforderlichen Schritte geben
* 99_myUtilsTelefon.pm erstellen (bitte zuerst durchführen)
* 99_myUtilsTelefon.pm erstellen (bitte zuerst durchführen)
* UserReadings im Callmonitor in FHEM einrichten
* UserReadings im Callmonitor in FHEM einrichten
* Readingsgroup erstellen, die die UserReadings anzeigt
* [[ReadingsGroup]] erstellen, die die UserReadings anzeigt
* Notify erstellen, das die Telefonaktionen aufruft
* Notify erstellen, das die Telefonaktionen aufruft
* in Abhängigkeit vom Anrufstatus auszulösende Aktionen einbinden
* in Abhängigkeit vom Anrufstatus auszulösende Aktionen einbinden
== Anwendungsbeispiele ==


== Voraussetzungen ==
== Voraussetzungen ==
=== Aktivierter Callmonitor in der Fritz!Box ===
=== Aktivierter Callmonitor in der Fritz!Box ===
Damit das Modul Callmonitor in FHEM überhaupt arbeitet, muss zuerst in der Fritz!Box der Callmonitor eingeschalten werden. Das geht am einfachsten, indem man von einem direkt an die Fritz!Box angeschlossenen Telefon die Nummer #96*5* wählt.
Damit das Modul Callmonitor in FHEM überhaupt arbeitet, muss zuerst in der Fritz!Box der Callmonitor eingeschaltet werden. Das geht am einfachsten, indem man von einem direkt an die Fritz!Box angeschlossenen Telefon die Nummer #96*5* wählt.


=== Funktionierendes Modul Callmonitor in FHEM ===
=== Modul FB_CALLMONITOR in FHEM ===
Ist bereits das Modul Callmonitor in FHEM aktiv, muss es natürlich nicht extra eingerichtet werden. Wie das funktioniert erklärt sehr gut der Artikel [[FB CALLMONITOR]].
Fhem-seitig sind die erforderlichen Funktionen im Modul [[FB_CALLMONITOR]] implementiert.


=== Anlegen einer Datei 99_myUtilsTelefon.pm ===
=== Anlegen einer Datei 99_myUtilsTelefon.pm ===
Die Datei 99_myUtilsTelefon.pm wird den Perlcode aufnehmen, der die Anruferliste sowie die damit verknüpften Aktionen ausführt. Das Prinzip, um die 99_myUtilsTelefon.pm zu erstellen die exakt das gleich wie wenn man eine [[99 myUtils anlegen]] möchte. In unserem konkreten Fall soll die Datei allerdings den Namen 99_myUtilsTelefon.pm erhalten.
Die Datei 99_myUtilsTelefon.pm wird den Perlcode aufnehmen, der die Anruferliste sowie die damit verknüpften Aktionen ausführt. Das Prinzip, um die 99_myUtilsTelefon.pm zu erstellen, ist exakt das Gleiche wie für "[[99 myUtils anlegen]]" beschrieben. In unserem konkreten Fall soll die Datei allerdings den Namen 99_myUtilsTelefon.pm erhalten.


Bitte diesen Schritt nun ausführen, damit später das Script nur noch in die 99_myUtilsTelefon.pm kopiert werden muss.
Bitte diesen Schritt nun ausführen, damit später das Script nur noch in die 99_myUtilsTelefon.pm kopiert werden muss.
Zeile 49: Zeile 46:


== Lösung ==
== Lösung ==
In die [[Konfiguration|fhem.cfg]:
In die [[Konfiguration]] (fhem.cfg) ist einzutragen:
  <nowiki>
  <nowiki>
# Logfile der Anrufe (Fritzbox)
# Logfile der Anrufe (Fritzbox)
Zeile 62: Zeile 59:
attr my_callmonitor local-area-code 030
attr my_callmonitor local-area-code 030
attr my_callmonitor reverse-search all
attr my_callmonitor reverse-search all
attr my_callmonitor reverse-search-cache 1
attr my_callmonitor reverse-search-cache-file /opt/fhem/callmoncache.txt
attr my_callmonitor reverse-search-cache-file /opt/fhem/callmoncache.txt
attr my_callmonitor reverse-search-phonebook-file /opt/fhem/fb_phonebook.xml
attr my_callmonitor reverse-search-phonebook-file /opt/fhem/fb_phonebook.xml
Zeile 67: Zeile 65:
attr my_callmonitor userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr my_callmonitor userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr my_callmonitor verbose 0
attr my_callmonitor verbose 0
#attr my_callmonitor reverse-search-cache 1
 
#attr my_callmonitor reverse-search internal|klicktel.de|dasoertliche.de


# Anrufer Anzeigen:
# Anrufer Anzeigen:
Zeile 113: Zeile 110:




# Anrufliste genereieren:
# Anrufliste generieren:
#########################
#########################


Zeile 126: Zeile 123:
define Anrufliste readingsGroup my_callmonitor:A0,B0,C0,D0,E0 my_callmonitor:A1,B1,C1,D1,E1 my_callmonitor:A2,B2,C2,D2,E2 my_callmonitor:A3,B3,C3,D3,E3 my_callmonitor:A4,B4,C4,D4,E4
define Anrufliste readingsGroup my_callmonitor:A0,B0,C0,D0,E0 my_callmonitor:A1,B1,C1,D1,E1 my_callmonitor:A2,B2,C2,D2,E2 my_callmonitor:A3,B3,C3,D3,E3 my_callmonitor:A4,B4,C4,D4,E4
#attr Anrufliste fp_9_Telefon 370,206,0,Anrufliste
#attr Anrufliste fp_9_Telefon 370,206,0,Anrufliste
attr Anrufliste mapping &nbsp
#attr Anrufliste mapping &nbsp
attr Anrufliste nonames 1
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste nameStyle style="font-weight:bold"
attr Anrufliste noheading 0
attr Anrufliste noheading 0
Zeile 137: Zeile 135:
   
   
</nowiki>
</nowiki>


In die 99_myUtilsTelefon.pm :
In die 99_myUtilsTelefon.pm :
Zeile 148: Zeile 144:
use strict;
use strict;
use warnings;
use warnings;
use POSIX;
use FritzBoxUtils;
use FritzBoxUtils;


Zeile 193: Zeile 188:


sub FBHangOn () {
sub FBHangOn () {
     Log( 3, "FBCallHangOn aufgerufen" );
     Log( 3, "FBHangOn aufgerufen" );


     my $ret = " ATH: " . `echo "ATH" | nc 127.0.0.1 1011`;
     my $ret = " ATH: " . `echo "ATH" | nc 127.0.0.1 1011`;
Zeile 322: Zeile 317:
             if ( $intCallDuration eq 0 ) {
             if ( $intCallDuration eq 0 ) {
                 $A[$callID] = "out_notconnected";
                 $A[$callID] = "out_notconnected";
                 # hier notieren was passieren soll, wenn es ein eingehender Anruf war, der nicht angenommen wurde
                 # hier notieren was passieren soll, wenn es ein eingehender Anruf war,
                # der nicht angenommen wurde
             } elsif ( $intCallDuration gt 0 ) {
             } elsif ( $intCallDuration gt 0 ) {
                 $A[$callID] = "out_connected";
                 $A[$callID] = "out_connected";
                 # hier notieren was passieren soll, wenn es ein eingehender Anruf war, der angenommen wurde
                 # hier notieren was passieren soll, wenn es ein eingehender Anruf war,
                # der angenommen wurde
             }
             }
         } elsif ( $lastPhoneEvent[$callID] eq "ring") {
         } elsif ( $lastPhoneEvent[$callID] eq "ring") {
             if ( $intCallDuration eq 0 ) {
             if ( $intCallDuration eq 0 ) {
                 $A[$callID] = "in_notconnected";
                 $A[$callID] = "in_notconnected";
                 # hier notieren was passieren soll, wenn es ein ausgehender Anruf war, der nicht angenommen wurde
                 # hier notieren was passieren soll, wenn es ein ausgehender Anruf war,
                # der nicht angenommen wurde


                 $intCallDuration = undef;
                 $intCallDuration = undef;
Zeile 341: Zeile 339:
             } elsif ($intCallDuration gt 0 ){
             } elsif ($intCallDuration gt 0 ){
                 $A[$callID] = "in_connected";
                 $A[$callID] = "in_connected";
                 # hier notieren was passieren soll, wenn es ein ausgehender Anruf war, der angenommen wurde
                 # hier notieren was passieren soll, wenn es ein ausgehender Anruf war,  
                # der angenommen wurde
                  
                  
                 $intCallDuration = undef;
                 $intCallDuration = undef;
Zeile 347: Zeile 346:
         }
         }
          
          
         #hier notieren was generell passieren soll, sobald ein Anruf beendet wurde (egal ob angenommen, nicht angenommen, aus- oder eingehend oder der AB dranging)
         # hier notieren was generell passieren soll, sobald ein Anruf beendet wurde  
        # (egal ob angenommen, nicht angenommen, aus- oder eingehend oder der AB dranging)


         if ( $event eq "call_id" ) {
         if ( $event eq "call_id" ) {
Zeile 396: Zeile 396:


1;
1;
</nowiki>
</nowiki>


== Verwendung ==
== Verwendung ==
...


== Beschreibung der Funktion ==
== Beschreibung der Funktion ==
...
-- Ende von Gesamter Seiteninhalt auf "inaktiv" gesetzt -- -->


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 7. Februar 2022, 13:35 Uhr

X mark.svgSeit 06/2015 bietet das Modul FB_CALLLIST einen gleichwertigen Funktionsumfang zu der hier erläuterten manuellen Vorgehensweise. Die ursprünglich hier vorliegende Beschreibung sollte nicht mehr genutzt werden.

Die Beschreibung Callmonitor mit Anruferliste und Zusatzfunktionen basierte hauptsächlich auf dem Beitrag Callmonitor für Anfänger im Fhem Forum. Die Information wurde hier entfernt, da mit dem Modul FB_CALLLIST eine offizielle und somit auch unterstützte Lösung für diese Anwendung verfügbar ist.

Sofern sich spezifische Hinweise zur Umstellung auf die Modul-Implementierung ergeben sollten, können diese hier eingefügt werden.