mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-07-15 07:12:14 +02:00
Add non-linear position estimation for RTS roller shades
Motor speed varies with drum radius as shade material winds/unwinds, causing linear time-interpolation to misestimate position. Adds two optional calibration fields (upMidTime, downMidTime) that let users provide the elapsed time at 50% travel. A logarithmic model (alpha ratio solved via Newton's method) then replaces the linear formula. Falls back to existing linear behaviour when mid-time fields are zero. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
eb75868adb
commit
769b2ddd7d
4 changed files with 4319 additions and 2879 deletions
5
Somfy.h
5
Somfy.h
|
|
@ -314,6 +314,11 @@ class SomfyShade : public SomfyRemote {
|
|||
uint32_t upTime = 10000;
|
||||
uint32_t downTime = 10000;
|
||||
uint32_t tiltTime = 7000;
|
||||
uint32_t upMidTime = 0; // Time (ms) from 100% to 50% when opening; 0 = linear
|
||||
uint32_t downMidTime = 0; // Time (ms) from 0% to 50% when closing; 0 = linear
|
||||
float alphaUp = 0.0f; // Derived from upMidTime/upTime; 0 = use linear
|
||||
float alphaDown = 0.0f; // Derived from downMidTime/downTime; 0 = use linear
|
||||
void computeAlphas();
|
||||
uint16_t stepSize = 100;
|
||||
bool save();
|
||||
bool isIdle();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue