From 583dc5ccfc3f8ae0f0d54850dc1bb926531f60e6 Mon Sep 17 00:00:00 2001 From: Craig Seymour Date: Thu, 2 Aug 2018 23:15:39 +0100 Subject: [PATCH 1/4] Fixes error when setLevel called by windowShade --- fibaro_fgr_222/fibaro_fgr_222.groovy | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fibaro_fgr_222/fibaro_fgr_222.groovy b/fibaro_fgr_222/fibaro_fgr_222.groovy index b482169..507b539 100644 --- a/fibaro_fgr_222/fibaro_fgr_222.groovy +++ b/fibaro_fgr_222/fibaro_fgr_222.groovy @@ -292,7 +292,13 @@ def refresh() { ], 500) } -def setLevel(level) { +def setLevel(requestedLevel) { + if (!requestedLevel?.isInteger()) { + debug.log ("Cannot convert ${requestedLevel} to int") + return + } + int level = requestedLevel as int + if (invert) { level = 100 - level } From 359686adb6faa334ad1035ad7ed5c65b5d01edd6 Mon Sep 17 00:00:00 2001 From: Craig Seymour Date: Sat, 18 Aug 2018 17:48:18 +0100 Subject: [PATCH 2/4] fixes incorrect logging statement, and improved number check --- fibaro_fgr_222/fibaro_fgr_222.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fibaro_fgr_222/fibaro_fgr_222.groovy b/fibaro_fgr_222/fibaro_fgr_222.groovy index 507b539..3bd0fb7 100644 --- a/fibaro_fgr_222/fibaro_fgr_222.groovy +++ b/fibaro_fgr_222/fibaro_fgr_222.groovy @@ -293,8 +293,8 @@ def refresh() { } def setLevel(requestedLevel) { - if (!requestedLevel?.isInteger()) { - debug.log ("Cannot convert ${requestedLevel} to int") + if (!requestedLevel.isNumber()) { + log.debug ("Cannot convert ${requestedLevel ?: 'null'} to a number") return } int level = requestedLevel as int From bc164b09c21ec6abcde065113e0dcf5a7eba33d6 Mon Sep 17 00:00:00 2001 From: Craig Seymour Date: Tue, 21 Aug 2018 19:28:46 +0100 Subject: [PATCH 3/4] This checks the current level before submitting the request - hopefully this will address the issue reported https://community.smartthings.com/t/fibaro-roller-shutter-2-fgrm-222-dth-in-post-24-uk-device/65005/101?u=craigseymour --- fibaro_fgr_222/fibaro_fgr_222.groovy | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fibaro_fgr_222/fibaro_fgr_222.groovy b/fibaro_fgr_222/fibaro_fgr_222.groovy index 3bd0fb7..7700c71 100644 --- a/fibaro_fgr_222/fibaro_fgr_222.groovy +++ b/fibaro_fgr_222/fibaro_fgr_222.groovy @@ -299,6 +299,12 @@ def setLevel(requestedLevel) { } int level = requestedLevel as int + int currentLevel = device.currentValue("level") as int + if (currentLevel == level) { //nothing to do + log.debug ("level is already ${level} - nothing to do :^)") + return; + } + if (invert) { level = 100 - level } From 4fce8bd71c92ea7e63f5945d5a8b3c151a292b3b Mon Sep 17 00:00:00 2001 From: Craig Seymour Date: Thu, 23 Aug 2018 19:41:02 +0100 Subject: [PATCH 4/4] Stops ST sending close/open updates when they are not needed --- fibaro_fgr_222/fibaro_fgr_222.groovy | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fibaro_fgr_222/fibaro_fgr_222.groovy b/fibaro_fgr_222/fibaro_fgr_222.groovy index 7700c71..454c20a 100644 --- a/fibaro_fgr_222/fibaro_fgr_222.groovy +++ b/fibaro_fgr_222/fibaro_fgr_222.groovy @@ -226,6 +226,11 @@ def stop() { def open() { logger.debug("open") def currentWindowShade = device.currentValue('windowShade') + if (currentWindowShade == "open") { + logger.debug("already open - nothing to do") + return + } + if (currentWindowShade == "opening" || currentWindowShade == "closing") { sendEvent(name: "windowShade", value: "partially open") sendEvent(name: "switch", value: "on") @@ -243,6 +248,11 @@ def open() { def close() { logger.debug("close") def currentWindowShade = device.currentValue('windowShade') + if (currentWindowShade == "closed") { + logger.debug("already closed - nothing to do") + return + } + if (currentWindowShade == "opening" || currentWindowShade == "closing") { sendEvent(name: "windowShade", value: "partially open") sendEvent(name: "switch", value: "on")