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

Markus Bloch

Hallo Tobias,

was ich anbiete ist die interne FritzBox Call-Id des Anrufes. Diese
unterscheidet alle aktuell aktiven Anrufe voneinander. Da die FritzBox
maximal 5 Gespräche gleichzeitig bearbeiten kann, kann man so die
anruf-Events von gleichzeitigen Gesprächen auseinanderhalten.

Eine zeitlich eindeutige ID vergeb ich aktuell nicht.

Eine UUID wird vom CallMonitor nicht herausgegeben und müsste ich wenn dann
selber nachimplementieren.

Viele Grüße

Markus

> --
> send via http://forum.fhem.de
>

--
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

Ja ich weiß das callmonitor keine UUID hat. Das wurde bei Freetz im Callmonitor auch selbst implementiert. Die ID des aktiven Anrufes nützt nicht viel da ich aus der Datenbank immer den letzten Stand aller bisherigen Anrufe herausbekommen muss.
Die UUID müsste im FB_CALLMONITOR Modul gebildet werden.

BTW, warum mache ich das? Ich habe habe an der FB einen UMTS-Stick mit der ich alle ankommenden Anrufe auf mein Handy weiterleiten lasse. Auf meinem Handy escheint allerdings nur die Nummer meines Hausanschlusses. Ich habe allerdings eine kleine Webanwendung die mir alle originalnummern der weitergeleiteten Anrufe anzeigt. Und diese Webanwendung muss ich nur auf dem Handy aufrufen und schon sehe ich wer mich in Anwesenheit angerufen hat (//images/smiley_icons/icon_smile.gif)

Aber dafür benötige ich zwingend eine eindeutige ID um nicht alle Events auszugeben sondern nur den letzten. Und der letzte ist nicht fix, entweder disconnect oder cancel...

bzgl dem phonebookfile: ich habe folgendes eingetragen aber meinen Namen aus dem TelBuch wird nicht aufgelöst...

reverse-search -> all
reverse-search-cache -> 1
reverse-search-cache-file -> /opt/fhem/FRITZ.Box_Telefonbuch_Home.xml

Rechte sind da, Owner ist fhem....
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

Tobias

so sieht der betreffende teil des phonebooks aus:

<contact
modified="0"><category>1</category><id>0</id><person><realName>Tobias</realName></person><services /><telephony><number
type="mobile" id="0" quickdial="03" vanity="" prio="1">053619xxxxxx</number><number
type="mobile" id="0" prio="0">01522xxxxxx</number></telephony><services /><setup><ringTone /></setup><mod_time>1351265088</mod_time><uniqueid>29</uniqueid></contact>
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

> reverse-search -> all
> reverse-search-cache -> 1
> reverse-search-cache-file -> /opt/fhem/FRITZ.Box_Telefonbuch_Home.xml
>
> Rechte sind da, Owner ist fhem...


So klappt das auch nicht. Das Cache-File speichert die
Rückwärtssuchergebnisse der Web-Dienste. Du musst das phonebook-file
definieren.

Also:

reverse-search -> all            (all heißt, zuerst der cache, dann das
Telefonbuch-File, dann klicktel.de, dann dasoertliche.de)
reverse-search-cache -> 1   (1 heißt, das der Cache für die Rückwärtssuche
aktiviert wurde und die ergebnisse im RAM gehalten werden)
reverse-search-phonebook-file -> /opt/fhem/FRITZ.Box_Telefonbuch_Home.xml
 
Siehe auch commandref.

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

hmm, würd ich ja gerne, aber das Attribut gibts bei mir nicht.... update habe ich gemacht
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

Tobias

vergiss es, das reload hat gefehlt.... hatte gedacht beim update wird automatisch ein reload gemacht...
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

wollte grad ein Bild schicken ;-)

Btw: wegen deiner ID. Das letzte Event eines Anrufes ist immer ein
disconnect. Die Box kennt nur 4 Events

1. CALL (Ausgehender Anruf)
2. RING (Eingehender Anruf)
3. CONNECT (zustande kommen der Audio-Verbindung)
4. DISCONNECT (Abbau der Verbindung, kommt immer)

Von daher können folgende Varianten auftreten:


   - Normales Gespräch: CALL (oder RING) => CONNECT => DISCONNECT
   - verpasster Anruf: RING => DISCONNECT (wobei call_duration = 0)
   - Gegenseite nimmt nich ab: CALL => DISCONNECT (wobei call_duration =0)

von daher brauchst du nur die Call ID des Disconnects abfragen und hast
alle weiteren Events greifbar.

--
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

Zitat: Markus Bloch schrieb am Di, 25 Dezember 2012 19:58
----------------------------------------------------

> von daher brauchst du nur die Call ID des Disconnects abfragen und hast
> alle weiteren Events greifbar.

hmm, aber der Anruf 2h vorher hat aber auch die callid=0.... wie soll ich denn zu einem "disconnect" den dazu passenden "ring" und "connect" finden?

Kennst du das hier??
http://freetz.org/wiki/packages/callmonitor/listeners
Das versuche ich grade auf FB_CALLMONITOR umzustellen...

Da hapert es schon daran festzustellen, ob es ein eingehender- oder ausgehender Anruf ist ;)
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

WiKa

Hallo Tobias,

ich habe an meiner FB7390 ebenfalls einen UMTS-Stick und benutze wie Du die Weiterleitungsfunktion.

Angefangen habe ich damit lange Zeit vor dem Einsatz von FHEM, ergo auch unabhängig davon.
Ruft Irgendwer auf einer bestimmten Festnetznummer an, werden die Anrufe über den UMTS-Stick an mein Mobiltelefon weitergeleitet.
Angezeigt wird mir beim Anruf ebenfalls nur meine Festnetznummer.
Wenn ich das Gespräch annehme, weiß ich also in dem Moment nicht, wer mein Gesprächspartner sein wird.

1. Stufe: Info über die Telefonnummer des Anrufers in "Abwesenheit":
In der FB kannst Du unter System/Push Service/Erweiterte Einstellungen etwas "ungeordnet" weitere Einstellungen vornehmen.

- Push-Service-Mail bei bestimmten Ereignissen
- Ankommende Anrufe
Entgangene Anrufe
x Alle ankommenden Anrufe
- Anderer Empfänger

Wenn die Push-Service-Mail an eine andere E-Mail-Adresse gesendet werden soll, als im Bereich "Einstellungen" angegeben, geben Sie diese E-Mail-Adresse hier an.
An diese E-Mail-Adresse senden: mailadresse@mobiltelfon.xyz

Innerhalb von ca. 15 Sekunden schickt dir die Box eine Nachricht per Mail.
Enthalten sind Datum, Uhrzeit und Rufnummer des Anrufers.

2. Stufe: Info über die Telefonnummer / den Namen des Anrufers in "Abwesenheit":
Da bin ich eher zufällig drüber gestolpert, als ich meine Kontaktliste in Outlook mit der Fritzbox abgeglichen habe.
In der Benachrichtigungsmail erscheinen Telefonnummer und Name des Anrufers.

Leider funktioniert seit dem FW-Update auf FritzOS 5 die Software FritzBox Monitor wg. geändertem Loginverfahren an der Box nicht mehr.

VG,
WiKA
FB7390 FW:FRITZ!OS 05.50 / RFXTRX433 FW:433_64 / ELRO AB440R (modified to IT-Code) - AB440S (IT-Code) - AB440IS (IT-Code) / Oregon THGN132N - THN132N - THGR122N / Intertechno PAR-1000 - PAR1500

Markus Bloch

@Tobi: reicht dir denn ein eindeutiger MD5-Hash oder muss es im UUID Format
sein?

--
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 Tobi,

ab morgen steht dir mit update (und anschließendem reload) ein neuer
Parameter "unique-call-ids" zur Verfügung.

Wenn du den aktivierst bekommst du als ID einen HEX-Hash zurück welcher auf
Basis des Zeitstempels, der Rufnummer und der verwendeten Verbindungen
basiert und bei allen Events immer gleich ist.

Ich hoffe das hilft dir weiter.

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

du bist supi!!!

ob es nun hex, oder md5 oder uuid ist, es muss nur immer(!(//images/smiley_icons/icon_wink.gif) ein eindeutiger und durchgängiger String pro physikalischem Anruf sein ;)

Ich teste es (//images/smiley_icons/icon_smile.gif)
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

Tobias

hmm, bis eben ist es noch nicht per update hereingekommen.....deswegen noch keine Rückinfo...ich warte noch
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

Tobias

noch etwas... wie bekomme ich heraus ob es ein eingehender Anruf oder ein ausgehender ist?
Ich unterscheide nach Quelle, Ziel. UNd je nachdem ob es ein ein-oder ausgehender Anruf ist, ist die external Number entweder Quelle oder Ziel...
Hast du eine Idee?
Gruss
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

Raymund

Hallo Markus,

zunächst vielen Dank für dieses super Tool. Mir geht es offenbar ähnlich wie Tobias bzgl. ein-/ausgehende Anrufe. Habe dazu in den Readings noch einen CALL_TYPE eingefügt: readingsBulkUpdate($hash, "call_type", $array[1](//images/smiley_icons/icon_wink.gif) if ($array[1] eq "RING" or $array[1] eq "CALL");

Wäre das ein möglicher Weg oder kämen sich ggf. mehrere Anrufe in's Gehege?

Viele Grüße
Raymund

Markus Bloch

Hallo Tobi:

eingehende Anrufe kannst du wie folgt unterscheiden:

eingehender Anruf:


   - event: RING
   - Quell-Rufnumer: internal_number
   - Zielrufnummer: external_number

ausgehender Anruf:

   - event: CALL
   - Quell-rufnummer: external_number
   - Ziel-Rufnummer: internal_number

Gruß
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

supi, funktioniert.... allerdings nur beim Ring oder Call. Beim Disconnect weiß ich es nicht mehr.
Könntest du den Typ als neues Reading mit einbauen?

Gruss
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

Hallo Tobias,

du meinst, das man beim Disconnect auch die Quell und Zielrufnummer bekommt?

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

naja,weiß ich nicht. Aber beim disconnect kann man durch das notify ja auf alle bisherigen readings zugreifen. Und wenn IN oder OUT beim Ring/Call gesetzt wird, kann man beim disconnect noch drauf zugreifen.

Abgesehen davon, beim ring/call müsste das "alte" Reading Call_duration auf 0 gesetzt werden. Oder lese ich die readings nur zu früh aus??
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

Die call duration wird nur beim Disconnect gesetzt, weil da ist das Gespräch ja zuende und die Dauer steht fest.

Zurücksetzen würde ich das nicht, da sonst evtl notify Definitionen aktiviert werden obwohl kein Gespräch beendet wurde.

Viele Grüße

Markus

Von meinem iPhone gesendet

Am 27.12.2012 um 17:05 schrieb Tobias Faust :

>
> naja,weiß ich nicht. Aber beim disconnect kann man durch das notify ja auf alle bisherigen readings zugreifen. Und wenn IN oder OUT beim Ring/Call gesetzt wird, kann man beim disconnect noch drauf zugreifen.
>
> Abgesehen davon, beim ring/call müsste das "alte" Reading Call_duration auf 0 gesetzt werden. Oder lese ich die readings nur zu früh aus??
> --
> send via http://forum.fhem.de
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
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)

Raymund

Hallo Tobias,

ich habe jetzt den CallType auch in das Hash-Array geschrieben. Damit bleibt es bis zum Disconnect erhalten und die Readings sind eindeutig.

Grüße
Raymund

#---- nach Zeile 222
if($array[1] eq "RING" or $array[1] eq "CALL") {
  $hash->{helper}{CALLTYPE}{$array[2]} = $array[1];
}
readingsBulkUpdate($hash, "call_type", $hash->{helper}{CALLTYPE}{$array[2]});
#----

Tobias

Hi Markus,
sich das du die Änderung eingecheckt hast? Sie ist noch nicht per update hereingekommen (mit reload)
Kannst du die Änderungen von Raymund auch noch übernehmen?
Gruss
Tobias

Zitat: Tobias schrieb am Mi, 26 Dezember 2012 09:05
----------------------------------------------------
> du bist supi!!!
>
> ob es nun hex, oder md5 oder uuid ist, es muss nur immer(!) ein eindeutiger und durchgängiger String pro physikalischem Anruf sein ;)
>
> Ich teste es :)
----------------------------------------------------

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

Hallo Tobias,

Ja bin ich ;-) guggst du hier: http://fhem.svn.sourceforge.net/viewvc/fhem/trunk/fhem/FHEM/72_FB_CALLMONITOR.pm?view=log

Da siehst du Revision 2636, wo ich die eindeutigen Id's eingecheckt habe. Ich konnte das neue Modul auch am Tag darauf via Update auf mein zweites FHEM System installieren (wo ich nicht drauf develope). Welche Revision hast du denn von dem Modul (steht in dem Kommentarbereich am Anfang des Modul-Files)?

Offenbar klappt dein Update nicht. Am besten mal "update force" probieren.

Viele Grüße

Markus

BTW: welche Änderungen von Raymund meinst du??? :-/


Von meinem iPhone gesendet

Am 28.12.2012 um 18:24 schrieb Tobias Faust :

>
> Hi Markus,
> sich das du die Änderung eingecheckt hast? Sie ist noch nicht per update hereingekommen (mit reload)
> Kannst du die Änderungen von Raymund auch noch übernehmen?
> Gruss
> Tobias
>
> Zitat: Tobias schrieb am Mi, 26 Dezember 2012 09:05
> ----------------------------------------------------
>> du bist supi!!!
>>
>> ob es nun hex, oder md5 oder uuid ist, es muss nur immer(!) ein eindeutiger und durchgängiger String pro physikalischem Anruf sein ;)
>>
>> Ich teste es :)
> ----------------------------------------------------
>
>
> --
> sent via http://forum.fhem.de
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
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

Das Reading Call_Type meine ich. Ob es ein In oder Out Anruf ist...
Zitat: Markus Bloch schrieb am Sa, 29 Dezember 2012 00:30
----------------------------------------------------
> BTW: welche Änderungen von Raymund meinst du??? :-/
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

Hallo Tobias,

Das Reading gibt's doch aber schon.

event: call <= eingehender Anruf
event: ring <= ausgehender Anruf

Gruß
Markus

Von meinem iPhone gesendet

Am 29.12.2012 um 18:30 schrieb Tobias Faust :

>
> Das Reading Call_Type meine ich. Ob es ein In oder Out Anruf ist...
> Zitat: Markus Bloch schrieb am Sa, 29 Dezember 2012 00:30
> ----------------------------------------------------
>> BTW: welche Änderungen von Raymund meinst du??? :-/
>
> --
> sent via http://forum.fhem.de
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
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)

Raymund

Hallo Markus, hallo Tobias,

wenn ich mich hier nochmal eimischen darf: ich habe z.B. am DISCONNECT-Event ein Notify, welches eine Mail versendet. Für diese Mail benötige ich u.a. die DURATION und den Typ (ein- oder ausgehend, also RING oder CALL). Wie ich Markus verstehe, müsste ich um den Typ zu bekommen einen der beiden genannten Events (RING/CALL) nehmen. Dann habe ich aber wiederum die DUARTION nicht. Daher mein Vorschlag, den CALL_TYPE mit in das Hash Array zu schreiben und am Ende (DISCONNECT) auszuwerten. Oder gibt es eine andere Möglichkeit, "alles" zu bekommen?

Mir ist übrigens noch aufgefallen, dass während eines Gesprächs die DURATION nicht aktuell ist. Da steht noch die Dauer des Vorgängeranrufs drin.

Jedenfalls ein prima Tool, das mir sehr weiter hilft (Benachrichtigung bei Anrufen).

Grüße
Raymund

Tobias

Ja, aber der Disconnect überschreibt Ring und Call. Beim Disconnect muss ich aber immer noch wissen ob ein- oder Ausgehend.... verstehst du das Problem??

Zitat: Markus Bloch schrieb am Sa, 29 Dezember 2012 20:39
----------------------------------------------------
> Hallo Tobias,
>
> Das Reading gibt's doch aber schon.
>
> event: call <= eingehender Anruf
> event: ring <= ausgehender Anruf
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

Tobias

Klappt trotzdem nicht :(

ich habe die neuste ID:
#Id: 72_FB_CALLMONITOR.pm 2367 2012-12-26 12:38:34Z markusbloch $

und trotzdem wird bei Call_id einstellige Zahlen angezeigt 0, 1 oder 2.

Zitat: Markus Bloch schrieb am Sa, 29 Dezember 2012 00:30
----------------------------------------------------
> Hallo Tobias,
>
> Ja bin ich ;-) guggst du hier: http://fhem.svn.sourceforge.net/viewvc/fhem/trunk/fhem/FHEM/72_FB_CALLMONITOR.pm?view=log
>
> Da siehst du Revision 2636, wo ich die eindeutigen Id's eingecheckt habe. Ich konnte das neue Modul auch am Tag darauf via Update auf mein zweites FHEM System installieren (wo ich nicht drauf develope). Welche Revision hast du denn von dem Modul (steht in dem Kommentarbereich am Anfang des Modul-Files)?
>
> Offenbar klappt dein Update nicht. Am besten mal "update force" probieren.
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

Hallo Tobias,

du musst aber auch das Attribut unique-call-ids 1 setzen.

Gruß
Markus

Von meinem iPhone gesendet

Am 30.12.2012 um 18:30 schrieb Tobias Faust :

>
> Klappt trotzdem nicht :(
>
> ich habe die neuste ID:
> #Id: 72_FB_CALLMONITOR.pm 2367 2012-12-26 12:38:34Z markusbloch $
>
> und trotzdem wird bei Call_id einstellige Zahlen angezeigt 0, 1 oder 2.
>
> Zitat: Markus Bloch schrieb am Sa, 29 Dezember 2012 00:30
> ----------------------------------------------------
>> Hallo Tobias,
>>
>> Ja bin ich ;-) guggst du hier: http://fhem.svn.sourceforge.net/viewvc/fhem/trunk/fhem/FHEM/72_FB_CALLMONITOR.pm?view=log
>>
>> Da siehst du Revision 2636, wo ich die eindeutigen Id's eingecheckt habe. Ich konnte das neue Modul auch am Tag darauf via Update auf mein zweites FHEM System installieren (wo ich nicht drauf develope). Welche Revision hast du denn von dem Modul (steht in dem Kommentarbereich am Anfang des Modul-Files)?
>>
>> Offenbar klappt dein Update nicht. Am besten mal "update force" probieren.
>
> --
> sent via http://forum.fhem.de
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com

--
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)