Examples for Groovy scripts

You’re right. I realized just today that I didn’t share any details on that one. It’s a small helper class to hide the boilerplate details of the trigger creation. I included it using the mechanism already mentioned & linked above.

import org.openhab.core.automation.Trigger
import org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleRule
import org.openhab.core.automation.util.TriggerBuilder
import org.openhab.core.config.core.Configuration
import org.slf4j.LoggerFactory

class RuleHelper {

    static LOGGER = LoggerFactory.getLogger("org.mortalsilence.net.openhab.rules.rulehelper")

    static void cronTrigger(SimpleRule rule, String id, String cronExpression) {
        rule.setTriggers([createCronTrigger(id, cronExpression)])
    }

    static Trigger createCronTrigger(String triggerId, String cronExpression) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("timer.GenericCronTrigger")
                .withConfiguration(new Configuration(["cronExpression": cronExpression]))
                .build()
    }


    static void itemChangedTrigger(SimpleRule rule, String id, String itemName) {
        rule.setTriggers([createItemStateChangeTrigger(id, itemName)])
    }

    static Trigger createItemStateChangeTrigger(String id, String itemName) {
        TriggerBuilder.create()
                .withLabel(id)
                .withId(id)
                .withTypeUID("core.ItemStateChangeTrigger")
                .withConfiguration(new Configuration([itemName: itemName]))
                .build()
    }

    static void itemAnyCommandTrigger(SimpleRule rule, String triggerId, String itemName) {
        rule.setTriggers([createAnyCommandTrigger(triggerId, itemName)])
    }

    static Trigger createAnyCommandTrigger(String triggerId, String itemName) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("core.ItemCommandTrigger")
                .withConfiguration(new Configuration([itemName: itemName]))
                .build()
    }

    static void channelTrigger(SimpleRule rule, String id, String channel, String value) {
        rule.setTriggers([
                TriggerBuilder.create()
                        .withLabel(id)
                        .withId(id)
                        .withTypeUID("core.ChannelEventTrigger")
                        .withConfiguration(new Configuration([channelUID: channel, "event": value]))
                        .build()
        ])
    }

    static void itemCommandTrigger(SimpleRule rule, String id, String itemName, String command) {
        rule.setTriggers([
                TriggerBuilder.create()
                        .withLabel(id)
                        .withId(id)
                        .withTypeUID("core.ItemCommandTrigger")
                        .withConfiguration(new Configuration([itemName: itemName, "command": command]))
                        .build()
        ])
    }

    static void itemUpdatedToTrigger(SimpleRule rule, String id, String itemName, String state) {
        rule.setTriggers([
                TriggerBuilder.create()
                        .withLabel(id)
                        .withId(id)
                        .withTypeUID("core.ItemStateUpdateTrigger")
                        .withConfiguration(new Configuration([itemName: itemName, "state": state]))
                        .build()
        ])
    }

    static void itemChangedToTrigger(SimpleRule rule, String triggerId, String itemName, String newState) {
        rule.setTriggers([createItemChangedToTrigger(triggerId, itemName, newState)])
    }

    static Trigger createItemChangedToTrigger(String triggerId, String itemName, String newState) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("core.ItemStateChangeTrigger")
                .withConfiguration(new Configuration([itemName: itemName, state: newState]))
                .build()
    }

    static void itemUpdatedTrigger(SimpleRule rule, String triggerId, String itemName) {
        rule.setTriggers([createItemUpdatedTrigger(triggerId, itemName)])
    }

    static Trigger createItemUpdatedTrigger(String triggerId, String itemName) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("core.ItemStateUpdateTrigger")
                .withConfiguration(new Configuration([itemName: itemName]))
                .build()
    }

    static Trigger createItemChangedFromToTrigger(String triggerId, String itemName, String previousState, String newState) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("core.ItemStateChangeTrigger")
                .withConfiguration(new Configuration([itemName: itemName, previousState: previousState, state: newState]))
                .build()
    }

    static void commandTrigger(SimpleRule rule, String triggerId, String itemName, String command) {
        rule.setTriggers([createCommandTrigger(triggerId, itemName, command)])
    }

    static Trigger createCommandTrigger(String triggerId, String itemName, String command) {
        TriggerBuilder.create()
                .withLabel(triggerId)
                .withId(triggerId)
                .withTypeUID("core.ItemCommandTrigger")
                .withConfiguration(new Configuration([itemName: itemName, "command": command]))
                .build()
    }

}

1 Like