NSPanel Pro v4.2.0 Officially Released: New Features & Enhancements

Hello,

I would like to clarify an important point regarding your request. I do not use Zigbee2MQTT, and I have never used the eWeLink add‑on. My setup uses NSPanel Pro in MQTT Bridge mode only (zigbee2cube). Because of this, I cannot provide a comparison of “MQTT Discovery messages from Zigbee2MQTT vs. NSPanel Pro”, since:

  • Zigbee2MQTT is not part of my system,
  • the eWeLink add‑on is not part of my system,
  • and NSPanel Pro in MQTT Bridge mode does not publish any MQTT Discovery payloads at all.

This is exactly the issue I am reporting: NSPanel Pro does not generate entity‑level MQTT Discovery messages, while Zigbee2MQTT does. Therefore, there are no NSPanel Pro discovery payloads to compare — they simply do not exist.

Below is the actual data published by NSPanel Pro, taken directly from MQTT Explorer. This is the complete payload for the TRVZB device:

{
  "bind_status": 0,
  "rssi": -69,
  "linkquality": 124,
  "local_temperature": 21.6,
  "occupied_heating_setpoint": 18,
  "system_mode": "auto",
  "running_state": "idle",
  "manual_mode_temperature": 24,
  "local_temperature_calibration": 0,
  "frost_protection_temperature": 7,
  "idle_steps": 246,
  "closing_steps": 351,
  "valve_opening_limit_voltage": 1720,
  "remote_temperature": 2320,
  "temperature_report_precision": -100,
  "child_lock": "UNLOCK",
  "open_window": "ON",
  "screen_direction": 0,
  "battery": 73,
  "valve_closing_limit_voltage": 2821,
  "valve_motor_running_voltage": 1453,
  "valve_opening_degree": 100,
  "valve_closing_degree": 100,
  "weekly_schedule": {
    "monday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "tuesday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "wednesday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "thursday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "friday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "saturday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20",
    "sunday": "00:00/18 07:00/23 10:00/21 17:00/22 23:00/20 23:00/20"
  },
  "auto_target_temperature": 18,
  "last_seen": "2026-01-27T04:01:40.402Z",
  "fault_code": null,
  "temporary_work_mode_set": null,
  "set_timer_mode_duration": null,
  "set_boost_mode_duration": null,
  "temporary_mode_temp_set": null,
  "update": {
    "installed_version": -1,
    "latest_version": -1
  }
}

zigbee2cube/0x142d41fffe428404

This is the only data NSPanel Pro publishes. There are no MQTT Discovery topics such as: homeassistant/sensor/0x142d41fffe428404/temperature/config

This is exactly the issue I am reporting: NSPanel Pro does not generate entity‑level MQTT Discovery messages, which is why Home Assistant creates raw technical entity IDs and no metadata (friendly names, device_class, state_class, icons, categories, suggested_area, etc.).

The screenshot you shared is structurally identical to what I see for my TRVZB in Home Assistant. However, this discovery payload is not published by NSPanel Pro. Home Assistant generates the discovery payload you see in the debug view based on this raw data.

So:

  • the raw MQTT state comes from NSPanel Pro (zigbee2cube/...),
  • the MQTT Discovery payload is generated by Home Assistant, not by NSPanel Pro.

┌──────────────────────────────┐
│        Zigbee Device         │
│        (e.g., SONOFF TRVZB)  │
└───────────────┬──────────────┘
                │ Zigbee interview:
                │  - manufacturer
                │  - model
                │  - firmware
                │  - capabilities
                ▼
┌──────────────────────────────┐
│          NSPanel Pro         │
│     (Zigbee Coordinator)     │
└───────────────┬──────────────┘
                │ Publishes **two independent data streams**
                │
     ┌──────────┴──────────┐
     │                     │
     ▼                     ▼
┌────────────────────────┐   ┌──────────────────────────────┐
│   MQTT Discovery        │   │     Raw Zigbee States         │
│ homeassistant/.../config│   │     zigbee2cube/<ieee>        │
└────────────────────────┘   └──────────────────────────────┘
   **Set A: METADATA**          **Set B: DEVICE STATES**
   - manufacturer               - local_temperature
   - model                      - occupied_heating_setpoint
   - firmware                   - battery
   - device_class               - child_lock
   - unit_of_measurement        - weekly_schedule
   - entity_category            - valve steps
   - icon                       - etc.
   - min / max / step
   - state_topic
   - command_topic
   - value_template
   (no state values)            (no metadata)

                ▼
┌──────────────────────────────┐
│        Home Assistant         │
│  - receives discovery (A)     │
│  - receives states (B)        │
│  - merges both into entities  │
└──────────────────────────────┘

The feature I am asking for is: for NSPanel Pro itself to publish proper MQTT Discovery payloads for each entity (like Zigbee2MQTT does), instead of relying on Home Assistant to infer everything from raw topics.

Regards,

One more clarification, just to ensure we are talking about the same thing.

When you refer to “MQTT Discovery messages from Zigbee2MQTT”, do you mean:

A) the actual discovery payloads published by the Zigbee2MQTT project
(e.g. homeassistant/…/config topics generated by Z2M itself),

or

B) the discovery payloads that Home Assistant generates automatically based on raw MQTT data coming from NSPanel Pro?

I am asking because NSPanel Pro in MQTT Bridge mode publishes only raw state payloads (zigbee2cube/), and Home Assistant generates the discovery entries you see in the debug view. NSPanel Pro does not publish any homeassistant/…/config topics on its own.

If your intention was to compare NSPanel Pro’s raw MQTT output with Zigbee2MQTT’s full discovery payloads, then I can confirm that NSPanel Pro currently does not generate discovery messages at all — only raw device state.

Devices: NSPanel Pro 86, NSPanel Pro 120

Firmware: v4.x (issue present since v4.0, confirmed on v4.2.0)

Component: Zigbee coordinator

Issue description:

After upgrading from firmware v3.x to v4.x, the Zigbee coordinator fails to handle end-device pairing. No Zigbee devices can be paired or rejoined, even though the same devices worked reliably on v3.x.

Affected devices:

  • Zigbee motion / proximity sensors

  • Zigbee temperature sensors

  • Zigbee lighting devices

  • Aqara Zigbee devices (and other vendors)

Expected behavior:

Zigbee devices should pair and operate normally, as on firmware v3.x.

Actual behavior:

  • devices are not discovered or pairing always fails

  • issue occurs on both NSPanel Pro 86 and 120

  • Zigbee reset and device reboot do not resolve the issue

Conclusion:

Highly likely regression in the Zigbee coordinator implementation introduced in firmware v4.x.

I would like to clarify one point: when adding devices to Home Assistant via NSPanel Pro, a device discovery message is published—specifically, the information published under the topic you mentioned, homeassistant/…/config. Moreover, the messages under this topic are set with retain=true. They are not generated by Home Assistant, as you suggested.

In our current technical implementation for adding devices to Home Assistant via NSPanel Pro, the entity IDs and device names are based on the device’s MAC address. This is why the device names and entity IDs displayed in Home Assistant may not appear user-friendly.

I am not questioning device-level discovery. I agree that NSPanel Pro publishes a retained discovery message that allows Home Assistant to create the device with correct manufacturer and model information. This part works as expected.

You mentioned that the discovery message under this topic is published with retain=true and that it is not generated by Home Assistant. I fully understand that — but this applies only to the device-level discovery topic. My report is not about the device-level /config message!

The issue I am reporting concerns entity-level MQTT Discovery, which is a separate mechanism in Home Assistant.

In MQTT Bridge mode, NSPanel Pro publishes only raw state topics (e.g. zigbee2cube/). Based on this raw data, Home Assistant infers entities internally, which is why entity IDs and names are technical and MAC‑based. These inferred entities are not created from MQTT Discovery messages published by NSPanel Pro.

What is missing are individual Home Assistant discovery topics per entity (sensor / number / switch). These /config topics would allow NSPanel Pro to explicitly define entity names, icons, units, device classes, and other metadata — similar to how Zigbee2MQTT implements MQTT Discovery.

Without these per‑entity discovery messages, Home Assistant has no way to know which entities NSPanel Pro intends to expose, so it falls back to auto‑generated, MAC‑based entities.

Please confirm whether NSPanel Pro publishes separate Home Assistant MQTT discovery topics per entity (e.g. one /config topic per sensor/number/switch).
If yes, please provide an example topic and payload.
If not, this is exactly the missing feature I am requesting.

Additionally, using retain=true for the device‑level discovery message creates practical issues on the Home Assistant side. Because NSPanel Pro does not publish any per‑entity discovery topics, the retained device‑level /config message remains in the broker indefinitely. As a result, Home Assistant re‑imports the device after every restart, even if the user removes it, and stale retained discovery can lead to inconsistent or duplicated entities. This is another reason why proper per‑entity discovery topics are needed.

Summarizing our discussion so far, I want to highlight the core of the issue: the log spam and template warnings in Home Assistant are caused by inconsistent, partial MQTT payloads from the NSPanel Pro. The panel sometimes sends only a subset of JSON fields (e.g., battery, temperature_calibration), which triggers warnings in HA.

The problem lies with the device/publishing side – Home Assistant is correctly reporting missing fields. Wrapping the transport in additional filters on the HA side is merely a workaround. The proper solution is for NSPanel Pro to always publish a full, stable payload, or assemble it from deltas on its side before sending it via MQTT.

Is my NSPanel PRO up to date ?
My NSPanel Pro, in Europe, has the App Version: 4.1.5 , OS Version: 4.1.3 , Cube Version: 1.13.5 .

When checking for software update it saying “Checked” and displays “Latest version”.

I had reset it to factory settings and checked for updates again, but nothing new.

Thank you !

Hi, if you have not joined the beta program, your device is already on the latest public version.
If you are interested in the beta version or are willing to participate in beta testing, you can use the beta tool to apply to join. The current beta version is 4.3.3:
https://panel.sonoff.tech/nspanel-pro/beta-test/#/login

Thank you @Milk !

Hi JoJo,

Any chance to update my Sonoff NS Panel Pro 86, Device ID 100213a4ef to V4? I was running some V3 with HA Web Shortcut and I rooted the device in the past. As I haven’t received no updates recently I tried to factory reset the device. Now I’m on V2.2.0 ? and even the web shortcuts are missing…

Thanks,
Jan

You can join the beta test and upgrade to the latest version using the beta tool:
https://panel.sonoff.tech/nspanel-pro/beta-test/#/login
(However, the webshortcut feature is no longer available in version 4.x.x either.)

Hello,

I would like to request a manual OTA push on my NSPanel Pro device (1001ed08f1) to the latest stable version, if possible

When can we expect the next Stable (Public) Release?

Did you get that working?

For me the app store is not opening

Currently, you can apply for the latest beta version using the beta tool.

@henkvis As for when the next stable version will be released, we will discuss it based on the latest user feedback. It shouldn’t be too long now. Once it’s released, I will update you.

Is it still possible to hide the “Assistive Touch” button, so that Home Assistant installed over F-Droid and set as “Home App” can’t be closed accidentally?

yes, that can be done through the eWelinkApp, in the device settings you will find the option to enable/disable the accessibility button.

Can I ask how things are going with my suggestions for improving the alarm? I’m supposed to go install the NSPP but they also want the alarm, I need the notification to actually work!

May I ask if this is regarding what you mentioned earlier: wanting different sensors (e.g., gas, smoke) to trigger distinct alarm sounds, or having high-level alerts trigger a phone call to your mobile? This suggestion is very helpful, and we are still discussing the specific implementation plan.

Everything you mentioned. The main thing for me is the notifications. If the alarm can’t warn me enough, it’s useless.

You could also make a smoke or gas detector, I often think about that.

If you would like, I can send you a description of how I set up the alarm in a private message. Maybe you will like some of my settings and decide to use them.