Commit graph

361 commits

Author SHA1 Message Date
Frédéric Metrich
01c0f32ddc
Merge d3fc68e2f7 into eb75868adb 2026-09-05 21:30:33 +00:00
Frédéric Metrich
d3fc68e2f7 ci: revert invalid PartitionScheme=custom; rely on sketch-adjacent partitions.csv auto-pickup
arduino-esp32 core does not define a 'custom' PartitionScheme menu option on
any board. The core's prebuild hook already copies partitions.csv from next
to the .ino file into the build dir when present, so no menu override is
needed.
2026-09-05 23:30:27 +02:00
Frédéric Metrich
d41002da0a ci: bump arduino-esp32 core to 2.0.17 for PartitionScheme=custom support 2026-09-05 23:26:48 +02:00
Frédéric Metrich
3b0f192fe0 Bump deprecated GitHub Actions in ci.yaml to v4/v5
actions/checkout@v3, upload-artifact@v3, and download-artifact@v3
are now hard-blocked by GitHub, failing every CI run immediately.
2026-09-05 23:22:11 +02:00
Frédéric Metrich
543cd38448 Trigger CI 2026-09-05 23:21:26 +02:00
Frédéric Metrich
182d859870 Shrink LittleFS partition, grow OTA app slots
Web assets only use ~489 KB but the default 1.375 MB spiffs
partition wasted the rest. Rebalance to 768 KB spiffs / 1.56 MB
per app slot (was 1.25 MB), giving the tight esp32 build real
headroom (99.6% -> 79.7% flash used) while preserving dual-slot
OTA. Wire the custom layout into both the local PlatformIO build
(new partitions.csv + platformio.ini) and the Arduino-CLI CI/release
pipeline (PartitionScheme=custom, matching littlefs image size and
merge_bin offset).
2026-09-05 23:15:29 +02:00
Frédéric Metrich
db22c16bb3 Fix off-by-one in shade/group ID allocation
getNextShadeId() and getNextGroupId() capped usable IDs at
SOMFY_MAX_SHADES-1/SOMFY_MAX_GROUPS-1, so the top 2 shade IDs
(31, 32) and top 2 group IDs (15, 16) could never be allocated
even though the backing arrays support the full range.
2026-09-05 22:27:33 +02:00
Frédéric Metrich
c7592162ec Add README section on non-linear position estimation
Documents the drum-radius problem, the four calibration fields
(upMidTime, downMidTime, descendTime, upSlatTime), the two-phase
shutter model, and the special 1% blade-expanded boundary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-05 20:16:55 +02:00
Frédéric Metrich
510af3bd15 Save upMidTime/downMidTime/descendTime/upSlatTime to backup file
The four non-linear calibration fields were persisted to NVS and returned
via the JSON API but were missing from the binary config file (ShadeConfigFile).
Bump SHADE_HDR_VER to 25 and SHADE_REC_SIZE to 320, add read/write for the
four fields. Old backups (version ≤ 24) load cleanly with defaults of 0
(linear behaviour).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-05 20:06:03 +02:00
Frédéric Metrich
9883dbec5e Bump version to 3.0.0 in configuration, app version, and HTML/JS files 2026-07-05 19:39:02 +02:00
Frédéric Metrich
c88d36997f Always send Up/Down at hard-stop positions for recalibration
moveToTarget() silently dropped commands when pos == currentPos,
which prevented position recalibration via slider, MQTT, or Home
Assistant when the shade was already at 0% or 100%. Physical
end-stops are ground truth — always send the command so the motor
can jog to the hard stop and self-correct any position drift.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 16:31:23 +02:00
Frédéric Metrich
a5f7404b95 Add two-phase position estimation for roller shutters with blade tilt
Introduces descendTime and upSlatTime to model the two motion phases:
- Descent (slats unrolling) followed by blade tilt to fully close
- Blade opening followed by ascent when raising

Both fields are user-measured timestamps from the movement start,
making them easy to determine with a stopwatch. alphaDown and alphaUp
are now computed against the pure descent/ascent duration only,
excluding the linear blade-tilt phase at each end.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 15:20:27 +02:00
Frédéric Metrich
46cc4531c5 Fix timing fields to 40% width so they render as 2 columns
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 22:12:24 +02:00
Frédéric Metrich
d5691af611 Make timing input fields responsive at 50% width
Replaced fixed max-width:127px on Up/Down Time and 50% mid-time fields
with calc(50% - 10px) / 50% so each pair fills the container width.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-02 22:09:06 +02:00
Frédéric Metrich
769b2ddd7d 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>
2026-07-02 21:51:34 +02:00
Robert Strouse
eb75868adb Update build params for C3 #458 #454 2024-08-19 10:46:00 -07:00
Robert Strouse
3d9e6c11c2 Clear the connecting flag for ETH Wifi fallback #445 2024-08-04 09:32:18 -07:00
Robert Strouse
e478d17c7f Bypass AP Scanning with Use Hidden SSID option #438 #434 2024-07-27 12:12:38 -07:00
Robert Strouse
93ebddd29d Prepare v2.4.6 Release 2024-07-25 17:14:29 -07:00
Robert Strouse
fb1f18e260 Ensure the network connection has completed before trying MQTT. 2024-07-14 09:59:14 -07:00
Robert Strouse
c3ada3b40e removed pin restrictions for S3 #426 2024-07-13 07:18:26 -07:00
Robert Strouse
75928b4ac8 Remove autoReconnect function from core #410 #407 2024-07-10 21:40:55 -07:00
Robert Strouse
0b985c0880 More aggressive WIFI scanning #410 #407 2024-06-28 14:37:41 -07:00
Robert Strouse
e04d7e3fc7 Include scan with SoftAP operation #407 #410 2024-06-25 18:04:46 -07:00
Robert Strouse
9205723125 Reduce heap emits for interface sockets 2024-06-19 11:21:51 -07:00
Robert Strouse
2b59f330a9 Add support for 1 button gates #388 2024-06-18 14:05:43 -07:00
Robert Strouse
c528fda55a Fix issue with deleting repeaters #402 2024-06-17 08:47:44 -07:00
Robert Strouse
f29cd9c089 Add additional command structure for 80-bit up/down 2024-06-15 09:22:27 -07:00
Robert Strouse
cf7a9b1fc2 Fixes for TaHoma hub #393 2024-06-07 19:06:27 -07:00
Robert Strouse
473307b320 Added additional checks for wifi dropoffs and disconnect from STA for AP scan. 2024-06-02 10:58:51 -07:00
Robert Strouse
2dc49a64e9 Bump application to v2.4.4 2024-05-26 16:36:29 -07:00
Robert Strouse
5f15a7cc93 Bump workflow actions 2024-05-26 16:05:04 -07:00
Robert Strouse
e87f42fa50 Update reconnect procedure #385 2024-05-26 15:59:18 -07:00
Robert Strouse
4f3a93b336 Prepare final release for v2.4.3 2024-05-12 11:23:23 -07:00
Robert Strouse
6077052e9b Added 80bit step functions to groups #280 2024-05-08 16:44:19 -07:00
Robert Strouse
e3e843387f Added 80bit commands for Step, Stop, and Favorite #280 2024-05-07 15:59:50 -07:00
Robert Strouse
c4e1dbe44b Bump Arduino core to 2.0.16 2024-05-04 13:36:55 -07:00
Robert Strouse
23731f793f Added group/remote processing to SimMy #360 2024-05-04 13:25:58 -07:00
Robert Strouse
d64103f259 Added 5 second wdt #349 2024-05-04 12:21:58 -07:00
Robert Strouse
2feb420551 Groups #350, #354, Ethernet #348 2024-05-03 16:39:46 -07:00
Robert Strouse
82c867d2eb Fix memory leak #273 2024-04-21 13:43:15 -07:00
Robert Strouse
f8b3bc4133 Fix byte alignments #273 2024-04-18 18:56:33 -07:00
Robert Strouse
25c8a66869 Add apple icons #326 2024-04-14 13:58:16 -07:00
Robert Strouse
652346a7c7 Fix issue where connType was not being sent. 2024-04-10 13:44:57 -07:00
Robert Strouse
ce3946c9e6 Publish TCP 80 for mDNS 2024-04-10 12:15:40 -07:00
Robert Strouse
c4d6a1008f Fix C3 casts 2024-04-09 19:08:38 -07:00
Robert Strouse
5a8c09ee9f Handle C3 ints 2024-04-09 14:26:51 -07:00
Robert Strouse
026f9315b1 Stream all responses. Fix missing ETH IP address #310 2024-04-09 13:46:51 -07:00
Robert Strouse
6ba354c7ff Chunk single group response #316 2024-04-03 07:49:26 -07:00
rstrouse
610773c6b7
Merge pull request #317 from nbarrientos/ibarrien
Fix typo in the UI
2024-04-03 07:48:16 -07:00