slipx06 / sunsynk-power-flow-card

⚡A customizable Home Assistant card to emulate the Sunsynk System flow that's displayed on the Inverter screen.
MIT License
179 stars 52 forks source link

card is not displayed when running in android.webview #509

Closed norbi771 closed 1 week ago

norbi771 commented 1 week ago

Is there an existing issue for this?

Current Behavior

When sunsynk-power-flow-card is running in android webview the card is not displayed, and error message says: Custom Element doesn't exist: sunsynk-power-flow-card

image

Webview Provider: com.android.webview Webview Version: 83.0.4103.120

I tried to force cache update, suspecting that there might be issue with old cached js. So I deleted cache and storage in android way, changed name of JS files in resources and filesystem in HA order to force the JS to reload. It didn't help

Steps To Reproduce

  1. This issue occurs on tablets with android 11.
  2. Problem shows up, when using the home assistant application. It does not seem to exist when using pure chrome. 2a. Problem could be also reproduced when you connect to home assistant address from kiosk software, that is using webview component, I tried fully browser, https://www.fully-kiosk.com/files/2024/07/Fully-Kiosk-Browser-v1.56.1.apk

image

I caputed this log with web console from fully browser (browser_mod mentioned in the screenshot was removed and it does not make a change, the problem was confirmed also on freshly started identical tablet) image

Expected behaviour

Display power flow card like in Chrome image

Card Version

4.43.0

Home Assistant Version

2024.8.3

Configuration

type: custom:sunsynk-power-flow-card
cardstyle: full
show_solar: true
width: 100%
large_font: true
decimal_places: 2
dynamic_line_width: true
max_line_width: 8
show_battery: true
panel_mode: false
show_grid: true
battery:
  energy: 20480
  shutdown_soc: 20
  show_daily: true
  show_remaining_energy: true
  auto_scale: true
  show_absolute: true
  invert_power: false
  colour:
    - 0
    - 86
    - 214
  dynamic_colour: true
  linear_gradient: true
solar:
  show_daily: true
  mppts: 1
  auto_scale: true
  dynamic_colour: true
  display_mode: 1
  max_power: 5540
  colour:
    - 247
    - 206
    - 70
load:
  show_daily: true
  dynamic_icon: true
  auto_scale: true
  essential_name: UPS
  load1_icon: ''
  additional_loads: 0
  load2_icon: ''
  load3_icon: ''
  dynamic_colour: true
  load1_name: Home (PC)
  show_aux: false
  aux_name: PC
  show_absolute_aux: false
  aux_loads: 0
  show_daily_aux: false
  load2_name: UPS
grid:
  show_daily_buy: true
  show_daily_sell: true
  auto_scale: true
  show_nonessential: false
  no_grid_colour:
    - 112
    - 112
    - 112
  colour:
    - 255
    - 98
    - 80
  export_colour:
    - 78
    - 122
    - 39
  grid_name: Grid
  nonessential_name: Home (PC)
entities:
  use_timer_248: switch.ss_use_timer
  inverter_power_175: sensor.ss_inverter_power
  inverter_status_59: sensor.ss_overall_state
  day_battery_charge_70: sensor.ss_day_battery_charge
  grid_power_169: sensor.ss_grid_power
  day_grid_import_76: sensor.ss_day_grid_import
  day_grid_export_77: sensor.ss_day_grid_export
  day_load_energy_84: sensor.ss_day_load_energy
  day_pv_energy_108: sensor.ss_day_pv_energy
  pv1_power_186: sensor.ss_pv1_power
  pv1_voltage_109: sensor.ss_pv1_voltage
  pv1_current_110: sensor.ss_pv1_current
  battery_power_190: sensor.ss_battery_power
  battery_current_191: sensor.ss_battery_current
  battery_voltage_183: sensor.ss_battery_voltage
  battery_soc_184: sensor.ss_battery_soc
  priority_load_243: switch.ss_priority_load
  day_battery_discharge_71: sensor.ss_day_battery_discharge
  grid_ct_power_172: sensor.ss_grid_ct_l1_power
  grid_voltage: sensor.ss_grid_voltage
  grid_ct_power_L2: sensor.ss_grid_ct_l2_power
  grid_ct_power_L3: sensor.ss_grid_ct_l3_power
  grid_connected_status_194: sensor.deyeinverter_grid_connection_state
  load_power_L1: sensor.ss_ups_l1_power
  load_power_L2: sensor.ss_ups_l2_power
  load_power_L3: sensor.ss_ups_l3_power
  grid_ct_power_total: sensor.ss_grid_ct_power
  essential_power: sensor.ss_ups_power_total
  inverter_voltage_154: sensor.ss_inverter_l1_voltage
  inverter_voltage_L2: sensor.ss_inverter_l2_voltage
  inverter_voltage_L3: sensor.ss_inverter_l3_voltage
  inverter_current_164: sensor.ss_inv_current
  aux_power_166: sensor.deyeinverter_home_power
  essential_load1: sensor.deyeinverter_home_power
  essential_load2: sensor.ss_ups_power_total
  nonessential_power: sensor.deyeinverter_home_power
inverter:
  three_phase: true
  modern: true
  auto_scale: true
  model: sunsynk
  autarky: 'no'

Relevant log output

Some logs captured thanks to using fully browser

Local time: 2024-09-02 14:43:26+0200
App Package: de.ozerov.fully
App Version: 1.56.1 (101302/101302)
Webview Provider: com.android.webview
Webview Version: 83.0.4103.120
Android Version: 11 (SDK 30/29)
Device Model: rk3566_r (rockchip)
Screen: 1920x1080 px
Mac: 70:4A:0E:******
Serial: unknown
Android ID: a7b4f2fa*****
Device ID: cae75da9-*****
PLUS Licensed: yes (1) Volume license K1V******* registered, 3 devices left on 2024-09-02 12:34:48. Don't forget to unregister prior to app uninstall or device reset!
Device Owner/Admin: no/yes/no
Root Available/Enabled: yes/no
App RAM (used/free): 7566/189041 KB
Storage mode: legacy
KNOX Version/Licensed: no/no
Signature: bf9a9e13e****

09-02 14:38:04.520  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:06.521  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:08.522  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:10.523  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:12.524  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:14.524  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:15.168  4867  4883 W System  : A resource failed to call end. 
09-02 14:38:15.168  4867  4883 W System  : A resource failed to call end. 
09-02 14:38:16.525  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:18.526  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:20.527  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:21.120  4867  6072 W EnterpriseDeviceManager-SupportLib: Calling method from a non-Knox device, exiting gracefully..
09-02 14:38:21.121  4867  6072 W EnterpriseDeviceManager-SupportLib: Calling method from a non-Knox device, exiting gracefully..
09-02 14:38:21.194  6074  6074 I getprop : type=1400 audit(0.0:4569): avc: denied { open } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:38:21.194  6074  6074 I getprop : type=1400 audit(0.0:4570): avc: denied { getattr } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:38:21.194  6074  6074 I getprop : type=1400 audit(0.0:4571): avc: denied { map } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:38:21.194  6074  6074 I getprop : type=1400 audit(0.0:4572): avc: denied { open } for path="/dev/__properties__/u:object_r:apexd_prop:s0" dev="tmpfs" ino=3799 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:apexd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:38:21.194  6074  6074 I getprop : type=1400 audit(0.0:4573): avc: denied { getattr } for path="/dev/__properties__/u:object_r:apexd_prop:s0" dev="tmpfs" ino=3799 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:apexd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:38:21.228  4867  6072 V RootBeer: x0: e0() [205] - ro.debuggable = [1] detected!
09-02 14:38:21.291  4867  6072 E de.ozerov.full: Invalid ID 0x00000000.
09-02 14:38:21.293  4867  6072 W EnterpriseDeviceManager-SupportLib: Calling method from a non-Knox device, exiting gracefully..
09-02 14:38:22.528  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:24.530  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:26.530  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:28.531  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:30.532  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:32.533  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:34.533  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:36.534  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:38.535  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:40.536  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:42.537  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:44.538  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:46.539  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:48.540  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:50.541  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:52.542  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:54.543  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:56.544  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:38:58.544  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:00.546  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:02.546  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:04.547  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:06.548  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:08.550  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:10.551  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:12.552  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:14.553  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:16.554  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:18.555  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:20.556  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:22.557  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:24.559  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:26.560  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:28.561  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:30.562  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:32.563  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:34.564  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:36.565  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:37.565  4867  6086 E de.ozerov.full: Invalid ID 0x00000000.
09-02 14:39:37.624  6090  6090 I getprop : type=1400 audit(0.0:4860): avc: denied { open } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:39:37.624  6090  6090 I getprop : type=1400 audit(0.0:4861): avc: denied { getattr } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:39:37.624  6090  6090 I getprop : type=1400 audit(0.0:4862): avc: denied { map } for path="/dev/__properties__/u:object_r:adbd_prop:s0" dev="tmpfs" ino=3798 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:adbd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:39:37.624  6090  6090 I getprop : type=1400 audit(0.0:4863): avc: denied { open } for path="/dev/__properties__/u:object_r:apexd_prop:s0" dev="tmpfs" ino=3799 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:apexd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:39:37.624  6090  6090 I getprop : type=1400 audit(0.0:4864): avc: denied { getattr } for path="/dev/__properties__/u:object_r:apexd_prop:s0" dev="tmpfs" ino=3799 scontext=u:r:untrusted_app_29:s0:c140,c256,c512,c768 tcontext=u:object_r:apexd_prop:s0 tclass=file permissive=1 app=de.ozerov.fully
09-02 14:39:37.653  4867  6086 V RootBeer: x0: e0() [205] - ro.debuggable = [1] detected!
09-02 14:39:37.659  4867  6086 W EnterpriseDeviceManager-SupportLib: Calling method from a non-Knox device, exiting gracefully..
09-02 14:39:37.698  4867  6086 D ConnectivityManager: getMobileDataEnabled()+ subId=-1
09-02 14:39:37.701  4867  6086 D ConnectivityManager: getMobileDataEnabled()- subId=-1 retVal=false
09-02 14:39:37.840  4867  4883 W System  : A resource failed to call end. 
09-02 14:39:37.840  4867  4883 I chatty  : uid=10140(de.ozerov.fully) FinalizerDaemon identical 2 lines
09-02 14:39:37.840  4867  4883 W System  : A resource failed to call end. 
09-02 14:39:38.566  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:40.567  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:42.568  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:44.568  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:46.569  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:48.570  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:50.571  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:52.572  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:54.572  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:56.573  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:39:58.574  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:00.575  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:02.576  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:04.577  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:06.577  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:08.579  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:10.580  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:12.580  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:14.581  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:16.582  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:18.583  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:20.583  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:22.584  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:24.585  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:26.586  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:28.587  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:30.588  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:32.589  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:34.590  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:36.590  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:38.591  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:40.592  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:42.593  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:44.593  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:46.594  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:48.595  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:50.596  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:52.597  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:54.598  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:56.599  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:40:58.600  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:00.601  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:02.602  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:04.603  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:06.603  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:08.605  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:10.606  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:12.607  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:14.608  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:16.609  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:18.609  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:20.610  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:22.611  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:24.612  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:26.613  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:28.614  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:30.615  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:32.616  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:34.616  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:36.617  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:38.618  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:40.619  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:42.620  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:44.621  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:46.622  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:48.623  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:50.624  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:52.625  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:54.626  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:56.627  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:41:58.629  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:00.630  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:02.630  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:04.631  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:06.632  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:08.633  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:10.633  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:12.634  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:14.635  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:16.636  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:18.637  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:20.638  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:22.639  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:24.640  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:26.641  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:28.642  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:30.643  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:32.643  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:34.644  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:36.645  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:38.646  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:40.647  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:42.647  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:44.648  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:46.649  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:48.650  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:50.651  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:52.652  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:54.652  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:56.653  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:42:58.654  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:00.654  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:02.655  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:04.656  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:06.657  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:08.658  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:10.658  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:12.659  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:14.660  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:16.661  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:18.663  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:20.664  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:22.664  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused
09-02 14:43:24.665  4867  4879 E de.ozerov.full: failed to connect to jdwp control socket: Connection refused

{
  "deviceId": "cae75da9-f744bcc7",
  "deviceName": "rk3566",
  "packageName": "de.ozerov.fully",
  "batteryLevel": 50,
  "isPlugged": true,
  "SSID": "",
  "BSSID": "",
  "Mac": "70:4A:0E:*****",
  "ip4": "10.100.102.108",
  "ip6": "FE80::D62E:*******",
  "hostname4": "10.100.102.108",
  "hostname6": "fe80::d62e:*******",
  "wifiSignalLevel": -1,
  "isMobileDataEnabled": false,
  "isHotspotEnabled": false,
  "screenOrientation": 0,
  "screenBrightness": 255,
  "screenLocked": false,
  "screenOn": true,
  "displayState": 2,
  "batteryTemperature": 3,
  "plugged": true,
  "keyguardLocked": false,
  "locale": "en_US",
  "serial": "unknown",
  "version": "1.56.1",
  "versionCode": 101302,
  "build": "C36-JSC-V21.3-15.6EDP-Y-te5-SW0.2-0-20230713",
  "model": "rk3566_r",
  "manufacturer": "rockchip",
  "androidVersion": "11",
  "SDK": 30,
  "webviewUA": "Mozilla/5.0 (Linux; Android 11; rk3566_r Build/RD2A.211001.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.120 Safari/537.36",
  "foreground": "de.ozerov.fully",
  "isDeviceAdmin": true,
  "isDeviceOwner": false,
  "internalStorageFreeSpace": 22888554496,
  "internalStorageTotalSpace": 25811746816,
  "ramUsedMemory": 1208532992,
  "ramFreeMemory": 835813376,
  "ramTotalMemory": 2044346368,
  "appUsedMemory": 7846912,
  "appFreeMemory": 193479680,
  "appTotalMemory": 201326592,
  "audioVolumes": [
    {
      "4": 80
    },
    {
      "8": 0
    },
    {
      "5": 80
    },
    {
      "3": 0
    },
    {
      "1": 80
    },
    {
      "0": 80
    },
    {
      "2": 80
    }
  ],
  "installerSource": "com.android.packageinstaller",
  "timestamp": 1725281006529,
  "scopedStorage": false,
  "displayHeightPixels": 1080,
  "displayWidthPixels": 1920,
  "isMenuOpen": true,
  "topFragmentTag": "",
  "systemSigned": false,
  "isInDaydream": false,
  "appStartTime": "2024-09-02 14:26:18+0200",
  "isRooted": false,
  "isLicensed": true,
  "isInScreensaver": false,
  "kioskLocked": false,
  "isInForcedSleep": false,
  "maintenanceMode": false,
  "kioskMode": false,
  "startUrl": "http://10.10.10.3:8123",
  "currentTabIndex": 0,
  "motionDetectorStarted": false,
  "currentPageUrl": "http://10.10.10.3:8123/lovelace/tt"
}

When I opened the sunsynk-power-flow-card.js, then in the developer tools line 12 was expanded to this:

  , {is: s, defineProperty: l, getOwnPropertyDescriptor: d, getOwnPropertyNames: c, getOwnPropertySymbols: u, getPrototypeOf: h} = Object
  , p = globalThis
  , y = p.trustedTypes
  , g = y ? y.emptyScript : ""
  , f = p.reactiveElementPolyfillSupport
  , m = (e, t) => e
  , w = {
    toAttribute(e, t) {
        switch (t) {
        case Boolean:
            e = e ? g : null;
            break;
        case Object:
        case Array:
            e = null == e ? e : JSON.stringify(e)
        }
        return e
    },
    fromAttribute(e, t) {
        let n = e;
        switch (t) {
        case Boolean:
            n = null !== e;
            break;
        case Number:
            n = null === e ? null : Number(e);
            break;
        case Object:
        case Array:
            try {
                n = JSON.parse(e)
            } catch (e) {
                n = null
            }
        }
        return n
    }
}
  , v = (e, t) => !s(e, t)
  , x = {
    attribute: !0,
    type: String,
    converter: w,
    reflect: !1,
    hasChanged: v
};
Symbol.metadata ??= Symbol("metadata"),
p.litPropertyMetadata ??= new WeakMap;
let _ = class extends HTMLElement {
    static addInitializer(e) {
        this._$Ei(),
        (this.l ??= []).push(e)
    }
    static get observedAttributes() {
        return this.finalize(),
        this._$Eh && [...this._$Eh.keys()]
    }
    static createProperty(e, t=x) {
        if (t.state && (t.attribute = !1),
        this._$Ei(),
        this.elementProperties.set(e, t),
        !t.noAccessor) {
            const n = Symbol()
              , o = this.getPropertyDescriptor(e, n, t);
            void 0 !== o && l(this.prototype, e, o)
        }
    }
    static getPropertyDescriptor(e, t, n) {
        const {get: o, set: a} = d(this.prototype, e) ?? {
            get() {
                return this[t]
            },
            set(e) {
                this[t] = e
            }
        };
        return {
            get() {
                return o?.call(this)
            },
            set(t) {
                const i = o?.call(this);
                a.call(this, t),
                this.requestUpdate(e, i, n)
            },
            configurable: !0,
            enumerable: !0
        }
    }
    static getPropertyOptions(e) {
        return this.elementProperties.get(e) ?? x
    }
    static _$Ei() {
        if (this.hasOwnProperty(m("elementProperties")))
            return;
        const e = h(this);
        e.finalize(),
        void 0 !== e.l && (this.l = [...e.l]),
        this.elementProperties = new Map(e.elementProperties)
    }
    static finalize() {
        if (this.hasOwnProperty(m("finalized")))
            return;
        if (this.finalized = !0,
        this._$Ei(),
        this.hasOwnProperty(m("properties"))) {
            const e = this.properties
              , t = [...c(e), ...u(e)];
            for (const n of t)
                this.createProperty(n, e[n])
        }
        const e = this[Symbol.metadata];
        if (null !== e) {
            const t = litPropertyMetadata.get(e);
            if (void 0 !== t)
                for (const [e,n] of t)
                    this.elementProperties.set(e, n)
        }
        this._$Eh = new Map;
        for (const [e,t] of this.elementProperties) {
            const n = this._$Eu(e, t);
            void 0 !== n && this._$Eh.set(n, e)
        }
        this.elementStyles = this.finalizeStyles(this.styles)
    }
    static finalizeStyles(e) {
        const t = [];
        if (Array.isArray(e)) {
            const n = new Set(e.flat(1 / 0).reverse());
            for (const e of n)
                t.unshift(r(e))
        } else
            void 0 !== e && t.push(r(e));
        return t
    }
    static _$Eu(e, t) {
        const n = t.attribute;
        return !1 === n ? void 0 : "string" == typeof n ? n : "string" == typeof e ? e.toLowerCase() : void 0
    }
    constructor() {
        super(),
        this._$Ep = void 0,
        this.isUpdatePending = !1,
        this.hasUpdated = !1,
        this._$Em = null,
        this._$Ev()
    }
    _$Ev() {
        this._$ES = new Promise((e => this.enableUpdating = e)),
        this._$AL = new Map,
        this._$E_(),
        this.requestUpdate(),
        this.constructor.l?.forEach((e => e(this)))
    }
    addController(e) {
        (this._$EO ??= new Set).add(e),
        void 0 !== this.renderRoot && this.isConnected && e.hostConnected?.()
    }
    removeController(e) {
        this._$EO?.delete(e)
    }
    _$E_() {
        const e = new Map
          , t = this.constructor.elementProperties;
        for (const n of t.keys())
            this.hasOwnProperty(n) && (e.set(n, this[n]),
            delete this[n]);
        e.size > 0 && (this._$Ep = e)
    }
    createRenderRoot() {
        const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
        return ( (e, o) => {
            if (n)
                e.adoptedStyleSheets = o.map((e => e instanceof CSSStyleSheet ? e : e.styleSheet));
            else
                for (const n of o) {
                    const o = document.createElement("style")
                      , a = t.litNonce;
                    void 0 !== a && o.setAttribute("nonce", a),
                    o.textContent = n.cssText,
                    e.appendChild(o)
                }
        }
        )(e, this.constructor.elementStyles),
        e
    }
    connectedCallback() {
        this.renderRoot ??= this.createRenderRoot(),
        this.enableUpdating(!0),
        this._$EO?.forEach((e => e.hostConnected?.()))
    }
    enableUpdating(e) {}
    disconnectedCallback() {
        this._$EO?.forEach((e => e.hostDisconnected?.()))
    }
    attributeChangedCallback(e, t, n) {
        this._$AK(e, n)
    }
    _$EC(e, t) {
        const n = this.constructor.elementProperties.get(e)
          , o = this.constructor._$Eu(e, n);
        if (void 0 !== o && !0 === n.reflect) {
            const a = (void 0 !== n.converter?.toAttribute ? n.converter : w).toAttribute(t, n.type);
            this._$Em = e,
            null == a ? this.removeAttribute(o) : this.setAttribute(o, a),
            this._$Em = null
        }
    }
    _$AK(e, t) {
        const n = this.constructor
          , o = n._$Eh.get(e);
        if (void 0 !== o && this._$Em !== o) {
            const e = n.getPropertyOptions(o)
              , a = "function" == typeof e.converter ? {
                fromAttribute: e.converter
            } : void 0 !== e.converter?.fromAttribute ? e.converter : w;
            this._$Em = o,
            this[o] = a.fromAttribute(t, e.type),
            this._$Em = null
        }
    }
    requestUpdate(e, t, n) {
        if (void 0 !== e) {
            if (n ??= this.constructor.getPropertyOptions(e),
            !(n.hasChanged ?? v)(this[e], t))
                return;
            this.P(e, t, n)
        }
        !1 === this.isUpdatePending && (this._$ES = this._$ET())
    }
    P(e, t, n) {
        this._$AL.has(e) || this._$AL.set(e, t),
        !0 === n.reflect && this._$Em !== e && (this._$Ej ??= new Set).add(e)
    }
    async _$ET() {
        this.isUpdatePending = !0;
        try {
            await this._$ES
        } catch (e) {
            Promise.reject(e)
        }
        const e = this.scheduleUpdate();
        return null != e && await e,
        !this.isUpdatePending
    }
    scheduleUpdate() {
        return this.performUpdate()
    }
    performUpdate() {
        if (!this.isUpdatePending)
            return;
        if (!this.hasUpdated) {
            if (this.renderRoot ??= this.createRenderRoot(),
            this._$Ep) {
                for (const [e,t] of this._$Ep)
                    this[e] = t;
                this._$Ep = void 0
            }
            const e = this.constructor.elementProperties;
            if (e.size > 0)
                for (const [t,n] of e)
                    !0 !== n.wrapped || this._$AL.has(t) || void 0 === this[t] || this.P(t, this[t], n)
        }
        let e = !1;
        const t = this._$AL;
        try {
            e = this.shouldUpdate(t),
            e ? (this.willUpdate(t),
            this._$EO?.forEach((e => e.hostUpdate?.())),
            this.update(t)) : this._$EU()
        } catch (t) {
            throw e = !1,
            this._$EU(),
            t
        }
        e && this._$AE(t)
    }
    willUpdate(e) {}
    _$AE(e) {
        this._$EO?.forEach((e => e.hostUpdated?.())),
        this.hasUpdated || (this.hasUpdated = !0,
        this.firstUpdated(e)),
        this.updated(e)
    }
    _$EU() {
        this._$AL = new Map,
        this.isUpdatePending = !1
    }
    get updateComplete() {
        return this.getUpdateComplete()
    }
    getUpdateComplete() {
        return this._$ES
    }
    shouldUpdate(e) {
        return !0
    }
    update(e) {
        this._$Ej &&= this._$Ej.forEach((e => this._$EC(e, this[e]))),
        this._$EU()
    }
    updated(e) {}
    firstUpdated(e) {}
}
;
_.elementStyles = [],
_.shadowRootOptions = {
    mode: "open"
},
_[m("elementProperties")] = new Map,
_[m("finalized")] = new Map,
f?.({
    ReactiveElement: _
}),
(p.reactiveElementVersions ??= []).push("2.0.4");
slipx06 commented 1 week ago

Hi. Looks like the issue is related to https://github.com/slipx06/sunsynk-power-flow-card/issues/500 and the fact that you are using what HA considers to be a legacy browser.

See also

https://github.com/home-assistant/iOS/issues/2908 https://github.com/home-assistant/frontend/issues/21004

norbi771 commented 1 week ago

Hi, Thank you for prompt answer. Indeed, there are issues. Although I spend some time searching I didn't see them earlier. I think I will wait for HA update and see if anything has changed. Thank you,

BTW, the sunsynk-power-flow-card is really nice :-) Keep up the good work, thank you!