NSPanel Pro - Custom android apps (working)

I was initially worried given the lack of documentation, plus Sonoff stating in their FAQ SONOFF NSPanel Pro Version Update Information and FAQ - SONOFF Official that this is unsupported… Well, good news, it turns out to be actually unlocked and trivial to run whatever app you like.
So far, I connected via USB, ran various adb commands, including side loading and running various apk’s including Device Info and HA Companion. After updating to the latest version, I noticed I was also able to connect adb via wifi as well.

I was not able to sign in HA companion yet, not sure why.
Next I plan to try to get HA Companion to login and load at startup, I wonder if there is a way to setup the credentials via adb so I can script the entire setup from within HA similar to the AndroidTV integration.

7 Likes

I’ve been waiting to see if anyone would be able to crack this thing open. Turns out it’s just waiting to be exploited. I will be following this one with interest.

Can you possibly post up a walkthrough of how you go to where you are?

repying to my own question but i managed to figure out how to open Home Assistant either using the native browser or something like Firefox focus.

  1. Connect to your device using ADB - you can do this by connecting a cable to the MicroUSB port inside the NSPanel Pro

  2. Follow the steps on this page to connect it via WiFi (will make things easier in the long term).

  3. Optional - install FireFox focus using the APK found on this page using the following command:
    adb -e install /path/to/your/downloaded APK

  4. To open your HA instance/dashboard, copy the following command into a terminal and replace the square brackets with your URL:
    adb -e shell am start -a android.intent.action.VIEW -d [URL of your HA instance]

The NSPanel Pro will now ask how you want to open the link and it’ll let you log in.

Thanks @simonbooth for finding that it’s unlocked, that’s opened a world of possibilities now. Just need to find a way to run a script on startup

Edit to add:
After setting up as above, the panel seems to work with the Android TV integration. Follow the UI set up for Android TV, enter the IP of you NSPanel Pro and leave all the other settings as they are and you’ll find the device is now shown in HA as a media player.
You can then use the AndroidTV service to send scripted commands as per the discussion on this page

3 Likes

First of all, Thanks for this great discovery.

Building on your guide, I managed to change the default launcher by WallPanel

  1. Install the APK: adb -e install wallpanel_0.9.5.7.apk
  2. Go to home to select the new installed launcher: am start -c android.intent.category.HOME -a android.intent.action.MAIN
  3. Configure WallPanel.
  4. Disable Hardware Acceleration in Wallpanel to get lovelace fully loaded.

This is the result.

1 Like

I’m exactly in this step. The good part of wallpanel is that it is a launcher, so it will display when booting.

Edit:
Why did you installed the v0.9.5.7 instead of the latest v0.9.6.0 ?

1 Like

So with this wallpanel launcher, what do we get?
Do we see companion app? How does it scale on the screen?

Rebooting will indead keep wallpanel. I killed ewelink :smiley:

@Hellis81 “WallPanel is an Android application for Web Based Dashboards and Home Automation Platforms”
Basicly it will show the hass webpage, manages the screensaver and reports back sensors via mqtt.
I use it very stable on my wall mounted tablets

@jotacor I used the old one to prevent incompatibility with the older android version as i read in the release notes “that is compatible with Android 9 and newer devices. This version requires a minimum Android SDK version of 21”
I was not sure if it would be backwards compatible so i just wanted to be sure :blush:

1 Like

I just installed the HA Companion v2022.08 from APKMirror.
You need to unzip the APKM and install the following packages:
adb install-multiple split_config.armeabi_v7a.apk split_config.xxhdpi.apk split_config.xxhdpi.apk split_config.ms.apk split_config.mdpi.apk base.apk split_config.XX.apk

It starts fine but it crashes from time to time.

nice find.

Unfortunately this doesn’t load the dashboard for me, it lets me log in, then gets to about 90% loaded and just hangs with the Home Assistant logo. Using either 0.9.5 or 0.9.6

Step 4, disabling the hardware acceleration solved that for me.

Update:
For me the Wallpanel is not working (any version), even if I disable the hardware acceleration. It gives me an error with the token and Home Assistant v2022.9.

I installed again the Home Assistant apk, and prepared a user with an empty dashboard for it, because the error Home Assistant was throwing was about the frontend JS.
With a clean dashboard prepared for it, it seems that works quite well.

Now the challenge is to start the Home Assistant on boot.

The Panel is detected by Home Assistant as a Media Player.
I send an adb command when it starts “playing”, so HA Companion runs.

It makes sense, if the Home Assistant is up and SonoffPanel starts it sends the start command to the Panel.

Let’s see how it works, because I’m seeing that the display is not going to sleep anymore because the app is running :sweat_smile:

Yes, similar experience here.

I haven’t tried the companion app as yet, but have been using Firefox Focus which works well.
I have an automation the same as yours to load the dashboard when the panel goes from unavailable to playing and the source is the eWelink control panel.

I’ve been using this package (now deprecated, but there is a forked version) to manage screensaver features and dimming and sleep. I haven’t tried the newer forked version as yet - that’s a job for later this week.

A few photos of my setup and dashboard:






2 Likes

This panel is from Firefox Focus with the Wallpanel?

I’m having issues with the HACompanion, I see how HA replies with the json to the companion, but companion throws that has no access to HA.

I connected adb logcat and I see several errors when companion starts.
It connects and retrieves information but seems that is not able to render¿?

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.WebViewRenderProcessClient"

This class was added in API 29, and this Android is 8.1 (API 21).

1 Like

Finally, best solution for me.

Use the non-Focus Firefox (to store the credentials).
Open it with an Automation when Android TV is playing adb shell am start -a android.intent.action.VIEW -d http://192.168.1.5:8123/your-dashboard/view.
Set it to always open with Firefox.
Configure Lovelace Wallpanel Screensaver for black screen.

I would like that the display switches off/on, but for some reason when you open an app inside the panel it doesn’t switch off the display after the time you configure, I guess the system is not prepared for that and it is controlled inside the app eWelink.

I was able to switch off/on manualy with adb shell input keyevent 26.

Use that key input event at your own risk as it killed my device!

It worked for me, but I thought that the display will wake up once I press the screen. But sending another keyevent 26 it wakes.
Not going to do more tests as it works now with the screensaver even that the display does not switch off, and the screensaver only puts a black image.