mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-25 14:55:55 +01:00
[tr064] fix wanBlockByIP channel and improvements to parameter handling (#9655)
- fix wanBlockByIP channel - allow comments in parameter lists - fix compiler warnings Signed-off-by: Jan N. Klug <jan.n.klug@rub.de>
This commit is contained in:
parent
270f7b645d
commit
b4b8dd2117
@ -151,6 +151,10 @@ Advanced channels appear only if the corresponding parameters are set in the Thi
|
||||
| `wanTotalBytesSent` | `Number:DataAmount` | x | Total Bytes Sent |
|
||||
|
||||
|
||||
Parameters that accept lists (e.g. `macOnline`, `wanBlockIPs`) can contain comments.
|
||||
Comments are separated from the value with a '#' (e.g. `192.168.0.77 # Daughter's iPhone`).
|
||||
The full string is used for the channel label.
|
||||
|
||||
### Channel `callList`
|
||||
|
||||
Call lists are provided for one or more days (as configured) as JSON.
|
||||
|
@ -12,7 +12,6 @@
|
||||
*/
|
||||
package org.openhab.binding.tr064.internal.config;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
@ -29,14 +28,15 @@ public class Tr064RootConfiguration extends Tr064BaseThingConfiguration {
|
||||
public String password = "";
|
||||
|
||||
/* following parameters only available in fritzbox thing */
|
||||
public List<String> tamIndices = Collections.emptyList();
|
||||
public List<String> callDeflectionIndices = Collections.emptyList();
|
||||
public List<String> missedCallDays = Collections.emptyList();
|
||||
public List<String> rejectedCallDays = Collections.emptyList();
|
||||
public List<String> inboundCallDays = Collections.emptyList();
|
||||
public List<String> outboundCallDays = Collections.emptyList();
|
||||
public List<String> callListDays = Collections.emptyList();
|
||||
public int phonebookInterval = 0;
|
||||
public List<String> tamIndices = List.of();
|
||||
public List<String> callDeflectionIndices = List.of();
|
||||
public List<String> missedCallDays = List.of();
|
||||
public List<String> rejectedCallDays = List.of();
|
||||
public List<String> inboundCallDays = List.of();
|
||||
public List<String> outboundCallDays = List.of();
|
||||
public List<String> callListDays = List.of();
|
||||
public List<String> wanBlockIPs = List.of();
|
||||
public int phonebookInterval = 600;
|
||||
|
||||
public boolean isValid() {
|
||||
return !host.isEmpty() && !user.isEmpty() && !password.isEmpty();
|
||||
|
@ -15,12 +15,7 @@ package org.openhab.binding.tr064.internal.phonebook;
|
||||
import static java.util.Comparator.comparing;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -92,19 +87,8 @@ public class PhonebookProfileFactory implements ProfileFactory, ProfileTypeProvi
|
||||
final LocalizedKey localizedKey = new LocalizedKey(profileType.getUID(),
|
||||
locale != null ? locale.toLanguageTag() : null);
|
||||
|
||||
final ProfileType cachedlocalizedProfileType = localizedProfileTypeCache.get(localizedKey);
|
||||
if (cachedlocalizedProfileType != null) {
|
||||
return cachedlocalizedProfileType;
|
||||
}
|
||||
|
||||
final ProfileType localizedProfileType = profileTypeI18nLocalizationService.createLocalizedProfileType(bundle,
|
||||
profileType, locale);
|
||||
if (localizedProfileType != null) {
|
||||
localizedProfileTypeCache.put(localizedKey, localizedProfileType);
|
||||
return localizedProfileType;
|
||||
} else {
|
||||
return profileType;
|
||||
}
|
||||
return Objects.requireNonNull(localizedProfileTypeCache.computeIfAbsent(localizedKey,
|
||||
key -> profileTypeI18nLocalizationService.createLocalizedProfileType(bundle, profileType, locale)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -54,7 +54,6 @@ import com.google.gson.GsonBuilder;
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class SOAPValueConverter {
|
||||
private static final int REQUEST_TIMEOUT = 5000; // in ms
|
||||
private final Logger logger = LoggerFactory.getLogger(SOAPValueConverter.class);
|
||||
private final HttpClient httpClient;
|
||||
|
||||
|
@ -217,7 +217,9 @@ public class Util {
|
||||
} else {
|
||||
// create a channel for each parameter
|
||||
parameters.forEach(parameter -> {
|
||||
String normalizedParameter = UIDUtils.encode(parameter);
|
||||
// remove comment: split parameter at '#', discard everything after that and remove
|
||||
// trailing spaces
|
||||
String normalizedParameter = UIDUtils.encode(parameter.split("#")[0].trim());
|
||||
ChannelUID channelUID = new ChannelUID(thing.getUID(),
|
||||
channelId + "_" + normalizedParameter);
|
||||
ChannelBuilder channelBuilder = ChannelBuilder
|
||||
|
Loading…
Reference in New Issue
Block a user