Ikea Blinds

So tested and mixed results. First blind in my list closed about 2 inches and stopped. multiple other blinds failed to close at all. The set of 3 blinds in the living room that usually fail worked however.

That rule looks correct.

Again, do you have a Zigbee repeater in each room with a blind?

There are inovelli switches in every room yes, only ikea repeaters on first floor (main one having issues)

I would put them in a group and enable ZigBee group messaging.

Any advice on how to do that? Automation ran this morning with the 5 second delay and results were worse than sending all at once :frowning: It just does not make since to me that I can see the open/close command in the logs and i can control them with my phone at will w/o fail.

IIRC, both the built-in "Groups and Scenes" and "Room Lighting" have ZGM options.

If you use time based automations, then Room Lighting is the way to go.

1 Like

That is puzzling. If it were me, I would delete the rule and make a new rule using only 3 shades and 2 delays. Then run the rule and see if they all respond.

If this test rule runs correctly, add a few more blinds and delays.

Someone more knowledgeable than I may offer a different solution. Perhaps reboot the hub, and if that doesn’t work, power the hub off for about 20 minutes. This will rebuild the mesh, and will take some time for everything to connect.

Thanks for the suggestion. I've got two separate rules (one for opening/one for closing) along with having the original rule that did them all at once. I've increased the delay to 10 seconds to see if that helps. Also going to try changing the order in which they open to spread and maybe do 1 on each floor before going back to first floor. Device has been rebooted a few times just from flipping breakers to install more switches (just moved in so slowly adding a few every few days when i have time). If that fails i'll start making a rule with just a few and slowly adding to it

I would wait 24 hours for the mesh to rebuild.

1 Like

well intrestingly enough i added the 10 second delay and the automation just ran for the night. Every set of blinds closed except for 2 both in the same room. Usually dont have issues with those two, but there is no switch in that specific room (there is one in the attached closet and 3 in the attached bathroom. I'll add a repeater to this room to see if that fixes those and see what happens in the am.

Weirdly enough with 10 second delay it ran this morning and only opened the first 2 listed. Waited about 2 minutes and manually ran the automation and it opened everything second try. Might end up just needing run the rule twice lol. I do plan to reboot and rebuild the network but going to go though that once i finish installing all the switches/repeaters.

I'd highly recommend giving RL a try and enabling Zigbee messaging.

Well the reboot and mesh rebuild didn’t help, trying the groups next

I love my IKEA blinds, but they are a bit lazy.
To solve this I use a variable for each blind. All my rules where I want to change levels of blinds, change the level of the variables.

Here's an example. This blind can move between 100% (open) and 32% (closed)

When a blind misses the first time, it usually catches the next one, after a minute.

It takes some work to setup, but after that it's simple, you just use the variable in rules, instead of the blind itself.

Going to try this, and understand it how did you get the not equals statement in the conditions?

I was able to get the other conditions and can set up a room blinds not equals to set number but couldn't figure out how to set it to a variable again.

edit:
for me 100% is open, 0% is closed (i've set them all on the blinds them self)

Kind of walking through the logic to make sure i understand

Trigger: so basically my trigger is sensing a change in the room blind variable. How is this triggered? I'm assuming you have a automation set up originally that opens/closes the blinds and set the variable = to their position, then this one is basically clean up duty for any that did not change correctly?

conditions:
Basically just setting up a bunch of conditions to use in the actions tab

actions:
Fun part. So if the first If statement basically is basically checking to make sure that all blinds are either open/closed, if one is open and one is closed the If triggers, and tells all blinds to go to the correct position, and repeat this until the condition is meet (all blinds are in the same position) the else if statements are just changing the global variable?

I've created a master close/open rule that looks like the below, i believe this is correct.

Going back through my logic and its broken lol
So my initial statement says on trigger set blinds to Room blinds variable. (at this time its 0 so it will close them, cool. This event triggers and says if the variable is <=100 (this is true) AND variable >=0 (this is false), repeat, variable has not changed so it is still 0, and as such fails the AND statement. feel like i have to get the position of each shade and compare to the variable to make it work but dont see where that is happening in the code you posted.

update:

I've hard coded 1 blind and it worked. But not crazy over it lol feel like it should be much simpler, also sends the close command twice for some reason causing the blind to pause and variable never updates

image

Are you using the same position for all your shades? Then one Hub variable would be enough. Else you'll have to make a variable for each shade.
After that you only use the variable to change position of shade(s).

Then you make a rule (per Hub variable) to set the shades to the level of the variable.

IF Variable <= 100 AND
Variable >= 0 (These are just to make sure that you're not trying to change shades to 150% or negative numbers)
Repeat every 0:01:00 (Stoppable)
IF shade ≠ Variable THEN
setLevel Variable on Shade
ELSE stop Repeating actions
END IF
END REP
This is basically your rule to check every minute and to change the level of the shade to the level of the Hub variable.
ELSE-IF Variable < 0
Set Variable to 0
ELSE-IF Variable >100
Set Variable to 100
END IF
This is just to make sure that the Variable stays between 0 and 100. This is handy if you use rules that for example lower the level of the shade by 10% etc. If you just use set level to x%, you do not really need to add these lines to your rule.

That's it. Now all the hard work has been done. From here on you just use the Variable in your normal rules where you want to set the shade level.

So are you making that rule for each individual shade? I can’t figure out how the rule is identifying individual shade positions. Or are you just checking for all shade positions and if any are different run.

I am making a rule for every shade. And a Hub variable for every shade. I have different shades that go to different positions. Do you have multiple shades on the same position, always? You could then have the rule check al and if any is not equal to the variable, you could run the rule on all shades.

Yes at this time every shade is either open or closed (100/0%)

Maybe in your case you could simplify it by simply adding the command three times in your rule, with some delay.

Set level on Shade_A, Shade_B, Shade_C to 100
Set level on Shade_A, Shade_B, Shade_C to 100 delay 00:00:15
Set level on Shade_A, Shade_B, Shade_C to 100 delay 00:00:30

When my shades miss the first command, they usually catch the second. With a third added, it should work quite well, I think.