Exemple #1
0
    def rule_decorator(object):
        if isclass(object):
            clazz = object

            def init(self, *args, **kwargs):
                scope.SimpleRule.__init__(self)
                self.name = name or clazz.__name__
                #set_uid_prefix(self)
                self.log = logging.getLogger(LOG_PREFIX + "." + clazz.__name__)
                clazz.__init__(self, *args, **kwargs)
                if self.description is None and clazz.__doc__:
                    self.description = clazz.__doc__
                if hasattr(self, "getEventTriggers"):
                    self.triggers = log_traceback(self.getEventTriggers)()
                elif hasattr(self, "getEventTrigger"):
                    # For OH1 compatibility
                    self.triggers = log_traceback(self.getEventTrigger)()

            subclass = type(clazz.__name__, (clazz, scope.SimpleRule),
                            dict(__init__=init))
            subclass.execute = log_traceback(clazz.execute)
            return addRule(subclass())
        else:
            function = object
            newRule = _FunctionRule(function, function.triggers, name=name)
            get_automation_manager().addRule(newRule)
            function.triggers = None
            return function
Exemple #2
0
    def decorator(fn):
        nargs = len(inspect.getargspec(fn).args)

        def callback(module, inputs):
            fn_args = []
            event = inputs.get('event')
            if event and nargs == 1:
                fn_args.append(event)
            result_value = fn(*fn_args)
            if result_item_name:
                event_bus.postUpdate(result_item_name, unicode(result_value))

        rule = _FunctionRule(callback,
                             [ItemEventTrigger(item_name, event_types)],
                             extended=True,
                             name=trigger_name)
        get_automation_manager().addRule(rule)
        return fn
Exemple #3
0
    def decorator(fn):
        nargs = len(inspect.getargspec(fn).args)

        def callback(module, inputs):
            fn_args = []
            event = inputs.get('event')
            if event and nargs == 1:
                fn_args.append(event)
            result_value = fn(*fn_args)
            if result_item_name:
                event_bus.postUpdate(result_item_name, unicode(result_value))

        group_triggers = []
        group = scope.itemRegistry.getItem(group_name)
        for i in group.getAllMembers():
            group_triggers.append(ItemEventTrigger(i.name, event_types))
        rule = _FunctionRule(callback,
                             group_triggers,
                             extended=True,
                             name=trigger_name)
        get_automation_manager().addRule(rule)
        return fn
Exemple #4
0
 def decorator(fn):
     rule = _FunctionRule(fn, [CronTrigger(cron_expression)],
                          name=trigger_name)
     get_automation_manager().addRule(rule)
     return fn
Exemple #5
0
def addRule(rule):
    get_automation_manager().addRule(rule)