[miio] channels removal (#9237)

Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
pull/9274/head
Marcel 2020-12-06 22:18:53 -08:00 committed by GitHub
parent 7bc48a220b
commit ab3dcba5dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 7 deletions

View File

@ -107,6 +107,10 @@ public final class MiIoBindingConstants {
public static final String PROPERTY_TIMEOUT = "timeout";
public static final String PROPERTY_CLOUDSERVER = "cloudServer";
public static final Set<String> PERSISTENT_CHANNELS = Collections.unmodifiableSet(
Stream.of(CHANNEL_COMMAND, CHANNEL_RPC, CHANNEL_SSID, CHANNEL_BSSID, CHANNEL_RSSI, CHANNEL_LIFE)
.collect(Collectors.toSet()));
public static final byte[] DISCOVER_STRING = org.openhab.binding.miio.internal.Utils
.hexStringToByteArray("21310020ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
public static final int PORT = 54321;

View File

@ -411,6 +411,13 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
actions = new HashMap<>();
final MiIoBasicDevice device = this.miioDevice;
if (device != null) {
for (Channel cn : getThing().getChannels()) {
logger.trace("Channel '{}' for thing {} already exist... removing", cn.getUID(),
getThing().getUID());
if (!PERSISTENT_CHANNELS.contains(cn.getUID().getId().toString())) {
thingBuilder.withoutChannels(cn);
}
}
for (MiIoBasicChannel miChannel : device.getDevice().getChannels()) {
logger.debug("properties {}", miChannel);
if (!miChannel.getType().isEmpty()) {
@ -454,13 +461,6 @@ public class MiIoBasicHandler extends MiIoAbstractHandler {
return null;
}
ChannelUID channelUID = new ChannelUID(getThing().getUID(), channel);
// TODO: Need to understand if this harms anything. If yes, channel only to be added when not there already.
// current way allows to have no issues when channels are changing.
if (getThing().getChannel(channel) != null) {
logger.info("Channel '{}' for thing {} already exist... removing", channel, getThing().getUID());
thingBuilder.withoutChannel(new ChannelUID(getThing().getUID(), channel));
}
ChannelBuilder newChannel = ChannelBuilder.create(channelUID, dataType).withLabel(miChannel.getFriendlyName());
boolean useGeneratedChannelType = false;
if (!miChannel.getChannelType().isBlank()) {