Skip to content

Add cover entity support and dedicated panel page - #419

Open
Aulos wants to merge 5 commits into
NSPManager:develfrom
Aulos:pawelz/research-covers
Open

Aulos wants to merge 5 commits into
NSPManager:develfrom
Aulos:pawelz/research-covers

Conversation

@Aulos

@Aulos Aulos commented Oct 26, 2026 •

Copy link
Copy Markdown

Summary

Adds end-to-end cover support to NSPanelManager:

  • new COVER entity type and migration;
  • Home Assistant and OpenHAB cover sources;
  • cover state/command protobuf messages;
  • /rest/entities/covers and manager tests;
  • React add/edit wizard and cover controls;
  • dedicated cover panel page, with quick open/close fallback for blinds/shutters on the
    entities page;
  • rebuilt firmware binaries and all EU/US/mirrored TFT themes.

This implements the cover domain requested in #181: blinds, shutters, curtains, awnings, garage
doors, gates and windows. Tilt is intentionally out of scope for v1.

Panel UI

  • Page cover, on its own HMI page slot. screensaver2 keeps its role as the "screensaver
    without weather" page and is not reused.
  • Components: current, state (state + position), pos slider, b_open, b_stop,
    b_close, home.
  • cleanscreen is unchanged; the dropdown page still references it.
  • Button labels are written by firmware when the page opens, which keeps the HMI page within the
    Nextion page-RAM limit.
  • EU and US HMI sources are updated, and all 12 TFTs (EU/US/mirrored × themes 1–4) are rebuilt
    and checksum-validated.

Verification

  • Django: 260 tests pass.
  • MQTTManager C++: 221 tests pass; cover/entity-manager subset re-run: 50/50.
  • React: 31 tests, tsc -b, production build pass.
  • Firmware: original_sonoff and custom_pcb build successfully; flash usage 88.5% (Sonoff) and 84.9% (custom PCB).
  • TFT validation: all 12 files have valid checksums, 181 pictures, and expected orientations
    (270 EU, 180 US, 90 mirrored).

Panel-side testing (firmware and TFT on the device) has not been performed yet.

Hardware verification

Tested on a live Home Assistant installation (aarch64) running the manager built from this branch:
the existing installation was upgraded in place, migrations 0069/0070 applied cleanly, and
Cover shows up in the add/edit entity wizard.

Cover entity type in the add/edit entity wizard

Release coupling

The firmware binaries and rebuilt TFTs are committed here so the manager, firmware and panel UI
ship together. The binaries are built from the companion branch merged with firmware devel
(b1c7214), so they include the recent panel fixes (#49, #50, #52) on top of the cover page.
The companion firmware PR contains the source changes:

@tpanajott

Copy link
Copy Markdown
Collaborator

Hey, this is awesome and thanks for your PR. I'll try and get to it as soon as possible but life's a but busy right now. As this is a pretty huge PR it will also take a while to review unfortunately.

@tpanajott

Copy link
Copy Markdown
Collaborator

I've begun my view but as there are so many files changed I'll have to do it manually and cannot therefore use the github built in tools to reference lines and files so here a list if things I've found:

  • In home_assistant_cover.cpp, the first check for controller != HOME_ASSISTANT should probably log cover ID and name as per all other entity types, for example HomeAssistantCover 1::Garage door has not been recognized.... The same goes for openhab_cover.cpp
  • In rest.py the check for Scene.object.filter is not needed as cover cannot be placed in scenes page
  • Docs are handled in other repo: https://github.com/NSPManager/NSPanelManager-docs
  • research should be removed

@tpanajott

Copy link
Copy Markdown
Collaborator

reusing the unused screensaver2 HMI slot

What do you mean you mean? The screensaver2 page is used when having a screensaver but it's not display weather.

Pawel Zubrycki added 2 commits October 29, 2026 10:27
Resolve conflicts against devel's page-handler refactor and rebuilt assets:
- MQTTManager tests: link both the Cover and Weather libraries.
- React dist rebuilt from the merged sources; scripts.html regenerated.
- Firmware and TFS images rebuilt from feat/cover-page merged with firmware
  devel (b1c7214), covering the new PageHandlers API.
- Log cover id and name when the controller check fails, as for other entity types.
- Drop the scene-position check when placing a cover: covers cannot live on a scenes page,
  so a scene can never occupy the slot (test removed with it).
- Keep documentation and research notes out of this repository; they live in NSPanelManager-docs.

This branch has not been deployed

No deployments
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