NSPanel Pro with Wallpanel on Fully Kiosk Browser

Hello, I would like to share, what I could achieve on my NSPanel Pro (3x):
1st: A screensaver with HA wallpanel from HACS for status information:
screencap1
2nd: Main screen to interact with HA, with several subviews:
screencap2

It runs on V1.5 with Display sleep set to 30 min and Screensaver off
Fully Kiosk Browser (Keep screen on: off)
wallpanel starts after 30sec,
https://github.com/j-a-n/lovelace-wallpanel
Seaky’s proximity tool to wake up the screen:
https://github.com/seaky/nspanel_pro_tools_apk

15 Likes

Great work, can you please share more detail on how you did that, also how can you update with developer mode enabled?

My first panel is still on firmware 1.33, the other two where updated before activating ADB. I did not try to update the older panel.
I created a dashboard just for the NSPanelPro. It is based mainly on Mushroom Cards cards and chips. But I use a theme from UI-Lovelace-Minimalist without the menus.
The screensaver is done with lovelace-wallpanel.

For the panel I followed Sideload Apps to Sonoff NSPanel Pro, Sonoff NSPanel Pro Secrets, Tips and Tricks
to install a launcher, fully kiosk browser and the proximity tool.
For firmware 1.5 it was just activating ADB and installing the apps. I did not update webview or anything else.
But be aware: By activating ADB (developer mode) you loose all support and warenty and you cannot update the firmware anymore.
But I am very happy with this solution that I do not miss the default eWeLink way.

3 Likes

I now went further and licensed fully kiosk browser.
No I can adjust brightness, screen timeout and screensaver of fkb.
At daytime I keep the screen on but lower the brightness with fkb screensaver, keeping the view transparent.
With lower light I set the brightness to a lower level.
At night I switch the display of.
Seaky’s proximity tool works fine with this and can reactivate the screen. But it cannot deactivate the fkb screensaver.
So at daytime two steps are necessary: Touch to deactivate the screensaver and one more to deactivate Lovelace wallpanel.

1 Like

wish we could fully use NSPanel Pro.
next official update will include ROUTER / COORDINATOR Zigbee switch!
which means that the panels could work as repeaters.

i have two NSPanel Pros… one with developer mode on which made me lose the updates and it is not using it’s full potentials…
and one with dev mode off… which updates… but it is almost useless.

Hello, it there any chance that you could share the YAML for the WallPanel Settings?
I would like to create something simulare and I can’t get the transparency for the Mushroom Chips and the Time / Date Cars.

This is the code of the wallpanelpart at the beginning:

wallpanel:
  enabled: true
  idle_time: 60
  screensaver_entity: input_boolean.wallpanel_screensaver
  image_url: https://source.unsplash.com/random/${480}x${480}?weather
  cards:
    - square: false
      columns: 2
      type: grid
      cards:
        - type: custom:digital-clock
          card_mod:
            style: |
              ha-card {
                --ha-card-box-shadow: none;
                --ha-card-background: none;
                --ha-card-spacing: 0px;
                --ha-card-padding: 8px;
              }
          dateFormat:
            weekday: long
            day: 2-digit
            month: short
          timeFormat:
            hour: 2-digit
            minute: 2-digit
        - type: vertical-stack
          cards:
            - type: custom:mushroom-chips-card
              alignment: end
              card_mod:
                style: |
                  ha-card {
                    --chip-box-shadow: none;
                    --chip-background: none;
                    --chip-spacing: 0px;
                    --chip-padding: 8px;
                  }
              chips:
                - type: conditional
                  conditions:
                    - entity: sensor.warnungen
                      state: 'on'
                  chip:
                    type: entity
                    entity: sensor.warnungen
                    icon: mdi:weather-partly-lightning
                    tap_action:
                      action: none
                    icon_color: red
                    content_info: none
                - type: conditional
                  conditions:
                    - entity: input_boolean.mylo
                      state: 'on'
                  chip:
                    type: entity
                    entity: input_boolean.mylo
                    icon_color: purple
                    content_info: none
                - type: conditional
                  conditions:
                    - entity: input_boolean.gaste
                      state: 'on'
                  chip:
                    type: entity
                    entity: input_boolean.gaste
                    icon_color: purple
                    content_info: none
                - type: template
                  double_tap_action:
                    action: none
                  entity: alarm_control_panel.alarmo
                  tap_action:
                    action: navigate
                    navigation_path: /nspanelpro-eg/alarmanlage
                  hold_action:
                    action: none
                  icon: >-
                    {% if is_state('alarm_control_panel.alarmo','disarmed') %}
                      mdi:shield-off
                    {%- elif is_state('alarm_control_panel.alarmo','armed_home')
                    -%}
                      mdi:shield-home
                    {%- else -%}
                      mdi:shield-lock
                    {%- endif %}
                  icon_color: |-
                    {% if is_state('alarm_control_panel.alarmo','disarmed') %}
                      green
                    {%- else -%}
                      red
                    {%- endif %}
                - type: template
                  double_tap_action:
                    action: none
                  entity: lock.turschloss
                  icon: |
                    {% if is_state('lock.turschloss', 'unlocked') %}
                      mdi:lock-off
                    {%- else -%}
                      mdi:lock
                    {%- endif %}
                  icon_color: |-
                    {% if is_state('lock.turschloss', 'unlocked') %}
                      green
                    {%- else -%}
                      red
                    {%- endif %}
                  tap_action:
                    action: navigate
                    navigation_path: /nspanelpro-eg/alarmanlage
                  hold_action:
                    action: none
            - type: custom:mushroom-chips-card
              alignment: end
              card_mod:
                style: |
                  ha-card {
                    --chip-box-shadow: none;
                    --chip-background: none;
                    --chip-spacing: 0px;
                    --chip-padding: 8px;
                  }
              chips:
                - type: conditional
                  conditions:
                    - entity: sensor.abfallnext
                      state: '0'
                  chip:
                    type: entity
                    entity: sensor.abfallnext
                    content_info: none
                    icon: mdi:trash-can
                    tap_action:
                      action: none
                    icon_color: red
                - type: conditional
                  conditions:
                    - entity: sensor.abfallnext
                      state: '1'
                  chip:
                    type: entity
                    entity: sensor.abfallnext
                    content_info: none
                    icon: mdi:trash-can
                    tap_action:
                      action: none
                    icon_color: orange
                - type: conditional
                  conditions:
                    - entity: sensor.batterylevelgering
                      state: 'True'
                    - entity: sensor.batterylevelkritisch
                      state: 'False'
                  chip:
                    type: action
                    double_tap_action:
                      action: none
                    icon: mdi:battery-40
                    icon_color: orange
                    tap_action:
                      action: navigate
                      navigation_path: /nspanelpro-eg/batterie
                    hold_action:
                      action: none
                - type: conditional
                  conditions:
                    - entity: sensor.batterylevelkritisch
                      state: 'True'
                  chip:
                    - type: action
                      double_tap_action:
                        action: none
                      icon: mdi:battery-20
                      icon_color: red
                      tap_action:
                        action: navigate
                        navigation_path: /nspanelpro-eg/batterie
                      hold_action:
                        action: none
                - type: conditional
                  conditions:
                    - entity: group.updates
                      state: 'on'
                  chip:
                    type: template
                    double_tap_action:
                      action: more-info
                    icon: mdi:shield-alert
                    content_info: none
                    tap_action:
                      action: none
                    hold_action:
                      action: more-info
                    icon_color: |2-
                        {% if is_state('group.updates', 'on') %}
                          amber
                        {%- else -%}
                          gray
                        {%- endif %}
                - type: conditional
                  conditions:
                    - entity: binary_sensor.luftfeuchtigkeit_bin
                      state: 'on'
                  chip:
                    type: template
                    double_tap_action:
                      action: more-info
                    icon: mdi:water-percent-alert
                    content_info: none
                    tap_action:
                      action: none
                    hold_action:
                      action: more-info
                    icon_color: >-
                      {% if (is_state('binary_sensor.luftfeuchtigkeit_bin','on')
                      ) %}
                        blue
                      {%- else -%}
                        gray
                      {%- endif %}
                        
                - type: entity
                  entity: sensor.stromverbrauch
                  use_entity_picture: false
                  double_tap_action:
                    action: more-info
                  tap_action:
                    action: none
                  hold_action:
                    action: more-info
    - square: false
      columns: 1
      type: grid
      cards:
        - type: weather-forecast
          entity: weather.dwd_weather_bruehl_1h
          secondary_info_attribute: humidity
          name: Brühl
          show_current: true
          show_forecast: false
    - square: false
      columns: 3
      type: grid
      cards:
        - type: custom:mushroom-template-card
          primary: Licht
          secondary: |-
            {% if (states('sensor.total_lights_on')| int > 0) %}
              {{ states('sensor.total_lights_on') }}
            {%- else -%}
              aus
            {%- endif %}
          icon: mdi:lightbulb
          entity: sensor.total_lights_on
          fill_container: true
          icon_color: |2-
                      {% if states('sensor.total_lights_on') | int > 0 %}
                        amber
                      {%- else -%}
                        lightgray
                      {%- endif %}
          layout: vertical
          tap_action:
            action: navigate
            navigation_path: /nspanelpro-eg/licht
          badge_color: ''
          badge_icon: ''
        - type: custom:mushroom-template-card
          primary: Fenster
          secondary: |-
            {% if states('sensor.total_open_windows') | int > 0 %}
              {{ states('sensor.all_open_windows') }} / {{ states('sensor.all_open_roofwindows') }} / {{ states('sensor.all_open_cellerwindows') }}
            {%- else -%}
              geschlossen
            {%- endif %}
          icon: >-
            {% if ( states('sensor.all_tilted_doors') | int > 0 or
            states('sensor.all_open_windows')| int > 0 ) %}
              mdi:window-open-variant
            {%- else -%}
              mdi:window-closed-variant
            {%- endif %}
          entity: sensor.all_open_windows
          fill_container: true
          layout: vertical
          icon_color: |-
            {% if states('sensor.all_open_windows')| int > 0 %}
              amber
            {%- elif states('sensor.all_open_roofwindows') | int > 0 -%}
              orange
            {%- elif states('sensor.all_open_cellerwindows') | int > 0 -%}
              yellow
            {%- else -%}
              gray
            {%- endif %}
          tap_action:
            action: navigate
            navigation_path: /nspanelpro-eg/fenster
          multiline_secondary: false
          badge_color: ''
        - type: custom:mushroom-template-card
          primary: Türen
          secondary: >-
            {% if states('sensor.all_open_doors') | int > 0 or
            states('cover.garagentor') != 'closed' %}
              {{ states('sensor.all_open_doors') }} / {{ states('sensor.all_tilted_doors') }} / {{ states('cover.garagentor') }}
            {%- else -%}
              geschlossen
            {%- endif %}
          icon: >-
            {% if (states('sensor.all_open_doors') | int > 0 or
            states('sensor.all_tilted_doors') | int > 0 or
            states('cover.garagentor') != 'closed') %}
              mdi:door-open 
            {%- else -%}
              mdi:door-closed
            {%- endif %}
          entity: sensor.all_open_doors
          fill_container: true
          layout: vertical
          icon_color: >-
            {% if states('sensor.all_open_doors') | int > 0 or
            states('cover.garagentor') != 'closed' %}
              red 
            {%- elif states('sensor.all_tilted_doors') | int > 0 -%}
              orange
            {%- else -%}
              gray
            {%- endif %}
          tap_action:
            action: navigate
            navigation_path: /nspanelpro-eg/fenster
          badge_icon: |-
            {% if states('lock.turschloss') == 'locked' %}
              mdi:lock
            {%- else -%}
              mdi:lock-off
            {%- endif %}
          badge_color: |-
            {% if states('lock.turschloss') == 'locked' %}
              red
            {%- else -%}
              green
            {%- endif %}
          multiline_secondary: false
        - type: custom:mushroom-template-card
          primary: Waschen
          secondary: |2-
                    {% if (is_state('input_select.state_washingmachine','Standby') ) %}
                      bereit
                    {% elif (is_state('input_select.state_washingmachine','Waschen') ) %}
                      aktiv
                    {%- else -%}
                      fertig
                    {%- endif %}
          icon: |2-
                    {% if (is_state('input_select.state_washingmachine','Standby') ) %}
                      mdi:washing-machine-off
                    {% elif (is_state('input_select.state_washingmachine','Waschen') ) %}
                      mdi:washing-machine
                    {%- else -%}
                      mdi:washing-machine-alert
                    {%- endif %}
          entity: input_select.state_washingmachine
          fill_container: true
          icon_color: |2-
                    {% if (is_state('input_select.state_washingmachine','Standby') ) %}
                      gray
                    {% elif (is_state('input_select.state_washingmachine','Waschen') ) %}
                      blue
                    {%- else -%}
                      orange
                    {%- endif %}
          layout: vertical
          tap_action:
            action: navigate
            navigation_path: /nspanelpro-eg/waesche
          badge_color: |2-
                    {% if (is_state('input_select.state_washingmachine','Fertig') ) %}
                      orange
                    {%- endif %}
          badge_icon: |2-
                    {% if (is_state('input_select.state_washingmachine','Fertig') ) %}
                      mdi:washing-machine-alert
                    {%- endif %}
        - type: custom:mushroom-template-card
          primary: Trockner
          secondary: |2-
                    {% if (is_state('input_select.state_trockner','Standby') ) %}
                      bereit
                    {% elif (is_state('input_select.state_trockner','Trocknen') ) %}
                      aktiv
                    {%- else -%}
                      fertig
                    {%- endif %}
          icon: |2-
                    {% if (is_state('input_select.state_trockner','Standby') ) %}
                      mdi:washing-machine-off
                    {% elif (is_state('input_select.state_trockner','Trocknen') ) %}
                      mdi:washing-machine
                    {%- else -%}
                      mdi:washing-machine-alert
                    {%- endif %}
          entity: input_select.state_trockner
          fill_container: true
          icon_color: |2-
                    {% if (is_state('input_select.state_trockner','Standby') ) %}
                      gray
                    {% elif (is_state('input_select.state_trockner','Trocknen') ) %}
                      blue
                    {%- else -%}
                      orange
                    {%- endif %}
          layout: vertical
          tap_action:
            action: navigate
            navigation_path: /nspanelpro-eg/waesche
          badge_color: |2-
                    {% if (is_state('input_select.state_trockner','Beendet') ) %}
                      orange
                    {%- endif %}
          badge_icon: |2-
                    {% if (is_state('input_select.state_trockner','Beendet') ) %}
                      mdi:washing-machine-alert
                    {%- endif %}
        - type: custom:mushroom-template-card
          primary: Luftfeuchte
          secondary: |2-
                    {% if (is_state('binary_sensor.luftfeuchtigkeit_bin','on') ) %}
                      zu hoch
                    {%- else -%}
                      normal
                    {%- endif %}
          icon: mdi:water-percent-alert
          entity: binary_sensor.luftfeuchtigkeit_max
          fill_container: true
          layout: vertical
          tap_action:
            action: more-info
          hold_action:
            action: none
          double_tap_action:
            action: none
          badge_color: ''
          icon_color: |2-
                    {% if (is_state('binary_sensor.luftfeuchtigkeit_bin','on') ) %}
                      blue
                    {%- else -%}
                      gray
                    {%- endif %}
          badge_icon: ''
  profile_entity: input_select.wallpanel
  profiles:
    day:
      image_url: https://source.unsplash.com/random/${480}x${480}?weather
      style:
        wallpanel-screensaver-container:
          background-color: '#333333dd'
        wallpanel-screensaver-info-box:
          '--wp-card-width': 430px
          '--wp-card-margin': 1px
          '--wp-card-padding': 0px
          '--wp-card-backdrop-filter': none
          background-color: '#ffffff99'
          box-shadow: >-
            0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0,
            0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)
        wallpanel-screensaver-info-box-content:
          '--ha-card-box-shadow': none
          '--ha-card-background': none
          '--ha-card-border-width': 0px
          '--primary-background-color': '#202020'
          '--secondary-background-color': '#e5e5e5'
          '--primary-text-color': '#212121'
          '--secondary-text-color': '#727272'
    night:
      image_url: https://source.unsplash.com/random/${1920}x${1080}?weather
      style:
        wallpanel-screensaver-info-box:
          '--wp-card-width': 430px
          '--wp-card-margin': 1px
          '--wp-card-padding': 0px
          '--wp-card-backdrop-filter': none
          background-color: '#00000099'
          box-shadow: >-
            0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0,
            0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12)
        wallpanel-screensaver-info-box-content:
          '--ha-card-background': none
          '--ha-card-box-shadow': none
          '--primary-background-color': '#111111'
          '--secondary-background-color': '#202020'
          '--primary-text-color': '#e1e1e1'
          '--secondary-text-color': '#9b9b9b'
1 Like

I currently have the problem that on all panels (only the NSPanel Pro, on all other devices it works) I cannot scroll anymore. Does anyone have a hint how to get that working again?

Solution: Update of UI-Lovelace-Minimalist

Great work, I am also looking into utilizing my NSPanel Pro for this purpose

Can you please share also the code for the 2nd screen?

Hmm, the code is too long to be posted here …

Any chance you could upload it to a code sharing site like pastebin?

hey Fugazzy
i tried the whole time to install Fully kiosk brower on my nspanel pro. but it does not work can u explaind me the single steps to get it work ? you are my last hope :smiley: if you want you can send me a dm :slight_smile:

You need ADB on your computer, and adb access activated on the ns panel
(see chapter V1.4, Sideload Apps to Sonoff NSPanel Pro | Blakadder's Smarthome Shenanigans)
Then download the correct FK APK:
Fully Kiosk Browser APK
ver. 1.50.4 (für Android/Fire)

You do not need to update webview, if you are on a recend firmware on the ns panel.
Update WebView on NSPanel Pro and Tuya Smart Home Panels | Blakadder's Smarthome Shenanigans
Just install the ultra small launcher and FK

1 Like

The latest version of the NSPanel Pro FW has an updated version of the android webview (107.0.5304) included. You wont have to sideload Xposed framework any more to change /update the Android webview manually. With this updated webview you can just sideload Fully kiosk Browser or HA companion app and a launcher and then disable the ewelink app. This will now allow you to run a HA dashboard on the NSPanel Pro with just little changes.

image

2 Likes

Thanks @Fugazzy. Just received an NS Panel shipped from China (actually v good price with a 12% discount from liking sonoffs facebook page and msg them).
Your set up has been a big inspiration for me and I fully intend to copy a whole bunch of it :slight_smile:
Thanks :+1:

This saves a bunch of time it seems from looking at the blakadder guide. Really happy mine came with the latest webview.

Can you share a link to the seller’s website? Thanks

I also got an email with invite to like their fb group to get 12% off:

We are thrilled to announce that our brand-new Facebook page is launched now! SONOFF_Global:
https://www.facebook.com/SONOFF.Tech/

We are committed to providing you with more personalized and engaging content to help you stay up-to-date with the latest trends in the smart home industry.

By following our new page, you will be the first to know about our latest product releases and promotions, as well as practical information on user cases, product reviews, and smart home technology. Additionally, we will share updates on industry events and trends.

In order to thank you for your support, we have prepared a special offer for you. Follow the SONOFF page and send a message to us via messager, a 12% discount code will be automatically sent to you for use when placing an order on https://itead.cc/.

@hijinx Thanks. I messaged these guys and posted a question on their site a few days ago asking if I can get access but they haven’t replied (also tried them on Facebook…). Am I right in thinking you got yours a week or so ago and its working? I’ll give them another go.

And thanks for the 12% off tip!

I received in UK ~1 week after I ordered on the itead.cc site.

As a bonus no VAT was paid at point of purchase or on entry to UK. I guess I got lucky :slight_smile:

And yes fully working. I followed the instructions on blakadder site to get adb access, sideloaded and replaced the launcher, side loaded tools, and sideloaded HA app and all working OK.

1 Like