[RELEASE] HD+ - Android Dashboard

Hi guys, I'm not sure if this is the place to post this question because the thread is pretty lengthy and has a number of strands going on. Anyways, that said. I used to be able to manually overide my Xioami door contacts within this app to appear open or close. Now the app doesn't allow the facility and gives me the options of the attached image. However these options no longer overide and basically do nothing. I'm a bit of an amateur with Hubitat and know I'm missing a trick somewhat. Please help

This is the right place!

I used to be able to manually overide my Xioami door contacts within this app to appear open or close

I'm not sure I follow what you mean by override? Changing the on/off icons? The app will default a contact sensor to use the 'door' device type if it has the word "door" in the label and a window if the word "window" is in it. Otherwise, you can manually change the device type by long-pressing the device -> edit -> device type

Let me know if that's not what you're asking

I checked this and if you set the cloud mode to 'cloud only' the app should always use the hubitat cloud endpoints. The only way it wouldn't is if the cloud token isn't set. Do you see the cloud token set in the nav -> more settings -> cloud mode dialog?

Hi Sorry, I probably wasn't particularly clear. Under the details section, it used to offer the command to set contact sendor to open or closed. Now the little lightening icon displays and the options to change open/close no longer work


I stumbled across this article.. I don't have Android Auto to test with but it looks interesting: https://www.xda-developers.com/install-unapproved-apps-for-android-auto/

It seems like it only supports a few select apps but I could reach out and see if it could add this app to the list

I see.. you click on "resetToOpen" and it used to just do it and now it prompts for an optional argument.. is that right?

You can just leave the "" option selected and hit OK and that should do it.

At some point I added this prompt because not all commands work on their own.. some commands require an argument and I wanted some way to allow users to enter it.

That's sorted it. Not sure how I missed that but awesome cheers

App very slow to respond....anyone else?

if that app still workz I would think screen mirror might do the trick

I was considering leaving a cheap phone permanently connectwd to the car and hot spotting data to it.

The cloud token was set, the SSID was blank. It did not work using cloud only until I entered an SSID. I went to go remove my SSID entry to test again, but it won't let me remove it - only change it (won't accept a blank entry).

This is one question I have been wanting to ask you....
IF I setup a tablet the way I like, then save (backup) to the hub, will restoring the backup on the hub to another tablet/phone/device work?
I was wondering if the token would be effected on other devices...
Thanks for a great looking dashboard! I really like it and use it alot!

version 1.0.1477 (beta)

  • fix turning screen off fully when screensaver isn't enabled
  • add new Radar device
  • Android TV fix: allow navigation to 'add device' when in edit mode

2 of these changes are bug fixes.. notably allowing the screen to fully turn off now when no screensaver timeout is set (and you have the device 'on' between certain hours such as 7 AM to 10 PM)

I also tried to add a new radar device tile.. it's not perfect but I'm going to be using it and making changes as I notice things that could be better. Basically, it lets you enter GPS coordinates and will try fetching the current radar from weather.com. From my testing, if there's any kind of weather changes in the area (ie: storms), weather.com will return a series of images which the app will animate similar to what you'd see if you go here. If you just get a static weather image, that's because weather.com didn't have any actual weather changes for the near future.

Here's what it looks like:
radar-example2

side-note - I've previously been using an animated satellite image from NOAA which is more detailed so I want to compare the 2 versions to see which one I like better.. For anyone who's interested in adding a radar tile I created this page with some extra details to get started

5 Likes

I didn't mention it but the latest version has the code changes from that post which hopefully will work in your case

This should be fixed now.. to make sure the screen turns off fully just ensure that "Screensaver" option is "Off" in this dialog (I play to simplify how this looks in the future...)

1 Like

Yes, that's how it should work - MakerAPI just has a single access token and a single cloud token that multiple devices can use at the same time.

I just tried out the new radar tile, setup is a snap. Is there any way that the tile could be made scrollable when clicked on in the magnified view? That is the behavior of the weather radar current tile. Right now on my phone when clicking on the new radar tile I just get a non scrollable portrait magnified view.

This is another one of those overly complicated dialogs which I should try to simplify. Right, I see you can't clear out the WiFi access point and I can change that although the way the logic works you just need to enter in anything other than your actual local network SSID to use cloud mode.

I did test putting the app in "cloud only" mode and that worked for me. All you need in that case is the cloud token to be set. The SSID field is hidden in that case and you don't need to give the app location permission.

If you want the app to automatically switch between local and cloud modes (Auto mode), that's what the SSID is used for.

Basically, I want the app to use the local IP address whenever possible and only use the cloud mode endpoints when you're not on your local network. That's why I compare what you have in the SSID field to the actual connected SSID (when on WIFI).. if they match I'll use the local IP address to connect to the hub.. otherwise I'll use the cloud endpoints. This check is super fast and was the best logic I could think of.
-- because of Android security, an app can't get the connected SSID unless the app has location permission.. if you remove location permission for the app at some point I'm defaulting back to just using the local IP again

hopefully that helps explain things a little..

wow that was fast! I haven't even loaded it on my tablets yet :slight_smile:

I was also wondering if/how I could zoom/pan on the magnified view too.. My first attempt at this failed because it's not a single image but several images that are animated together. But, I'm sure there's still some way to figure it out. Maybe if you zoom/pan the animation would pause for a bit and then you can zoom in on that particular frame

1 Like

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