What's next for the Hubitat hardware? Speculation please to help me decide how to deal with sluggish ui

My C8Pro ui is buckling under the load I am putting on it. I have posted about this before and gone back and forth with support (see original thread below) with no remedy. I had a similar issue on my C8, but then when I upgraded to the C8Pro it obviously got much faster for a while. But as I added rules and devices it started to slow down. 18 seconds+ to open a rule for edit as an example.

I am drawing a conclusion based on circumstantial evidence that there is a limit to what you can throw at one of these boxes.

When last counted I had 844 devices and 1153 apps. It is definitely higher than this now. I can't remember where to get those counts from.

So, my only thought is to offload portions of the work onto one of my other Hubitat's. I have a C8 that I use exclusively for Z-wave devices and a C-7 that is used for Zigbee devices. I do all of the rule processing on the C8Pro using Hub Mesh to access the devices.

But before I go down this path I wonder if there is any speculation on a C9 or something along those lines that would allow me to swap out vs splitting rules between Hubitats which is not ideal.

Wow.

1 Like

Hubitat usually will not comment on future hardware. Most of the time we find out when it hits the FCC testing report...

I can say that I have heard NO rumors of any kind on new hardware coming out.

That said, see sentence #1 above. :slight_smile:

6 Likes

You have 3 Hubitat Hubs according to that statement. As an experiment, can you disable a big chunk of your Apps on the C-8PRO and verify the UI gets snappy again?

If YES, I am going to advise you add a Node-Red instance to run the bulk of your automation. You create a MakerAPI instance on each hub, probably called "node-red" and add devices that Node-Red will see. You run Node-Red on an "always on machine" of your choosing but I've got an older Mac Mini (headless) assigned to the job. I'm sure the processing power and memory limits far exceed what Hubitat will ever put into a Hub. You'll want to start with a set of devices that use an automation that you can duplicate to get some scale. Perhaps you have a set of rules that turn devices on or off at a specific time. You would use Disable to test out Node-Red's value to your situation. There's a whole Node-Red topic here, where people have shared Node-Red Flows.

4 Likes

That what I would do (and DID do).... I can throw as much processing power as I want/need/can afford to my node-red instance any time I want. It can be fully backed up, copy/paste in the GUI speeds up rule development, and it is hardware agnostic so I can move it to new hardware any time I want.

Oh, and as a bonus (for me), I can mix/match Hubitat and Home Assistant devices in my logic as I see fit, as they both have node-red connector nodes. This frees me up to use whichever home automation ecosystem makes sense for a given device/service/application.

6 Likes

Here's an example of what I call "environmental" Node-Red logic: Rules that are time based vs sensor based.

There's a couple of 'tips' in that screen capture that I'd pass on. First, I almost never delete Debug nodes I add during debug. I simply disable them. That's born from having to add debug nodes back over and over. Similarly, if I have a large 'fan-in' or (in this case) a large 'fan-out' I use a No-Op node to act as a connector. Time and again I've decided to add something in the logic and detaching / re-attaching a fistful of wires is tedious.

2 Likes

You're supposed to use junctions for those. :wink:
image

(joking - I used to use NoOp nodes before junctions were added too)

A tip I would give is that sometimes you need to "sanitize" the message chain (remove msg.deviceId, msg.command, msg.arguments, msg.attribute) if using multiple hubitat nodes in a row if you specify arguments, etc, at run time programatically... Sometimes a rogue msg.arguments being in the chain when you weren't expecting it can really mess you up.

A possible feature request to @fblackburn if he ever gets bored and wants to do some coding would be to have an "Ignore Input Overrides" option on the nodes. I've seen other node sets do that for this exact reason. I guess a nice person could also do the work and submit a PR to him, too...

In fact, here's how the Home Assistant nodes expose that function:
image

This is what my sanitize change node looks like. I am in the habit of just using it any time I have chained hubitat nodes just to be safe, as I've been bitten too many times.
image

4 Likes

I'd like to click Like at least 3 times on that :smiley:

Node Red sounds like a good idea. I had played with it a long time ago but didn't go far and really don't (yet) know how to use it. I have an Unraid server running on a Dell R730 so I can easily spin up a docker.

I do have Home Assistant running but I only use it for devices that I can't directly interact with in Hubitat and I pass the devices back to Hubitat and run the rules there. So combining in Node Red would be just as efficient.

Also, I am in the process of cleaning up my apps and rules especially. I did a lot of things in the past with virtual buttons that I am now undoing and hoping that will help clean things up.

It's very granular. Each node does the most minor thing. The #1 thing to understand about Node-Red, in my opinion, is that there's a message (msg.) and everything acts on or modifies the msg.?? object. Debug injects an initial msg.?? with whatever you configure it to inject. The next node along needs to react to it... either by changing it, or using it, or both.

Another example to help with understanding...

Let's start untraditionally on the right.. two Hubitat Nodes that have ">> on" and ">> off" below. The top one turns a light (in this example) On and the Bottom turns the light Off. If a message gets to that node, it doesn't matter the content of the message, the light goes on or off. In this example, ultra simplified, the logic is just "block or not" :slight_smile:

Note: the Hubitat Nodes do respond to the content of the msg object IF.. IF you tell it to. In this example the Hubitat nodes are not interpreting msg.

To further the explanation, we go over to the left and the motion Sensor node. Motion Sensors are either "active" or "inactive" and the Hubitat device node sets msg.payload.value to the state the sensor sends. The msg then goes to the Switch node, which looks at msg.payload.value and forwards the msg object out the top bubble or the bottom depending on the value. "active" goes out the top, "inactive" goes out the bottom. Same message, nothing has altered IN the msg object, right? It's just passed right through untouched.

Next is a Change node.. this node is only going to change something within the msg object. It deletes the value that the motion sensor inserted and changes msg.payload to be "stop".

If the current time is between sunset and sunrise (in other words, night time) the node passes the message, unaltered. If it is NOT that time frame, the message is discarded. Passing along the message (which contains "stop") to the Hubitat node turns ON the light. WOW - stop turns it ON. :smiley: This is the importance of THIS example.. the fact a message arrived to the node is all it takes, no interpretation of the "stop".

If the Motion Sensor injected an "inactive," then the delay timer starts, if it gets to zero, then the message is forwarded to the Hubitat node for OFF.

Remember "stop" ?? well it's purpose is for a re-active from the motion sensor. If the motion sensor went Active, then a moment later, inactive, the delay timer starts, BUT if motion is detected again, then that delay needs to be... stopped. "stop" once again flows through and turns on the light, which was already on, so it's like nothing.

This also works when the time is "day time" and someone manually turns the light ON via the switch. When motion stops, the delay timer starts and the light gets turned OFF.

1 Like

Did you mean "Inject node"?

I’m not sure any future generation hub will adequately meet your needs in terms of hardware specs, since you’re pretty far ahead of the curve compared to most users.

I think the suggestions to offload some of the work onto another device are great ones, and likely just as applicable even after the details of the next gen hub’s specs are known.

2 Likes

yes... :smiley:

My brain has aliased those two nodes into one concept of: debug. debug in and debug out are merged into one within my head, Sorry that leaked out :smiley:

Agree...unusally large load def seems to call for a "divide and conquer" approach - split devices across hubs, and if desired add in NodeRed to further segregate the automation load.

1 Like

I am not sure what the record is, but that is the highest I can remember seeing. You are pushing the limit, even if there isn't officially a limit.

Divide the load between hubs. Offload integrations and cloud stuff to one hub, that really helped my main hub.

Maybe split the house into halves, or floor by floor, or even consider a Zigbee hub, and a Z-wave hub or some similar arrangement where you can cut that device count in about half. Like csteele says, turn off a bunch of stuff and see if that helps, then shift a large chunk to a spare hub. If you don't still have your previous hubs, there are cheap C5 and C7 on ebay that pop up fairly regularly.

A house that has 844 devices surely must span multiple zip codes, so maybe put each zip code on a separate hub.

5 Likes

Depends how many of them are virtual or LAN based I guess, but I agree.

I thought I had a lot with 120 physical devices (more with virtual of course). Turns out I'm just an amateur!

5 Likes

I do have a lot of virtual devices on the C8Pro. Primarily because I made it the central hub and it shares devices through other hubs, such as all z-wave and zigbee devices.

It's possible that the intensive hub mesh activity could be leading to this? No idea.

I originally went this route when I upgraded from C7 to C8. I had everything running on one hub. But the zigbee radio on the C8 started giving me all sorts of trouble. I ended up moving all zigbee devices back to the C7 and using hub mesh,

Then when I upgraded to the C8Pro I left all of my z-wave devices on the C8.

The theory was to separate intensive processes such as radio activity on dedicated hubs.

2 Likes

A bit above my pay grade, but I'd be interested to hear from others (@JasonJoel, @csteele, looking at you) about whether devices or automations put more load on a hub. In the context of confirming that the Devices>C8, Automations>C8-Pro split is better than Automations>C8, Devices>C8-Pro in this case in particular.

I think it is always "it depends".

Depends on the event rate of the devices.
Depends on the device type - zigbee/Zwave are a lot less load than even most simple LAN/cloud based devices and integrations.
Depends on what the automation is doing, how many subscriptions there are, and how often it "fires".

For UI responsiveness things like how many logs are being generated can impact it, too. Maybe it shouldn't, but it definitely does.

Etc.

4 Likes