]> git.basschouten.com Git - openhab-addons.git/commitdiff
Provide basic properties for access point (#17519)
authorJacob Laursen <jacob-github@vindvejr.dk>
Mon, 7 Oct 2024 18:20:07 +0000 (20:20 +0200)
committerGitHub <noreply@github.com>
Mon, 7 Oct 2024 18:20:07 +0000 (20:20 +0200)
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/UniFiBindingConstants.java
bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/api/dto/UniFiDevice.java
bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiAccessPointThingHandler.java
bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiBaseThingHandler.java
bundles/org.openhab.binding.unifi/src/main/java/org/openhab/binding/unifi/internal/handler/UniFiThingDiscoveryService.java

index 189b6a57de3705f24cdd661cd9414e1283aa907c..69d8fdce8c6782c9a50f59cbb467875e0b24250d 100644 (file)
@@ -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";
index 1ad6420ccce40dc0fcd504060375eeaeea969991..8449fd515c0b32b63064a20ac3e77f11dcd18780 100644 (file)
@@ -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;
     }
index 419a488aad47d117ab6da57437a7bb50d887005c..eacf3fae80be1d1e704dbe35c5ae2ef457b53a33 100644 (file)
@@ -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<UniFiDevice, UniFiAccessPointThingConfig> {
 
-    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<UniFiDev
         return state;
     }
 
+    @Override
+    protected void updateProperties(final UniFiDevice device) {
+        updateProperties(Map.of( //
+                Thing.PROPERTY_MODEL_ID, device.getModel(), //
+                Thing.PROPERTY_FIRMWARE_VERSION, device.getVersion(), //
+                Thing.PROPERTY_SERIAL_NUMBER, device.getSerial()));
+    }
+
     @Override
     protected boolean handleCommand(final UniFiController controller, final UniFiDevice device,
             final ChannelUID channelUID, final Command command) throws UniFiException {
index ba8edb009367ef2b043aba4c95a370c7e35eaa8a..fb187965b2383d5ba47df779f8cd02f0965f82da 100644 (file)
@@ -132,6 +132,8 @@ public abstract class UniFiBaseThingHandler<E, C> 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<E, C> 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.
      *
index a3d4a17966c50a067693f156ab6cee114e3b0a07..cb63650ded57545c2a35d9da2ac8d6cabfc1dfe3 100644 (file)
@@ -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<String, Object> properties = Map.of(PARAMETER_WID, wlan.getId(), PARAMETER_SITE, siteName,
-                    PARAMETER_WIFI_NAME, wlan.getName());
+            final Map<String, Object> properties = Map.of(PARAMETER_WID, wlan.getId());
 
             thingDiscovered(DiscoveryResultBuilder.create(thingUID).withThingType(UniFiBindingConstants.THING_TYPE_WLAN)
                     .withBridge(bridgeUID).withRepresentationProperty(PARAMETER_WID).withTTL(TTL_SECONDS)