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

JoWiemann

Zitat von: Spartacus am 11 Dezember 2014, 20:54:29
Wohin kopierst Du das?

Hallo Christian,

ich setze folgenden Befehl über Telnet ab: @FBPhoneBook = $telnet->cmd(String => 'cat /var/flash/phonebook');

Damit wird der Inhalt des phonebook in den Skalar @FBPhoneBook übertragen. Wenn ich bei mir ein weiteres Telefonbuch einrichte, dann finde ich die Datensätze mit dem XML-Tag <phonebook name="Telefonbuch">, dass den Namen des Telefonbuch beinhaltet. Ich habe nun mein Telefonbuch in der FritzBox in ein neues kopiert und im Callmonitor ein rereadPhonebook gemacht. Der Callmonitor erkennt identische Einträge und von daher hat sich bei mir die Anzahl der gefundenen Einträge nicht erhöht. Ein weitere unterschiedlicher Eintrag in einem der beiden Telefonbücher führt auch im Callmonitor zu einer Liste, die einen Eintrag länger ist.

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

Spartacus

Hallo,
danke für den Test. Ich habe allerdings verschwiegen, dass ich mein Fritzbox Telefonbuch mit google synchronisiere. Es scheint offenbar in der Fritte anders verwaltet zu werden. Denn wenn ich auf der Fritte
cat /var/flash/phonebook
aufrufe, dann sehe ich nur die internen Rufnummern und zwei Quickdail-Nummern von AVM. Das sind die beiden kontakte, die gelesen werden. Es gibt keinen Verweis auf das Google-Telefonbuch...mus also irgendwo anders gespeichert werden...
Schade!
Gruß,
Christian.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

JoWiemann

Hallo Christian,

die "externen" Telefonbücher 1&1, Google usw. befinden sich nur im Speicher der FritzBox und werden nicht physisch abgelegt. Von daher müsste der Callmonitor das Telefonbuch von 1&1, Google usw. holen. Von Google geht das übrigens mit den Contact Conversion Wizard http://software.nv-systems.net/ccw

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

Spartacus

Hi Jörg,
den Contact Wizard kenne ich, aber dann muss ich das regelmäßig zu Fuß anstoßen. Ich hatte die Hoffnung, dass die Fritte das Buch irgendwo ablegt. Schade!

Trotzdem vielen Dank für Deinen Support,
Christian.
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Markus Bloch

#19
Hallo zusammen,

anbei einmal eine "halboffizielle" Version von mir, welche die Funktion von Jörg integriert hat um ein Telefonbuch via Telnet einzulesen.

Wieso ich diese Version noch nicht eingecheckt habe liegt darin, dass das Passwort momentan nur mit Base64 unkenntlich gemacht wird, was bei einem evtl. posten von Config oder "list <name>"-Outputs jeder versierte Mensch sofort entschlüsseln und sichtbar machen kann. Um das zu verhindern ist die Idee, das Passwort mit der Unique-ID eines jeden FHEM Systems (durch fheminfo) verschlüsselt in FHEM zu speichern (in der fhem.cfg oder configDb). Diese unique-ID ist nur dem Besitzer selbst bekannt und taucht auch in keinen Outputs auf, da sie in einem separaten File gespeichert ist. Man kann dann dieses Passwort nicht ohne "kriminelle Energie" in Erfahrung bringen. Alternativ kann man das Passwort nachwievor auch als Datei ablegen und in FB_CALLMONITOR via Attribut entsprechend angeben.

Hierfür sind allerdings noch ein paar Sachen notwendig, bevor dieses Verfahren so benutzt werden kann. Erst wenn diese umgesetzt sind, kann ich dieses Verfahren entsprechend für das FritzBox Passwort einbauen und dann diese Version offiziell aufnehmen. Bis dahin müsst ihr euch leider gedulden.

Benutzung des angehangenen Moduls:

Zur Benutzung der Telnet-Funktion sind folgende Attribute notwendig

  • fritzbox-remote-phonebook auf 1 stellen
  • fritzbox-user konfigurieren (sofern die Konfiguration der FritzBox ein Username via Telnet erfordert)
  • fritzbox-password direkt mit Passwort setzen (wird sofort unkenntlich gemacht) oder als Dateipfad mit "file:" vorneweg konfigurieren (z.B. "file:/tmp/mypassword.txt"). Die Datei muss existieren und lesenden Zugriff für FHEM ermöglichen.

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)

JoWiemann

Update: Parameter für Python und ermitteln der benötigten attr im Script
Update: file: wird nun unterstützt
Update: Wichtigen Hinweis in der Installation der gdata-2.0.12.tar.gz vergessen -> Installationsablauf
Update: Im Python Script werden jetzt Fehler behandelt, sowie Ereignisse, wenn möglich in das FHEM-Log geschrieben

Hallo,

basierend auf der im letzten Post bereitgestellten FB_CALLMONITOR.pm habe ich nun versucht auch die Google Kontakte zugänglich zu machen. Leider habe ich es bisher nicht geschafft das unter Perl zu verwirklichen, so dass ich erst einmal auf Python umgestiegen bin. Ein großer Teil beruht auf http://www.voiptoday.org/index.php?option=com_content&view=article&id=748:7-steps-to-sync-google-contacts-with-asterisk&catid=50&Itemid=244. Das Python-Script habe ich nur modifizieren müssen, damit es auf des Logik des CACHE passt. Leider ist das Ganze nicht ganz so trivial (Einfach FB_CALLMONITOR nutzen), ich hoffe aber, dass die Anleitung ausreichend ist.

Zunächst müssen Python-Module nachinstalliert werden:


sudo apt-get install python-openssl
sudo apt-get install python-lxml
wget http://gdata-python-client.googlecode.com/files/gdata-2.0.12.tar.gz


Jetzt bitte in das Verzeichnis gdata-2.0.12/src/gdata wechseln und dort die Datei service.py durch die im Anhang befindliche ersetzen.
( In der Datei ist die Zeile 1088 so angepasst, dass der https request funktioniert)


cd gdata-2.0.12
sudo python setup.py install


WICHTIG
Es muss auf jeden Fall unter: https://www.google.com/settings/security/lesssecureapps der "Zugriff für weniger sichere Apps" aktiviert werden, da ansonsten die Anmeldung nicht funktioniert.

Das Python-Script googlecontacts.py am Besten nach FHEM kopieren. Das Script wird dann aufgerufen mit:
python /Pfad/googlecontacts.py <Pfad_zur_fhem.pl> <Name des Callmonitors>

Für das Python-Script kann man nun einen Eintrag in der crontab machen, so dass es einmal am Tag aktualisiert wird.
crontab -e

Mein Eintrag in der crontab sieht dann so aus
0 1 * * * python /opt/fhem/FHEM/FhemUtils/googlecontacts.py /opt/fhem my_callmonitor
Damit wird das Script einmal am Tag um 01:00 aufgerufen.

In der fhem.cfg sind für den FB_CALLMONITOR folgende neue Attribute hin zugekommen:


attr my_callmonitor google-contacts-cache 1
attr my_callmonitor google-contacts-password # Wird genauso generiert, wie für die Fritzbox beschrieben. <file:> wird unterstützt
attr my_callmonitor google-contacts-mail email@gmail.de # Dieses Attr wird nur für das Python-Script benötigt
attr my_callmonitor google-contacts-file Pfad/Datei


Viel Spaß 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

moonsorrox

Frage zu einem Fehler den ich bekomme
2014.12.19 16:29:41 3: FB_CALLMONITOR (Fritz_Box) - Error Connecting to FritzBox: Net::Telnet=GLOB(0x35e7b10)->errmsg

was kann ich da machen..?
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

Hallo,

ist Telnet auf der FritzBox aktiviert?
Ist die richtige IP eingetragen?
Kommst du mit Putty auf die FritzBox?

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

moonsorrox

Telnet ist aktiviert auf der Fritzbox.
Die richtige IP ist auch eingetragen.

Habe mich bisher nicht mit putty eingeloggt, wenn ich in putty die IP eingebe kommt gleich der Fehler "Network error: Connection refused"
Warum er die Verbindung ablehnt weiß ich nicht, hatte ich bisher nicht gebraucht, deshalb sicher auch der Fehler in Fhem.


Äh, war mein Fehler hatte mit SSh probiert, aber mit Telnet gehts natürlich..!
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

Markus Bloch

Hallo zusammen,

da die entsprechenden Voraussetzungen nun durch Rudi geschaffen wurde, würde ich den aktuellen Stand inkl. Remote-Funktion gerne einchecken. Allerdings würde es hier nochmal eine kleine Änderung bezüglich des Passwortes geben.

Es gäbe hier 2 Möglichkeiten.

1. Das Passwort wird via "set <name> password <xxxxx>" einmalig gesetzt (sofern die remote-Funktion benutzt wird) und unter FHEM/FhemUtils/uniqueId in Listenform abgespeichert (diese Datei wurde nun für die Allgemeinheit aufgebohrt um Daten separiert abzulegen. Wenn man also die remote-Funktion aktiviert, wird dieser set-Befehl freigeschaltet, und man muss einmal das Passwort setzen. Das Passwort ist pro Definition zu setzen.

2. Das Passwort wird via Attribut (wie bisher) gesetzt, das Passwort wird aber in FHEM/FhemUtils/uniqueId abgespeichert. In FHEM wird das Attribut aber nicht angezeigt bzw. gesetzt (wegen fhem.cfg beim starten). Es kommt beim setzen des Passwortes via Attribut direkt eine Meldung, ob das Passwort OK ist oder nicht.

Was meint ihr?

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)

ph1959de

Markus,

wäre es hier vielleicht sinnvoll, das mit der Vorgehensweise im Modul FRITZBOX einheitlich zu machen (Thread zum Modul)?

Peter
Aktives Mitglied des FHEM e.V. | Moderator im Forenbereich "Wiki"

Markus Bloch

Da wird es sich ja jetzt auch ändern. Ich kann mal tupol fragen, wie er es genau ändern will.
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 zusammen,

ich habe nun die neue Version eingecheckt. Das Passwort wird nun via set-Kommando "set <name> password <XXX>" gesetzt. Dieses Kommando ist in der Oberfläche nur verfügbar, wenn bisher kein Passwort gesetzt wurde, oder das aktuell gesetzte Passwort von der FritzBox abgelehnt wird. Das Passwort wird dabei in unleserlicher Form im Modulverzeichnis unter FhemUtils/uniqueID abgelegt.

ACHTUNG: Auch wenn das Passwort nicht in Klartextform dort zu sehen ist, sollte man sich dennoch bewusst sein, das es sich um eine Datei mit einem Passwort handelt und sollte diese entsprechend gegen unbefugten Zugriff schützen.


Nachwievor muss das Attribut "fritzbox-remote-phonebook" aktiviert sein, damit dieses Feature genutzt werden kann und bei Bedarf auch "fritzbox-user". Den Algorithmus von Jörg zur Abfrage des Telefonbuchs habe ich nochmal etwas robuster gemacht gegen Fehlerfälle (falsches Passwort, fehlender Username, usw.).

Viel Spaß damit und Guten Rutsch morgen.

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)

dancatt

Nabend,

habe heute seit längerem mal wieder ein Update gemacht und bekomme nun folgende Fehlermeldung:


2015.01.03 21:41:05.939 2: FB_CALLMONITOR (FritzBox) - could not read FritzBox phonebook file - Error on reading /opt/fhem/FHEM/log/FritzBox_Telefonbuch.xml from database!
2015.01.03 21:41:05.940 3: Could not read FritzBox phonebook file - Error on reading /opt/fhem/FHEM/log/FritzBox_Telefonbuch.xml from database!
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.

Kennst das Problem jamand?

Vielen Dank.
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

moonsorrox

ich meine es sollte hier "/opt/fhem/log" liegen...

bei mir zumindest liegt es hier
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