]> git.basschouten.com Git - openhab-addons.git/commitdiff
[OmniLink] Fix zone bypass/restore commands (#11005)
authorEthan Dye <mrtops03@gmail.com>
Sat, 17 Jul 2021 06:54:34 +0000 (00:54 -0600)
committerGitHub <noreply@github.com>
Sat, 17 Jul 2021 06:54:34 +0000 (08:54 +0200)
* Fix zone bypass/restore commands
* Name variables using openHAB guidelines

Signed-off-by: Ethan Dye <mrtops03@gmail.com>
bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AbstractOmnilinkHandler.java
bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AudioSourceHandler.java
bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/ZoneHandler.java

index 587b253dc6b3859edd04f2424a4baf21bc3bb704..5374ad94828bacb14035400cd2c8f68d78b2a690 100644 (file)
@@ -118,6 +118,11 @@ public abstract class AbstractOmnilinkHandler extends BaseThingHandler {
      * @return Configured area number for a thing.
      */
     protected int getAreaNumber() {
-        return ((Number) getThing().getConfiguration().get(THING_PROPERTIES_AREA)).intValue();
+        String areaNumber = getThing().getProperties().get(THING_PROPERTIES_AREA);
+        if (areaNumber != null) {
+            return Integer.valueOf(areaNumber);
+        } else {
+            return -1;
+        }
     }
 }
index b591bc685689c5dcfbc934f8f9e8923dca065e32..bec9db81d23573b6b472a77b8c631d7e089d2f60 100644 (file)
@@ -50,7 +50,7 @@ import com.digitaldan.jomnilinkII.OmniUnknownMessageTypeException;
 @NonNullByDefault
 public class AudioSourceHandler extends AbstractOmnilinkHandler {
     private final Logger logger = LoggerFactory.getLogger(AudioSourceHandler.class);
-    private final int POLL_DELAY_SECONDS = 5;
+    private final int pollDelaySeconds = 5;
     private final int thingID = getThingNumber();
     private @Nullable ScheduledFuture<?> scheduledPolling = null;
     public @Nullable String number;
@@ -104,7 +104,7 @@ public class AudioSourceHandler extends AbstractOmnilinkHandler {
     private synchronized void schedulePolling() {
         cancelPolling();
         logger.debug("Scheduling polling for Audio Source: {}", thingID);
-        scheduledPolling = super.scheduler.scheduleWithFixedDelay(this::pollAudioSource, 0, POLL_DELAY_SECONDS,
+        scheduledPolling = super.scheduler.scheduleWithFixedDelay(this::pollAudioSource, 0, pollDelaySeconds,
                 TimeUnit.SECONDS);
     }
 
index 8d07e9228716d98947ca102af8ce862cad4b7485..be9e6b2b3528ebe36746a9ae1f88f34c1756ffc9 100644 (file)
@@ -125,7 +125,6 @@ public class ZoneHandler extends AbstractOmnilinkStatusHandler<ExtendedZoneStatu
             default:
                 mode = -1;
         }
-        int areaNumber = getAreaNumber();
         logger.debug("mode {} on zone {} with code {}", mode, thingID, command.toFullString());
         char[] code = command.toFullString().toCharArray();
         if (code.length != 4) {
@@ -134,25 +133,30 @@ public class ZoneHandler extends AbstractOmnilinkStatusHandler<ExtendedZoneStatu
             try {
                 final OmnilinkBridgeHandler bridge = getOmnilinkBridgeHandler();
                 if (bridge != null) {
-                    SecurityCodeValidation codeValidation = bridge.reqSecurityCodeValidation(areaNumber,
-                            Character.getNumericValue(code[0]), Character.getNumericValue(code[1]),
-                            Character.getNumericValue(code[2]), Character.getNumericValue(code[3]));
-                    /*
-                     * 0 Invalid code
-                     * 1 Master
-                     * 2 Manager
-                     * 3 User
-                     */
-                    logger.debug("User code number: {} level: {}", codeValidation.getCodeNumber(),
-                            codeValidation.getAuthorityLevel());
-                    /*
-                     * Valid user code number are 1-99, 251 is duress code, 0 means code does not exist
-                     */
-                    if ((codeValidation.getCodeNumber() > 0 && codeValidation.getCodeNumber() <= 99)
-                            && codeValidation.getAuthorityLevel() > 0) {
-                        sendOmnilinkCommand(mode, codeValidation.getCodeNumber(), thingID);
+                    int areaNumber = getAreaNumber();
+                    if (areaNumber == -1) {
+                        logger.warn("Could not identify area, canceling bypass/restore command!");
                     } else {
-                        logger.warn("System reported an invalid code");
+                        SecurityCodeValidation codeValidation = bridge.reqSecurityCodeValidation(getAreaNumber(),
+                                Character.getNumericValue(code[0]), Character.getNumericValue(code[1]),
+                                Character.getNumericValue(code[2]), Character.getNumericValue(code[3]));
+                        /*
+                         * 0 Invalid code
+                         * 1 Master
+                         * 2 Manager
+                         * 3 User
+                         */
+                        logger.debug("User code number: {} level: {}", codeValidation.getCodeNumber(),
+                                codeValidation.getAuthorityLevel());
+                        /*
+                         * Valid user code number are 1-99, 251 is duress code, 0 means code does not exist
+                         */
+                        if ((codeValidation.getCodeNumber() > 0 && codeValidation.getCodeNumber() <= 99)
+                                && codeValidation.getAuthorityLevel() > 0) {
+                            sendOmnilinkCommand(mode, codeValidation.getCodeNumber(), thingID);
+                        } else {
+                            logger.warn("System reported an invalid code!");
+                        }
                     }
                 } else {
                     logger.debug("Received null bridge while sending zone command!");