Neues Feature: FB_CALLMONITOR kann das interne FritzBox Telefon zur Rückwärtssuche verwenden

Begonnen von Guest, 15 Dezember 2012, 13:37:46

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo zusammen,

mit dem heutigen Update erhaltet ihr eine neue Version von FB_CALLMONITOR
welche nun auch das interne FritzBox-Telefonbuch zur Rückwärtssuche
verwenden kann.

Dies funktioniert allerdings nur, wenn FB_CALLMONITOR inkl. FHEM auf einer *FritzBox
mit dem FritzBox-Image von fhem.de* läuft.

Für alle die bereits FHEM auf der FritzBox laufen haben, brauchen nicht
viel zu ändern. Mit dem Update gibt es ein neues Attribut-Value für
reverse-search.


   - *internal *- Bedeutet, dass nur das interne Telefonbuch verwendet
   werden soll, es werden keine Rückwärtssuchen via Internet durchgeführt.* Dieser
   Wert wird nur dann angeboten, wenn FB_CALLMONITOR auf einer FritzBox läuft.
   *
   - *all *- (existiert ja bereits) Wenn "all" eingestellt ist, wird zuerst
   das Telefonbuch durchsucht, dannach der Cache (sofern aktiviert), sollte
   dennoch kein Ergebniss vorhanden sein, wird deine Rückwärtssuche via
   Internet durchgeführt.

Jetzt wird es natürlich ebenfalls viele User geben, bei denen FHEM auf
einem separaten Rechner läuft (z.B. Raspberry Pi, etc.). Da dies auch bei
mir der Fall ist möchte ich euch hier eine Variante vorstellen mit der ihr
dennoch das interne Telefonbuch nutzen könnt. Dazu wird FHEM2FHEM benutzt
und auf der FritzBox ein Image von http://fhem.de/fhem.html#Download
installiert.

Die FritzBox erhält hierbei nur eine minimale Konfiguration. Hier die
wichtigsten Konfigurationszeilen.

define FritzBox FB_CALLMONITOR 192.168.178.1
attr FritzBox local-area-code 01234
attr FritzBox reverse-search all
attr FritzBox reverse-search-cache 1
attr FritzBox reverse-search-cache-file /var/media/ftp/fhem/reverse-cache

define TELNET telnet 7072 global

In der FHEM Konfiguration eures eigentlichen Systems wird in der fhem.cfg
folgendes eingetragen.

define FB_FHEM FHEM2FHEM 192.168.178.1:7072 LOG:.*

Dies stellt via FHEM2FHEM die Events aus der FritzBox lokal zur Verfügung.

define CallMonitor_notify notify FritzBox:.* {handleFritzBoxEvents("%");;}

Damit diese Events auch verarbeitet werden, kann man nun darauf ein Notify
setzten. Da bei FHEM2FHEM bei jedem einzelnen Reading ein Event gefeuert
wird, kann man die anderen Readings parrallel nicht mit abfragen. Damit man
aber bei einem Event auch direkt alle zugehörigen Readings parat hat, habe
ich mir eine kleine Funktion geschrieben welche die Events sammelt, in ein
Dummy Device schreibt und erst dann dieses Device triggert, sobald alle
Readings vorhanden sind.

Diese Funktion ist in meiner 99_MyUtils.pm zu finden

sub handleFritzBoxEvents($)
{
my ($event) = @_;

my ($name, $value) = split(": ", $event);

fhem "define tmp_fb dummy" if(not defined($defs{"tmp_fb"}));
fhem "setstate tmp_fb defined";

readingsBeginUpdate($defs{"tmp_fb"}) if($name eq "event");
readingsBulkUpdate($defs{"tmp_fb"}, $name, $value);
readingsEndUpdate($defs{"tmp_fb"}, 1) if($name eq "call_id");

}

Dadurch wird ein Dummy Device erzeugt. Sobald Events eintreffen werden
diese Events als Readings auf das Dummy Device geschrieben. Sobald das
letzte Reading eingetroffen ist (call_id) wird dann ein einzelnes Event für
das Dummy Device getriggert.

Das ganze sieht in der Praxis dann so aus.


<https://lh6.googleusercontent.com/-efVVfg1palI/UMxuvuVjmgI/AAAAAAAAAAw/3BOO8sMNCmI/s1600/tmp_fb.png>


Nun kann man auf diesem Device ein Notify definieren und bekommt so wie
beim echten Modul nur ein Event getriggert, wenn alle Readings verfügbar
sind.

Ich hoffe ich kann euch damit weiterhelfen.

Bei Fragen einfach melden.

Viele Grüße

Markus



<https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>

<https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
<https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
<https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Markus,

vielen Dank für die Anleitung - funktioniert auch bei mir wunderbar!
Auf die gleiche Weise hab' ich es jetzt auch hinbekommen, dass meine
FritzBox die WLAN-Geräte an den Pogoplug mit FHEM weiterleitet :-)

Schöne Grüße, Ralf

Am Samstag, 15. Dezember 2012 13:37:46 UTC+1 schrieb Markus Bloch:
>
> In der FHEM Konfiguration eures eigentlichen Systems wird in der fhem.cfg
> folgendes eingetragen.
>
> define FB_FHEM FHEM2FHEM 192.168.178.1:7072 LOG:.*
>
> Dies stellt via FHEM2FHEM die Events aus der FritzBox lokal zur Verfügung.
>
> define CallMonitor_notify notify FritzBox:.* {handleFritzBoxEvents("%");;}
>
>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

> vielen Dank für die Anleitung - funktioniert auch bei mir wunderbar!
> Auf die gleiche Weise hab' ich es jetzt auch hinbekommen, dass meine
> FritzBox die WLAN-Geräte an den Pogoplug mit FHEM weiterleitet :-)
>
> freut mich zu hören :-)

Gruß
Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Markus,

da ich nicht wirklich große Lust hatte auf meine Fritzbox ein neues Image
aufzuspielen, hab ich Dein Modul so erweitert, dass man über ein Attribut
auch ein File angeben kann, von dem das Telefonbuch im Fritzbox-Format
eingelesen wird. Da ich mein Telefonbuch eher selten ändere, reicht mir ein
händisches Update der Datei. Den Patch kann ich bei Bedarf hier posten.

Gruß Wolfgang


>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

da ich nicht wirklich große Lust hatte auf meine Fritzbox ein neues Image
> aufzuspielen, hab ich Dein Modul so erweitert, dass man über ein Attribut
> auch ein File angeben kann, von dem das Telefonbuch im Fritzbox-Format
> eingelesen wird. Da ich mein Telefonbuch eher selten ändere, reicht mir ein
> händisches Update der Datei. Den Patch kann ich bei Bedarf hier posten.
>
> Gruß Wolfgang
>
>
Gerne, warum nich :-)

Viele Grüße

Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Am Freitag, 21. Dezember 2012 00:27:46 UTC+1 schrieb Markus Bloch:
>
>
>
> da ich nicht wirklich große Lust hatte auf meine Fritzbox ein neues Image
>> aufzuspielen, hab ich Dein Modul so erweitert, dass man über ein Attribut
>> auch ein File angeben kann, von dem das Telefonbuch im Fritzbox-Format
>> eingelesen wird. Da ich mein Telefonbuch eher selten ändere, reicht mir ein
>> händisches Update der Datei. Den Patch kann ich bei Bedarf hier posten.
>
>  

> Gerne, warum nich :-)
>

Na denn, hier isser. Der Patch ändert das Verhalten von "internal" so, dass
/var/flash/phonebook nur der  Default für die Telefonbuch-Datei ist, diesen
kann man mit reverse-search-internal-file überschreiben.

Wolfgang

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Markus Bloch

Hallo Wolfgang,

ich hab deinen Patch mit ein paar kleineren Abänderungen eingecheckt. Der
Parameter heist nun reverse-search-phonebook-file. Ist, finde ich,
treffender für den 0815 User ;-)

Viele Grüße

Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Guest

Originally posted by: <email address deleted>

On 22.12.12 23:40, Markus Bloch wrote:
> Hallo Wolfgang,
>
> ich hab deinen Patch mit ein paar kleineren Abänderungen eingecheckt.
> Der Parameter heist nun reverse-search-phonebook-file. Ist, finde ich,
> treffender für den 0815 User ;-)

Stimmt, passt besser.

Wolfgang

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Markus,
 
vielen Dank für die Integration des internen Telefonbuchs, klappt
prinzipiell bei mir gut. Ein Problem habe ich noch:
In meinem Telefonbuch fangen manche Einträge (keine Ahnung, welche das
sind) nicht mit , sondern mit an, wobei
zwischen contact und modified noch irgendetwas (Zeilenumbruch?) ist.
Dadurch werden diese Einträge nicht geladen und dann natürlich auch nicht
angezeigt.
 
Folgende Änderung hat bei mir geholfen:
im sub FB_CALLMONITOR_loadInternalPhonebookFile:
...
      while($phonebook =~ m/*(**|)*
(.+?)<\/contact>/gs)
      {
          $contact = $*2*;
...
 
Spricht etwas dagagen, dass Du das noch mit aufnimmst?
 
Dann noch eine Frage:
Die Telefonbucheinträge werden ja alle in den Speicher geladen. Kann das
bei einem größeren Telefonbuch problematisch werden oder ist das unkritisch?
 
Viele Grüße,
Carsten
 

Am Samstag, 15. Dezember 2012 13:37:46 UTC+1 schrieb Markus Bloch:

> Hallo zusammen,
>
> mit dem heutigen Update erhaltet ihr eine neue Version von FB_CALLMONITOR
> welche nun auch das interne FritzBox-Telefonbuch zur Rückwärtssuche
> verwenden kann.
>
> Dies funktioniert allerdings nur, wenn FB_CALLMONITOR inkl. FHEM auf einer
> *FritzBox mit dem FritzBox-Image von fhem.de* läuft.
>
> Für alle die bereits FHEM auf der FritzBox laufen haben, brauchen nicht
> viel zu ändern. Mit dem Update gibt es ein neues Attribut-Value für
> reverse-search.
>
>
>    - *internal *- Bedeutet, dass nur das interne Telefonbuch verwendet
>    werden soll, es werden keine Rückwärtssuchen via Internet durchgeführt.
>    * Dieser Wert wird nur dann angeboten, wenn FB_CALLMONITOR auf einer
>    FritzBox läuft.*
>    - *all *- (existiert ja bereits) Wenn "all" eingestellt ist, wird
>    zuerst das Telefonbuch durchsucht, dannach der Cache (sofern aktiviert),
>    sollte dennoch kein Ergebniss vorhanden sein, wird deine Rückwärtssuche via
>    Internet durchgeführt.
>
> Jetzt wird es natürlich ebenfalls viele User geben, bei denen FHEM auf
> einem separaten Rechner läuft (z.B. Raspberry Pi, etc.). Da dies auch bei
> mir der Fall ist möchte ich euch hier eine Variante vorstellen mit der ihr
> dennoch das interne Telefonbuch nutzen könnt. Dazu wird FHEM2FHEM benutzt
> und auf der FritzBox ein Image von http://fhem.de/fhem.html#Downloadinstalliert.
>
> Die FritzBox erhält hierbei nur eine minimale Konfiguration. Hier die
> wichtigsten Konfigurationszeilen.
>
> define FritzBox FB_CALLMONITOR 192.168.178.1
> attr FritzBox local-area-code 01234
> attr FritzBox reverse-search all
> attr FritzBox reverse-search-cache 1
> attr FritzBox reverse-search-cache-file /var/media/ftp/fhem/reverse-cache
>
> define TELNET telnet 7072 global
>
> In der FHEM Konfiguration eures eigentlichen Systems wird in der fhem.cfg
> folgendes eingetragen.
>
> define FB_FHEM FHEM2FHEM 192.168.178.1:7072 LOG:.*
>
> Dies stellt via FHEM2FHEM die Events aus der FritzBox lokal zur Verfügung.
>
> define CallMonitor_notify notify FritzBox:.* {handleFritzBoxEvents("%");;}
>
> Damit diese Events auch verarbeitet werden, kann man nun darauf ein Notify
> setzten. Da bei FHEM2FHEM bei jedem einzelnen Reading ein Event gefeuert
> wird, kann man die anderen Readings parrallel nicht mit abfragen. Damit man
> aber bei einem Event auch direkt alle zugehörigen Readings parat hat, habe
> ich mir eine kleine Funktion geschrieben welche die Events sammelt, in ein
> Dummy Device schreibt und erst dann dieses Device triggert, sobald alle
> Readings vorhanden sind.
>
> Diese Funktion ist in meiner 99_MyUtils.pm zu finden
>
> sub handleFritzBoxEvents($)
> {
> my ($event) = @_;
>
> my ($name, $value) = split(": ", $event);
>
> fhem "define tmp_fb dummy" if(not defined($defs{"tmp_fb"}));
> fhem "setstate tmp_fb defined";
>
> readingsBeginUpdate($defs{"tmp_fb"}) if($name eq "event");
> readingsBulkUpdate($defs{"tmp_fb"}, $name, $value);
> readingsEndUpdate($defs{"tmp_fb"}, 1) if($name eq "call_id");
>
> }
>
> Dadurch wird ein Dummy Device erzeugt. Sobald Events eintreffen werden
> diese Events als Readings auf das Dummy Device geschrieben. Sobald das
> letzte Reading eingetroffen ist (call_id) wird dann ein einzelnes Event für
> das Dummy Device getriggert.
>
> Das ganze sieht in der Praxis dann so aus.
>
>
>
> <https://lh6.googleusercontent.com/-efVVfg1palI/UMxuvuVjmgI/AAAAAAAAAAw/3BOO8sMNCmI/s1600/tmp_fb.png>
>
>
> Nun kann man auf diesem Device ein Notify definieren und bekommt so wie
> beim echten Modul nur ein Event getriggert, wenn alle Readings verfügbar
> sind.
>
> Ich hoffe ich kann euch damit weiterhelfen.
>
> Bei Fragen einfach melden.
>
> Viele Grüße
>
> Markus
>
>
>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>
> <https://lh5.googleusercontent.com/-76d00WRmcR4/UMxucpfePLI/AAAAAAAAAAo/8Kb-QnPMqhM/s1600/tmp_fb.png>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Markus Bloch

Hallo Carsten,
>
>
werde ich demnächst einbringen ;-)

Viele Grüße

Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Hallo Carsten,

eine entsprechende Änderung wurde eingebracht und ist ab morgen via update
verfügbar.

Viele Grüße und angenehme Weihnachten

Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

> Dann noch eine Frage:
> Die Telefonbucheinträge werden ja alle in den Speicher geladen. Kann das
> bei einem größeren Telefonbuch problematisch werden oder ist das unkritisch?
>

Jetzt habe ich die Frage ja direkt vergessen. Generell werden alle Einträge
des internen Telefonbuchs, sowie die Resultate der Rückwärtssuche im
Arbeitsspeicher der FritzBox gehalten um diese Werte schnell zugreifbar zu
haben. Bei der Rückwärtssuche werden (sofern aktiviert) die entsprechenden
Ergebnisse in ein Cache-File geschrieben. Dennoch bleiben alle Daten primär
im Arbeitsspeicher.

Mein Telefonbuch umfasst aktuell ca. 40 Einträge. Am besten einfach mal
testen. Wenn du auf der FritzBox keine allzugroße FHEM Umgebung laufen
hast, sollte das möglich sein.

Viele Grüße

Markus

>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Tobias

Hallo Markus,
ich kann leider nicht das interner Telefonbuch nutzen weil fhem nicht auf
der fritzbox läuft. Aber da das Telefonbuch statisch ist, wäre ja eine
Möglichkeit zusätzlich eine reverse-Lookup Funktion einzubauen: lokales
File.
Vorzugweise im Fritzbox-Telefonbuch Exportformat.
So muss man es nur exportieren und in ein fhem-zugängliches Verzeichnis
legen.

Perfekt wäre natürlich wenn AVM einen Webservice in die Fritze mit einbauen
würde bei der jedermann aus dem lokalen Netz mit einer beliebigen Nummer
anfragen könnte :) und den entsprechenden Telefonbucheintrag per XML
zurückbekommen könnte :)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Markus Bloch

Hi Tobias,

eine ähnliche Funktion hatte Wolfgang (wmr72) sich ebenfalls gewünscht und
habe dies bereits eingebracht. Das Export-File entspricht der selben
Struktur wie das lokale File auf der FritzBox.

Einfach ein Export erstellen und dann an deinem FritzBox-Callmonitor Device
mit reverse-search-phonebook-file angeben.

Viele Grüße

Markus

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Tobias

hey, supi!!!
danke!

noch etwas: Habe gerade mall callmonitor installiert um per notify meine alten Datenbanktabellen wieder zu befüllen. (Hat sonst freetz per callmonitor erledigt).
Jetzt fällt mir auf, das die keine uuid anbietest, also eine eindeutige ID eines Anrufes um die verschiedenen Events eines Anrufes gruppieren zu können. Kannst du soetwas noch einbauen?

Mit Hilfe der UUID und dem Zeitstempel kann man ganz genau sagen was das letzte Event eines Anrufes war.

Grüsse
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter