Guys, I want to accomplish a very, very, very simple thing:
I want to push a button and a few lamps will turn on.
Now, I'm past the ranting stage. z-wave is what it is and that's it. I've already cried all I had to cry, and now it's time to actually try to do something constructive.
What is happening currently:
I created a "basic rule" type of rule. push button on remote, and set to turn on 18 relays ( connected to lamps ) and turn on 5 window blinds.
I created another basic rule. held button on remote, set set to turn off the exact same devices.
When I press the button all the lamps should turn on and the blinds should open. When I hold the button all the lights should turn off and the blinds should close. I told you, I am a simple guy with simple needs.
It doesn't work. It never turns on or off everything. Sometimes 90% sometimes 95%.
It is not a communication problem. If after the rule runs I go to the dashboard, the state of the devices is correct, for instance, I pressed to turn on, then the ones that did turn on are on and the ones that didn't are shown as off. I then turn them on individually on the dashboard and it works perfectly. So it's not a communication problem or a status update problem.
add a feature to the "basic rule" engine that looks at the current state before the rule is run, desired end state set by the rule and current state after the rule has run, and tries to resend the commands to the devices whose state is not the desired state.
Essentially, the rule would run until all the devices are in the desired state or until a timeout or number or runs has been reached.
I would suggest that turning on/off 18 relays simultaneously is the issue.
Too much chatter on the mesh with messages getting lost. (Just my opinion and could be completely wrong).
I have a button that I press to turn off a series of lights when we go to bed.
I have split things into groups of 2/3/4 lights with a delay between each group.
I think you may have to do this to get your desired result.
Certainly worth a try to see if this is the issue.
many thanks for your reply! I mean it. I'm already balding due to male alopecia and pulling my hair in despair at this is not helping the situation.
Yes, you are right. I have tried to do three "splits". The simple rule starts with turn on 10 lights, then waits 6 seconds, then turns 8 lights, then waits 6 seconds and finally turns on the five blinds.
With this setup I get the above 90 to 95% of it works. If I made it in one single go, it would be like 70 or 80%.
I haven't tried to split even more because I think its a very ugly hack to do, and I thought that it makes all the sense for the rule to actually try to figure out if it worked and if not, to fix what haven't worked.
This is not going to help with doing this on RM, but it can be done using webCoRE.
In the following test piston the devices that are turned on are captured into a variable and then the devices within the variable are turned off.
Is this what you are after? Maybe it can be done in RM but I'm afraid I don't know how to do it.
I really just want to click a button to turn on everything and hold it to turn off.
It's a building with two small open floors ( there is no "floor" on second floor. ) one floor has 20 lights ( each pair of two lights attached to a dual fibaro or aeotec relay ) another floor has 8 lights attached to 8 aeotec dimmers and 5 blinds connected to single fibaro relays.
The hubitat C-7 is within 30m of any of these devices, most of them are actually closer and on the z-wave properties page most of the devices are directly connected. A couple go trough another device and none go trough more than one. Anyway, it's really not a lack of connection as the devices when actuated on the dashboard work perfectly.
I will wait for a dev to come in and comment about the feature request.
The reality is that none of these work arounds don't seem to be deterministic. And I really want the damm things to really turn on and off as requested by the rule, so I think that the feature request of having the rule check the end state and apply corrections if needed is really needed to have some sort of guarantee that it happens.
Really, if something is failing at the protocol level (the hub is sending the message, but not all messages are making it to devices) the only recourse you really have is to test for that, and try the command again.
I've long thought that there should be a "verify command" option in hubitat rules and RM that just magically takes care of this behind the scenes, but there isn't so you would have to do it in an RM rule with logic.
I have to do similar things on other hubs as well, for the record. If I blast out a bunch of zwave commands at the exact same time in home assistant, sometimes they don't all make it there either. Just is what it is.
@stephen_nutt's method is probably your best bet. You can still use your simple rule, you just turn on and off the group light instead of each individual light. Once you make the group it becomes a device. I had to do this as I do the same thing at night.
I originally had a goodnight routine that turned off all my lights. I had each individual light listed in a RM rule. Like you saw, it mostly worked. Occasionally a light would be left on. When they added metering to the group setup I decided to give that a try. I set metering to 100ms and my lights off routine has been rock solid since.
Home Automation that is
Local, Reliable, Fast, and Private.
This is Home Automation As It Was Meant To Be
Hubitat is changing how people live with smart devices by enabling them to Elevate Their Environment.
By combining the advantages of local automation processing with cloud IoT connectivity, Hubitat's innovative Hubitat Elevation hub ensures personal data privacy and is more reliable and responsive than competitive cloud-based solutions. Hubitat Elevation is compatible with popular home automation devices, comes with a variety of built-in apps, and has an active user community to share ideas, insights and solutions.
I just hope they make good on their word. Rules checking if they ran ok and fixing what didn't seems to be a good way to go.