I don’t have any plans for it at the moment, but if there’s enough interest I’m open to considering it. For slight overages, it might be reasonable, but at some of the higher volumes with people 5x or more over usage the commercial pricing that SmartThings enforces isn’t particularly economical.
In those scenarios, the recommended approach is usually to refine common anti-patterns like looping / large command fan-out (especially refresh() commands) and similar.
No, the usage allowance only applies to SmartThings API traffic generated from SharpTools Rules.
It looks like your account is on the free tier which is probably why you are feeling the impacts. With SmartThings making all API usage paid, the free tier is impacted most as the limits are 10x less than the premium tier. I considered killing the free tier completely, but figured tighter usage limits were better than none and the usage limits only apply to SmartThings so it didn’t make sense to impact other integrations we support (Homey, Hubitat, Home Assistant).
The biggest optimization for this kind of rule is conditionally sending commands when they are actually needed.
For example, with a ‘sensor updates and >130’ trigger, anytime the value updates and it’s below that threshold it will trigger the ‘plug off()’ command. So it triggers and runs the command when the temperature hits 131, 132, 133, and so-on.
Using a changes to trigger by checking the ‘On Transition Only’ box ensures that the command is only run once the first time the value goes over the threshold. eg. only when it first hits 131
If there’s potential for the device to already be in the target state, you could further refine things by conditionally sending the command. eg. IF switch != ‘off’ THEN off()
Another factor is the rule appears to fan out to ~33 devices where each adds to the count. Instead of sending the commands to 30+ devices, you could execute a single Scene instead which handles sending the commands for you. SmartThings renamed these to Manual Routines and after creating it, you’ll likely need to reauthorize your SmartThings account to SharpTools to sync over the new Scene details.
What kind of trigger restriction are you looking for? The common approach is to use an IF Condition as the first block in your rule if there’s some additional precondition for running the actions in the rule flow.
Yes, conditionally sending the command would reduce API calls.
Historically, referencing the device state in an IF Condition would make an API call to fetch it from SmartThings, but it does NOT do that anymore. That’s one of the optimizations I alluded to in the original post. The system now sets up event subscriptions for devices that need their state referenced within a rule (only for SmartThings) so it can read that state directly from our database saving an API call.
For platforms other than SmartThings, I would normally have suggested the pattern you were previously using with just sending the command even if the device was already off as it doesn’t hurt anything. But now that SmartThings is charging for that command, making it conditional is a reasonable approach.
An event coming into SharpTools doesn’t count. Nor does interaction with SharpTools features like Variables or interactions with other platforms like Hubitat, Home Assistant, or Homey.
The primary driver of SmartThings API calls from SharpTools rules are device commands.
I would recommend checking the SmartThings Usage feature noted in the original post and reviewing the top 5 rules that are contributing to your usage. Sometimes the pattern is pretty clear from just looking at the rule. Other times you might need to review the rule logs where you’ll discover a pattern you didn’t expect. For example, and I’m not saying this applies to your specific rules, using a updates instead of changes isn’t always immediately intuitive that it can cause a rule to retrigger over and over as the value changes slightly and seeing all the executions in the rule logs can be enlightening.



