What Can't You Natively Integrate With Hubitat, But Still Find A Way?

Basically, where have you hit a brick wall with what Hubitat offers, either through built-in options or Community developed integrations, but chosen to find another way to bring a device or service into your Hubitat setup?

Often times this is achieved using an instance of Home Assistant which is "paired" with a Hubitat hub using the Community HA integration.

Apart from a few minor examples I have had recently, this was largely prompted by my purchase of a Dreame vacuum that may or may not have a HE Community integration. This made me think there could be an interesting conversation about similar products, particularly in the broader device list than we typically discuss, such as lights, locks and common sensors.

In your particular case:

Dreame has integrated Matter support into its 2025/2026 flagship robot vacuums (such as the X50 Ultra, X40 Ultra, and L40s series), enabling local, secure, and fast smart home connectivity

Gemini says the driver for it should look like:

/**
 *  Hubitat Matter Driver for Dreame X50 Ultra Vacuum
 *  Protocol: Matter over Wi-Fi (Standard RVC Clusters)
 */

metadata {
    definition(name: "Dreame X50 Ultra Matter Vacuum", namespace: "custom", author: "Gemini") {
        capability "Switch"             // On = Start Vacuuming, Off = Return to Dock
        capability "Refresh"
        capability "Configuration"

        attribute "operationalState", "string"
        attribute "batteryLevel", "number"

        // Matter Endpoint & Cluster Definitions (Standard Matter 1.2 RVC Spec)
        // Endpoint: 0x01, Operational State Cluster: 0x0060, Run Mode Cluster: 0x006D
    }

    preferences {
        input name: "logEnable", type: "bool", title: "Enable debug logging", defaultValue: true
    }
}

// Handle data coming from the Hubitat Matter layer
def parse(String description) {
    if (logEnable) log.debug "parse description: ${description}"
    def descMap = matter.parseDescriptionAsMap(description)
    if (!descMap) return

    // Parse Operational State Cluster (0x0060) Attribute Changes
    if (descMap.clusterInt == 0x0060 && descMap.command == "0a") {
        def attrId = descMap.attrInt
        // Attribute 0x0004: OperationalState
        if (attrId == 0x0004) {
            int stateValue = Integer.parseInt(descMap.value, 16)
            String stateStr = decodeOperationalState(stateValue)
            sendEvent(name: "operationalState", value: stateStr)
            
            // Map to standard Switch Capability
            if (stateValue == 1) { // Running/Cleaning
                sendEvent(name: "switch", value: "on")
            } else if (stateValue == 0) { // Stopped/Docked
                sendEvent(name: "switch", value: "off")
            }
        }
    }
    
    // Parse Power Source Cluster (0x002F) for Battery status
    if (descMap.clusterInt == 0x002F && descMap.attrInt == 0x000B) {
        int battPct = Integer.parseInt(descMap.value, 16)
        sendEvent(name: "batteryLevel", value: battPct)
    }
}

// Send command to begin cleaning sequence
def on() {
    if (logEnable) log.debug "Sending Start/Resume Clean command"
    // Run Mode Cluster (0x006D), ChangeToMode Command (0x01), Mode value 1 (Cleaning)
    List<String> cmds = matter.command(0x01, 0x006D, 0x01, "01")
    return cmds
}

// Send command to halt cleaning and return to charging station
def off() {
    if (logEnable) log.debug "Sending Stop/Return to Dock command"
    // Run Mode Cluster (0x006D), ChangeToMode Command (0x01), Mode value 0 (Idle/Docked)
    List<String> cmds = matter.command(0x01, 0x006D, 0x01, "00")
    return cmds
}

def refresh() {
    if (logEnable) log.debug "Refreshing device state"
    List<String> cmds = []
    cmds.add(matter.readAttribute(0x01, 0x0060, 0x0004)) // Read OperationalState
    cmds.add(matter.readAttribute(0x01, 0x002F, 0x000B)) // Read Battery Percent
    return cmds
}

def configure() {
    if (logEnable) log.debug "Configuring Matter subscriptions"
    List<Map<String, String>> attributePaths = []
    attributePaths.add(matter.attributePath(0x01, 0x0060, 0x0004)) // Subscribe to State
    attributePaths.add(matter.attributePath(0x01, 0x002F, 0x000B)) // Subscribe to Battery
    
    // Subscribe with a 5-second min and 3600-second max reporting window
    String subscribeCmd = matter.subscribe(5, 3600, attributePaths)
    return [subscribeCmd]
}

private String decodeOperationalState(int value) {
    switch(value) {
        case 0: return "Stopped"
        case 1: return "Running"
        case 2: return "Paused"
        case 3: return "Error"
        default: return "Unknown"
    }
} 

Can only hope the L10s Ultra Gen2 that was on special will get the same treatment... Regardless I will keep in contact with the "agents".

Well according the Google machine:

The Dreame L10s Ultra (and Gen 2/Pro models) supports Matter integration

Then it must be true, if the machines say it is so... :wink:

Yeah... about that.... :rofl:

For me, my HA+HADB journey started with a desire to integrate my Phyn Plus water valve. I've since added pretty much everything else I have to HA (except my HE ZB and ZW devices, of course).

Although my Phyn is still the main thing I bring over, it's a nice security blanket knowing that those other things (BroadLink, Bond, Hue, Caseta, Sonos, Flume, Resideo, etc) can be brought over any time that may become necessary -- in that sense, my HA is serving in a backup role.

Having those other devices in HA then gives me enough stuff in there to play around with to learn more about how HA works. I admittedly haven't done much of that yet, but I'll get around to it sometime.

I'm only just starting to use agents myself, and wow.... More than just a gimic in my industry...

Yeah, probably where I was expecting this conversation to head, not so much AI :wink:

And me too,... I like the options another home automation platform provides, and something I would suggest to many people to invest in...

If I may ask, how did you get into HA? I'd like to, but the learning curve for just the hardware seems steep to me? Soldering...I don't know... Is the Green hub they market the easiest way? You still have to buy radios, correct? Thanks.

My entry into HA could be controversial, hopefully @hydro311 has an easier story to tell...

That said, I intend to set HA up on a rpi in the near future... I don't get the impression it is not as hard as it used to be (I hope)

I went to Home Assistant at the time because they had local integration with Ecobee when hubitat did not (at that time).

Then, I found an integration with My Subaru (cloud based) that Hubitat also does not support (which is fine for me since it is cloud based). I then found a few other integrations that were also cloud based. So, I like having things in the cloud separated from my HE instance by HA.

I also like that HA has a different way of approaching presence, allowing multiple locations (Home/Work) and have integrations that control my HVAC and a few other things when we arrive/leave home and work.

I use HADB and the Home Assistant community appps for managing device communication back and forth. The only automations that reside in HA are around the presence at alternate locations (Flip a virtual HE presence device for arriving/departing other locations).

The Green is almost certainly the easiest way to start - it's not the most stellar hardware, but it's plenty for basic needs, and it comes with HA already installed.

Z-radios (and/or a Thread radio) can easily be added anytime to it (or whatever other computing platform you use). HA's parent organization (Nabu Casa) even makes their own plug-&-play ZW and ZB/Thread radios (and they appear to be pretty darn nice!)

But the whole chip situation these days has really driven prices up a LOT, including the Green.

I bought a well-rounded N150 mini-PC at a great price (Amazon Prime Day special) before this whole chip thing erupted, and I loaded HA on it myself (what they call a "bare metal" installation) - I just followed a YouTube video, and that went great. My N150 should last a very long time - it's got plenty of head-room hardware-wise.

I haven't added any z-radios to it (simply no need to right now), but that would be easy enough - I have plenty of USB ports available on the N150.

Once installed, I've just been slowly learning as I go. I'm still in the very early days of that, but it's fun to play with.

Not that we are recommending people to migrate to HA.... HE is still better... :slight_smile:

I did dabble in this at one point... but did not get it to work the way (others) would need.... All we can hope is my 600+Km 2001 Liberty (Legacy) gives up the ghost....

Oh I agree - the biggest obstacle so far with HA is... drumroll please... YAML

I hate it, and it cannot be avoided (despite what any HA fanbois might say).

I did read that the ZB/Thread radio can't do both...it's one or the other, if I comprehended correctly.

There's a lot of stuff in that little box. And no fan, lol.

That's correct - they just make a radio (called ZBT-2) that can be used for either ZB or Thread (but not both simultaneously).

Not cheap, but no soldering, lol.

Yeah, my N150 is a BeeLink like those - I got it for $100, so you can see these prices have all gotten pretty nuts.