That presupposes that what you are trying to accomplish actually are just “some simple rules.” Often things that naive users want to be simple are in fact no simple at all.
In order to really answer this we need more information.
- What version of OH?
- Which rules language and text rules or UI rules?
- Why several rules? Can’t you handle this with one rule that handles lots of Items?
For the most part what you are asking for is a special case of [Deprecated] Design Pattern: Motion Sensor Timer only instead of keeping a light on as long as there is motion you need to switch the comparison around and wait for there to be a given state for longer than 30 minutes.
The overall approach will be to create a timer for 30 minutes when the Item goes above a threshold.
If the Item goes below the threshold cancel the timer.
If a timer already exists exit the rule.
After the 30 minutes above the given threshold the timer will go off and do the action.
You will need to figure out how to define the time (30 minutes) and the threshold. You can use Item metadata to store that (if you are using any language other than Rules DSL), separate Items, or hard code it into the Rule. The advantage of using separate Items is you can then adjust them from your UI.
Again, if using the non Rules DSL languages you can put some/most of this into a library or implement it as a separate reusable rule. See https://github.com/rkoshak/openhab-rules-tools/tree/main/debounce for an example that implements denouncing a state from a raw Item to a proxy Item (i.e. the raw Item must be in a stable state for a defined amount of time before the state is passed to the proxy Item).