Highlights
A release shaped by the community
Most of the changes in this release come from contributors, which is what keeps this project moving. Thank you!
- @JPicard90 designed and implemented the new graph page, across the firmware, the Blueprint and both TFT layouts, in their first contribution to NSPanel Easy. (#579, #590)
- @Bascht74 contributed eight pull requests: fixes for the weather page at night, the button pages, the screensaver brightness and a log warning, and a faster response of the button pages after a click. (#600, #604, #605, #606, #607, #611, #616, #617)
Graph page for the Home page values
Each of the four Home page values has a new Graph option. When it is enabled, tapping the value (or its icon) opens a page with a graph of the entity over the last 24 hours, one point per 5 minutes, together with the current value, the lower and upper bounds of the scale and the local time every 6 hours. The scale is automatic by default, and either bound can be fixed with the new Graph minimum and Graph maximum inputs. The graph is drawn from the recorder statistics of Home Assistant, so only sensors with a state_class of measurement or measurement_angle can be graphed. See docs/blueprint.md. Contributed by @JPicard90. (#579, #590)
Stale values indicated while Home Assistant is disconnected
When Home Assistant is unreachable for longer than a grace period (30 seconds by default), the home page no longer shows its last received values as if they were current. Chips from Home Assistant entities, the home custom buttons and the weather picture are hidden, the outdoor temperature and the home values are grayed out, and the indoor temperature falls back to the panel's own sensor. Short drops, like a Home Assistant restart, leave the display untouched, and the relay and embedded thermostat chips are not affected, as they are controlled locally. Everything is restored as soon as the connection is back, without waiting for a state change in Home Assistant. The grace period can be changed with the new api_stale_grace_period substitution, documented in docs/substitutions.md. (#519, #580)
Active climate preset on the climate page
The preset button on the climate page now shows which preset is active. For the standard presets (home, away, boost, comfort, eco, sleep and activity), the button shows the same icon Home Assistant uses for that preset, and it is highlighted while a preset is active. When no preset is active, or for custom presets, the button keeps the generic preset icon. This works for Home Assistant climate entities and for the embedded thermostat, where the panel updates the button itself, so it keeps working while Home Assistant is unavailable. (#613)
Bluetooth Proxy and TFT updates together
The documentation no longer recommends disabling Bluetooth Proxy for TFT updates. The TFT upload add-on releases the Bluetooth memory before the upload starts, so both add-ons can be enabled at the same time, including for automatic TFT updates. See docs/install.md and docs/addon_upload_tft.md. (#578, #584)
Improvements
- Faster response of the button pages after a click. After a click on a button page, only the clicked button and the buttons sharing its entity or State Indicator Entity are redrawn, instead of every button on the page, and a button already drawn by its own state update is not drawn again. On the test panels, the commands sent to the display after a click dropped from up to 90 to 20, and skipping the second redraw of the clicked button halved them again in most clicks, with the display finishing its update in about half the time. Contributed by @Bascht74. (#607, #616)
- Group entities for the hardware buttons. Old-style groups (
group.*) can now be selected as the entity and as the State Indicator Entity of the left and right hardware buttons. A press turns all members off when the group is on, and all on when it is off, so a group with mixed states ends up in one state. The members must supportturn_onandturn_off(e.g. lights, switches, fans or covers). (#601, #602) - Configurable font size limits on the entities pages. Values on the entities pages switch to a smaller font when they get long. The length limits are now set with the new
page_entities_value_font_large_max_len(default8) andpage_entities_value_font_medium_max_len(default12) substitutions, documented indocs/substitutions.md. The defaults are unchanged. (#593, #596)
Bug fixes
- Night pictures on the weather pages. While the sun is below the horizon, today's weather page now shows the night pictures, and entities of the
sundomain show a night icon. Before, the day pictures were always shown. The forecast pages show the night pictures only for a forecast that covers only the night, and keep the day pictures otherwise. Theexceptionalcondition also shows its picture again, instead of failing with an error in Home Assistant. Contributed by @Bascht74. (#600, #614) - Entities page values in non-Latin languages. Values in Chinese, Japanese, Korean and other non-Latin scripts switched to a smaller font much earlier than needed, as their length was counted in bytes. The length is now counted per character, weighted by its width on the panel. (#593, #599)
- Screensaver brightness. When the panel went to the screensaver, the display briefly returned to full brightness and its timers restarted before the sleep brightness was applied. This no longer happens. Contributed by @Bascht74. (#611)
- Button pages: momentary buttons. Buttons for automations, buttons, input buttons, scenes and scripts now show on for 800 ms only when their entity is activated. The end of a longer run or an attribute-only update now draws the button once by its state, instead of on and then off again. Contributed by @Bascht74. (#617)
- Button pages: momentary buttons with a State Indicator Entity. Buttons for automations, buttons, input buttons, remotes, scenes and scripts with a State Indicator Entity and an empty State Value could stay drawn as on, even while the State Indicator Entity was off. They now follow the State Indicator Entity. Contributed by @Bascht74. (#605)
- Button pages: unavailable entities. Buttons are now redrawn when their entity becomes unavailable or available again, following Unavailable entities - Button appearance while the page is shown. With Show as off, a momentary button whose entity becomes unavailable no longer looks pressed. Contributed by @Bascht74. (#606)
Invalid variable namewarning. The log no longer shows this warning each time the Blueprint sets up the panel with the utilities button on the home page. Contributed by @Bascht74. (#604)- Home values colors after a display restart. The colors of the home values set by the Blueprint were lost when the display restarted, falling back to the default colors until the next update. They are now restored by the panel. (#580)
- Home custom buttons hidden when unavailable. Buttons configured to be hidden when their entity is unavailable are now hidden immediately when the home page is showing, instead of only after leaving and returning to the page. (#580)
- Values set through the API on unconfigured home page slots. Home page value slots without an entity in the Blueprint are now cleared only when the Blueprint is reloaded or Home Assistant starts, instead of each time the home page is opened, so values sent to them by your own automations are kept. Icon colors of the home values set with the
iconaction are also kept, instead of being replaced by the Blueprint color after Home Assistant reconnects or the display restarts. (#591, #597) - QR codes restored after a reboot. With
qrcode_restore_value: true, QR codes longer than 63 characters, like most Wi-Fi codes, are now restored after a reboot, instead of the panel showing an older code or the initial value until Home Assistant sends the code again. (#619, #622) - Climate page errors while refreshing. The Blueprint no longer fails intermittently with an
UndefinedErroraboutold_statewhile refreshing an open climate page. (#598) - Panel restarting twice after automation reloads. When automations were reloaded several times within a few seconds, the panel could restart twice in a row without any change in the configuration. The panel now ignores the overlapping updates and only restarts when the entities bound to it actually change. (#625, #626)
Documentation
- Back up the original Sonoff firmware. The new
docs/backup_stock_firmware.mdexplains how to back up the original firmware before the first flash, and how to restore it later. Each panel's original firmware holds unique device credentials that the first flash erases, so this backup is the only way to fully return a panel to its original state, for example to claim the warranty. (#618) - Network guide. The new
docs/network.mdcovers the panel network settings: Wi-Fi, DHCP or a manual IP address, gateway and DNS, different subnets and VLANs, and the connection to Home Assistant. It also explains why the panel needs internet access (only to download the TFT from GitHub), what happens when it is blocked, and which firewall rules to use. The network examples moved there fromdocs/customization.md. (#623) - Outdated customization examples removed. The examples removing the web server and the captive portal were removed from
docs/customization.mdanddocs/addon_espectre.md, as neither is part of the standard configuration anymore. (#624) - ESPHome substitutions reference. The new
docs/substitutions.mdlists the substitutions you can set in your panel's YAML, with the default and the effect of each one. (#582) - Security policy and code of conduct.
SECURITY.mdexplains how to report vulnerabilities privately, andCODE_OF_CONDUCT.mdadopts the Contributor Covenant 3.0 for the repository, the Discord server and the Home Assistant Community forum thread. (#586) - AI usage. The new
docs/ai_usage.mddescribes how AI is used in this project, how to identify posts from thepanel-easy-assistant[bot]account, and the expectations for AI-assisted contributions. (#585) - Simpler update instructions. The new Update NSPanel Easy section in
docs/howto.mdgives one path for the default configuration: update the firmware, let the TFT update automatically, then re-import the Blueprint. The README, the installation guide and the firmware version notification now point to it, and no longer ask to editref:or to follow a component update order. (#588, #589)
Other changes
- The link check no longer reports links to the Home Assistant Community forum as broken. (#583)
- CI tools updated:
actions/setup-python7.1.0,DavidAnson/markdownlint-cli2-action25.0.0 andflake87.5.0. (#608, #627, #628, #629)
Update notes
- The firmware, the TFT and the Blueprint all change in this release. Follow Update NSPanel Easy in
docs/howto.md: update the firmware, let the TFT update automatically, then re-import the Blueprint. - The Blueprint requires the firmware from this release. If the Blueprint is updated first, it shows a notification and stops until the firmware is updated.
- If
qrcode_restore_valueis enabled, the QR code and its title are not restored on the first boot after the update. They are shown again once Home Assistant sends the code, and restored normally from then on.
Closes #519
Closes #579
Closes #588
Closes #591
Closes #593
Closes #598
Closes #601
Closes #619
Closes #625
Related to #478, #514, #548, #578 and #609
What's Changed
Bug Fixes
- fix: Prevent concurrent binding pushes from mixing and restarting the panel by @panel-easy-assistant[bot] in #626
CI & Automation
- ci: bump actions/setup-python from 7.0.0 to 7.1.0 in the actions-official group by @dependabot[bot] in #608
- ci: bump actions/setup-python from 7.0.0 to 7.1.0 in the actions-official group by @dependabot[bot] in #628
- ci: bump DavidAnson/markdownlint-cli2-action from 24.2.0 to 25.0.0 in the actions-markdown group by @dependabot[bot] in #629
Dependency Updates
- build: bump flake8 from 7.4.1 to 7.5.0 in /.github by @dependabot[bot] in #627
Other Changes
- docs: Add a reference of the ESPHome substitutions available to users by @panel-easy-assistant[bot] in #582
- ci: Skip link checks for the Home Assistant community forum by @panel-easy-assistant[bot] in #583
- feat: Indicate stale home page values while Home Assistant is disconnected by @panel-easy-assistant[bot] in #580
- docs: Add section on how AI is used in this project by @panel-easy-assistant[bot] in #585
- docs: Add security policy and code of conduct by @panel-easy-assistant[bot] in #586
- docs: Remove outdated guidance to disable Bluetooth for TFT uploads by @panel-easy-assistant[bot] in #584
- docs: Simplify update instructions by @panel-easy-assistant[bot] in #589
- fix: Show the night picture on today's weather page after sunset by @Bascht74 in #600
- fix: Detect the screensaver page by name before dimming by @Bascht74 in #611
- fix: Show momentary buttons with a State Indicator Entity by its state by @Bascht74 in #605
- fix: Redraw button page buttons when their entity's availability changes by @Bascht74 in #606
- improve: Redraw only the affected buttons after a button page click by @Bascht74 in #607
- fix: Stop the Invalid variable name warning when the Blueprint sets up the panel by @Bascht74 in #604
- feat: Add a graph page for the Home page values by @JPicard90 in #590
- feat: Allow group entities for hardware buttons by @panel-easy-assistant[bot] in #602
- improve: Skip the redraw after a click for buttons their state trigger already drew by @Bascht74 in #616
- docs: Add guide to back up the original Sonoff firmware by @panel-easy-assistant[bot] in #618
- improve: Make entities page value font thresholds configurable by @panel-easy-assistant[bot] in #596
- fix: Size entities page values correctly for non-Latin text by @panel-easy-assistant[bot] in #599
- fix: Show momentary buttons on for 800 ms only when they are activated by @Bascht74 in #617
- fix: Show night pictures on forecast pages only for night-only forecasts by @panel-easy-assistant[bot] in #614
- feat: Show the active climate preset on the preset button by @panel-easy-assistant[bot] in #613
- fix: Keep values and icon colors set through the API on unconfigured home page slots by @panel-easy-assistant[bot] in #597
- fix: Restore QR codes longer than 63 characters after reboot by @panel-easy-assistant[bot] in #622
- docs: Add network guide by @panel-easy-assistant[bot] in #623
- docs: Remove outdated web server and captive portal references by @panel-easy-assistant[bot] in #624
- feat: Graph page, stale home values indicator and active climate preset by @edwardtfn in #587
New Contributors
- @JPicard90 made their first contribution in #590
Full Changelog: v2026.10.7...v2026.11.0