NSPanel Pro with Wallpanel on Fully Kiosk Browser

Hi
Thanks for this great work

I try this its work fine but i have problem with résolution

Look the screen is to big.
Do you have any idea to fix that ?

Thanks

This perhaps?

Sorry no effect

did you have a close look on my wallpanel config (see: profiles) ans on the layout-card (see: layout)

My code

wallpanel:
  enabled: true
  idle_time: 10
  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: template
                  double_tap_action:
                    action: none
                  entity: lock.verrou_principal
                  icon: |
                    {% if is_state('lock.verrou_principal', 'unlocked') %}
                      mdi:lock-off
                    {%- else -%}
                      mdi:lock
                    {%- endif %}
                  icon_color: |-
                    {% if is_state('lock.verrou_principal', 'unlocked') %}
                      red
                    {%- else -%}
                      green
                    {%- endif %}
                  tap_action:
                    action: navigate
                    navigation_path: /nspanelpro-eg/alarmanlage
                  hold_action:
                    action: none

    - square: false
      columns: 1
      type: grid
      cards:
        - type: weather-forecast
          entity: weather.maison
          secondary_info_attribute: humidity
          name: Tomblaine
          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'
title: NSPanelPro
views:
  - visible:
      - user: 4739b54d6bed4b77976ab815e8197136
      - user: 180825ce98584db597618739b804c262
    title: tesr
    badges: []
    cards:
      - type: custom:meteofrance-weather-card
        entity: weather.maison
  - badges: []
    cards:
      - type: custom:frigate-card
        cameras:
          - camera_entity: camera.agent_porte_entree_porte_entree_2
  - !include 'screensaver.yaml'
  - !include 'screensaver2.yaml'
  - !include 'screensaver3.yaml'

Does anyone know if there is a way to disable the lock screen on the NSPanel Pro ?

I upgraded the firmware to 2.2 before enabling developer mode, but then had to make an emergency reset and firmware reverted back to 1.5.6, and I understand there is no way to upgrade the firmware for me now. I have seen some posts saying the disable option is available from 1.7, but I was hoping there may be a workaround available

Does anyone know how to get over this screen? I tried installing xposed, got stuck in a boot loop. Entered recovery by rebooting 5 times and now it booted into this.
Did I actually brick my nspanel pro?

1 Like

Hello.

Using Fully Kiosk, does anybody know how to use the presence sensor to disable the HACS wallpanel screen saver ??

The prescence sensor is activated using the nspanel tools, and the KullyKiosk Screen off Timer is cancelled by prescence detection, however this detection of motion does not appear to get passed to the browser framework to disable the HACS wallpanel screensaver.

Does anyone have this working ?

I think that is not possible. It influences the OS features but the client software.

I have found a solution if using the wallpaper screensaver.

  1. In FKB > Other Settings > Enable Environment Sensors (PLUS)
  2. in FKB > Advanced Settings > Inject JavaScript (PLUS) add the following:
setInterval(() => { fully.getSensorValue(8) > 250 && document.querySelector("home-assistant").shadowRoot.querySelector("home-assistant-main").shadowRoot.querySelector("wallpanel-view").stopScreensaver(); }, 500);

This will poll the proximity sensor (device 8) every 500ms and will disable the WaLL Panel Screensaver when proximity is greater than 250.

You can adjust these values to suit your needs.

Thanks to Alexey at FKB Support for providing the info on the environmental sesnors which I had neve noticed.

This has now been working for several days for me.

2 Likes

I tried this code, but it doesn’t seems to work. Where can I chech if I have the same getSensorValue values and others?

Hi all
I take my head with my new nspanel pro :sleepy:
I tested first compagnion app apk which is OK but I have a big latency with state return…
Example : on my dahsboard I have 8 standard button card for lighting and cover. When I click one, the action is take into acount in instant (exemple switch on the light), but the icon return state can be refresh between 2 and 15 seconds randomly)…
I try with with page web on ewelink app => same issue.
I uninstall APK compagnion to switch on FKB (I have with no issue on a Samsung Galaxy tablet), and I have the same issue on my NSPANEL PRO… => The return state is very very long.
Do you have the same behaviour ?
Note my wifi network is very good and I have no problem of deconexion. The admin interface of FKB on ns panel pro is very fluid.

Other question, do you use browser_mod to hide top bar of HA Dashboard ? If yes, entities become unvailable after 5 minutes… do you have a workaround ?

Another question, the proximity sensor of my nspanel pro is always near 1500 and 1600… even if I not in front of the NS Panel. Is this normal ?
When I put my hand just in front the sensor it goes to 10000.
The NS PANEL is installed in a corridor and it shall the wall at 80cm… Behind this wall there is water heater… The wall is in placo
Thanks to all

EDIT : In addition when I went in the web console log of FKB on the NS PANEL, I seen card module of other dashboard… I have no these one of my only dashboard of NSPANEL which is a seld dashboard… Maybe lovelace loads every custom components…? Even if they are not on dashboard and generate long time refresh return starte on “light” device…
View the Webview Console output in real time

12:05:42.597 -- [LOG] %c Custom-ui 20240118 is installed
%c add attributes icon_color and templates color: gold; font-weight: bold; background: black color: white; font-weight: bold; background: steelblue -- on line 8 of http://192.168.2.16:8123/hacsfiles/custom-ui/custom-ui.js?hacstag=26755814820240118

12:05:42.598 -- [LOG] Readme: https://github.com/Mariusthvdb/custom-ui -- on line 12 of http://192.168.2.16:8123/hacsfiles/custom-ui/custom-ui.js?hacstag=26755814820240118

12:05:42.599 -- [LOG] console.groupEnd -- on line 13 of http://192.168.2.16:8123/hacsfiles/custom-ui/custom-ui.js?hacstag=26755814820240118

12:05:42.651 -- [LOG] %c WINROSE-CARD %c Version 1.5.0 color: orange; font-weight: bold; background: black color: white; font-weight: bold; background: dimgray -- on line 2119 of http://192.168.2.16:8123/hacsfiles/lovelace-windrose-card/windrose-card.js?hacstag=591270696150

12:05:42.732 -- [LOG] %c Bubble Card %c v1.7.3 background-color: #555;color: #fff;padding: 3px 2px 3px 3px;border-radius: 14px 0 0 14px;font-family: DejaVu Sans,Verdana,Geneva,sans-serif;text-shadow: 0 1px 0 rgba(1, 1, 1, 0.3) background-color: #506eac;color: #fff;padding: 3px 3px 3px 2px;border-radius: 0 14px 14px 0;font-family: DejaVu Sans,Verdana,Geneva,sans-serif;text-shadow: 0 1px 0 rgba(1, 1, 1, 0.3) -- on line 520 of http://192.168.2.16:8123/hacsfiles/Bubble-Card/bubble-card.js?hacstag=680112919173

12:05:43.113 -- [LOG] %c🍄 Mushroom 🍄 - 3.5.4 color: #ef5350; font-weight: 700; -- on line 3664 of http://192.168.2.16:8123/hacsfiles/lovelace-mushroom/mushroom.js?hacstag=444350375354

12:05:46.708 -- [LOG] %c PLOTLY-GRAPH %c 3.3.4 production color: orange; font-weight: bold; background: black color: white; font-weight: bold; background: dimgray -- on line 2224 of http://192.168.2.16:8123/hacsfiles/lovelace-plotly-graph-card/plotly-graph-card.js?hacstag=413812496334

12:05:47.365 -- [LOG] %c FRIGATE-HASS-CARD
%c Version 5.2.0 color: pink; font-weight: bold; background: black color: white; font-weight: bold; background: dimgray -- on line 507 of http://192.168.2.16:8123/hacsfiles/frigate-hass-card/card-555679fd.js

12:12:45.158 -- [ERROR] Uncaught (in promise) #<Object> -- on line 0 of http://192.168.2.16:8123/nspanel-couloir/0

12:22:55.687 -- [ERROR] Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'config') -- on line 1 of http://192.168.2.16:8123/hacsfiles/lovelace-header-cards/lovelace-header-cards.js?hacstag=4661961920010

14:11:00.316 -- [ERROR] Uncaught (in promise) #<Object> -- on line 1 of http://192.168.2.16:8123/frontend_latest/core.4ymdfPGg4i0.js

Hi
Nobody have this latency issues on NS PAnel Pro ?
I replace my NS PANEL PRO hardware but same issue…

I think lovelace dashboard loads every integration and cards even if these are not diaplay… On NS Panel pro this consume more ressource…
I have heavy lovelace dashboard for Samsung tablet which is ok.
But theses cards seams loaded in background by lovelace…
The initial loading of simple dashboard on the NS PAnel take between 10 and 20 seconds…

Tnaks for help

I’m having the same latency issues that you are. I haven’t put any effort into troubleshooting it yet, my first thought however was to try other webView.

Same for me with oter webview and with a new HA simple instance.
In uncommon moments Latency is good but it’s very very uncommon.
I never try to understand which causing this issues.
My NS Panel pro is unusable in this state of important latency

Did you ever solve this issue? I am facing the same problem. All cards are running out of the right end of the screen.

What is the fastest way to wake up the screen when a motion sensor detects movement? I am using the adb command to turn screen on and it take about 4 secs. Same aplies to media_player on command.
Any other ideas?

Fully Kiosk is instant-on and instant-off.

Why use fully kiosk browser instead of fully kiosk and the Home Assistant App?