From 72ca51ea60da9a9de234c29b0ca521e2c39b9213 Mon Sep 17 00:00:00 2001 From: Ethan Dye Date: Sat, 17 Jul 2021 00:54:34 -0600 Subject: [PATCH] [OmniLink] Fix zone bypass/restore commands (#11005) * Fix zone bypass/restore commands * Name variables using openHAB guidelines Signed-off-by: Ethan Dye Signed-off-by: dw-8 --- .../handler/AbstractOmnilinkHandler.java | 7 +++- .../internal/handler/AudioSourceHandler.java | 4 +- .../internal/handler/ZoneHandler.java | 42 ++++++++++--------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AbstractOmnilinkHandler.java b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AbstractOmnilinkHandler.java index 587b253dc6b38..5374ad94828ba 100644 --- a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AbstractOmnilinkHandler.java +++ b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AbstractOmnilinkHandler.java @@ -118,6 +118,11 @@ protected int getThingNumber() { * @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; + } } } diff --git a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AudioSourceHandler.java b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AudioSourceHandler.java index b591bc685689c..bec9db81d2357 100644 --- a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AudioSourceHandler.java +++ b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/AudioSourceHandler.java @@ -50,7 +50,7 @@ @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 @@ private synchronized void cancelPolling() { 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); } diff --git a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/ZoneHandler.java b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/ZoneHandler.java index 8d07e9228716d..be9e6b2b3528e 100644 --- a/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/ZoneHandler.java +++ b/bundles/org.openhab.binding.omnilink/src/main/java/org/openhab/binding/omnilink/internal/handler/ZoneHandler.java @@ -125,7 +125,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { 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 void handleCommand(ChannelUID channelUID, Command command) { 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!");