Skip to content

Commit

Permalink
[miio] channels removal (openhab#9237)
Browse files Browse the repository at this point in the history
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
Signed-off-by: Christian Grasser <info@christiangrasser.at>
  • Loading branch information
marcelrv authored and Christian Grasser committed Dec 7, 2020
1 parent a8170c0 commit eead780
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,13 @@ private boolean buildChannelStructure(String deviceName) {
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()) {
Expand Down Expand Up @@ -454,13 +461,6 @@ private boolean buildChannelStructure(String deviceName) {
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()) {
Expand Down

0 comments on commit eead780

Please sign in to comment.