]> git.basschouten.com Git - openhab-addons.git/commitdiff
[samsungtv] WebSocket TVs stay UNKNOWN until first power-on #9764 (#9923)
authormorph166955 <53797132+morph166955@users.noreply.github.com>
Mon, 25 Jan 2021 22:19:13 +0000 (16:19 -0600)
committerGitHub <noreply@github.com>
Mon, 25 Jan 2021 22:19:13 +0000 (23:19 +0100)
Fixed #9764

Signed-off-by: morph166955 <rosenblumb@gmail.com>
bundles/org.openhab.binding.samsungtv/src/main/java/org/openhab/binding/samsungtv/internal/handler/SamsungTvHandler.java

index 8c09e86d019d94df95ea1d4ccad3cb2dc0243606..267e210001a7899454947a85717fafac216a6132 100644 (file)
@@ -239,14 +239,26 @@ public class SamsungTvHandler extends BaseThingHandler implements RegistryListen
     private void checkAndCreateServices() {
         logger.debug("Check and create missing UPnP services");
 
+        boolean isOnline = false;
+
         for (Device<?, ?, ?> device : upnpService.getRegistry().getDevices()) {
-            createService((RemoteDevice) device);
+            if (createService((RemoteDevice) device) == true) {
+                isOnline = true;
+            }
+        }
+
+        if (isOnline == true) {
+            logger.debug("Device was online");
+            putOnline();
+        } else {
+            logger.debug("Device was NOT online");
+            putOffline();
         }
 
         checkCreateManualConnection();
     }
 
-    private synchronized void createService(RemoteDevice device) {
+    private synchronized boolean createService(RemoteDevice device) {
         if (configuration.hostName != null
                 && configuration.hostName.equals(device.getIdentity().getDescriptorURL().getHost())) {
             String modelName = device.getDetails().getModelDetails().getModelName();
@@ -275,8 +287,9 @@ public class SamsungTvHandler extends BaseThingHandler implements RegistryListen
                 logger.debug("Service rediscovered, clearing caches: {}, {} ({})", modelName, type, udn);
                 existingService.clearCache();
             }
-            putOnline();
+            return true;
         }
+        return false;
     }
 
     private @Nullable SamsungTvService findServiceInstance(String serviceName) {