Callmonitor für Anfänger

Begonnen von coolice, 25 Januar 2014, 13:07:36

Vorheriges Thema - Nächstes Thema

P.A.Trick

Zitat von: Markus Bloch am 20 Juli 2014, 11:26:48
Fix ist im SVN eingecheckt. Gibts ab morgen via update.

Gruß
Markus

Klasse eben ausprobiert! klappt wieder! Prima Danke Markus!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Invers

Bin auf den raspberry umgestiegen und habe nach demWiki den Callmonitor eingerichtet und die IP der Fritzbox angepasst.
Die Anrufliste wird mir allerdings immer nur als leer angezeigt und ich kann nicht sagen, woan das liegt.
Ein Logereignis wird gespeichert (my_callmonitor-2014.log)

2014-07-20_16:22:12 my_callmonitor event: ring
2014-07-20_16:22:12 my_callmonitor direction: incoming
2014-07-20_16:22:12 my_callmonitor external_name: unknown
2014-07-20_16:22:12 my_callmonitor external_number: 01577-----
2014-07-20_16:22:12 my_callmonitor external_connection: ISDN
2014-07-20_16:22:12 my_callmonitor internal_number: 999-----
2014-07-20_16:22:14 my_callmonitor event: disconnect
2014-07-20_16:22:14 my_callmonitor external_name: unknown
2014-07-20_16:22:14 my_callmonitor missed_call_line: 999-----
2014-07-20_16:22:14 my_callmonitor external_number: 01577-----
2014-07-20_16:22:14 my_callmonitor internal_number: 999-----
2014-07-20_16:22:14 my_callmonitor call_duration: 0
2014-07-20_16:22:14 my_callmonitor direction: incoming
2014-07-20_16:22:14 my_callmonitor missed_call: 01577-----
2014-07-20_16:22:14 my_callmonitor external_connection: ISDN


Auszug aus dem fhem.log

2014.07.20 16:22:11 4: FB_CALLMONITOR: my_callmonitor using klicktel.de for reverse search of 01577-----------
2014.07.20 16:22:11 4: FB_CALLMONITOR: my_callmonitor using dasoertliche.de for reverse search of 01577-----------
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:12 5: Triggering Func_TelMon_N
2014.07.20 16:22:12 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}
2014.07.20 16:22:14 5: Triggering Func_TelMon_N
2014.07.20 16:22:14 4: Func_TelMon_N exec {
   TelefonMonitor ($EVENT);;
}


Hat jemand einen Tipp, warum das nicht geht, oder geht das gar nicht, wenn fhem nicht auf der FB installiert ist?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

P.A.Trick

Mache morgen einfach ein Update, dann geht das!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

#199
EDIT: Beitrag gelöscht, funktioniert jetzt. Danke.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

karl0123

Seit dem letzten Update (heute) bekomme ich folgende Fehler im Log bei einem Anruf:

ZitatArgument "16c97c08e421cb46f798cf51ff096ec4" isn't numeric in array element at ./FHEM/99_myFritzUtils.pm line 210.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Use of uninitialized value $intCallDuration in string gt at ./FHEM/99_myFritzUtils.pm line 184.
Use of uninitialized value $ab in string eq at ./FHEM/99_myFritzUtils.pm line 178.
Use of uninitialized value $intCallDuration in string eq at ./FHEM/99_myFritzUtils.pm line 173.
Argument "7df08624278618e79f172d40cafcac37" isn't numeric in array element at ./FHEM/99_myFritzUtils.pm line 101.

Die Liste wird auch nur dahingehend aktualisiert, dass alle weiteren Einträg außer dem aktuellen (A0...) neu geschrieben werden. Der letzte Eintrag bleibt immer der, bei dem die sub noch funktioniert hat.

Gibt es Ideen dazu?

Markus Bloch

@karl0123: Das liegt daran, dass du die ein-eindeutigen Call-ID's verwendest. Diese werden von der Anrufliste nicht unterstützt, da als Call-Id hier eine reine Ganzzahl erwartet wird, die als Array-Index verwendet wird.

Btw. einen Hinweis an die Autoren dieser Anrufliste:

Die Anrufliste kann mit dem letzten Update viel einfacher generiert werden. Man muss nur noch alle disconnect-Events verarbeiten, da nun alle Events alle zu Verfügung stehenden Daten immer mit triggern:
Zitat von: Eventmonitor
Events:
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox event: ring
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox direction: incoming
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox external_name: Handy
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox external_number: 0170XXXXXX
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox external_connection: SIP0
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox internal_number: 84XXXXX
2014-07-21 18:48:53 FB_CALLMONITOR FritzBox call_id: 0

2014-07-21 18:48:58 FB_CALLMONITOR FritzBox event: connect
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox direction: incoming
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox internal_connection: DECT_1
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox external_name: Handy
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox external_number: 0170XXXXXX
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox external_connection: SIP0
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox internal_number: 84XXXXX
2014-07-21 18:48:58 FB_CALLMONITOR FritzBox call_id: 0

2014-07-21 18:49:04 FB_CALLMONITOR FritzBox event: disconnect
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox direction: incoming
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox internal_connection: DECT_1
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox external_name: Handy
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox external_number: 0170XXXXXX
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox external_connection: SIP0
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox internal_number: 84XXXXX
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox call_duration: 7
2014-07-21 18:49:04 FB_CALLMONITOR FritzBox call_id: 0

Mit Hilfe des neuen Readings direction kann man die Richtung ermitteln (incoming oder outgoing) und auch sonst stehen alle notwendigen Daten für eine Anrufliste mit drin.

Man kann also ein Notify nach "event:disconnect" machen und dann dort mittels Perl-Funktion alle Reading-Values extrahieren (zum Zeitpunkt des Events stehen alle entsprechenden Werte definitiv in den Readings) und in die Anrufliste schreiben + Liste rotieren.

Das sollte die Anrufliste erheblich vereinfachen.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Mitch

#202
Hallo Zusammen,

mir ist gerade aufgefallen, dass meine ReadingsGroup seit 15.07. nicht mehr upgedated wird.

Letzter Eintrag ist vom 15.07., obwohl Anrufe raus und rein gingen.
Die Readings im Callmonitor gehen aber wohl:
call_duration
189
2014-07-21 20:52:01
call_id
0
2014-07-15 07:32:32
direction
incoming
2014-07-21 20:52:01
event
disconnect
2014-07-21 20:52:01
external_connection
SIP3
2014-07-21 20:52:01
external_name
Max Mustermann
2014-07-21 20:52:01
external_number
123456789
2014-07-21 20:52:01
internal_connection
DECT_3
2014-07-21 20:52:01
internal_number
987654321
2014-07-21 20:52:01


Der Fehler wurde ja hier schon auf der Seite 13 von anderen festgestellt und mit dem heutigen Update angeblich gefixed.
Leider ist er bei mir immer noch vorhanden.
FHEM im Proxmox Container

Elektrolurch

Hallo,

der Fehler lag wohl daran, dass die "CallID" nicht mehr übertragen wurde. Ohne die CallID kann mein Call-Monitor die Anrufe und die Events nicht richtig zuordnen. Ich habe den Call-Monitor so programmiert, dass er auch dann funktioniert, wenn mehrere Anrufe gleiczeitig passieren.
Nach dem letzten Update funktionierte aber wieder alles korrekt.
Hast Du nach dem Update einen Restart durchgeführt?

Gruß

Elektrolurch
configDB und Windows befreite Zone!

Mitch

#204
Ja, habe einen Restart von fhem durchgeführt.
Sonst wurde nichts geändert.

EDIT: seit jetzt geht es wieder? Wieder ohne Änderung?
FHEM im Proxmox Container

Roaster

Kann man das Telefonbuch der FritzBox automatisch auf den RaspberryPi downloaden und mit dem Callmonitor ohne Konvertierung verwenden?

Was ich mir vorstelle, ist einen CRON Job auf dem RSPI einzustellen, der per (?) das Telefonbuch abholt und in einem bestimmten Verzeichnis für den Callmonitor bereitstellt.

Hat sowas schon jemand am Laufen?

Grüße,
Michael

Mitch

Bin auch gerade dabei mir so etwas zu "basteln":

Linux Server mit FHEM holt jede Nacht das Telefonbuch.xml von der Fritte.

Bis jetzt habe ich dazu ein php Tool gefunden: https://github.com/mypikachu/fritzbox_api_php
Funktionier leider (noch) nicht. Siehe auch her, gleiches Problem: http://www.ip-phone-forum.de/showthread.php?t=270384
FHEM im Proxmox Container

fiedel

#207
Sowas hat bestimmt noch keiner.  ;) Du kannst für die Fritzbox- API (Suche hier oder im IP- Phone Forum) eine Funktion schreiben, die das Tel.Buch exportiert. Sollte also nicht unmöglich sein.

Gruß

Frank

Edit: Genau die von Mitch erwähnte meine ich. Man muss sich da etwas in regex einfummeln.  8)

Edit2: Gibts ja alles schon fast:

Zitatchanged fritzbox_get_foncallslist.php to work with new firmwares, moved old method to fritzbox_get_foncallslist_xml.php
Dieses Script könnte man als Vorlage zum Anpassen nehmen.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Markus Bloch

Wieso umwandeln???

Exportiert die XML und hinterlegt den Pfad als Attribut im CALLMONITOR. Dann mit dem Set Befehl das File neu einlesen. Der CALLMONITOR parst das XML direkt so wie es ist.

Steht alles in der commandref
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Mitch

Umwandeln?

Hat ja niemand gesagt.
Es geht darum,automatisiert das XLM von der Fritte zu holen und auf dem FHEM Server zu speicher und dann neu ein zu lesen.
FHEM im Proxmox Container