From e6b372c0532e6c829a20f93b35988d437f1aa786 Mon Sep 17 00:00:00 2001 From: Jacob Laursen Date: Mon, 7 Oct 2024 20:20:07 +0200 Subject: [PATCH] Provide basic properties for access point (#17519) Signed-off-by: Jacob Laursen --- .../unifi/internal/UniFiBindingConstants.java | 1 - .../unifi/internal/api/dto/UniFiDevice.java | 12 ++++++++++++ .../handler/UniFiAccessPointThingHandler.java | 14 ++++++++++---- .../internal/handler/UniFiBaseThingHandler.java | 11 +++++++++++ .../handler/UniFiThingDiscoveryService.java | 5 +---- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/UniFiBindingConstants.java b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/UniFiBindingConstants.java index 189b6a57de..69d8fdce8c 100644 --- a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/UniFiBindingConstants.java +++ b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/UniFiBindingConstants.java @@ -116,7 +116,6 @@ public final class UniFiBindingConstants { public static final String PARAMETER_VOUCHER_DATA_QUOTA = "voucherDataQuota"; public static final String PARAMETER_PORT_NUMBER = "portNumber"; public static final String PARAMETER_MAC_ADDRESS = "macAddress"; - public static final String PARAMETER_WIFI_NAME = "wifi"; // UniFi device types public static final String DEVICE_TYPE_UAP = "uap"; diff --git a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/api/dto/UniFiDevice.java b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/api/dto/UniFiDevice.java index 1ad6420ccc..8449fd515c 100644 --- a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/api/dto/UniFiDevice.java +++ b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/api/dto/UniFiDevice.java @@ -38,6 +38,10 @@ public class UniFiDevice implements HasId { private String model; + private String version; + + private String serial; + private String type; private String name; @@ -67,6 +71,14 @@ public class UniFiDevice implements HasId { return model; } + public String getVersion() { + return version; + } + + public String getSerial() { + return serial; + } + public String getName() { return name == null || name.isBlank() ? mac : name; } diff --git a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiAccessPointThingHandler.java b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiAccessPointThingHandler.java index 419a488aad..eacf3fae80 100644 --- a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiAccessPointThingHandler.java +++ b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiAccessPointThingHandler.java @@ -15,6 +15,8 @@ package org.openhab.binding.unifi.internal.handler; import static org.openhab.binding.unifi.internal.UniFiBindingConstants.CHANNEL_AP_ENABLE; import static org.openhab.binding.unifi.internal.UniFiBindingConstants.DEVICE_TYPE_UAP; +import java.util.Map; + import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.unifi.internal.UniFiAccessPointThingConfig; @@ -30,8 +32,6 @@ import org.openhab.core.thing.ThingStatus; import org.openhab.core.thing.ThingStatusDetail; import org.openhab.core.types.Command; import org.openhab.core.types.State; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * An access point managed by the UniFi controller software. @@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory; @NonNullByDefault public class UniFiAccessPointThingHandler extends UniFiBaseThingHandler { - private final Logger logger = LoggerFactory.getLogger(UniFiAccessPointThingHandler.class); - private UniFiAccessPointThingConfig config = new UniFiAccessPointThingConfig(); public UniFiAccessPointThingHandler(final Thing thing) { @@ -92,6 +90,14 @@ public class UniFiAccessPointThingHandler extends UniFiBaseThingHandler extends BaseThingHandler { final @Nullable E entity = getEntity(); getThing().getChannels().forEach(channel -> updateState(entity, channel.getUID())); + + updateProperties(entity); } } @@ -183,6 +185,15 @@ public abstract class UniFiBaseThingHandler extends BaseThingHandler { */ protected abstract State getChannelState(E entity, String channelId); + /** + * Updates relevant Thing properties from the UniFi entity object. + * Default implementation does not update any properties. + * + * @param entity UniFi entity object to get the properties information from + */ + protected void updateProperties(E entity) { + } + /** * Send the given command to the UniFi controller. * diff --git a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiThingDiscoveryService.java b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiThingDiscoveryService.java index a3d4a17966..cb63650ded 100644 --- a/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiThingDiscoveryService.java +++ b/bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiThingDiscoveryService.java @@ -19,7 +19,6 @@ import static org.openhab.binding.unifi.internal.UniFiBindingConstants.PARAMETER import static org.openhab.binding.unifi.internal.UniFiBindingConstants.PARAMETER_SID; import static org.openhab.binding.unifi.internal.UniFiBindingConstants.PARAMETER_SITE; import static org.openhab.binding.unifi.internal.UniFiBindingConstants.PARAMETER_WID; -import static org.openhab.binding.unifi.internal.UniFiBindingConstants.PARAMETER_WIFI_NAME; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -107,9 +106,7 @@ public class UniFiThingDiscoveryService extends AbstractThingHandlerDiscoverySer for (final UniFiWlan wlan : cache.getWlans()) { final ThingUID thingUID = new ThingUID(UniFiBindingConstants.THING_TYPE_WLAN, bridgeUID, stripIdShort(wlan.getId())); - final String siteName = wlan.getSite() == null ? "" : wlan.getSite().getName(); - final Map properties = Map.of(PARAMETER_WID, wlan.getId(), PARAMETER_SITE, siteName, - PARAMETER_WIFI_NAME, wlan.getName()); + final Map properties = Map.of(PARAMETER_WID, wlan.getId()); thingDiscovered(DiscoveryResultBuilder.create(thingUID).withThingType(UniFiBindingConstants.THING_TYPE_WLAN) .withBridge(bridgeUID).withRepresentationProperty(PARAMETER_WID).withTTL(TTL_SECONDS) -- 2.47.3