72_FB_CALLMONITOR: Laden FritzBox Telefonbuch über Telnet, wenn FB remote

Begonnen von JoWiemann, 10 Dezember 2014, 18:45:31

Vorheriges Thema - Nächstes Thema

dancatt

Zitat von: moonsorrox am 04 Januar 2015, 02:00:50
ich meine es sollte hier "/opt/fhem/log" liegen...

bei mir zumindest liegt es hier

Ich habe gedacht das kann man in den Attributen

reverse-search-cache-file                /opt/fhem/FHEM/log/FritzBox_Cache.txt
reverse-search-phonebook-file         /opt/fhem/FHEM/log/FritzBox_Telefonbuch.xml

angeben
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

JoWiemann

Zitat von: dancatt am 04 Januar 2015, 00:05:02


2015.01.03 21:41:07.226 1: configDB: Could not read FritzBox phonebook file - Error on reading /opt/fhem/FHEM/log/FritzBox_Telefonbuch.xml from database!


Die Datei "/opt/fhem/FHEM/log/FritzBox_Telefonbuch.xml" ist vorhanden. Es liegt aber anscheinend irgendwie an configDB.


Das Problem ist die Sub FileRead(), mit der die XML eingelesen wird. Bei aktivierter config.db wird versuch die Datei in die SQL-Datenbank einzulesen. Das läuft dann auf einen Fehler.

@Markus: Am Besten den FileRead-Aufruf in "sub FB_CALLMONITOR_readPhonebook($;$$)" ersetzen durch
($err, @lines) = FileRead({FileName=>$phonebook_file, ForceType=>"file"} );

und in "sub FB_CALLMONITOR_readPassword($)"

my ($err, @pwd) = FileRead({FileName=>$1, ForceType=>"file"} );


Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

#32
Zitat von: JoWiemann am 04 Januar 2015, 19:57:52
Das Problem ist die Sub FileRead(), mit der die XML eingelesen wird. Bei aktivierter config.db wird versuch die Datei in die SQL-Datenbank einzulesen. Das läuft dann auf einen Fehler.

Falsch.

Nicht das Lesen aus der configDB läuft in einen Fehler, sondern die Auswertung von $err im Modul FB_Callmonitor.

Das Lesen der phonebook.xml aus der configDB funktioniert grundsätzlich problemlos, denn die Dateifunktionen FileRead() und FileWrite() sind generisch in der fhem.pl impementiert und man muss sich beim Lesen überhaupt nicht darum kümmern, ob der Anwender mit configDB oder fhem.cfg arbeitet.

Offenbar hat der Modulautor den grundlegenden Unterschied zwischen

if(defined($err))

und

if($err)

entweder nicht verinnerlicht oder nicht berücksichtigt und sollte diese Fehlerstelle baldmöglichst beseitigen.

ABER:

Ich habe mich jetzt - abgesehen von dieser Fehlersuche - nicht weiter mit dem Modul beschäftigt. Es sollte auf jeden Fall dafür gesorgt werden, dass eine neue gelesene phonebook.xml bei Einsatz der configDB auch automatisch in die Konfigurationsdatenbank geschrieben wird und eben NICHT ins Dateisystem! Dafür habe ich im Modul so spontan keine Ansatzpunkte gefunden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JoWiemann

Zitat von: betateilchen am 05 Januar 2015, 00:15:33
Es sollte auf jeden Fall dafür gesorgt werden, dass eine neue gelesene phonebook.xml bei Einsatz der configDB auch automatisch in die Konfigurationsdatenbank geschrieben wird und eben NICHT ins Dateisystem! Dafür habe ich im Modul so spontan keine Ansatzpunkte gefunden.

Stimmt, weil:

1. die phonebook.xml bei einer Fhem-Installation auf der FritzBox direkt von dort gelesen wird, da es sich um eine Datei aus dem FritzBox System handelt.

2. Das Telefonbuch als phonebook.xml über die FritzBox Oberfläche exportiert werden kann und dann für Fhem-Instaltionen, die nicht auf der FritzBox laufen zur Verfügung steht. (Muss dann halt manuell nach Fhem kopiert werden)

3. Über Telnet die phonebook.xml direkt von der FritzBox abgeholt werden kann und sich dann in einer Variablen des Moduls befindet

@Markus: Würdest Du bitte den von betateilchen angemerkten Fehler korrigieren. Danke Dir
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

moonsorrox

Eine Frage mal zum einlesen, einmal des phonebooks und einmal der Fritz_Box_Telefonbuch.xml
Ist das nicht eigentlich beides mal das selbe..? Er liest ja z.B. bei mir jetzt 34 Kontakte ein

Ich hänge mal die Logfiles an

2015.01.05 15:11:40 2: FB_CALLMONITOR (FB7390) - read 34 contacts from ./log/Fritz_Box_Telefonbuch.xml
2015.01.05 15:11:40 2: FB_CALLMONITOR (FB7390) - found FritzBox phonebook ./log/Fritz_Box_Telefonbuch.xml
2015.01.05 15:11:40 2: FB_CALLMONITOR (FB7390) - read 34 contacts from remote phonebook via telnet
2015.01.05 15:11:40 2: FB_CALLMONITOR (FB7390) - found remote FritzBox phonebook via telnet
2015.01.05 15:11:40 3: FB_CALLMONITOR (FB7390) - Getting phonebook from FritzBox: /var/flash/phonebook
2015.01.05 15:11:39 2: FB_CALLMONITOR (FB7390) - read 1 contact from Cache
2015.01.05 15:11:39 3: FB_CALLMONITOR (FB7390) - loading cache file /opt/fhem/callmoncache.txt
2015.01.05 15:11:39 2: FB_CALLMONITOR (FB7390) - read 34 contacts from remote phonebook via telnet
2015.01.05 15:11:39 2: FB_CALLMONITOR (FB7390) - found remote FritzBox phonebook via telnet
2015.01.05 15:11:39 3: FB_CALLMONITOR (FB7390) - Getting phonebook from FritzBox: /var/flash/phonebook
2015.01.05 15:11:38 2: FB_CALLMONITOR (FB7390) - read 34 contacts from remote phonebook via telnet
2015.01.05 15:11:38 2: FB_CALLMONITOR (FB7390) - found remote FritzBox phonebook via telnet
2015.01.05 15:11:38 3: FB_CALLMONITOR (FB7390) - Getting phonebook from FritzBox: /var/flash/phonebook
2015.01.05 15:11:38 3: FB7390 device opened
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

JoWiemann

Ich habe die Telnet-Funktion eingebaut um nicht immer über die FritzBox Web-Oberfläche erst mein Telefonbuch zu exportieren, nach Fhem zu kopieren und dann neu einlesen zu müssen. Mit Telnet hole ich das phonebook.xml, so heißt die Systemdatei auf der FritzBox in der die Telefonbücher gespeichert werden, direkt in den CallMonitor. Über einen Cron lasse ich mir das Telefonbuch einmal am Tag neu holen. Damit erhalte ich immer einmal am Tag auch meine Neueinträge im FritzBox Telefonbuch.

Was noch schick wäre ist, wenn der CallMonitor eine Nummer über die Rückwärtssuche auflöst, die noch nicht im FB Telefonbuch vorhanden ist und diese dann auf der FB ergänzen könnte. Damit hätten dann meine an der FB hängenden DECT Telefone diese automatisch zur Verfügung.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

FloZi

Hallo zusammen,

ich habe den Anrufmonitor wie ihr beschrieben habt eingebaut, leider hab ich im LOG eine Fehlermeldung:

FB_CALLMONITOR (Anrufmonitor) - could not read remote FritzBox phonebook file - Couldn't recognize login prompt: pattern match timed-out

stehen...kann mir da jemand weiterhelfen? (die 72_FB_CALLMONITOR.pm ist aus dem Post Nr. #19 http://forum.fhem.de/index.php/topic,30244.msg231101.html#msg231101)

Viele Danke!
Gruß
FloZi

Markus Bloch

Hallo FloZi,

die Funktionalität ist bereits in der aktuellen devel-Version von FHEM enthalten. Mit dem Befehl "update" erhälst du die aktuellste Version.

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)

bert

Hallo,

in meiner Anrufliste erscheint als Name immer "unknown".

Auszug aus der Log-Datei:
2015.01.11 10:38:08 3: Fritz device opened
2015.01.11 10:38:10 3: FB_CALLMONITOR (Fritz) - Getting phonebook from FritzBox: /var/flash/phonebook
2015.01.11 10:38:10 2: FB_CALLMONITOR (Fritz) - found remote FritzBox phonebook via telnet
2015.01.11 10:38:10 2: FB_CALLMONITOR (Fritz) - read 26 contacts from remote phonebook via telnet
2015.01.11 10:38:10 2: FB_CALLMONITOR (Fritz) - found FritzBox phonebook /opt/fhem/log/FritzBox_Telefonbuch.xml
2015.01.11 10:38:10 2: FB_CALLMONITOR (Fritz) - read 26 contacts from /opt/fhem/log/FritzBox_Telefonbuch.xml


Die beiden letzten Zeilen erscheinen erst seit dem Zeitpunkt als ich die Datei aus der Fritz gespeichert und in das Logverzeichnis kopiert habe.
Trotzdem keine Anzeige das Namens. Was hab ich falsch gemacht?

Gruß
Bert

Markus Bloch

Hallo Bert,

für mal bitte ein "list Fritz" in der FHEM Befehlszeile aus und schau mal bitte nach, ob in dem Output die entsprechende Nummer auftaucht.

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)

bert

Ja, meine Nr. erscheint external_number 017xxxxxx
auch die importierten Namen stehen unter Phonebook:
    017xxxxxx Bert Handy
auch die anderen 25 Namen.

bert

Das sagt der Eventmonitor
2015-01-11 23:26:28 FB_CALLMONITOR Fritz event: ring
2015-01-11 23:26:28 FB_CALLMONITOR Fritz direction: incoming
2015-01-11 23:26:28 FB_CALLMONITOR Fritz external_name: unknown
2015-01-11 23:26:28 FB_CALLMONITOR Fritz external_number: 017xxxxxxx
2015-01-11 23:26:28 FB_CALLMONITOR Fritz external_connection: SIP3
2015-01-11 23:26:28 FB_CALLMONITOR Fritz internal_number: 0623xxxxx
2015-01-11 23:26:28 FB_CALLMONITOR Fritz call_id: 0
2015-01-11 23:26:32 TM CallMon E0: 00:00
2015-01-11 23:26:32 TM CallMon A0: incoming_noconnect
2015-01-11 23:26:32 FB_CALLMONITOR Fritz event: disconnect
2015-01-11 23:26:32 FB_CALLMONITOR Fritz external_name: unknown
2015-01-11 23:26:32 FB_CALLMONITOR Fritz missed_call_line: 0623xxxxx
2015-01-11 23:26:32 FB_CALLMONITOR Fritz external_number: 017xxxxx
2015-01-11 23:26:32 FB_CALLMONITOR Fritz internal_number: 0623xxxxx
2015-01-11 23:26:32 FB_CALLMONITOR Fritz call_duration: 0
2015-01-11 23:26:32 FB_CALLMONITOR Fritz direction: incoming
2015-01-11 23:26:32 FB_CALLMONITOR Fritz missed_call: 017xxxxxx
2015-01-11 23:26:32 FB_CALLMONITOR Fritz external_connection: SIP3
2015-01-11 23:26:32 FB_CALLMONITOR Fritz call_id: 0

Markus Bloch

zeig mir mal bitte deine Attribute zu deiner Fritz Definition
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

bert

Sorry, hab grad alles gelöscht, und machs neu. Da waren noch Reste von der 72_Fritzbox mit vermischt. Im Eventlog ist mir das aufgefallen. Auch 99_my utilsTM hat noch mitgemacht.

Danke aber trotzdem für die Hilfe

bert

Erfolgsmeldung:
Alles alte gelöscht, nach Wiki neu gemacht, funktioniert.

Danke