[BETA] HD+ Hubitat Dashboard for iOS, Mac, Windows & Linux

Background

For a while now I've been working on a new version of HD+ that supports iOS. I'm using a fairly new language, Kotlin Multiplatform (KMP) which supports iOS, Android and native desktop platforms. There's still a lot of platform specific logic required, but the majority of the UI and logic can be shared.

There's still a LOT left to be done but I think it's getting close to being testable by others.


Screenshots

iOS

Desktop


Features

  • auto discover Hubitat Hub on local network
    • iOS doesn't support UPnP so it just tries to reach the hub using hubitat.local
  • auto organize devices when first logging in - including ability to organize 4 or more devices of the same type (ie: lights, locks, etc) into a folder
  • option to display full screen - iOS only
  • option to keep the screen on - iOS only
  • Flexible - fully customize the interface (icons, tile size, text size, colors)
  • All traffic is LOCAL to your network. No 3rd party server is used. There is also a remote access option (uses cloud.hubitat.com ) that can be setup for use outside the house.
  • Drag and Drop sorting
  • Group by Device Type - automatically group device into folders (ie: group by 'Indoor Lights')
  • Supports MANY device types and continually adding support for new devices
  • Custom Device Support like auto-refreshing images, video, Battery Monitor , Pollen Count, Dad Jokes, etc!
  • Free and no ads - I won't charge anyone to use this app.

Side-note - I debated that last one (Free) with my family who think I should charge for the app this time around.. it's a tough one primarily because Apple requires a yearly developer fee plus I'm going to need an iPhone to test with. But, I don't know how many Hubitat iOS users are even out there and it'd take quite a few just to make up the cost to Apple.. so ultimately I'm going to make it free but if there's anyone who likes the app and wants to support it -- a donation would be much appreciated - PayPal.Me or Venmo


What's Left...

A LOT when compared to the Android version of HD+. I've had 6 years to work on it and there's a LOT of features in here - not all of which are even possible in iOS or on a desktop version. Here's what I can think of right now:

  • HTML tile support isn't ready. I need to implement something different for each platform - it's one of the top items on my list though
  • Video tile - this is another item that needs platform specific logic. I have my RTSP cameras working on desktop (Mac) but there's still work left here
  • Widget Support - I'll research what can be done for iOS here
  • Geofencing - it was added to Android HD+ as a reliable way of notifying the Hub when a device went out of a given area. This is built-into the native Hubitat app but I've had a lot of experience with Android and know some tricks to make it better. I'm not sure iOS has those issues though so it's probably not a feature that's needed
  • I'm learning Kotlin Multplatform (KMP) as I go so I'm constantly learning new ways to optimize the app. The goal is to make everything fast and responsive -- basically how a native app should work (and many nowadays don't..)

Installation

iPhone / iPad

There's also a TestFlight version which will get updates first.

Join the HD+ Hubitat Dashboard beta

Desktop (Mac, Windows, Linux)

I'm using an app/tool called JDeploy which handles building an installer for Mac/Windows/Linux and also auto-updates the app with no extra work!

Use this page to download the desktop installer: Releases · jpage4500/HubitatDashboard · GitHub

When installing, keep the box labeled 'update automatically' checked and each time you run the app it'll check for the latest and update.

Android

I haven't build this app for Android yet.. there's just too many features today in HD+ (the Android only version) that it's at the bottom of my priority list. Eventually when the features get closer to making it worthwhile to replace I'll update this section here too..

NOTE: I haven't stopped supporting the native Android version of HD+ -- I still use it every day on several devices.


Setup and Login

Once the app is installed, you still need to do 2 more things to login and use it. The instructions are the same as the Android version of HD+

  1. Configure MakerAPI on the Hubitat
    Configure Hubitat Hub | HD+ (Hubitat Dashboard)
  2. Login from the app
    Login | HD+ (Hubitat Dashboard)

NOTE: iOS doesn't support UPnP so the 'discover' button just tries to connect to the Hub using hubitat.local. It works for me but I imagine it won't work on every network. If not, just enter your Hub's IP address and that should be able to auto discover the Hub / Maker API app ID and Tokens.


Support

Bugs are expected but feel free to report anything here. If you can include a screenshot and device logs that'll help me see and reproduce the issue so that's the #1 way to get support. You can send device logs by opening the Menu -> About -> Support

This support page is Android specific today but it'll slowly get updated to cover all platforms: Overview | HD+ (Hubitat Dashboard)

Keep in mind at this stage things may and likely will break as I iterate versions, figure out how to get builds posted, etc. Please be patient! I have a day job and 2 very active kids so this is primarily what I work on during my free time.

33 Likes

Wow! I'm not a iOS user but your android app is a must have for hubitat, it's brilliant and there is just no equivalent iOS app so is always difficult to advise people when they are Apple users.

This will make that question easy and I always ask them to make a contribution because your such a fantastic person and developer and have done so much for everyone. So again thank you for your fantastic work and dedication.

11 Likes

@jpage4500 this is fantastic for a lot of reasons -- thank you for undertaking this!

I've installed it on my Windows 11 laptop and I have hit a couple of minor glitches:

  • I didn't select "prereleases" when I did my initial install. Couldn't find a way to turn it on post-install, so I went to uninstall it. The uninstall did nothing when attempted from control panel and from list of apps in settings.
  • When I ran the setup program again, it gave me the option to uninstall, which worked. I was then able to reinstall with "prereleases" selected.
  • The font and the background are both dark when you open the left-hand control panel, as depicted below. Makes it difficult to see the settings.

Now a couple of questions:

  • Any plans to allow a backup created on 1 platform to be restored on another platform? When I tried "restore from hub", none of the backups I create on my android device showed up.
  • Are you still accepting donations via Venmo?

Thanks!

Marc

2 Likes

Also looks like the device type "music player" has not been fully implemented yet, as it doesn't expose any of the controls like play, FF, rewind, etc., that I get on the Android app.

BTW, if you don't want this type of feedback yet, let me know. It may be premature and I don't want to create a lot of "noise" for you.

Marc

Just wow...what a great extension to one of the best community tools available to the Hubitat community. Congratulations (to you and to lucky us!) on this poject.

5 Likes

ahh.. I forgot about light/dark mode support. I'll fix it for now by using light mode all the time and then at some point I'll support whatever light/dark mode the OS is in.

  • I didn't select "prereleases" when I did my initial install. Couldn't find a way to turn it on post-install, so I went to uninstall it. The uninstall did nothing when attempted from control panel and from list of apps in settings.
  • When I ran the setup program again, it gave me the option to uninstall, which worked. I was then able to reinstall with "prereleases" selected.

This is from that JDeploy installer app I'm using to create native desktop installers and auto-update.
image

I'd certainly leave the auto-update setting to ON. I'm not sure exactly how to use the prereleases option just yet.. I'll have to look into it. But for now I don't think it matters - any update I push out you'll get next time you re-start the app (with auto update on)

  • Any plans to allow a backup created on 1 platform to be restored on another platform? When I tried "restore from hub", none of the backups I create on my android device showed up.

You can definitely backup and restore between platforms using this app.. but right now you can't import an Android backup from the original Android version of HD+. I re-arranged how some of the device settings are stored -- mostly things I wanted to do in the Android version but realized if I did it would break existing config files. So, this was good chance to clean things up. That said - the formats aren't too different.. if there's enough interest in importing a config file from the current Android version of HD+ into this app I can look into it.

  • Are you still accepting donations via Venmo?

Yep and thanks for asking! Venmo

Thanks - I don't have a music player Hubitat device so I didn't even notice. If you don't mind could you send me device logs? (menu -> about -> support). I'll try to port over the Android logic for this but without having a device to test with always makes things a little harder

BTW, if you don't want this type of feedback yet, let me know. It may be premature and I don't want to create a lot of "noise" for you.

Nope - this is perfect!

I'm keeping a list of items to work on and then try to work on them depending on how difficult, how many users it affects, etc.

Generally speaking the hardest items are platform specific stuff since it needs to be implemented and tested for each.. HTML and Video tiles are at the top of the list. Then things iOS specific like Widgets, Geofencing, Location.. that reminds me or something but I'll make it a separate post..

RE: HTML tiles

I know a lot of people here make use of HTML tiles to create graphs, barcharts, etc which they display on a dashboard. This is one area I'm really behind in as I don't really have any good examples to test with on my Hub. I tried to create a couple of graphs in the past but never really came up with anything great.

Part of it is that I'm using old Android tablets as my dashboards and as a developer I know how much memory/overhead these 'WebView' widgets take so I try to avoid them (it's basically a mini browser instance - and browsers today need to support a LOT)

Anyway, of all the things I don't have to test with -- HTML devices would be at the top of my list (video tiles second but that actually requires hardware!)

If anyone has some good HTML devices they display on another dashboard - can you send me device logs in the app (About -> Support) or even just a snippet of what this looks like? Here's what I mean:

In Hubitat: Apps -> MakerAPI -> Get All Devices with Full Details
image

Check the pretty print box (this is Chrome.. hopefully something similar in other browsers)
image

search for some of these words: "html", "tile".. here's some examples from my devices:

      "html": "AQI: 8\u003Cbr\u003EPM2.5: 2 µg/m³\u003Cbr\u003EFilter: 56%",
...
      "myTile": "\u003Cstyle type=\"text/css\"\u003E.cI{height:45%}.cIb{height:80%}\u003C/style\u003E\u003Ctable style=\"text-align:center;display:inline\"\u003E\u003Ctr\u003E\u003Ctd\u003E\u003CB\u003EMatthews\u003C/B\u003E\u003Ctr\u003E\u003Ctd\u003EOvercast clouds\u003Ctr\u003E\u003Ctd\u003E 68°F\u003Cimg class=\"cI\" src=https://tinyurl.com/y6xrbhpf/26.png\u003EFeels like  68°F\u003Ctr style=\"font-size:85%\"\u003E\u003Ctd\u003E༄ Southwest @  12 MPH, gusts @  12 MPH\u003Ctr style=\"font-size:80%\"\u003E\u003Ctd\u003E⏲   30 inHg 💦 86% ☂ 94% 🪣 None\u003Cbr\u003E☀ 6:45 AM ☽ 6:24 PM\u003Ca href=\"https://openweathermap.org/city/4497956\" target=\"_blank\"\u003E\u003Cimg class=\"cI\" src=https://tinyurl.com/y6xrbhpf/OWM.png style=\"height:2em\"\u003E\u003C/a\u003E @ 10:34 AM\u003C/table\u003E",
...
      "tile": "\u003Cdiv style='overflow:auto;height:90%;font-size:100%;;'\u003E\u003Ctable width='100%'\u003E\u003Ctr\u003E\u003Ctd width='40%' align=center\u003E\u003Cimg src='https://upload.wikimedia.org/wikipedia/en/7/7b/New_York_Mets.svg' width='100%'\u003E\u003C/td\u003E\u003Ctd width='10%' align=center\u003Eat\u003C/td\u003E\u003Ctd width='40%' align=center\u003E\u003Cimg src='https://upload.wikimedia.org/wikipedia/en/9/9d/St._Louis_Cardinals_logo.svg' width='100%'\u003E\u003C/td\u003E\u003C/tr\u003E\u003Ctr style='padding-bottom: 0em;'\u003E\u003Ctd width='100%' align=center colspan=3\u003EToday 1:05 PM\u003C/td\u003E\u003C/tr\u003E\u003C/table\u003E\u003C/div\u003E",

NOTE: Don't send me anything that has https://cloud.hubitat.com/api/[CLOUD_KEY] in it. The CLOUD_KEY points to your Hub. I think a lot of these HTML tile generators do this so they can return more than 1024 characters or whatever the limit is. I have an example here:

https://cloud.hubitat.com/api/CLOUD_TOKEN/apps/880/gametime/880?access_token=TOKEN&version=75

In this case, just open the URL in a browser tab and right click -> view source and send me that. It should just be the HTML that ultimately I can use to test with -- like this:

<div style='height:100%;'><table width='100%' style='border-collapse: collapse; font-size:100%;'><tr width='100%' height='100%' style='background-color:rgba(158,158,158,1.0); color: #FFFFFF'><td width='25%' style='margin:0; padding:4' align=left>Sun <b>Mar 8</b></td><td width='100%' style='padding:4;display:flex; align-items:center; justify-content: center;' align=center>@ <img src='https://s3-us-west-2.amazonaws.com/static.fantasydata.com/logos/ncaa/99.png' height='25vh' style='padding:4'> Cornhuskers</td><td width='25%' style='padding:4;margin:0' align=right>6:00 PM</td></tr></table></div>

Anyway, this will give me some HTML tile examples to look at while testing which really helps.

@jpage4500 I uploaded the devices log. You should see both an HTML tile in there titled "Wine Fridge Graph" and a music player titled "FR Sonos new".

Let me know if you need anything else. I plan to play with the windows version for now. I don't own any ios equipment, but both of my adult children use them. I'll see if one of them has an older device hanging around I can borrow so I can do some testing to help support the effort.

Being able to import backups from HD+ for Android would be very helpful, but I totally understand that not being the priority for now.

Marc

1 Like

Really looking forward to this. As much as I love HD+, my Fire HDs are my only 'Android' devices as I'm all Apple.

I downloaded/installed the MacOS version and hit a problem fairly quickly. I made the mistake of trying the video tile - just to see. It didn't work and threw an error:

The problem is that I can't get that error out of the way to get into edit mode to delete the offending file. Closing the dialogue or clicking 'ok' closes the app. Running the installer again does give an uninstall option, but although it indicates the app uninstalled successfully, running the installer again gives the same uninstall and update options. When I 'update' the app reloads with my previous dashboard and the error.

Not a big problem, I could just do with finding the appropriate files in the library to trash in order to get back to a clean state.

Edit: OK after a lot of messing about I've found how to cleanly delete it. The uninstall does not delete the dashboard you created. It's hidden away. If you need to start completely afresh on MacOS:

  • Open finder and then CMD + Shift + .(period) to show hidden folders
  • Navigate to MacintoshHD > Users > Username
  • There are two folders there relevant to the install '.hubitat-dashboard' and '.jdeploy'

I deleted both and did another install, purposely recreated the error. To fix it without losing the dashboard you can just go to:

  • MacintoshHD > Users > Username > .hubitat-dashboard > devices
  • There you'll find a .json file for all of the devices
  • Find the individual device that's causing the crash and delete it (in my case the video tile)
  • The app will now open normally again

Hey I got stuck with this on windows after install it opened I found the hub it loaded and then asked to group like components. I answered yes the this error. Now it opens to this error and can only close not use.

I'm not a Windows user but you'll need to find the hidden folder containing the dashboard files as I did for macOS in the post above yours. Perhaps someone better versed in Windows will know the location of that folder....

MacOS. Added an image tile which is a .png. It shows my Think Broadband monitor. When adding the tile, the preview is perfect and shows the full image:


However when viewing the image on the dashboard, it doesn't 'shrink to fit' the tile. Clicking the image tile to open it in expanded mode is the same. The image needs to be dragged around to see the edges and can't be sized to fit:

thanks for the feedback! I don't get crash reports automatically anymore so I'll try to address these first.

Yep - all the devices for the desktop version of the app are saved in ~/.hubitat-dashboard/devices (I also have a Mac but I assume Windows/Linux will be in a similar location)

You can delete them (or the whole folder) and it should be re-created on startup. I'll have to see if I can have the jDeploy uninstall remove that folder so it would start from clean again

I was able to get 2 video tiles to work myself (Reolink cameras) but haven't spent much time testing them at all. I am interested in figuring out that error though.. I'll do some searching

1 Like

I have the same problem for another image tile of mine -- I crop the image so it fits the entire tile (cropping if necessary). I'll add an option to 'fit' which would fit the entire image inside the tile - even if there's empty space on the top or sides

I'm guessing this is a video tile.. ffmpeg is what's used to display video on the desktop version (Android and iOS have their own built-in video players). It's probably the same or similar crash to the one above too

Very happy to see your great HD+ app for Windows and Apple IOS. I've tried the Windows 11 version. I noticed variable dates do not display, If switched to custom and and datetime it does display (works on HD+). I also found the drag and drop to work intermittently. And if I have added blanks, clicking on one to drag and drop it selects all the blanks. I am going to try an old iPad and play with the IOS version. Is there a minimum IOS version required?

You put a lot of work into these. Much appreciated.

@jpage4500 I loaded the new version you are working on on a linux box running Zorin OS. I don't see anything that lets the menu open on the left side of the window. I tried different keyboard\mouse things to cause something to show up but no luck.

Just click a blank area of the screen and drag right:

HD+ Menu

3 Likes

MacOS Two other things I notice regarding the image tile:
1- I added the image shown earlier (Broadband Monitor) via its url. Once added it doesn't look as though I can edit that url the way I can on the Android app. I don't see 'URL Options', so once added if I'd typed the wrong url by mistake, I'd need to delete and re-add the image tile (rather than just edit the url)

2-The image tile doesn't refresh/update as it does in the Android app. The image is always shown as it was at the moment it was added. I noticed that the clock tile had a 'refresh' attribute. I manually added that into the JSON for my image tile and it updated.

When looking at the error I posted, it appears the app is looking for files in Library > Java and I can confirm that although those directories exist - they are empty. So maybe I'd need to have specific Java extensions pre installed for it to work?

Time/Date Tile - Currently clock only in 12hr format

Variable Tile - I've a tile on my Android HD+ dash which is a time variable (wakeTime). I enter a time in there and it performs some actions via Rule Machine. I can't format that to show a time currently.

Copy Tile - Doesn't seem to be working for me. I've a tile for Hub Info Driver that has a lot of attributes. I have copies of this tile so that I can show them in different tiles (sunset, sunrise) I can click on copy but a copied tile isn't generated.

I hope I'm not flooding you with too much information. I thought the best way for me to trial the Mac version was to attempt to recreate the content/layout of my existing Android HD+ dash to get an idea of what will work and provide feedback.