[RELEASE] HD+ - Android Dashboard

Thank you! I just tried it and no joy :frowning: logs below:

--------- beginning of system
05-05 10:49:57.409  3429  3429 W ViewRootImpl[MainActivity]: Dropping event due to root view being removed: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_5, scanCode=0, metaState=0, flags=0x6, repeatCount=0, eventTime=138041044, downTime=138041044, deviceId=-1, source=0x101, displayId=-1 }
--------- beginning of main
05-05 10:57:03.833  6306  6306 E age4500.hubita: Not starting debugger since process cannot load the jdwp agent.
05-05 10:57:03.838  6306  6306 D ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
05-05 10:57:03.854  6306  6306 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10478; state: ENABLED
05-05 10:57:03.917  6306  6306 V GraphicsEnvironment: ANGLE Developer option for 'com.jpage4500.hubitat' set to: 'default'
05-05 10:57:03.918  6306  6306 V GraphicsEnvironment: ANGLE GameManagerService for com.jpage4500.hubitat: false
05-05 10:57:03.918  6306  6306 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
05-05 10:57:03.919  6306  6306 D NetworkSecurityConfig: No Network Security Config specified, using platform default
05-05 10:57:03.919  6306  6306 D NetworkSecurityConfig: No Network Security Config specified, using platform default
05-05 10:57:03.921  6306  6306 I MultiDex: VM with version 2.1.0 has multidex support
05-05 10:57:03.921  6306  6306 I MultiDex: Installing application
05-05 10:57:03.921  6306  6306 I MultiDex: VM has multidex support, MultiDex support library is disabled.
05-05 10:57:03.932  6306  6306 I FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
05-05 10:57:03.937  6306  6306 I FirebaseCrashlytics: Initializing Firebase Crashlytics 18.2.6 for com.jpage4500.hubitat
05-05 10:57:03.958  6306  6306 I FirebaseInitProvider: FirebaseApp initialization successful
05-05 10:57:03.973  6306  6306 I HD_MainApplication: APP START: 1.0.1400 (1400)
05-05 10:57:04.040  6306  6306 D CompatibilityChangeReporter: Compat change id reported: 171228096; UID 10478; state: ENABLED
05-05 10:57:04.052  6306  6306 W ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true);
05-05 10:57:04.057  6306  6306 I ContentCaptureHelper: Setting logging level to OFF
05-05 10:57:04.061  6306  6349 E HD_HubitatManager: createNetworkEndpoints: no app ID or access token set!
05-05 10:57:04.063  6306  6349 I HD_EventLogger: EVENT LOG VERSION: 0 -> 2, deleted: false
05-05 10:57:04.145  6306  6306 I HD_MainReceiver: handleConnectivityAction: isOnline:true, network:[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: , failover: false, available: true, roaming: false], android.net.conn.CONNECTIVITY_CHANGE, extras[networkInfo=(NetworkInfo), networkType=1 (Integer), inetCondition=100 (Integer), extraInfo=""]
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: QUALCOMM build                   : 781e7d0, I46ff5fc46f
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Build Date                       : 12/01/20
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: OpenGL ES Shader Compiler Version: EV031.31.04.01
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Local Branch                     : QPR1
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Remote Branch                    : 
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Remote Branch                    : 
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Reconstruct Branch               : 
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Build Config                     : C P 11.0.1 AArch64
05-05 10:57:04.173  6306  6344 I AdrenoGLES-0: Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
05-05 10:57:04.177  6306  6344 I AdrenoGLES-0: PFP: 0x016ee190, ME: 0x00000000
05-05 10:57:04.180  6306  6344 W AdrenoUtils: <ReadGpuID_from_sysfs:197>: Failed to open /sys/class/kgsl/kgsl-3d0/gpu_model
05-05 10:57:04.180  6306  6344 W AdrenoUtils: <ReadGpuID:221>: Failed to read chip ID from gpu_model. Fallback to use the GSL path
05-05 10:57:04.187  6306  6344 D hw-ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
05-05 10:57:04.207  6306  6351 I Gralloc4: mapper 4.x is not supported
05-05 10:57:04.208  6306  6351 W Gralloc3: mapper 3.x is not supported
05-05 10:57:04.210  6306  6351 W Gralloc4: allocator 4.x is not supported
05-05 10:57:04.211  6306  6351 W Gralloc3: allocator 3.x is not supported
05-05 10:57:05.742  6306  6306 D CompatibilityChangeReporter: Compat change id reported: 163400105; UID 10478; state: DISABLED
05-05 10:57:06.805  6306  6306 D InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{244ede5 VFED..CL. .F.P.... 155,67-705,152 #7f080228 app:id/serverEdit aid=1073741824} flags=0 reason=SHOW_SOFT_INPUT
05-05 10:57:07.015  6306  6306 D InsetsController: show(ime(), fromIme=true)
05-05 10:57:13.469  6306  6421 E HD_CustomInterceptor: HTTP_ERROR: IOException: 1) 674ms, http://HUB.IP.ADDRESS/installedapp/list, java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
05-05 10:57:13.469  6306  6421 E HD_NetworkUtils: downloadUrlToString: onFailure: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found., url:http://HUB.IP.ADDRESS/installedapp/list
05-05 10:57:13.470  6306  6306 E HD_LoginFragment: fetchMakerAppId: 'Maker API' not found: null
05-05 10:57:13.471  6306  6306 W HD_LoginFragment: handleLoginResult: Maker API not found!
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: Settings request failed.
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: java.net.SocketTimeoutException: failed to connect to firebase-settings.crashlytics.com/10.10.10.1 (port 443) from /PHONE.IP.ADDRESS (port 48774) after 10000ms
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at libcore.io.IoBridge.connectErrno(IoBridge.java:236)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at libcore.io.IoBridge.connect(IoBridge.java:180)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.net.Socket.connect(Socket.java:621)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.Platform.connectSocket(Platform.java:182)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:145)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.network.HttpGetRequest.execute(HttpGetRequest.java:76)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.settings.network.DefaultSettingsSpiCall.invoke(DefaultSettingsSpiCall.java:113)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:201)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:194)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.android.gms.tasks.zzp.run(Unknown Source:2)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
05-05 10:57:14.020  6306  6330 E FirebaseCrashlytics: 	at java.lang.Thread.run(Thread.java:920)
05-05 10:57:15.619  6306  6306 D InputMethodManager: showSoftInput() view=androidx.appcompat.widget.AppCompatEditText{8e28b3 VFED..CL. .F.P..ID 292,108-567,193 #7f080055 app:id/appIdEdit aid=1073741825} flags=0 reason=SHOW_SOFT_INPUT
05-05 10:57:15.637  6306  6306 D InsetsController: show(ime(), fromIme=true)
05-05 10:57:20.773  6306  6344 D OpenGLRenderer: endAllActiveAnimators on 0x7d920d2960 (RippleDrawable) with handle 0x7ca20fd760
05-05 10:57:23.950  6306  6306 I HD_HubitatManager: login: IP:HUB.IP.ADDRESS, appId:4, Access Token:************************************, Cloud Token:
05-05 10:57:24.061  6306  6306 E RecyclerView: No adapter attached; skipping layout
05-05 10:57:24.671  6306  6451 E HD_CustomInterceptor: HTTP_ERROR: IOException: 2) 703ms, http://HUB.IP.ADDRESS/apps/api/4/devices, java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
05-05 10:57:28.836  6306  6306 I HD_DebugHelper: MODEL:Pixel 3a, OS:12, SDK:32
05-05 10:57:28.836  6306  6306 I HD_DebugHelper: IP:HUB.IP.ADDRESS, APP_ID:4, HAS_TOKEN:true
05-05 10:57:28.836  6306  6306 I HD_DebugHelper: DEVICES: 0, 

If you have time and are willing to explain what you did, I can try to replicate it locally.. that's usually the best way for me to fix things

AND yes! It works like a DREAM! Thanks. (I am referring to backup/restore the dashboard to different devices.)

FWIW - I pushed a small change just now to allow zooming and panning on the full screen radar popup. I also noticed that I'm not setting a tile name for the radar tile - which is why when you open it full-screen there's no title bar to close the dialog. It'll be created on future radar tiles so you might want to just set a name (long-press -> tile name)

2 Likes

I'm not really worried about it ever since I put the SSID in and it started working. I do wonder still, on a fresh install, before any SSID is entered - with Token and Cloud Only - if it would work. It did not for me, and I can't reproduce it because I can't go back to no SSID entry at this point without clearing data. But like I said, I don't have any concerns about it. Thanks for following up.

version 1.0.1483 (beta)

  • add new kiosk mode

I added a new option called "Kiosk Mode" which will prevent the app from being exited and the user from accidentally navigating out of it. It's not a full kiosk mode where it's impossible to get out of the app - but at least on my test device it works really well. I haven't tested on older devices or Amazon Fire tablets yet to see if they support this or not yet though.

Anyway, here's the option and what enabling it looks like - at least on a Pixel device

3 Likes

Interesting, I'm in the beta (and confirmed in play store) but only 1.0.1.1480 is available to me

There's a couple other apps that allow screen sharing any app through AA, I'll see if I can find the links.

So I read through the previous posts on multiple instances of the app on one device. I'm not sure if that was implemented yet, if at all. I want to view two different folders on the same wide screen. Is that possible?

Can you apply the same zoom coordinates for the pinched image to subsequent images (I'm assuming they all start off at the same size). It would stay at that zoom level until zoomed back to 100% (or perhaps also it can change back if double clicked).

It takes several hours before it's available to everyone.. you can sometimes 'force' google play to check for updates if you close and re-open the app (try swiping it away in the task list)

It's possible.. the only thing I'd worry about is that the animation wouldn't look very good (not sure if the 'next' image would be zoomed in at the same place right away or if it would take a second to adjust). I can try and and see. The image itself isn't super high quality though either

That's not possible today.. the only way to have a separate instance of an app with separate settings would be if the app had a different package name.

Is there some way to get the view you want in a single folder?

I don't know how hard it'd be yet but I was just thinking of being able to group several devices together - like a folder - but display them all with just a thin border around them and a label. It'd be easier to show an example but I can't find anything at the moment.. the closest example I found would be like this (ignore the radio buttons but just imagine a border and label like that around a group of devices.
image

Joe, I started using this app when it first came out, and man have you done a fantastic job. App is very fast and the functionality is amazing.
I noticed the "recent events" from the hidden menu's "more settings" is only capturing when I turn a light on, but not the "off" right after the "on". The activity for the device itself does list all events, both the "on" and the "off". I don't know if this is purposeful

1 Like

Hmm.. the app should capture the last 50 or so events (both received by the hub and sent from the app). That's what that 'recent events' screen shows. It's just in memory only so if you restart the app it'll start over too.

The device activity screen is populated from the hub - there's a MakerAPI call to get recent events for a given device. That's going to capture events outside of the app too - like manually turning a light switch off / etc

Using the app on Google TV, I'm no longer seeing a way to enter Edit Mode while inside a folder.

Just a thought that might help difficult navigation within Google TV - when editing a tile there is an option to "remove from folder" - how about a folder picker so you don't have to deal with trying to drag and drop it?

Apologize as I havent read the full thread. Can this go to sleep and then wake when camera sees motion?

No, not that I'm aware of, but you can use tasker to probably accomplish that

I installed the Radar tile right after you shared it and it worked for 1 day or so. Then it quit. The radar image is there but no longer getting motion/changes and the time in the upper left.

There have been several updates since I started using it and I wonder if something broke it?

That's normal.. from my limited testing it seems like weather.com returns a single image if there's not any real upcoming changes and a series of images if there's some weather event in the area.

You can test it yourself by going to: https://weather.com/weather/today/l/LAT,LONG?par=apple_widget (replace LAT,LONG with your coordinates).

In my case right now it's just a single image (shows "NOW" in top left corner). But, yesterday it was animated because we had rain in the area.