NSPanel-Lovelace-UI Next Level

NsPanel Lovelace UI is a Firmware for the nextion screen inside of NSPanel in the Design of Lovelace UI Design.

Current Release
1.1.0
Developer
ticaki
License
MIT

nspanel-lovelace-ui adapter for ioBroker

NsPanel Lovelace UI is a Firmware for the nextion screen inside of NSPanel in the Design of Lovelace UI Design.

Short Description

The NSPanel Lovelace UI is an alternative user interface for the Sonoff NSPanel, specifically designed for integration with iobroker. It typically relies on Tasmota (firmware) and MQTT (messaging protocol) to provide custom controls and displays directly on the NSPanel's small touchscreen.

What is the NSPanel?

The Sonoff NSPanel is a smart wall switch with:

  • two physical relay switches
  • a 3.5-inch touchscreen
  • temperature and brightness sensors

It was originally developed for the eWeLink app, but can be integrated much more powerfully with ioBroker using alternative firmware

What does the "NSPanel Lovelace UI" do?

With this custom UI, you can:

  • Display Lovelace-like Cards on the NSPanel
  • Display sensor values ​​(e.g., temperature, humidity)
  • Control scenes and automations
  • Control lights, thermostats, and other devices directly on the screen

Installation & Questions

Adapter Wiki: https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki
Adapter Community (ioBroker Forum): Forum


The following HMI components are already integrated into the NSPanel adapter:

HMI Cards

  • screensaver
  • screensaver2
  • screensaver3
  • cardChart
  • cardLChart
  • cardLChart2 (new - in progress)
  • cardEntities
  • cardSchedule
  • cardGrid
  • cardGrid2
  • cardGrid3
  • cardThermo
  • cardMedia
  • cardUnlock
  • cardQR
  • cardAlarm
  • cardPower

HMI Popups

  • popupInSel
  • popupFan
  • popupThermo
  • popupNotify
  • popupShutter
  • popupShutter2
  • popupLight
  • popupLight2
  • popupTimer
  • popupSlider
  • popupColor (new - in progress)

Buzzer Control

The adapter supports buzzer control for NSPanel devices using the Tasmota Buzzer command. This enables button sounds, urgent message notifications, and general buzzer control.

Prerequisites

To use the buzzer functionality, ensure your NSPanel Tasmota firmware has SetOption111 1 enabled. This uses BuzzerPwm for piezo buzzer frequency output instead of on/off signal.

Usage Methods

1. State-based Control

Each panel has a buzzer control state: panels.{panelName}.cmd.buzzer

// Set buzzer command (tone, duration, count, frequency)
setState('nspanel-lovelace-ui.0.panels.Panel1.cmd.buzzer', '1,2,3,0xF54');

// Examples:
setState('nspanel-lovelace-ui.0.panels.Panel1.cmd.buzzer', '1'); // Single beep
setState('nspanel-lovelace-ui.0.panels.Panel1.cmd.buzzer', '1,5'); // Longer beep
setState('nspanel-lovelace-ui.0.panels.Panel1.cmd.buzzer', '2,3,5'); // 5 beeps

2. SendTo Interface

// Basic buzzer command
sendTo('nspanel-lovelace-ui.0', 'buzzer', {
    panel: 'panelTopic',
    command: '1,2,3,0xF54',
});

// Button feedback sound
sendTo('nspanel-lovelace-ui.0', 'buzzer', {
    panel: 'kitchen_panel',
    command: '1',
});

// Urgent notification
sendTo('nspanel-lovelace-ui.0', 'buzzer', {
    panel: 'living_room',
    command: '3,5,10,0x800', // High-pitched, multiple beeps
});

Buzzer Command Format

The buzzer command follows Tasmota's format: tone,duration,count,frequency

  • tone: 1-4 (tone type)
  • duration: 1-10 (duration units, ~100ms each)
  • count: 1-255 (number of beeps)
  • frequency: 0x100-0xFFFF (piezo frequency in hex)

Examples:

  • 1 - Single short beep
  • 1,5 - Single longer beep
  • 2,3,5 - 5 medium beeps with tone 2
  • 1,2,3,0xF54 - 3 short beeps with custom frequency

Changelog

WORK IN PROGRESS

  • (tt-tom17) fix: a cardPower page created in the admin tab showed white icons although the color scale was switched on. The scale was only built when both its lower and its upper bound had been typed in; a bound that was left at its displayed default was never stored. The defaults of the classic accordion (0 / 10000 / 0) apply now
  • (tt-tom17) admin: a newly added power slot of a cardPower page stores its color and speed scale bounds explicitly (0 / 10000 / 0 and 0 / 10000), the same way the classic accordion did, instead of only displaying them
  • (tt-tom17) the expert tab Navigation Overview has been removed. It never made it into productive use; the navigation of a panel is configured in its script or in the Navigation Flow tab
  • (ticaki) a page named main in the global script configuration is used as start page of every panel that has none of its own. That is unchanged, but it is now logged and the navigation view of the admin marks such pages as page from the global script configuration
  • (tt-tom17) admin: the navigation assignment panel can show system pages (the ///-prefixed ones) in the prev/next/parent/home dropdowns via a new checkbox; ///unlock is always listed
  • (tt-tom17) admin: the navigation flow tab remembers the last selected panel and restores it on reload, instead of always jumping back to the first one
  • (tt-tom17) fix: the info panel of the navigation flow left the icon row out whenever the icon was read from a state instead of being set as a constant. It now shows the icon the panel really displays - the current value of that state, together with a hint which state it comes from, or empty when the state holds nothing
  • (tt-tom17) fix: setting the prev or next of a page to the service page ///unlock in the admin had no effect. The dropdowns offer page names, the adapter resolves navigation node names, and the service entry point is the one place where the two differ - it is mapped now

1.1.0 (2026-09-06)

  • (ticaki) fix: a panel card marked with Check! was hard to read - white text on the beige card in the dark themes, almost invisible input frames in the new light one. The icons of the icon picker were invisible in the blue theme
  • (ticaki) fix: passwords no longer reach the log in plain text
  • (ticaki) fix: setting a panel up failed with Invalid response from adapter or the message from the admin is incomplete. It runs as three steps now and shows how far it got
  • (ticaki) fix: the timezone dropdown froze the browser, is a searchable field now, and the chosen zone reaches the panel at last
  • (ticaki) fix: a switched off panel was marked as such in english and german only, and hard to tell from an offline one
  • (ticaki) the start page can now be set in the admin: a checkbox marks any admin page as start page, it replaces the one from the configuration script and is marked with (main)
  • (ticaki) a panel no longer needs a page named main in the configuration script, so it can be set up in the admin alone (script version 0.21.1)
  • (ticaki) navigation flow: nodes are coloured by origin, pages linked with next and prev share one edge, a long press target and a navigation target read from a state get a connection of their own, and hovering or clicking highlights what belongs together
  • (ticaki) navigation flow: an option shows the states and channels each page works with as nodes of their own, with an info panel listing what a page item makes of them
  • (ticaki) navigation flow: the page info starts with the page name and its headline and links to the page configuration of an admin page
  • (ticaki) admin: the navigation assignment marks a navigation target that does not exist on an assigned panel
  • (ticaki) fixed: replacing a script page from the admin tore the navigation apart and could cut off the access to the service pages
  • (ticaki) fixed: a panel without its own start page could show the start page of another panel
  • (ticaki) fixed: after sending the configuration script the reloaded panel lost the pages of all other panels until the adapter was restarted
  • (ticaki) fixed: a cardQR, cardAlarm or cardUnlock page in the configuration script stopped all following pages from being created
  • (ticaki) fixed: the page configuration of a cardTrash page did not open when the entry carries no waste types yet
  • (ticaki) fixed: the state mainNavigationPoint was not translated

1.0.1 (2026-09-01)

  • (tt-tom17) cardChart (line): the x-axis no longer uses a fixed 24 h window, it now follows the configured hours range
  • (tt-tom17) admin: the trash page now shows a status line after an .ics upload, including the number of appointments found
  • (ticaki) admin: fixed the target page selection in the page item dialog – the dropdown stayed empty and could crash the page config tab (null is not an object (evaluating 'x.current.removeAttribute'))

1.0.0 (2026-08-18)

  • (copilot) BREAKING: Adapter requires node.js >= 22 now
  • (GermanBluefox) BREAKING: Admin UI migrated to React 19 / MUI 9 / @iobroker/gui-components – requires admin 8.0.0 or newer
  • (ticaki) cardPower configuration migrated to the new react based page config tab
  • (ticaki) admin: previous/next buttons in the navigation assignment panel were swapped
  • (ticaki) berry driver generation 11 added (beta), the automatic berry driver update was removed

0.17.8 (2026-04-25)

  • (ticaki) fixed: Cannot read properties of undefined (reading 'trim')

0.17.7 (2026-04-24)

  • (ticaki) Added panels.{id}.cmd.activated state to enable/disable a panel; toggle visible in TabMaintain and TabPanelinfo admin UI
  • (ticaki) Fixed textSize/fontSize value 0 being rejected by the admin and ignored in some cases

0.17.6 (2026-04-22)

  • (ticaki) Added useValueConditions to pageItem. This can be used to set conditions for when the value and when the icon should be displayed.
  • (ticaki) textSize=0 was rejected by the admin

0.17.5 (2026-04-18)

  • (ticaki) When the panel was restarted by the script, the model was set to ‘eu’

0.17.4 (2026-04-16)

  • (ticaki) The admin navigation has been assembled incorrectly.
  • (ticaki) Improved selection of custom button IDs
  • (tt-tom17) fixed: ChannelConfigDialog bottom cut off on small laptop screens (save/color buttons not reachable)

0.17.3 (2026-04-14)

  • (ticaki) fixed: textSize/fontSize 0-5 and tooltip, us-p admin layout, not update emu berry, textSize for custom item, activate trigger for custom id

0.17.2 (2026-04-13)

  • (ticaki) bugfix: pageitem name / icon as id for most roles / textSize

0.17.1 (2026-04-12)

  • (ticaki) bugfix: longpress

0.17.0 (2026-04-12)

  • (tt-tom17) added: ChannelColorDialog
  • (ticaki) added: customItem, longPress, targetPageLongPress, icons as id, div.

0.16.2 (2026-04-09)

  • (ticaki) fixed: channel duplicate error
  • (tt-tom17) fixed: ChannelConfigDialog – error messages (datapointErrors, datapointDuplicates, checkResult) are now properly reset when reopening the dialog

0.16.1 (2026-04-09)

  • (ticaki) The native configuration in pageitems is available to everyone. It corresponds exactly to the script configuration for a page item.

0.16.0 (2026-04-09)

  • (ticaki) feat: new visual page editor in the admin UI – configure cardGrid, cardGrid2, cardGrid3, cardEntities and cardSchedule pages including their items directly in the admin.

0.15.4 (2026-04-04)

  • (tt-tom17) fixed: iCal / trash page – date display year format (2-digit vs. 4-digit) was swapped for short and long item lists
  • (ticaki) fixed: panel rule timer increased from 120 s to 140 s to reduce false "panel disconnected" events after startup
  • (ticaki) fixed: setPopupNotification now returns { error: 'No Panels Online' } via callback when no panel is online instead of silently ignoring the call

0.15.2 (2026-03-26)

  • (tt-tom17) added: message dialog when berry installation fails due to missing internet access on the panel
  • (ticaki) added: improved offline detection for panels
  • (ticaki) improved: version info caching (15–60 min) to reduce external API calls
  • (ticaki) fixed: admin panel info tab now displays state labels in the correct system language

0.15.1 (2026-03-18)

  • (ticaki) added: internet access check for Tasmota device before berry installation

0.15.0 (2026-03-16)

  • (ticaki) added: ScreensaverEntityFillIfBelowMin – fills screensaver slots when too few items are visible (default: true)
  • (ticaki) fixed: various bug fixes and improvements in the admin UI

0.14.0 (2026-03-14)

  • (tt-tom17) refactored: timezone selection code moved from adapter to admin handler (internal, no UI changes)
  • (ticaki) added: TempOffset configurable in objects and admin tab (#629)
  • (ticaki) added: "Update scripts for all panels" button in Maintain tab

0.13.4 (2026-03-07)

  • (ticaki) added: buttonOnDelayOff / buttonOffDelayOn / buttonDelayOn / buttonDelayOff modes for HW button actions

0.13.3 (2026-03-04)

  • (ticaki) fixed critical bug when using internal MQTT server

0.13.2 (2026-03-02)

  • (ticaki) Maintain table: proper semver comparison for Tasmota and TFT versions (upgrade vs. downgrade detection)
  • (ticaki) TabPanelinfo: openTasmotaConsole button fixed
  • (ticaki) Some minor fixes (settings model, tab model, field types)

0.13.1 (2026-03-01)

  • (ticaki) New Admin tab for quick overview and minor settings
  • (tt-tom17)(ticaki) Panel status system with badge (online/offline/setup/flashing states)
  • (tt-tom17) Panel management improvements (IP selector, delete/edit panels, init button)
  • (tt-tom17) MQTT configuration UI design improvements
  • (tt-tom17)(ticaki) Various fixes (badge flickering, tab focus, jsonConfig, translations, hex colors)

0.12.1 (2026-02-20)

  • (ticaki) fixed: brightsky template
  • (ticaki) fixed: malfunction of the update icon in the screensaver
  • (ticaki) fixed: When sending the script, the restart was confirmed with the wrong panel name.

0.12.0 (2026-02-19)

  • (ticaki) NSPanel TFT version is displayed correctly depending on the model.
  • (ticaki)(tt-tom17) Option to write Tasmota telemetry data into states.
  • (tt-tom17) Admin-Tab globalSetting convert to React
  • (tt-tom17) Admin-Tab Maintain convert to React
  • (tt-tom17) Add icon selector to trash entries

0.10.0 (2026-01-17)

  • (ticaki) Confirmation click for role button
  • (ticaki) Some duplicate unique names were overlooked during script transfer.
  • (tt-tom17) bug fixes for role 'blind'
  • (ticaki) minor bug fixes

0.9.1 (2025-11-29)

  • (ticaki) Fixed: Under certain circumstances, the adapter crashes when a pop-up is called.

0.9.0 (2025-11-21)

  • (armilar) HMI: long press added (v5.1.1)
  • (ticaki) Replace double-click with long press
  • (ticaki) pageItem type=button long press added
  • (ticaki) custom pageitem added
  • (ticaki) script ID is found uniquely

0.8.1 (2025-11-15)

  • (ticaki) first Version at latest
  • (ticaki) New attempt to get MQTT TLS keys into the backup

0.8.0 (2025-11-13)

  • (Armilar) IMPORTANT: update to TFT Version 5.1.0
  • (ticaki) pagePopup added
  • (ticaki) color for brightsky favorit/bottom day fixed
  • (ticaki) unlock pin fail fixed

License

MIT License

Copyright (c) 2024-2026 ticaki github@renopoint.de
Copyright (c) 2024-2026 tt-tom17 tgb@kabelmail.de

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.