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.
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
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com