From 916fca517782ec13858c838f396c796e87c01b91 Mon Sep 17 00:00:00 2001 From: Waldemar Porscha Date: Sat, 30 Aug 2025 17:07:28 +0200 Subject: [PATCH 1/3] FIX: use channel template for channel, introducing Number="%PREFIX%" --- src/ShutterControllerModule.share.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ShutterControllerModule.share.xml b/src/ShutterControllerModule.share.xml index 1ce7989..95e0262 100755 --- a/src/ShutterControllerModule.share.xml +++ b/src/ShutterControllerModule.share.xml @@ -552,7 +552,7 @@ - + From 9d45a949b873faaf38198f7afa71d028cad366d7 Mon Sep 17 00:00:00 2001 From: Waldemar Porscha Date: Mon, 15 Sep 2025 14:09:39 +0200 Subject: [PATCH 2/3] PatameterType in .templ-File ist nicht erlaubt --- src/ShutterControllerModule.share.xml | 20 ++++++++++++++++++++ src/ShutterControllerModule.templ.xml | 23 ----------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/ShutterControllerModule.share.xml b/src/ShutterControllerModule.share.xml index 95e0262..30a6277 100755 --- a/src/ShutterControllerModule.share.xml +++ b/src/ShutterControllerModule.share.xml @@ -6,9 +6,29 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/ShutterControllerModule.templ.xml b/src/ShutterControllerModule.templ.xml index 237a521..899e808 100755 --- a/src/ShutterControllerModule.templ.xml +++ b/src/ShutterControllerModule.templ.xml @@ -19,30 +19,7 @@ - - - - - - - - - - - - - - - - - - - - - - - From 7a4610f32303502b5ef308c45b12dc571ad2e6fa Mon Sep 17 00:00:00 2001 From: Waldemar Porscha Date: Sun, 5 Oct 2025 00:56:31 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Dieser=20PR=20l=C3=B6st=203=20Probleme:=20-?= =?UTF-8?q?=20Bei=20einer=20Sperre=20hat=20sich=20das=20komplette=20Modul?= =?UTF-8?q?=20aufgeh=C3=A4ngt=20-=20KO=20kipp=20und=20KO=20offen=20waren?= =?UTF-8?q?=20vertauscht=20-=20Der=20Rolladen=20fuhr=20beim=20Schlie=C3=9F?= =?UTF-8?q?en=20des=20Fensters=20nicht=20auf=20die=20vorherige=20Position?= =?UTF-8?q?=20(die=20beim=20=C3=B6ffnen=20des=20Fensters),=20sondern=20auf?= =?UTF-8?q?=20die=20Kipp-Position=20zur=C3=BCck.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PositionController.cpp | 4 ++-- src/ShutterControllerChannel.cpp | 10 ++++++---- src/WindowOpenHandler.cpp | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/PositionController.cpp b/src/PositionController.cpp index 8817c9e..8288b1e 100644 --- a/src/PositionController.cpp +++ b/src/PositionController.cpp @@ -506,7 +506,7 @@ void PositionController::setPositionLowerLimit(uint8_t positionLimit, bool moveT } else if (targetPosition() > positionLimit || moveToLimit) { - _blockedPosition = targetPosition(); + if (_blockedPosition == NOTUSED) _blockedPosition = targetPosition(); _calculatedTargetPosition = positionLimit; _setPosition = positionLimit; logDebugP("Position limit forces new position %d, store %d", (int)_setPosition, (int)_blockedPosition); @@ -542,7 +542,7 @@ void PositionController::setSlatLowerLimit(uint8_t slatLimit, bool moveToLimit) } else if (slat() > slatLimit || moveToLimit) { - _blockedSlat = slat(); + if (_blockedSlat == NOTUSED) _blockedSlat = slat(); _setSlat = slatLimit; logDebugP("Slat limit forces new slat %d, store %d", (int)_setSlat, (int)_blockedSlat); } diff --git a/src/ShutterControllerChannel.cpp b/src/ShutterControllerChannel.cpp index 4c9c179..a0cb11e 100755 --- a/src/ShutterControllerChannel.cpp +++ b/src/ShutterControllerChannel.cpp @@ -61,7 +61,7 @@ void ShutterControllerChannel::setup() _modeManual = new ModeManual(*this); for (uint8_t i = 1; i <= ParamSHC_CWindowOpenCount; i++) { - _windowOpenHandlers.push_back(new WindowOpenHandler(_channelIndex, i, ParamSHC_CWindowOpenCount != i)); + _windowOpenHandlers.push_back(new WindowOpenHandler(_channelIndex, i, i == 2)); // ParamSHC_CWindowOpenCount != i)); } _modes.push_back(_modeManual); @@ -411,10 +411,12 @@ void ShutterControllerChannel::execute(CallContext &callContext) if (nextWindowOpenHandler != nullptr) logInfoP("Start window open %s", nextWindowOpenHandler->name()); else + { logInfoP("Stop window open"); + if (_currentWindowOpenHandler != nullptr) + _currentWindowOpenHandler->stop(callContext, nextWindowOpenHandler, _positionController); + } } - if (_currentWindowOpenHandler != nullptr) - _currentWindowOpenHandler->stop(callContext, nextWindowOpenHandler, _positionController); _currentWindowOpenHandler = nextWindowOpenHandler; if (_currentWindowOpenHandler != nullptr) _currentWindowOpenHandler->start(callContext, _currentWindowOpenHandler, _positionController); @@ -466,7 +468,7 @@ void ShutterControllerChannel::execute(CallContext &callContext) } logIndentDown(); } - if (_currentMode != nextMode) + if (_currentMode != nextMode && nextMode != nullptr) { sceneChanged = true; if (nextMode == _modeManual) diff --git a/src/WindowOpenHandler.cpp b/src/WindowOpenHandler.cpp index 5865f2a..a70fabc 100644 --- a/src/WindowOpenHandler.cpp +++ b/src/WindowOpenHandler.cpp @@ -6,15 +6,15 @@ #ifdef SHC_CWindowOpenPosition2 // redefine SHC_ParamCalcIndex to add offset for Window Mode 2 #undef SHC_ParamCalcIndex -#define SHC_ParamCalcIndex(index) (index + SHC_ParamBlockOffset + _channelIndex * SHC_ParamBlockSize + (SHC_CWindowOpenPosition2 - SHC_CWindowOpenPosition1) * (_index - 1)) +#define SHC_ParamCalcIndex(index) (index + SHC_ParamBlockOffset + _channelIndex * SHC_ParamBlockSize + (SHC_CWindowOpenPosition2 - SHC_CWindowOpenPosition1) * (1 - _isTiltHandler)) // redefine SHC_KoCalcNumber to add offset for Window Mode 2 #undef SHC_KoCalcNumber -#define SHC_KoCalcNumber(index) (index + SHC_KoBlockOffset + _channelIndex * SHC_KoBlockSize + (_index - 1) * (SHC_KoCWindowOpenModeActive2 - SHC_KoCWindowOpenModeActive1)) +#define SHC_KoCalcNumber(index) (index + SHC_KoBlockOffset + _channelIndex * SHC_KoBlockSize + (_isTiltHandler) * (SHC_KoCWindowOpenModeActive2 - SHC_KoCWindowOpenModeActive1)) // redefine SHC_KoCalcIndex to add offset for Window Mode 2 #undef SHC_KoCalcIndex -#define SHC_KoCalcIndex(number) ((number >= SHC_KoCalcNumber(0) && number < SHC_KoCalcNumber(SHC_KoBlockSize)) ? (number - SHC_KoBlockOffset - (_index - 1) * (SHC_KoCWindowOpenModeActive2 - SHC_KoCWindowOpenModeActive1)) % SHC_KoBlockSize : -1) +#define SHC_KoCalcIndex(number) ((number >= SHC_KoCalcNumber(0) && number < SHC_KoCalcNumber(SHC_KoBlockSize)) ? (number - SHC_KoBlockOffset - (_isTiltHandler) * (SHC_KoCWindowOpenModeActive2 - SHC_KoCWindowOpenModeActive1)) % SHC_KoBlockSize : -1) #endif