From ef31659452d94fc454cc471180d4c166c203469d Mon Sep 17 00:00:00 2001 From: lolodomo Date: Wed, 2 Dec 2020 18:21:05 +0100 Subject: [PATCH] [powermax] New channel of type Contact to show the zone arm status (#9192) Allow using lock icon from the classic iconset Allow displaying the "Locks" badge in MainUI Signed-off-by: Laurent Garnier --- .../internal/PowermaxBindingConstants.java | 1 + .../handler/PowermaxBridgeHandler.java | 18 ++++-------------- .../internal/handler/PowermaxThingHandler.java | 2 ++ .../main/resources/OH-INF/thing/channels.xml | 9 ++++++++- .../src/main/resources/OH-INF/thing/zone.xml | 1 + 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/PowermaxBindingConstants.java b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/PowermaxBindingConstants.java index 8e9ea6664..9578a1812 100644 --- a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/PowermaxBindingConstants.java +++ b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/PowermaxBindingConstants.java @@ -59,6 +59,7 @@ public class PowermaxBindingConstants { public static final String LAST_TRIP = "last_trip"; public static final String BYPASSED = "bypassed"; public static final String ARMED = "armed"; + public static final String LOCKED = "locked"; public static final String LOW_BATTERY = "low_battery"; public static final String PGM_STATUS = "pgm_status"; public static final String X10_STATUS = "x10_status"; diff --git a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxBridgeHandler.java b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxBridgeHandler.java index 2095cc8dd..978babc86 100644 --- a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxBridgeHandler.java +++ b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxBridgeHandler.java @@ -558,20 +558,10 @@ public class PowermaxBridgeHandler extends BaseBridgeHandler implements Powermax PowermaxThingHandler handler = (PowermaxThingHandler) thing.getHandler(); if (handler != null) { if (thing.getThingTypeUID().equals(THING_TYPE_ZONE)) { - if ((channel == null) || channel.equals(TRIPPED)) { - handler.updateChannelFromAlarmState(TRIPPED, state); - } - if ((channel == null) || channel.equals(LAST_TRIP)) { - handler.updateChannelFromAlarmState(LAST_TRIP, state); - } - if ((channel == null) || channel.equals(BYPASSED)) { - handler.updateChannelFromAlarmState(BYPASSED, state); - } - if ((channel == null) || channel.equals(ARMED)) { - handler.updateChannelFromAlarmState(ARMED, state); - } - if ((channel == null) || channel.equals(LOW_BATTERY)) { - handler.updateChannelFromAlarmState(LOW_BATTERY, state); + for (String channelId : List.of(TRIPPED, LAST_TRIP, BYPASSED, ARMED, LOCKED, LOW_BATTERY)) { + if ((channel == null) || channel.equals(channelId)) { + handler.updateChannelFromAlarmState(channelId, state); + } } } else if (thing.getThingTypeUID().equals(THING_TYPE_X10)) { if ((channel == null) || channel.equals(X10_STATUS)) { diff --git a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxThingHandler.java b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxThingHandler.java index 3c4e32dfe..c2bc845a2 100644 --- a/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxThingHandler.java +++ b/bundles/org.openhab.binding.powermax/src/main/java/org/openhab/binding/powermax/internal/handler/PowermaxThingHandler.java @@ -191,6 +191,8 @@ public class PowermaxThingHandler extends BaseThingHandler implements PowermaxPa updateState(BYPASSED, state.isSensorBypassed(num) ? OnOffType.ON : OnOffType.OFF); } else if (channel.equals(ARMED) && (state.isSensorArmed(num) != null)) { updateState(ARMED, state.isSensorArmed(num) ? OnOffType.ON : OnOffType.OFF); + } else if (channel.equals(LOCKED) && (state.isSensorArmed(num) != null)) { + updateState(LOCKED, state.isSensorArmed(num) ? OpenClosedType.CLOSED : OpenClosedType.OPEN); } else if (channel.equals(LOW_BATTERY) && (state.isSensorLowBattery(num) != null)) { updateState(LOW_BATTERY, state.isSensorLowBattery(num) ? OnOffType.ON : OnOffType.OFF); } diff --git a/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/channels.xml index d9d8cc193..9c42f44d1 100644 --- a/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/channels.xml @@ -109,11 +109,18 @@ Switch - + Whether or not the zone is armed + + Contact + + Whether or not the zone is armed (CLOSED when armed) + + + Switch diff --git a/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/zone.xml b/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/zone.xml index 0529631a0..e85a0c780 100644 --- a/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/zone.xml +++ b/bundles/org.openhab.binding.powermax/src/main/resources/OH-INF/thing/zone.xml @@ -17,6 +17,7 @@ +