FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Mundus am 02 Mai 2018, 22:45:22

Titel: [gelöst] Probleme bei UserReading in FritzBox-Device
Beitrag von: Mundus am 02 Mai 2018, 22:45:22
Hi,

ich habe in meinem FritzBox-Device folgendes UserAttribut versucht zu setzen:
attr FritzBox userReadings PassGuest {my $rName=fhem("get FritzBox tr064Command WLANConfiguration:3 wlanconfig3 GetSecurityKeys");;\
$rName = ~/'NewKeyPassphrase' => '(.*)'/;;\
Log3 undef,3,"Passwort ist $1";;\
return $1;;\
}


Leider funktioniert die Ausgabe nicht, im Log erscheint der Fehler
1: PERL WARNING: Use of uninitialized value $1 in concatenation (.) or string at (eval 23095) line 3.

Die Zuordnung des tr064Command funktioniert, hier erscheint als Ergebnis2018.05.02 12:36:47 3: get FritzBox tr064Command WLANConfiguration:3 wlanconfig3 GetSecurityKeys : Service='WLANConfiguration:3'   Control='wlanconfig3'   Action='GetSecurityKeys'
----------------------------------------------------------------------
$VAR1 = {
          'GetSecurityKeysResponse' => {
                                       'NewPreSharedKey' => 'HIERSTEHTWAS',
                                       'NewWEPKey0' => '',
                                       'NewKeyPassphrase' => 'FHEM',
                                       'NewWEPKey3' => '',
                                       'NewWEPKey1' => '',
                                       'NewWEPKey2' => ''
                                     }
        };


Irgendetwas mache ich falsch, weiß aber leider nicht was. Wie schaffe ich es, das Passwort angezeigt zu bekommen.

Gruß

Mundus
P.S.: Im Wiki ist der Fall so ähnlich als Anwendungsbeispiel abgebildet.
Titel: Antw:Probleme bei UserReading in FritzBox-Device
Beitrag von: Otto123 am 02 Mai 2018, 22:51:36
Hi,

$1 ist nirgendwo definiert/verwendet.

Wäre gut wenn Du Deinen Bezug aufs Wiki auch posten würdest.

Gruß Otto
Titel: Antw:Probleme bei UserReading in FritzBox-Device
Beitrag von: Mundus am 02 Mai 2018, 22:55:26
Hallo,
als erstes der Link
https://wiki.fhem.de/wiki/FRITZBOX#userReadings_per_get_tr064Command_oder_get_luaQuery (https://wiki.fhem.de/wiki/FRITZBOX#userReadings_per_get_tr064Command_oder_get_luaQuery)

Kann ich die Standard Perl-Variable $1 nicht -auch ohne Definition im UserReading- nutzen?

Gruß
Titel: Antw:Probleme bei UserReading in FritzBox-Device
Beitrag von: JoWiemann am 03 Mai 2018, 10:48:45
Hallo,

so sollte es funktionieren, wenn Du es über die FhemWeb direkt als userReadings einträgst:


PassGuest {
    my $rName = "";
$rName = fhem("get FritzBox tr064Command WLANConfiguration:3 wlanconfig3 GetSecurityKeys");
    if($rName =~/'NewKeyPassphrase' => '(.*)'/) {
        Log3 undef,3,"Passwort ist $1";
        return $1;
    }
    Log3 undef,3,"Kein Passwort ermittelt: $rName";
    return $rName;
}


Allerdings bekomme ich folgende Fehlermeldung:

Service='WLANConfiguration:3'   Control='wlanconfig3'   Action='GetSecurityKeys'
----------------------------------------------------------------------
{
  'Error' => '500 Can\'t connect to 192.168.0.1:49443'
}



Musst Du dann bei Dir mal schauen.

PS zwischen =~ darf kein Leerzeichen. Ist der RegEx-Operator in Perl. Das zusätzlich if sorgt dafür, dass nur bei erfolgreichem RegEx $1 ausgewertet wird. Weil nur dann ist es definiert.

Grüße Jörg

Titel: Antw:Probleme bei UserReading in FritzBox-Device
Beitrag von: Otto123 am 03 Mai 2018, 13:36:07
Hallo,

Jörg sein Code funktioniert bei mir.  :)
Sorry da habe ich mich als Perl Anfänger aber wieder kräftig blamiert.
Das Leerzeichen zuviel war mir nicht ins Auge gestochen.  :-[

Gruß Otto

Edit: allerdings ist der get Aufruf ein ziemlicher Logfile Müll Produzent  :o
Titel: Antw:Probleme bei UserReading in FritzBox-Device
Beitrag von: Mundus am 04 Mai 2018, 22:48:11
Hi,

vielen Dank für die Hilfe, nun funktioniert es. Das LEERZEICHEN war mein Fehler.

Wenn ich die IF-Bedingung von JoWiemann weglasse, passiert, außer einer Fehlermeldung etwas? Ich würde den Fehler gerne akzeptieren und so den Code etwas kürzer halten.

Gruß

Mundus

Edit: Mit dem LOG-Overhead kann ich leben.