[gelöst] Probleme bei UserReading in FritzBox-Device

Begonnen von Mundus, 02 Mai 2018, 22:45:22

Vorheriges Thema - Nächstes Thema

Mundus

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.

Otto123

Hi,

$1 ist nirgendwo definiert/verwendet.

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

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Mundus

Hallo,
als erstes der Link
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ß

JoWiemann

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

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

Otto123

#4
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Mundus

#5
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.