TL;DR summary: DFI flag is worthless, only the Litter Robot mobile app can reset it.
Details
Ok, I think I have it figured out, and I now understand what @forlornlawngnome and @Bear were talking about, and why I was seeing different results. Thor and Loki finally pooped enough for me to do my experiments. The alternative to extended waiting was to get 6 cats (like @Bear has), which I was hesitant to do (our city requires an animal breeder license if you have more than 5 animals, and we've already got 2 dogs in addition to the 2 cats).
First, the good news. It's not a timing issue, and it's not a Litter Robot firmware issue (well, it's a feature that appears the same on all firmware versions that the two of you have reported, matching what I see). Now, the less than good news.
The issue is with the Drawer Full Indicator flag ("isDFITriggered"). The only way I can find to reset that flag to 0 (once it sets) is to hit the "Reset Drawer Gauge" button in the Litter Robot mobile App.
When the DFI flag turns 1 (caused by tripping the Drawer Full sensor), cyclesAfterDrawerFull start incrementing, the blue "ready" light on the front panel starts flashing, the lastStatusCode (while idle) changes from RDY to DF1 to DF2 to DFS, and the Litter Robot stops cycling while in DFS status (as @Bear correctly reported). Cleaning the Litter Box and doing a "reset" (whether from the front panel or from the Litter Robot driver or from the exposed resetDrawerGauge custom command) doesn't reset the DFI flag. And, the DFI flag isn't real time - cleaning the litter drawer, but not doing a reset in the Litter Robot mobile app, doesn't change the DFI flag. It's set until the Reset Drawer Gauge button in the mobile app is pressed.
The "Reset Drawer Gauge" button in the Litter Robot driver, like the resetDrawerGauge() custom command exposed by the Litter Robot driver, behaves exactly the same as the "reset" button on the front panel of the Litter Robot: they:
-
reset the drawer gauge in the Litter Robot mobile app;
-
reset cycle count and cycles after drawer full;
-
change the idle status from DFS (or DF1 or DF2) to RDY;
-
stop the blue "ready" light on the front panel from flashing.
It DOES NOT reset the DFI flag ("isDFITriggered") to 0. However, because the idle status is no longer DFS (Drawer Full Stopped), the Litter Robot will now cycle. So, it seems to me, as @Bear reported, the DFI flag is useless and is ignored. I suspect that it works the way it does (still allowing the Litter Robot to cycle as long as the status is not DFS) is because some people don't use the Litter Robot mobile app (certainly not the people who don't have a Litter Robot Connect model), so the exposed variables seem to be exactly what they would be in the standard (non-Connect) Litter Robot, and it wouldn't be good if you had to hit the Reset Drawer Gauge button in the Litter Robot mobile app if you didn't use the mobile app.
This is why @Bear kept insisting that the right thing to do was to monitor the DF1, DF2, DFS status. It's why I wasn't seeing this behavior because I was emptying the drawer as soon as the drawer threshold became >= 85 (as @jared.zimmerman did in his original IFTTT rules). It's why @forlornlawngnome was seeing cycle counting since full (cyclesAfterDrawerFull), because the DFI flag was still set.
So, on reflection, @Bear seems to have the right approach, and I will change my rules and repost.
The problem with that is that we often go away for a day or two, and, if the Litter Robot stops cycling (you only get DF1, DF2, then DFS to stop cycling), Loki, one of my cats, refuses to poop in the Litter Box if there is already poop in it. She wants clean litter, and will poop on the floor rather than go into the Litter Robot if it has poop that hasn't been moved into the drawer.
For the time being, after cleaning, looks like the only way to clear the DFI flag is to go into the Litter Robot mobile app and hit the Reset Drawer Gauge (even if the "reset" button on the front of the Litter Robot has been pressed, or even if the Litter Robot driver has done a "resetDrawerGauge", whether by pressing the button in the driver or by having a rule do a "resetDrawerGauge()" command.
Now, the driver has a mystery command "R", with the comment:
R - valid, not sure what it does, though, reset or refresh maybe? weirdly a new parameter showed up called "cyclesUntilFull" after posting this, but still not sure how it is utilized
I will play around with this command, see if it is able to reset DFI. The other way would be to put a sniffer on the ethernet traffic from the mobile app to the Litter Robot server, and on the Litter Robot server to the Litter Robot, to watch the traffic that occurs when the Reset Drawer Gauge button is pressed in the mobile app.
There's got to be a command that can reset the DFI flag because the Litter Robot mobile app is able to do it. I will investigate further, but I wanted you to know the results.