[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 |
|
| `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`
|
### Channel `callList`
|
||||||
|
|
||||||
Call lists are provided for one or more days (as configured) as JSON.
|
Call lists are provided for one or more days (as configured) as JSON.
|
||||||
|
|||||||
@ -12,7 +12,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openhab.binding.tr064.internal.config;
|
package org.openhab.binding.tr064.internal.config;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||||
@ -29,14 +28,15 @@ public class Tr064RootConfiguration extends Tr064BaseThingConfiguration {
|
|||||||
public String password = "";
|
public String password = "";
|
||||||
|
|
||||||
/* following parameters only available in fritzbox thing */
|
/* following parameters only available in fritzbox thing */
|
||||||
public List<String> tamIndices = Collections.emptyList();
|
public List<String> tamIndices = List.of();
|
||||||
public List<String> callDeflectionIndices = Collections.emptyList();
|
public List<String> callDeflectionIndices = List.of();
|
||||||
public List<String> missedCallDays = Collections.emptyList();
|
public List<String> missedCallDays = List.of();
|
||||||
public List<String> rejectedCallDays = Collections.emptyList();
|
public List<String> rejectedCallDays = List.of();
|
||||||
public List<String> inboundCallDays = Collections.emptyList();
|
public List<String> inboundCallDays = List.of();
|
||||||
public List<String> outboundCallDays = Collections.emptyList();
|
public List<String> outboundCallDays = List.of();
|
||||||
public List<String> callListDays = Collections.emptyList();
|
public List<String> callListDays = List.of();
|
||||||
public int phonebookInterval = 0;
|
public List<String> wanBlockIPs = List.of();
|
||||||
|
public int phonebookInterval = 600;
|
||||||
|
|
||||||
public boolean isValid() {
|
public boolean isValid() {
|
||||||
return !host.isEmpty() && !user.isEmpty() && !password.isEmpty();
|
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 static java.util.Comparator.comparing;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -92,19 +87,8 @@ public class PhonebookProfileFactory implements ProfileFactory, ProfileTypeProvi
|
|||||||
final LocalizedKey localizedKey = new LocalizedKey(profileType.getUID(),
|
final LocalizedKey localizedKey = new LocalizedKey(profileType.getUID(),
|
||||||
locale != null ? locale.toLanguageTag() : null);
|
locale != null ? locale.toLanguageTag() : null);
|
||||||
|
|
||||||
final ProfileType cachedlocalizedProfileType = localizedProfileTypeCache.get(localizedKey);
|
return Objects.requireNonNull(localizedProfileTypeCache.computeIfAbsent(localizedKey,
|
||||||
if (cachedlocalizedProfileType != null) {
|
key -> profileTypeI18nLocalizationService.createLocalizedProfileType(bundle, profileType, locale)));
|
||||||
return cachedlocalizedProfileType;
|
|
||||||
}
|
|
||||||
|
|
||||||
final ProfileType localizedProfileType = profileTypeI18nLocalizationService.createLocalizedProfileType(bundle,
|
|
||||||
profileType, locale);
|
|
||||||
if (localizedProfileType != null) {
|
|
||||||
localizedProfileTypeCache.put(localizedKey, localizedProfileType);
|
|
||||||
return localizedProfileType;
|
|
||||||
} else {
|
|
||||||
return profileType;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -54,7 +54,6 @@ import com.google.gson.GsonBuilder;
|
|||||||
*/
|
*/
|
||||||
@NonNullByDefault
|
@NonNullByDefault
|
||||||
public class SOAPValueConverter {
|
public class SOAPValueConverter {
|
||||||
private static final int REQUEST_TIMEOUT = 5000; // in ms
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(SOAPValueConverter.class);
|
private final Logger logger = LoggerFactory.getLogger(SOAPValueConverter.class);
|
||||||
private final HttpClient httpClient;
|
private final HttpClient httpClient;
|
||||||
|
|
||||||
|
|||||||
@ -217,7 +217,9 @@ public class Util {
|
|||||||
} else {
|
} else {
|
||||||
// create a channel for each parameter
|
// create a channel for each parameter
|
||||||
parameters.forEach(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(),
|
ChannelUID channelUID = new ChannelUID(thing.getUID(),
|
||||||
channelId + "_" + normalizedParameter);
|
channelId + "_" + normalizedParameter);
|
||||||
ChannelBuilder channelBuilder = ChannelBuilder
|
ChannelBuilder channelBuilder = ChannelBuilder
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user