From 2c036f664c1c280220138ac40f33a17fccc19bb2 Mon Sep 17 00:00:00 2001 From: Robert Strouse Date: Wed, 26 Apr 2023 08:42:44 -0700 Subject: [PATCH] Issue stop command prior to issuing tilt positions. --- Somfy.cpp | 12 +++++------- SomfyController.ino.esp32.bin | Bin 1065184 -> 1065184 bytes 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Somfy.cpp b/Somfy.cpp index 326adf3..b6a6dd6 100644 --- a/Somfy.cpp +++ b/Somfy.cpp @@ -574,12 +574,11 @@ void SomfyShade::checkMovement() { // If we need to stop the shade do this before we indicate that we are // not moving otherwise the my function will kick in. if(this->settingPos) { + SomfyRemote::sendCommand(somfy_commands::My); if(!isAtTarget()) { // We now need to move the tilt to the position we requested. this->moveToTiltTarget(this->tiltTarget); } - else - SomfyRemote::sendCommand(somfy_commands::My); } this->direction = 0; this->tiltStart = millis(); @@ -617,12 +616,11 @@ void SomfyShade::checkMovement() { // If we need to stop the shade do this before we indicate that we are // not moving otherwise the my function will kick in. if(this->settingPos) { + SomfyRemote::sendCommand(somfy_commands::My); if(!isAtTarget()) { // We now need to move the tilt to the position we requested. this->moveToTiltTarget(this->tiltTarget); } - else - SomfyRemote::sendCommand(somfy_commands::My); } this->direction = 0; this->tiltStart = millis(); @@ -1023,9 +1021,9 @@ void SomfyShade::processFrame(somfy_frame_t &frame, bool internal) { break; case somfy_commands::MyUp: case somfy_commands::StepUp: + this->lastFrame.processed = true; if(this->lastFrame.repeats != 0) return; dir = 0; - this->lastFrame.processed = true; // With the step commands and integrated shades // the motor must tilt in the direction first then move // so we have to calculate the target with this in mind. @@ -1038,9 +1036,9 @@ void SomfyShade::processFrame(somfy_frame_t &frame, bool internal) { break; case somfy_commands::MyDown: case somfy_commands::StepDown: + this->lastFrame.processed = true; if(this->lastFrame.repeats != 0) return; dir = 1; - this->lastFrame.processed = true; // With the step commands and integrated shades // the motor must tilt in the direction first then move // so we have to calculate the target with this in mind. @@ -1207,7 +1205,7 @@ void SomfyShade::moveToTiltTarget(float target) { cmd = somfy_commands::Up; else if(target > this->currentTiltPos) cmd = somfy_commands::Down; - if(target > 0.0f && target < 100.0f) { + if(target >= 0.0f && target <= 100.0f) { if(cmd != somfy_commands::My) { Serial.print("Moving Tilt to "); Serial.print(target); diff --git a/SomfyController.ino.esp32.bin b/SomfyController.ino.esp32.bin index 70845a5e9b264f0d7d0d20673e99bdb7127feff9..c322719cd122c82b926dec54998fcb6b92ad7cc7 100644 GIT binary patch delta 4993 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