At least you know it
. It took multiple readings of this rule to understand what it's supposed to do, and I'm still not sure I understand it. (Edit: I wrote this whole reply, mocked up a rule, and am still realizing this rule doesn't quite do what I thought it did)
Among the low-hanging fruit for simplifying this rule... I don't see what the ELSE IF section at the end does for you. You can probably remove it.
The rule actions will start at 8:30 or 30 minutes after you arrive, but only if the required condition of battery below 85 miles is met. If the car is charging at that time, you have the rule wait for the car to get to 100 miles and then do nothing. As suggested above, why not just have an END IF after the previous section, then have the set Boolean true outside the if/then?
That would result in the same result of doing nothing when the car is already charging when the rule is triggered.
Likewise, once the car starts charging, you turn off all the lights and switches but then wait for it to get to 100 miles of range and then do nothing but set the private boolean back to true. Why not set the private boolean true without the wait for expression?
It seems impossible for this WAIT to matter, since the rule only progresses to that point after the car is charging, and the car can't arrive (trigger) while it is already charging. This whole section is wrapped inside of an "IF car is disconnected", so if it were to re-trigger at 8 PM while charging, all of the actions would be skipped anyway on that instance of the rule execution.
Also, do you want this to run at 8 PM (or 8:30 really) when the car isn't home? It seems like there should be a presence check somewhere to make sure the car is at home.
There also must be a simpler way to handle the middle portion of the rule besides embedding a wait-for inside of a time-repeating loop.
I don't think this is exactly what it's doing. The Boolean is functional, but isn't preventing it from running 'while charging up'.
The rule only triggers at 8 PM and on arrival, whichever comes first. The Boolean is preventing it from running twice when you arrive between 7:30 and 8:00. If you only triggered 30 minutes after arrival, you wouldn't need the Boolean at all. I'm not sure what benefit you're getting from having both triggers.
Finally, have you had issues where the car begins to charge but never gets above 100 miles of range? Or do you find that you arrive home during the day below 85 miles and want to know when the car is above 100 miles so you can head back out on another drive? (Edit - on re-re-re-reading the rule I see it doesn't do that anyway, but maybe that's what you're trying to achieve?)
If the latter, then you might be able to set up the "car was below 85 but is now above 100" notification in a completely separate rule from the "make sure the car is plugged in 30 minutes after arrival" rule. (Edit: on re-re-re-re-reading the rule, I realize you're not getting any plug in reminder at all if the car is above 85 miles of range)
I described it earlier in the thread, but here is the rule I use to notify me if my car isn't plugged in, but only after 8pm, as we almost never charge during the day.
Here is a relatively simple rule to handle "the car is below 85 miles... make sure it is plugged in and let me know when it has at least 100 miles":
The initial 30 minute delay is handled in the trigger. If it is already plugged in the first WHILE loop will not run, but you'll still get the notifications for when the car hits 100 miles of range.