I just wanted to leave my thoughts here, with the hope that (a) some people might benefit from understanding the strengths and limitations, and (b) the Hubitat team might get some insight into either marketing or feature work, since I initially thought this hub was perfect for me, but here I am a few months later.
There were quite a few things, each of which would not be a big deal on it's own, but in aggregate ended up pushing me off the platform.
First, Hubitat is a great platform. I have no doubt that it's comparable to (if not better than) SmartThings, and everything I write here probably applies to any commercially available HA solution. I had a Wink Hub before this, and it was miles behind in capabilities.
Second, Hubitat has impressive hardware support. Almost all my devices paired with it almost immediately, and I had no issues with disconnections or delays.
But compared to rolling a customised solution on Home Assistant, there were a few shortcomings:
SSL was added very recently, and it doesn't support automated LetsEncrypt renewals. So I would have to set up a second machine that would script updating the certs (assuming custom certs show up soon). And even with SSL, there's no support for advanced authentication (like totp, or client certificates), so I ended up running it behind a reverse proxy.
No built-in WiFi, which meant I had to provision a dedicated wifi-to-ethernet bridge machine (same one that runs the reverse proxy, and handles SSL certificates as well). But that adds more complexity for network devices (e.g. Wemo, Google Cast), because of double NAT. Home Assistant runs on a RPi, which not only gets me built-in Wifi, but also stronger firewalls, eliminating the second machine for the reverse proxy while simplifying SSDP and mDNS.
Rule editing is a very manual process. For example, I have two bedside remotes, and I wanted each remote to have the same button mapping. Couldn't find an easy way to duplicate the settings. In the end I settled for a second remote simulating button presses on the first remote, and saving all the logic once.
Multiple actions for a rule are pretty painful to manage. In comparison, not only does Home Assistant allow YAML files for config (so I can generate them dynamically), it also allows multiple actions with conditional exits.
Backup and Restore is misleading at best. I've posted about that earlier, but in summary: losing the hub means setting up all the automations from scratch. In contrast, Home Assistant uses customisable Entity IDs for all automations, so you just need to rename the devices when they're first added, and the rules will start working.
Hubitat's web UI is noticeably slower than Home Assistant, even though they're running on comparable hardware (I think. I'm using an RPi 3B+). But even if they're not, I can always just upgrade the Home Assistant hardware, and move over the USB ZWave+Zigbee sticks and restore a backup, whereas no hub migration strategy exists for Hubitat, even if a new, faster version were to arrive.
The "magic logs" that only support can see, and the persistent (or backdoor) connection that ability implies makes me slightly uncomfortable, especially since Hubitat was billed as a local hub. I understand the necessity of a cloud connection for the dashboards and Google Home/Alexa integration, but turning both of those off does not prevent support from reading logs that even I cannot access.
Beyond these, I was also looking into making the Hubitat data more easily accessible for storage and graphing. I use prometheus(+influx) and grafana for other metrics, so integrating the devices in my home would be nice. To that end I started writing something that would scrape the master dashboard json and convert it to prometheus metrics, but Home Assistant includes prometheus built-in.
Home Assistant also supports many, many more devices out of the box, and IMO is easier to add custom components to. (Although it does require more restarting...)
- Amcrest IP cameras work for motion detection, (and even show snapshots on the dashboard)
- Lutron's Connected Bulb Remotes work with the deconz integration, whereas I just could not get them to work in Hubitat.
- Geolocation can use my existing Maps Location Sharing system, without requiring a new background app on my phone. Ping based presence is also nice
- Nest still works in HA, although Hubitat might decide to bring it back later.
- Chromecast works incredibly well, status is always correct, and I can set up playlists to play on devices using automations. (But Hubitat is rapidly catching up here, their Chromecast integration is very impressive even today. One of my favourite automations was to turn off all music when the bedroom lights go off at night).
And this is totally minor and almost irrelevant, but I never really grokked the 'modes' concept in Hubitat. It seemed like I would always want a combination of modes, at which point I considered just using virtual switches with conditions everywhere. This could be because I wasn't using them correctly, but I wanted something like "day"/"evening"/"night" combined with "home"/"away" combined with "guests"/"no guests", so that I could write a rule that goes something like "away and no guests -> turn on recording for indoor cameras". That exact rule is trivial to set up in Home Assistant.
The Open Source aspect, as well as being able to version control the configuration definitely appeals to me, but that's not for everyone, so I don't see the lack of that as being a downside to Hubitat. But being unable to edit the configuration in anything other than the UI, which is often slow and requires many clicks, certainly put a damper on my enthusiasm.
To be fair, of course Home Assistant is not perfect. Zigbee lights took many attempts and many were unavailable for hours until I reset and rejoined them. The UI is still a huge WIP when it comes to editing automations or scripts, and renaming z-wave devices is painful by hand (but I have a script for that now).
Many devices are displayed in an unexpected manner, e.g. the Nest protects do not show a battery sensor, but a text sensor for battery that says "Ok" or "Replace", and requires some work to be seen as an actual battery sensor.
And setting up a new RPi with home assistant is hours of work compared to plugging in a new Hubitat. Customising the dashboard is a lot more work, too, and YAML can take some getting used to.
It also needs frequent restarts to pick up some classes of configuration changes, which can take a while if z-wave is in use.
But in conclusion, I think Hubitat is a great SmartThings alternative, but it's definitely not for a programmer like me. A lot of the reviews I read made it sound like Hubitat was a very do-it-yourself kind of hub (pointing to the user apps and drivers pages), but I incorrectly assumed that meant the Linux kind of DIY, which is not the case here.
I'm sure there's a lot here that most people don't care about, but if I had read this exact post before getting the Hubitat, I could have saved myself a few weeks, so I'm putting it out there for others to read.