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
13
.gitignore
vendored
13
.gitignore
vendored
|
|
@ -8,3 +8,16 @@ SomfyController.ino.XIAO_ESP32S3.bin
|
|||
SomfyController.ino.esp32c3.bin
|
||||
SomfyController.ino.esp32s2.bin
|
||||
.vscode/settings.json
|
||||
.pio/
|
||||
.generated_files/
|
||||
build/
|
||||
dist/
|
||||
nbproject/
|
||||
Makefile*
|
||||
Package-*
|
||||
private/
|
||||
_build/
|
||||
!cmake/**/user.cmake
|
||||
cmake/**/.generated/*
|
||||
cmake/**/CMake*
|
||||
out/
|
||||
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();
|
||||
|
|
|
|||
833
data/index.html
833
data/index.html
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue