2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 16:56:54 +00:00

FRITZBOX: API-length error for lan and wlan devices fixed

git-svn-id: https://svn.fhem.de/fhem/trunk@13243 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tupol 2017-01-26 18:29:16 +00:00
parent b8e320291d
commit 50ee953480

View File

@ -1334,29 +1334,46 @@ sub FRITZBOX_Readout_Run_Web($)
if ( ref $result->{wlanList} ne 'ARRAY' ) { if ( ref $result->{wlanList} ne 'ARRAY' ) {
FRITZBOX_Log $hash, 4, "Recognized query answer of firmware >= 6.69"; FRITZBOX_Log $hash, 4, "Recognized query answer of firmware >= 6.69";
my $result2; my $result2;
my $newQueryPart;
# gets WLAN speed for fw>=6.69 # gets WLAN speed for fw>=6.69
$queryStr=""; $queryStr="";
foreach ( @{ $result->{wlanListNew} } ) { foreach ( @{ $result->{wlanListNew} } ) {
$queryStr .= "&".$_->{_node}."=wlan:settings/".$_->{_node}."/speed_rx" $newQueryPart = "&".$_->{_node}."=wlan:settings/".$_->{_node}."/speed_rx";
if length($queryStr) < 8190 ; if (length($queryStr.$newQueryPart) < 4050) {
} $queryStr .= $newQueryPart;
my $result2 = FRITZBOX_Web_Query( $hash, $queryStr ); }
$result->{wlanList} = $result->{wlanListNew}; else {
foreach ( @{ $result->{wlanList} } ) { $result2 = FRITZBOX_Web_Query( $hash, $queryStr );
$_->{speed_rx} = $result2->{ $_->{_node} }; %{$result} = ( %{$result}, %{$result2 } );
$queryStr = $newQueryPart;
}
} }
# gets LAN-Port for fw>=6.69 # gets LAN-Port for fw>=6.69
$queryStr="";
foreach ( @{ $result->{lanDeviceNew} } ) { foreach ( @{ $result->{lanDeviceNew} } ) {
$queryStr .= "&".$_->{_node}."=landevice:settings/".$_->{_node}."/ethernet_port" $newQueryPart = "&".$_->{_node}."=landevice:settings/".$_->{_node}."/ethernet_port";
if length($queryStr) < 8190 ; if (length($queryStr.$newQueryPart) < 4050) {
$queryStr .= $newQueryPart;
}
else {
$result2 = FRITZBOX_Web_Query( $hash, $queryStr );
%{$result} = ( %{$result}, %{$result2 } );
$queryStr = $newQueryPart;
}
} }
$result2 = FRITZBOX_Web_Query( $hash, $queryStr ); $result2 = FRITZBOX_Web_Query( $hash, $queryStr );
%{$result} = ( %{$result}, %{$result2 } );
$result->{wlanList} = $result->{wlanListNew};
foreach ( @{ $result->{wlanList} } ) {
$_->{speed_rx} = $result->{ $_->{_node} };
}
$result->{lanDevice} = $result->{lanDeviceNew}; $result->{lanDevice} = $result->{lanDeviceNew};
foreach ( @{ $result->{lanDevice} } ) { foreach ( @{ $result->{lanDevice} } ) {
$_->{ethernet_port} = $result2->{ $_->{_node} }; $_->{ethernet_port} = $result->{ $_->{_node} };
} }
# gets userProfil-Filter_UID for fw>=6.69 # gets userProfil-Filter_UID for fw>=6.69
@ -1390,9 +1407,6 @@ sub FRITZBOX_Readout_Run_Web($)
} }
} }
FRITZBOX_Readout_Add_Reading $hash, \@roReadings, "fhem->sid", $result->{sid}; FRITZBOX_Readout_Add_Reading $hash, \@roReadings, "fhem->sid", $result->{sid};
FRITZBOX_Readout_Add_Reading $hash, \@roReadings, "fhem->sidTime", time(); FRITZBOX_Readout_Add_Reading $hash, \@roReadings, "fhem->sidTime", time();
@ -4564,7 +4578,7 @@ sub FRITZBOX_Web_Query($$@)
FRITZBOX_Log $hash, 5, "Request data via API luaQuery."; FRITZBOX_Log $hash, 5, "Request data via API luaQuery.";
my $host = $hash->{HOST}; my $host = $hash->{HOST};
my $url = 'http://' . $host . '/query.lua?sid=' . $sid . $queryStr; my $url = 'http://' . $host . '/query.lua?sid=' . $sid . $queryStr;
# FRITZBOX_Log $hash, 5, "URL: $url"; #FRITZBOX_Log $hash, 3, "URL: $url";
my $agent = LWP::UserAgent->new( env_proxy => 1, keep_alive => 1, protocols_allowed => ['http'], timeout => 180); my $agent = LWP::UserAgent->new( env_proxy => 1, keep_alive => 1, protocols_allowed => ['http'], timeout => 180);
my $response = $agent->get ( $url ); my $response = $agent->get ( $url );