]> git.basschouten.com Git - openhab-addons.git/commitdiff
switch to SDDP discovery (#17508)
authormlobstein <michael.lobstein@gmail.com>
Sat, 5 Oct 2024 08:54:41 +0000 (03:54 -0500)
committerGitHub <noreply@github.com>
Sat, 5 Oct 2024 08:54:41 +0000 (10:54 +0200)
Signed-off-by: Michael Lobstein <michael.lobstein@gmail.com>
bundles/org.openhab.binding.kaleidescape/README.md
bundles/org.openhab.binding.kaleidescape/src/main/feature/feature.xml
bundles/org.openhab.binding.kaleidescape/src/main/java/org/openhab/binding/kaleidescape/internal/discovery/KaleidescapeDiscoveryParticipant.java
bundles/org.openhab.binding.kaleidescape/src/main/resources/OH-INF/addon/addon.xml

index b67fc42d4e41333ae86348fb415edff891805685..9921a78179beb9d99208938f42d3770b70f4c1d8 100644 (file)
@@ -22,7 +22,7 @@ The binding supports either a TCP/IP connection or direct serial port connection
 
 ## Discovery
 
-Auto-discovery is supported for Alto and Strato components if the device can be located on the local network using UPnP.
+Auto-discovery is supported for Alto and Strato components if the device can be located on the local network using SDDP.
 Manually initiated discovery will locate all legacy Premiere line components if they are on the same IP subnet of the openHAB server.
 In the Inbox, select Search For Things and then choose the Kaleidescape Binding to initiate a discovery scan.
 
index cfe4e85e0bacb11998b844620ff184b9671caaa9..0dee2c017befccee59512e2f9b83b0ff57720f1f 100644 (file)
@@ -5,7 +5,7 @@
        <feature name="openhab-binding-kaleidescape" description="Kaleidescape Binding" version="${project.version}">
                <feature>openhab-runtime-base</feature>
                <feature>openhab-transport-serial</feature>
-               <feature>openhab-transport-upnp</feature>
+               <feature>openhab-core-config-discovery-sddp</feature>
                <bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.kaleidescape/${project.version}</bundle>
        </feature>
 </features>
index ef1d0d45fab7b1731a75eeb285517146ded839b4..d5a76a0cfdf57713eea413e89984a604c40dfc54 100644 (file)
@@ -20,10 +20,10 @@ import java.util.Set;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
-import org.jupnp.model.meta.RemoteDevice;
 import org.openhab.core.config.discovery.DiscoveryResult;
 import org.openhab.core.config.discovery.DiscoveryResultBuilder;
-import org.openhab.core.config.discovery.upnp.UpnpDiscoveryParticipant;
+import org.openhab.core.config.discovery.sddp.SddpDevice;
+import org.openhab.core.config.discovery.sddp.SddpDiscoveryParticipant;
 import org.openhab.core.thing.ThingTypeUID;
 import org.openhab.core.thing.ThingUID;
 import org.osgi.service.component.annotations.Component;
@@ -31,14 +31,14 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * The {@link KaleidescapeDiscoveryParticipant} class discovers Strato/Encore line components automatically via UPnP.
+ * The {@link KaleidescapeDiscoveryParticipant} class discovers Strato/Encore line components automatically via SDDP.
  *
  * @author Michael Lobstein - Initial contribution
  *
  */
 @NonNullByDefault
 @Component(immediate = true)
-public class KaleidescapeDiscoveryParticipant implements UpnpDiscoveryParticipant {
+public class KaleidescapeDiscoveryParticipant implements SddpDiscoveryParticipant {
     private final Logger logger = LoggerFactory.getLogger(KaleidescapeDiscoveryParticipant.class);
 
     private static final String MANUFACTURER = "Kaleidescape";
@@ -53,26 +53,19 @@ public class KaleidescapeDiscoveryParticipant implements UpnpDiscoveryParticipan
     }
 
     @Override
-    public @Nullable DiscoveryResult createResult(RemoteDevice device) {
+    public @Nullable DiscoveryResult createResult(SddpDevice device) {
         final ThingUID uid = getThingUID(device);
         if (uid != null) {
             final Map<String, Object> properties = new HashMap<>(3);
-            final String label;
-
-            if (device.getDetails().getFriendlyName() != null && !device.getDetails().getFriendlyName().isBlank()) {
-                label = device.getDetails().getFriendlyName();
-            } else {
-                label = device.getDetails().getModelDetails().getModelName();
-            }
 
             properties.put(PROPERTY_UUID, uid.getId());
-            properties.put(PROPERTY_HOST_NAME, device.getIdentity().getDescriptorURL().getHost());
+            properties.put(PROPERTY_HOST_NAME, device.ipAddress);
             properties.put(PROPERTY_PORT_NUM, DEFAULT_API_PORT);
 
             final DiscoveryResult result = DiscoveryResultBuilder.create(uid).withProperties(properties)
-                    .withRepresentationProperty(PROPERTY_UUID).withLabel(label).build();
+                    .withRepresentationProperty(PROPERTY_UUID).withLabel(device.model).build();
 
-            logger.debug("Created a DiscoveryResult for device '{}' with UID '{}'", label, uid.getId());
+            logger.debug("Created a DiscoveryResult for device '{}' with UID '{}'", device.model, uid.getId());
             return result;
         } else {
             return null;
@@ -80,24 +73,20 @@ public class KaleidescapeDiscoveryParticipant implements UpnpDiscoveryParticipan
     }
 
     @Override
-    public @Nullable ThingUID getThingUID(RemoteDevice device) {
-        if (device.getDetails().getManufacturerDetails().getManufacturer() != null
-                && device.getDetails().getModelDetails().getModelName() != null
-                && device.getDetails().getManufacturerDetails().getManufacturer().startsWith(MANUFACTURER)) {
-            final String modelName = device.getDetails().getModelDetails().getModelName();
-            final String id = device.getIdentity().getUdn().getIdentifierString().replace(":", EMPTY);
+    public @Nullable ThingUID getThingUID(SddpDevice device) {
+        if (device.manufacturer.startsWith(MANUFACTURER)) {
+            final String id = device.macAddress;
 
-            logger.debug("Kaleidescape {} with id {} found at {}", modelName, id,
-                    device.getIdentity().getDescriptorURL().getHost());
+            logger.debug("Kaleidescape {} with id {} found at {}", device.model, id, device.host);
 
             if (id.isBlank()) {
                 logger.debug("Invalid UDN for Kaleidescape device: {}", device.toString());
                 return null;
             }
 
-            if (modelName.contains(ALTO)) {
+            if (device.model.contains(ALTO)) {
                 return new ThingUID(THING_TYPE_ALTO, id);
-            } else if (modelName.contains(STRATO)) {
+            } else if (device.model.contains(STRATO)) {
                 return new ThingUID(THING_TYPE_STRATO, id);
             }
         }
index 6bf41b4363eaf68ec85435485f248db9d02b5de3..cd8b2ce4f89efc99f51b8ee22423f73f54463667 100644 (file)
 
        <discovery-methods>
                <discovery-method>
-                       <service-type>upnp</service-type>
+                       <service-type>sddp</service-type>
                        <match-properties>
                                <match-property>
                                        <name>manufacturer</name>
-                                       <regex>(?i)Kaleidescape</regex>
-                               </match-property>
-                               <match-property>
-                                       <name>deviceType</name>
-                                       <regex>.*Basic.*</regex>
+                                       <regex>(?i).*kaleidescape.*</regex>
                                </match-property>
                        </match-properties>
                </discovery-method>