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

Cruiser79

Zitat von: Markus Bloch am 11 Januar 2015, 16:57:01
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
Mh, komisch, ich erhalte auch noch weiterhin diesen Fehler.

ZitatFB_CALLMONITOR (Anrufmonitor) - could not read remote FritzBox phonebook file - Couldn't recognize login prompt: pattern match timed-out
Wenn ich Zeile 861 der 72_FB_CALLMONITOR.pm richtig deute, wird hier auf ein Login oder Passwort gewartet um dann den Usernamen einzugeben. Bei mir lautet der Text, nach einem Login per telnet, aber:
Fritz!Box user:
Danach das "password: " passt dann wieder. Könntest du das dahingehen nochmal erweitern?

Ausserdem bilde ich mir beim Durchschauen der Codezeilen - mit meinen rudimentären Perlkenntnissen - ein, das nach der Übermittlung des Benutzernamen das Kennwort gar nicht übermittelt wird. Da fehlt doch irgendwo nach Zeile 872  noch das print auf den fp_pw, oder nicht?
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

carlos

Hallo,
Bei mir ist das schon die ganze Zeit so, immer dieser Fehler:

unable to check password - Could'nt recognize shell prompt: pattern match timed-out

Die letzte Version ist 72_FB_CALLMONITOR.pm 7456 und mit der geht's definitiv nicht.
Darauf hin habe ich mir mal die FB_CALLMONITOR_readRemotePhonebook angeschaut und so abgeändert:

...........
    my ($prematch, $match) = $telnet->waitfor('/(?:user|password):\s*$/i');
   
    unless(defined($prematch) and defined($match))
    {
        $telnet->close;
        return "Couldn't recognize login prompt: ".$telnet->errmsg;
    }
   
    if($match =~ /user/ and defined($fb_user))
    {
        Log3 $name, 4, "FB_CALLMONITOR ($name) - setting user to FritzBox: $fb_user";
        $telnet->print($fb_user);
        unless($telnet->waitfor('/password:\s*$/i'))
        {
            $telnet->close;
            return "Error giving password to FritzBox: ".$telnet->errmsg;
        }
    }
    elsif($match =~ /user/ and not defined($fb_user))
    {
        $telnet->close;
        return "FritzBox needs a username to login via telnet. Please provide a valid username/password combination";
    }
    elsif($match =~ /password/)
    {
        Log3 $name, 4, "FB_CALLMONITOR ($name) - giving password to FritzBox";
        $telnet->print($fb_pw);
    }
   
    unless($telnet->waitfor('/# $/i'))  # '/# $/i' '/#\s*$/i'
    {
        $telnet->close;
        my $err = $telnet->errmsg;
        $hash->{helper}{PWD_NEEDED} = 1;
        return "wrong password, please provide the right password" if($err =~ /\s*eof/i);
        return "Could'nt recognize shell prompt: $err";
    }
   
    Log3 $name, 4, "FB_CALLMONITOR ($name) - requesting $phonebook_file via telnet";
   
    my $command = "cat ".$phonebook_file;
 
    my @FBPhoneBook = $telnet->cmd($command);

    unless(@FBPhoneBook)
    {
        $telnet->close;
    return "Error getting phonebook FritzBox: ".$telnet->errmsg;
    }
    else
    {
    Log3 $name, 3, "FB_CALLMONITOR ($name) - Getting phonebook from FritzBox: $phonebook_file";
    }

    $telnet->print('exit');
    $telnet->close;
   
    delete($hash->{helper}{PWD_NEEDED}) if(exists($hash->{helper}{PWD_NEEDED}));
   
    return (undef, join('', @FBPhoneBook));

Darauf hin kommt er laut log soweit:


2015.01.17 10:51:29 4: FB_CALLMONITOR (my_callmonitor) - setting user to FritzBox: fhem
2015.01.17 10:51:28 4: FB_CALLMONITOR (my_callmonitor) - connected to FritzBox via telnet

Also user ok, passwort auch ok, fehler liegt wohl beim prompt.
Der ist aber bei mir #, sollte also ok sein.
Werde weiter suchen.
Gruß
Carlos
FHEM svn auf Intel NUC mit proxmox, 3 Raspberry Pi, signalduino, nanoCUL,  toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Markus Bloch

Hallo zusammen,

ich habe ein Update in SVN eingecheckt, welches auch "user:" als login-Prompt erkennt.

http://sourceforge.net/p/fhem/code/HEAD/tree//trunk/fhem/FHEM/72_FB_CALLMONITOR.pm?format=raw

Bitte testet mal, ob es bei euch damit sauber läuft.

Vielen Dank

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

Cruiser79

Zitat von: Markus Bloch am 17 Januar 2015, 11:27:13
Hallo zusammen,

ich habe ein Update in SVN eingecheckt, welches auch "user:" als login-Prompt erkennt.

http://sourceforge.net/p/fhem/code/HEAD/tree//trunk/fhem/FHEM/72_FB_CALLMONITOR.pm?format=raw

Bitte testet mal, ob es bei euch damit sauber läuft.

Vielen Dank

Gruß
Markus

password successfully saved
Läuft, danke.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

erwin

Hi Markus,
danke! login funktioniert, nur während fhem start gibts ein (temporäres) Problem:

2015.01.20 11:04:06 3: myCallMonitor device opened
2015.01.20 11:04:07 2: FB_CALLMONITOR (myCallMonitor) - could not read remote FritzBox phonebook file - FritzBox needs a username to login via telnet. Please provide a valid username/password combination
2015.01.20 11:04:07 3: Could not read remote FritzBox phonebook file - FritzBox needs a username to login via telnet. Please provide a valid username/password combination
2015.01.20 11:04:07 2: FB_CALLMONITOR (myCallMonitor) - found remote FritzBox phonebook via telnet
2015.01.20 11:04:08 2: FB_CALLMONITOR (myCallMonitor) - read 100 contacts from remote phonebook via telnet
.....
.....
2015.01.20 11:04:24 2: Error messages while initializing FHEM: configfile: Could not read remote FritzBox phonebook file - FritzBox needs a username to login via telnet. Please provide a valid username/password combination
2015.01.20 11:04:24 0: Server started with 196 defined entities (version $Id: fhem.pl 7609 2015-01-17 21:37:05Z rudolfkoenig $, os linux, user pi, pid 24276)

username/password ist natürlich definiert, sonst würde es ja um 2015.01.20 11:04:08 auch nicht funktionieren.
Das schaut für mich nach einem Problem mit der Startreihenfolge aus...
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Markus Bloch

Hallo Erwin,

habe ich soeben gefixt. Gibt es ab morgen via update.

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)

erwin

Hallo Markus,
vielen Dank, funktioniert!!!

Bleibt jetzt noch ein Wunsch:
Nachdem ja mehrere Module das Telnet login verwenden, und ich selbst auch ein wenig betroffen bin (siehe: fhemwiki Anwesenheitserkennung_-_Remote_Fritzbox
wünsch ich mir eine generische Lösung für login/logout set/get passwort, ähnlich wie bereits in FritzBoxUtils.pm für WEB access vorhanden.

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Cybers

Ich bekomme beim einlesen des Telefonbuchs immer folgende Fehlermeldung:

2015.01.23 10:52:43 3: NTFY return:  my_callmonitor:Could not read FritzBox phonebook file - Can't open /opt/fhem/log/Fritz_Box_Telefonbuch.xml: No such file or directory
2015.01.23 10:52:43 2: FB_CALLMONITOR (my_callmonitor) - could not read FritzBox phonebook file - Can't open /opt/fhem/log/Fritz_Box_Telefonbuch.xml: No such file or directory

Meine Einträge in der Fhem.cfg sehen wir folgt aus:
Zitatdefine my_callmonitor FB_CALLMONITOR 192.168.1.1:1012
attr my_callmonitor fritzbox-remote-phonebook true
attr my_callmonitor group Connections
attr my_callmonitor icon phone_call
attr my_callmonitor local-area-code 02204
attr my_callmonitor reverse-search all
attr my_callmonitor reverse-search-cache 1
attr my_callmonitor reverse-search-cache-file /opt/fhem/log/CallmonCache.txt
attr my_callmonitor reverse-search-phonebook-file /opt/fhem/log/Fritz_Box_Telefonbuch.xml
attr my_callmonitor room Telefon
attr my_callmonitor userReadings eing0 eing1 eing2 eing3 eing4 A0 A1 A2 A3 A4 B0 B1 B2 B3 B4 C0 C1 C2 C3 C4 D0 D1 D2 D3 D4 E0 E1 E2 E3 E4
attr my_callmonitor verbose 3
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

moonsorrox

Zitat von: Cybers am 23 Januar 2015, 11:14:07
Meine Einträge in der Fhem.cfg sehen wir folgt aus:

mach das mal so... evtl. liegt es daran :-\

reverse-search-phonebook-file ./log/Fritz_Box_Telefonbuch.xml
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

Cybers

Das hatte ich vorher stehen und bringt die gleiche Fehlermeldung.
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

JoWiemann

Welche Rechte liegen auf der Datei. Vlt. darf Fhem ja gar nicht lesen ?!

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

Cybers

die Datei befindet sich nicht in dem angegebenen Ordner. Scheinbar wird die Datei nicht von der Fritzbox in das Verzeichnis kopiert.
Woran kann liegen?
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Cruiser79

Zitat von: Cybers am 23 Januar 2015, 15:23:50
die Datei befindet sich nicht in dem angegebenen Ordner. Scheinbar wird die Datei nicht von der Fritzbox in das Verzeichnis kopiert.
Woran kann liegen?

Hast du denn über das Set password Kommando ein Passwort gesetzt? Ausserdem fehlt, falls du dich auf deiner Fritbox mit einem User einloggst, das Attribut fritzbox-user. Erst NACH dem Setzen des Passwortes mit set password wird übrigens das Telefonbuch ausgelesen und in die von dir angegebene Datei geschrieben. Die Fehlermeldung ist beim ersten Einrichten des Defines also "richtig". War bei mir auch so.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Cybers

das hatte ich so gemacht:
set my_callmonitor password 1234567

Habe es gerade noch einmal gemacht, bekomme aber dann diese Meldung:
I didn't ask for a password, so go away!!!
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Markus Bloch

Ich weis zwar nicht wie ihr euch das vorstellt, aber hier ein paar Hinweise zur Funktionsweise:

Das Attribut reverse-search-phonebook-file gibt den Pfad zu einem existierenden FritzBox-Telefonbuch an (exportierbar über die FritzBox-Weboberfläche). Der Inhalt dieser Datei wird eingelesen und genutzt um Rufnummern dem entsprechenden Telefonbucheintrag zuzuordnen.

Die Remote-Phonebook Funktionalität (Attribut "fritzbox-remote-phonebook") liest das Telefonbuch direkt von der FritzBox per Netzwerkverbindung ein (Vorraussetzung: Passwort und optional der Username). Die eingelesenen Werte werden NICHT in eine Datei gespeichert, sondern verbleiben nur im RAM.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)