mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-29 17:37:09 +00:00
72_FRITZBOX.pm: Fehlerbereinigung u.a. Handhabung "inaktive" lanDevices
git-svn-id: https://svn.fhem.de/fhem/trunk@27068 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f93116ee20
commit
ccf2f5977e
@ -41,7 +41,7 @@ use warnings;
|
||||
use Blocking;
|
||||
use HttpUtils;
|
||||
|
||||
my $ModulVersion = "07.50.3";
|
||||
my $ModulVersion = "07.50.4";
|
||||
my $missingModul = "";
|
||||
my $missingModulTelnet = "";
|
||||
my $missingModulWeb = "";
|
||||
@ -1929,7 +1929,8 @@ sub FRITZBOX_Readout_Run_Web($)
|
||||
$queryStr .= "&wlanList=wlan:settings/wlanlist/list(mac,speed,speed_rx,rssi,is_guest)"; # WLAN devices
|
||||
$queryStr .= "&wlanListNew=wlan:settings/wlanlist/list(mac,speed,rssi)"; # WLAN devices fw>=6.69
|
||||
#wlan:settings/wlanlist/list(hostname,mac,UID,state,rssi,quality,is_turbo,cipher,wmm_active,powersave,is_ap,ap_state,is_repeater,flags,flags_set,mode,is_guest,speed,speed_rx,channel_width,streams) #wlan:settings/wlanlist/list(hostname,mac,UID,state,rssi,quality,is_turbo,wmm_active,cipher,powersave,is_repeater,flags,flags_set,mode,is_guest,speed,speed_rx,speed_rx_max,speed_tx_max,channel_width,streams,mu_mimo_group,is_fail_client)
|
||||
$queryStr .= "&lanDevice=landevice:settings/landevice/list(mac,ip,ethernet,ethernet_port,guest,name,active,online,wlan,speed,UID)"; # LAN devices
|
||||
#$queryStr .= "&lanDevice=landevice:settings/landevice/list(mac,ip,ethernet,ethernet_port,guest,name,active,online,wlan,speed,UID)"; # LAN devices
|
||||
$queryStr .= "&lanDevice=landevice:settings/landevice/list(mac,ip,ethernet,ethernet_port,ethernetport,guest,name,active,online,wlan,speed,UID)"; # LAN devices
|
||||
$queryStr .= "&lanDeviceNew=landevice:settings/landevice/list(mac,ip,ethernet,guest,name,active,online,wlan,speed,UID)"; # LAN devices fw>=6.69
|
||||
#landevice:settings/landevice/list(name,ip,mac,UID,dhcp,wlan,ethernet,active,static_dhcp,manu_name,wakeup,deleteable,source,online,speed,wlan_UIDs,auto_wakeup,guest,url,wlan_station_type,vendorname)
|
||||
#landevice:settings/landevice/list(name,ip,mac,parentname,parentuid,ethernet_port,wlan_show_in_monitor,plc,ipv6_ifid,parental_control_abuse,plc_UIDs) #landevice:settings/landevice/list(name,ip,mac,UID,dhcp,wlan,ethernet,active,static_dhcp,manu_name,wakeup,deleteable,source,online,speed,wlan_UIDs,auto_wakeup,guest,url,wlan_station_type,vendorname,parentname,parentuid,ethernet_port,wlan_show_in_monitor,plc,ipv6_ifid,parental_control_abuse,plc_UIDs)
|
||||
@ -2345,7 +2346,8 @@ sub FRITZBOX_Readout_Run_Web($)
|
||||
$dName .= " [" . $UID . "]";
|
||||
|
||||
# Create a reading if a landevice is connected
|
||||
if ( $_->{active} || $allowPassiv) {
|
||||
# if ( $_->{active} || $allowPassiv) {
|
||||
if ( ($_->{active} && $_->{ip}) || $allowPassiv) {
|
||||
my $mac = $_->{mac};
|
||||
$mac =~ s/:/_/g;
|
||||
|
||||
@ -2353,7 +2355,8 @@ sub FRITZBOX_Readout_Run_Web($)
|
||||
$landevice{$mac}=$UID;
|
||||
|
||||
# if ( !$_->{ethernet} && $_->{wlan} ) { # funktioniert nicht mehr seit v7
|
||||
if ( defined $wlanList{$mac} ) {
|
||||
# if ( defined $wlanList{$mac} ) {
|
||||
if ( defined $wlanList{$mac} and !$_->{ethernet_port} and !$_->{ethernetport} ) {
|
||||
# Copes with fw>=7
|
||||
$_->{guest} = $wlanList{$mac}{is_guest} if defined $wlanList{$mac}{is_guest} && $_->{guest} eq "";
|
||||
$wlanCount++;
|
||||
@ -2364,6 +2367,13 @@ sub FRITZBOX_Readout_Run_Web($)
|
||||
$dName .= $wlanList{$mac}{speed} . " / " . $wlanList{$mac}{speed_rx} . " Mbit/s RSSI: ". $wlanList{$mac}{rssi}
|
||||
if defined $wlanList{$mac};
|
||||
$dName .= ")";
|
||||
} elsif ( $_->{ethernetport} ) {
|
||||
$dName .= " (";
|
||||
$dName .= "g" if $_->{guest};
|
||||
$dName .= "" . $_->{ethernetport};
|
||||
$dName .= ", 1 Gbit/s" if $_->{speed} eq "1000";
|
||||
$dName .= ", " . $_->{speed} . " Mbit/s" if $_->{speed} ne "1000" && $_->{speed} ne "0";
|
||||
$dName .= ")";
|
||||
}
|
||||
if ( $_->{ethernet_port} ) {
|
||||
$dName .= " (";
|
||||
@ -2492,7 +2502,7 @@ sub FRITZBOX_Readout_Run_Web($)
|
||||
if ($avmModel =~ "Box") {
|
||||
my @tr064CmdArray = (["WANDSLInterfaceConfig:1", "wandslifconfig1", "GetInfo"]);
|
||||
my @tr064Result = FRITZBOX_TR064_Cmd( $hash, 0, \@tr064CmdArray );
|
||||
if ($tr064Result[0]->{Error}) {
|
||||
if ($tr064Result[0]->{UPnPError}) {
|
||||
$strCurl = Dumper (@tr064Result);
|
||||
FRITZBOX_Log $hash, 2, "ERROR: Curl-> " . $strCurl;
|
||||
} else {
|
||||
@ -5839,7 +5849,7 @@ sub FRITZBOX_TR064_Cmd($$$)
|
||||
push @soapParams, SOAP::Data->name( $_ => $params{$_} );
|
||||
}
|
||||
|
||||
FRITZBOX_Log $hash, 4, "INFO: Perform TR-064 call - " . $logMsg;
|
||||
FRITZBOX_Log $hash, 5, "DEBUG: Perform TR-064 call - " . $logMsg;
|
||||
|
||||
my $soap = SOAP::Lite
|
||||
-> on_fault ( sub {} )
|
||||
@ -5849,7 +5859,7 @@ sub FRITZBOX_TR064_Cmd($$$)
|
||||
my $res = $soap -> call( $action => @soapParams );
|
||||
|
||||
unless( $res ) { # Transport-Error
|
||||
FRITZBOX_Log $hash, 2, "ERROR: TR064-Transport-Error: ".$soap->transport->status;
|
||||
FRITZBOX_Log $hash, 5, "DEBUG: TR064-Transport-Error: ".$soap->transport->status;
|
||||
my %errorMsg = ( "Error" => $soap->transport->status );
|
||||
push @retArray, \%errorMsg;
|
||||
$FRITZBOX_TR064pwd = undef;
|
||||
@ -5858,12 +5868,16 @@ sub FRITZBOX_TR064_Cmd($$$)
|
||||
# my $fcode = $s->faultcode; #
|
||||
# my $fstring = $s->faultstring; # also available
|
||||
# my $factor = $s->faultactor;
|
||||
|
||||
my $ecode = $res->faultdetail->{'UPnPError'}->{'errorCode'};
|
||||
my $edesc = $res->faultdetail->{'UPnPError'}->{'errorDescription'};
|
||||
FRITZBOX_Log $hash, 2, "ERROR: TR064 error $ecode:$edesc ($logMsg)";
|
||||
|
||||
FRITZBOX_Log $hash, 5, "DEBUG: TR064 error $ecode:$edesc ($logMsg)";
|
||||
|
||||
@{$cmdArray} = ();
|
||||
# my $fdetail = Dumper($res->faultdetail); # returns value of 'detail' element as string or object
|
||||
# return "Error\n".$fdetail;
|
||||
|
||||
push @retArray, $res->faultdetail;
|
||||
$FRITZBOX_TR064pwd = undef;
|
||||
}
|
||||
@ -5999,7 +6013,7 @@ sub FRITZBOX_TR064_Init ($$)
|
||||
return if AttrVal( $name, "forceTelnetConnection", 0 );
|
||||
|
||||
if ($missingModulTR064) {
|
||||
FRITZBOX_Log $hash, 2, "ERROR: Cannot use TR-064. Perl modul ".$missingModulTR064."is missing on this system. Please install.";
|
||||
FRITZBOX_Log $hash, 2, "ERROR: Cannot use TR-064. Perl modul " . $missingModulTR064 . " is missing on this system. Please install.";
|
||||
return undef;
|
||||
}
|
||||
|
||||
@ -6007,7 +6021,7 @@ sub FRITZBOX_TR064_Init ($$)
|
||||
FRITZBOX_Log $hash, 4, "INFO: Open TR-064 connection and ask for security port";
|
||||
my $s = SOAP::Lite
|
||||
-> uri('urn:dslforum-org:service:DeviceInfo:1')
|
||||
-> proxy('http://'.$host.':49000/upnp/control/deviceinfo', timeout => 10 )
|
||||
-> proxy('http://' . $host . ':49000/upnp/control/deviceinfo', timeout => 10 )
|
||||
-> getSecurityPort();
|
||||
|
||||
FRITZBOX_Log $hash, 4, "INFO: SecPort-String " . Dumper($s);
|
||||
@ -6797,7 +6811,11 @@ sub FRITZBOX_Lan_Device_Info($$$) {
|
||||
$returnStr .= " UID:" . $result->{data}->{vars}->{dev}->{UID};
|
||||
$returnStr .= " NAME:" . $result->{data}->{vars}->{dev}->{name}->{displayName};
|
||||
$returnStr .= " STATUS:" . $result->{data}->{vars}->{dev}->{netAccess}->{kisi}->{selectedRights}->{msgid};
|
||||
if ( ref ($result->{data}->{vars}->{dev}->{netAccess}->{kisi}->{selectedRights}) eq 'HASH' ) {
|
||||
$returnStr .= " ACCESS:" . $result->{data}->{vars}->{dev}->{netAccess}->{kisi}->{selectedRights}->{msgid} if defined($result->{data}->{vars}->{dev}->{netAccess}->{kisi}->{selectedRights}->{msgid});
|
||||
}
|
||||
$returnStr .= " DEVTYPE:" . $result->{data}->{vars}->{dev}->{devType};
|
||||
$returnStr .= " STATE:" . $result->{data}->{vars}->{dev}->{wlan}->{state} if defined($result->{data}->{vars}->{dev}->{wlan}->{state}) and $result->{data}->{vars}->{dev}->{devType} eq 'wlan';
|
||||
$returnStr .= " ONLINE:" . $result->{data}->{vars}->{dev}->{state};
|
||||
$returnStr .= " REALTIME:" . $result->{data}->{vars}->{dev}->{realtime}->{state} if defined($result->{data}->{vars}->{dev}->{realtime}->{state});
|
||||
return $returnStr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user