Skip to content

Improve blind setup, calibration, and status tracking#27

Merged
GimpArm merged 17 commits into
GimpArm:mainfrom
saiepour:manual-device-entry
Jul 6, 2026
Merged

Improve blind setup, calibration, and status tracking#27
GimpArm merged 17 commits into
GimpArm:mainfrom
saiepour:manual-device-entry

Conversation

@saiepour

@saiepour saiepour commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR improves the Schellenberg USB Home Assistant integration to make real-world blind setup more reliable and user-friendly.

The main focus is improving pairing, teach-in, calibration, status identity discovery, estimated position tracking, diagnostics, and Home Assistant entity handling.

What changed

  • Added a more robust Pair and test setup flow.
  • Added guided USB transmitter teach-in for motors.
  • Added automatic calibration with measured open/close travel times.
  • Added automatic status identity discovery during calibration.
  • Added guided Discover status from original remote action.
  • Separated command/transmit identity from receive/status identity.
  • Added support for secondary/companion RF identities.
  • Prevented unknown secondary frames from affecting position tracking.
  • Improved estimated position tracking from:
    • Home Assistant commands
    • recognized remote/status frames
    • measured travel times
    • manual position sync actions
  • Added manual position sync actions:
    • set fully open
    • set fully closed
    • set manual position 0–100%
  • Added detailed Developer Tools diagnostics.
  • Added stable Home Assistant unique IDs for cover entities.
  • Added migration/backfill support for legacy blinds without stable IDs.
  • Improved default naming to avoid repeated entity names.
  • Rewrote the README to be more beginner-friendly.

Why this is needed

In real Schellenberg RF setups, the identity used by the USB stick to transmit commands is not always the same as the identity observed from the original remote or motor status frames.

Some setups also emit additional companion RF frames with unknown commands. Before this change, users often needed to inspect logs and manually guess which identity should be used for position tracking.

This PR makes setup more automatic and understandable by discovering usable status identities during calibration or guided remote discovery.

Tested

Tested live with:

  • Schellenberg USB FunkStick
  • Three installed Schellenberg RF shutter motors
  • Home Assistant custom integration workflow
  • Pairing / teach-in
  • Short movement test
  • Automatic calibration
  • Status identity discovery
  • Secondary RF identity handling
  • Estimated position tracking
  • Manual position sync
  • Home Assistant restart and entity migration

Observed successful patterns included:

  • Separate transmit and status identities
  • Primary status streams using 00, 01, and 02
  • Secondary companion streams with unknown commands
  • Successful HA control
  • Successful physical remote tracking
  • Stable entity unique IDs after restart

Validation

  • 217 tests passed
  • Ruff clean
  • formatting clean
  • compilation clean
  • JSON checks clean
  • whitespace checks clean

Compatibility

Existing/legacy configurations are preserved. Blinds without stored stable IDs are backfilled once. Manual identity editing remains available for advanced users.

Notes

The integration still does not provide true physical position feedback. Position remains estimated from travel times and commands. USB stick ACKs confirm only that the stick transmitted; they do not confirm motor movement.

@GimpArm GimpArm self-assigned this Jul 6, 2026

@GimpArm GimpArm left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a lot of changes and I don't have time to review it properly. I also don't have time to address all the open issues. So I'm going to trust that you did not break everything for everyone else

@GimpArm GimpArm merged commit c7f11e4 into GimpArm:main Jul 6, 2026
1 check passed
@saiepour

saiepour commented Jul 6, 2026 via email

Copy link
Copy Markdown
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants