mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 09:16:53 +00:00
74_Unifi: fixed reading-Update for disconnected clients
git-svn-id: https://svn.fhem.de/fhem/trunk@19196 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
b91fc9eff4
commit
0b1249db12
@ -56,9 +56,11 @@
|
|||||||
# - fixed: 74_Unifi: fixed createVoucher and (un-)blockClient for UC-V5.10
|
# - fixed: 74_Unifi: fixed createVoucher and (un-)blockClient for UC-V5.10
|
||||||
# V 3.2.6
|
# V 3.2.6
|
||||||
# - fixed: 74_Unifi: fixed locate/restartAP and disconnectClient for UC-V5.10
|
# - fixed: 74_Unifi: fixed locate/restartAP and disconnectClient for UC-V5.10
|
||||||
|
# V 3.2.7
|
||||||
|
# - fixed: 74_Unifi: fixed reading-Update for disconnected clients
|
||||||
|
|
||||||
package main;
|
package main;
|
||||||
my $version="3.2.6";
|
my $version="3.2.7";
|
||||||
# Default für clientRedings setzen. Die Readings waren der Standard vor Einführung des Attributes customClientReadings.
|
# Default für clientRedings setzen. Die Readings waren der Standard vor Einführung des Attributes customClientReadings.
|
||||||
# Eine Änderung hat Auswirkungen auf (alte) Moduldefinitionen ohne dieses Attribut.
|
# Eine Änderung hat Auswirkungen auf (alte) Moduldefinitionen ohne dieses Attribut.
|
||||||
my $defaultClientReadings=".:^accesspoint|^essid|^hostname|^last_seen|^snr|^uptime"; #ist wegen snr vs rssi nur halb korrekt, wird aber auch nicht wirklich verwendet ;-)
|
my $defaultClientReadings=".:^accesspoint|^essid|^hostname|^last_seen|^snr|^uptime"; #ist wegen snr vs rssi nur halb korrekt, wird aber auch nicht wirklich verwendet ;-)
|
||||||
@ -1324,40 +1326,44 @@ sub Unifi_SetClientReadings($) {
|
|||||||
$newClients.=$sep.$clientName;
|
$newClients.=$sep.$clientName;
|
||||||
$sep=",";
|
$sep=",";
|
||||||
}
|
}
|
||||||
readingsBulkUpdate($hash,$clientName,'connected');
|
readingsBulkUpdate($hash,$clientName,'connected');
|
||||||
|
}
|
||||||
# altes Standardverhalten kann man auch ohne RegEx-Auswertungen beibehalten
|
elsif (defined($hash->{READINGS}->{$clientName}) && $hash->{READINGS}->{$clientName}->{VAL} ne 'disconnected') {
|
||||||
if(AttrVal($name,"customClientReadings",$defaultClientReadings) eq $defaultClientReadings){
|
Log3 $name, 5, "$name ($self) - Client '$clientName' previously connected is now disconnected.";
|
||||||
readingsBulkUpdate($hash,$clientName."_hostname",(defined $clientRef->{hostname}) ? $clientRef->{hostname} : (defined $clientRef->{ip}) ? $clientRef->{ip} : 'Unknown');
|
readingsBulkUpdate($hash,$clientName,'disconnected');
|
||||||
readingsBulkUpdate($hash,$clientName."_last_seen",strftime "%Y-%m-%d %H:%M:%S",localtime($clientRef->{last_seen}));
|
}
|
||||||
readingsBulkUpdate($hash,$clientName."_uptime",$clientRef->{uptime});
|
|
||||||
readingsBulkUpdate($hash,$clientName."_snr",$clientRef->{rssi});
|
# altes Standardverhalten kann man auch ohne RegEx-Auswertungen beibehalten
|
||||||
# Da essid auch im Readingnamen bei WLAN verwendet wird, wird aus Konsistenzgründen hier beim ReadingValue ebenfalls makeReadingName() verwendet.
|
if(AttrVal($name,"customClientReadings",$defaultClientReadings) eq $defaultClientReadings){
|
||||||
readingsBulkUpdate($hash,$clientName."_essid",makeReadingName($clientRef->{essid}));
|
readingsBulkUpdate($hash,$clientName."_hostname",(defined $clientRef->{hostname}) ? $clientRef->{hostname} : (defined $clientRef->{ip}) ? $clientRef->{ip} : 'Unknown');
|
||||||
readingsBulkUpdate($hash,$clientName."_accesspoint",$clientRef->{accesspoint});
|
readingsBulkUpdate($hash,$clientName."_last_seen",strftime "%Y-%m-%d %H:%M:%S",localtime($clientRef->{last_seen}));
|
||||||
}
|
readingsBulkUpdate($hash,$clientName."_uptime",$clientRef->{uptime});
|
||||||
else{ # Auswerten des Attribute customClientReadings
|
readingsBulkUpdate($hash,$clientName."_snr",$clientRef->{rssi});
|
||||||
for my $customClientReadingsPart (keys %{$hash->{unifi}->{customClientReadings}->{parts}}) {
|
# Da essid auch im Readingnamen bei WLAN verwendet wird, wird aus Konsistenzgründen hier beim ReadingValue ebenfalls makeReadingName() verwendet.
|
||||||
my $reName = "";
|
readingsBulkUpdate($hash,$clientName."_essid",makeReadingName($clientRef->{essid}));
|
||||||
my $nameRegEx=$hash->{unifi}->{customClientReadings}->{parts}->{$customClientReadingsPart}->{nameRegEx};
|
readingsBulkUpdate($hash,$clientName."_accesspoint",$clientRef->{accesspoint});
|
||||||
eval { $reName = qr/$nameRegEx/; };
|
}
|
||||||
if ($@){
|
else{ # Auswerten des Attribute customClientReadings
|
||||||
Log3 $name, 2, "$name ($self) - Wrong RegEx (".$nameRegEx.") in name-part in attribute customClientReadings!";
|
for my $customClientReadingsPart (keys %{$hash->{unifi}->{customClientReadings}->{parts}}) {
|
||||||
}
|
my $reName = "";
|
||||||
else{
|
my $nameRegEx=$hash->{unifi}->{customClientReadings}->{parts}->{$customClientReadingsPart}->{nameRegEx};
|
||||||
if($clientName =~ m/$reName/){ #matched der ClientName?
|
eval { $reName = qr/$nameRegEx/; };
|
||||||
my $reReading = "";
|
if ($@){
|
||||||
my $readingRegEx=$hash->{unifi}->{customClientReadings}->{parts}->{$customClientReadingsPart}->{ReadingRegEx};
|
Log3 $name, 2, "$name ($self) - Wrong RegEx (".$nameRegEx.") in name-part in attribute customClientReadings!";
|
||||||
eval { $reReading = qr/($readingRegEx)/; };
|
}
|
||||||
if ($@){
|
else{
|
||||||
Log3 $name, 2, "$name ($self) - Wrong RegEx (".$readingRegEx.") in reading-part in attribute customClientReadings!";
|
if($clientName =~ m/$reName/){ #matched der ClientName?
|
||||||
}
|
my $reReading = "";
|
||||||
else{
|
my $readingRegEx=$hash->{unifi}->{customClientReadings}->{parts}->{$customClientReadingsPart}->{ReadingRegEx};
|
||||||
for my $readingName (sort keys %{$clientRef }) {
|
eval { $reReading = qr/($readingRegEx)/; };
|
||||||
if($readingName =~ m/$reReading/){ #matched der ReadingName?
|
if ($@){
|
||||||
my $readingData = ((defined($clientRef->{$readingName})) ? $clientRef->{$readingName} : '');
|
Log3 $name, 2, "$name ($self) - Wrong RegEx (".$readingRegEx.") in reading-part in attribute customClientReadings!";
|
||||||
readingsBulkUpdate($hash,$clientName."_".$readingName,$readingData);
|
}
|
||||||
}
|
else{
|
||||||
|
for my $readingName (sort keys %{$clientRef }) {
|
||||||
|
if($readingName =~ m/$reReading/){ #matched der ReadingName?
|
||||||
|
my $readingData = ((defined($clientRef->{$readingName})) ? $clientRef->{$readingName} : '');
|
||||||
|
readingsBulkUpdate($hash,$clientName."_".$readingName,$readingData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1365,10 +1371,6 @@ sub Unifi_SetClientReadings($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elsif (defined($hash->{READINGS}->{$clientName}) && $hash->{READINGS}->{$clientName}->{VAL} ne 'disconnected') {
|
|
||||||
Log3 $name, 5, "$name ($self) - Client '$clientName' previously connected is now disconnected.";
|
|
||||||
readingsBulkUpdate($hash,$clientName,'disconnected');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
readingsBulkUpdate($hash,"-UC_newClients",$newClients);
|
readingsBulkUpdate($hash,"-UC_newClients",$newClients);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user