openhab-scripting 4.32.6 → 4.32.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/openhab/core/entity_lookup.rb +0 -4
- data/lib/openhab/core/openhab_setup.rb +1 -2
- data/lib/openhab/core/thread_local.rb +12 -2
- data/lib/openhab/dsl/actions.rb +2 -0
- data/lib/openhab/dsl/between.rb +2 -0
- data/lib/openhab/dsl/dsl.rb +2 -2
- data/lib/openhab/dsl/group.rb +15 -11
- data/lib/openhab/dsl/items/ensure.rb +71 -71
- data/lib/openhab/dsl/items/generic_item.rb +1 -1
- data/lib/openhab/dsl/items/item_registry.rb +11 -6
- data/lib/openhab/dsl/items/items.rb +2 -2
- data/lib/openhab/dsl/items/metadata.rb +1 -2
- data/lib/openhab/dsl/items/timed_command.rb +7 -6
- data/lib/openhab/dsl/monkey_patch/ruby/number.rb +0 -2
- data/lib/openhab/dsl/openhab.rb +2 -0
- data/lib/openhab/dsl/persistence.rb +2 -0
- data/lib/openhab/dsl/rules/automation_rule.rb +4 -5
- data/lib/openhab/dsl/rules/rule.rb +104 -95
- data/lib/openhab/dsl/rules/rule_config.rb +1 -2
- data/lib/openhab/dsl/rules/rule_triggers.rb +1 -3
- data/lib/openhab/dsl/rules/terse.rb +1 -1
- data/lib/openhab/dsl/rules/triggers/changed.rb +6 -5
- data/lib/openhab/dsl/rules/triggers/channel.rb +2 -0
- data/lib/openhab/dsl/rules/triggers/command.rb +6 -5
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/conditions/proc.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/cron/cron.rb +4 -2
- data/lib/openhab/dsl/rules/triggers/cron/cron_handler.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/generic.rb +3 -2
- data/lib/openhab/dsl/rules/triggers/trigger.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/updated.rb +9 -8
- data/lib/openhab/dsl/rules/triggers/watch/watch.rb +8 -3
- data/lib/openhab/dsl/rules/triggers/watch/watch_handler.rb +3 -3
- data/lib/openhab/dsl/states.rb +34 -20
- data/lib/openhab/dsl/things.rb +2 -0
- data/lib/openhab/dsl/time/month_day.rb +2 -2
- data/lib/openhab/dsl/timers/manager.rb +4 -3
- data/lib/openhab/dsl/timers/reentrant_timer.rb +22 -27
- data/lib/openhab/dsl/timers/timer.rb +2 -3
- data/lib/openhab/dsl/timers.rb +4 -2
- data/lib/openhab/dsl/types/decimal_type.rb +3 -2
- data/lib/openhab/dsl/types/point_type.rb +4 -3
- data/lib/openhab/dsl/types/quantity_type.rb +0 -4
- data/lib/openhab/dsl/types/types.rb +24 -24
- data/lib/openhab/dsl/units.rb +2 -0
- data/lib/openhab/log/logger.rb +10 -24
- data/lib/openhab/version.rb +1 -1
- data/lib/openhab.rb +2 -8
- metadata +2 -2
@@ -16,115 +16,124 @@ module OpenHAB
|
|
16
16
|
# Creates and manages OpenHAB Rules
|
17
17
|
#
|
18
18
|
module Rules
|
19
|
-
|
20
|
-
|
19
|
+
#
|
20
|
+
# The main rule DSL method
|
21
|
+
#
|
22
|
+
module Rule
|
23
|
+
include OpenHAB::Log
|
21
24
|
|
22
|
-
|
25
|
+
@script_rules = []
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
27
|
+
@automation_manager = OpenHAB::Core.automation_manager
|
28
|
+
@registry = OpenHAB::Core.rule_registry
|
29
|
+
class << self
|
30
|
+
attr_reader :script_rules, :automation_manager, :registry
|
31
|
+
end
|
29
32
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
module_function
|
34
|
+
|
35
|
+
#
|
36
|
+
# Create a new rule
|
37
|
+
#
|
38
|
+
# @param [String] rule_name <description>
|
39
|
+
# @yield [] Block executed in context of a RuleConfig
|
40
|
+
#
|
41
|
+
#
|
42
|
+
# rubocop:disable Metrics/MethodLength
|
43
|
+
def rule(rule_name, &block)
|
44
|
+
OpenHAB::Core::ThreadLocal.thread_local(RULE_NAME: rule_name) do
|
45
|
+
@rule_name = rule_name
|
46
|
+
config = RuleConfig.new(rule_name, block.binding)
|
47
|
+
config.instance_exec(config, &block)
|
48
|
+
config.guard = Guard::Guard.new(run_context: config.caller, only_if: config.only_if,
|
49
|
+
not_if: config.not_if)
|
50
|
+
logger.trace { config.inspect }
|
51
|
+
process_rule_config(config)
|
52
|
+
end
|
53
|
+
rescue StandardError => e
|
54
|
+
logger.log_exception(e, @rule_name)
|
45
55
|
end
|
46
|
-
|
47
|
-
logger.log_exception(e, @rule_name)
|
48
|
-
end
|
56
|
+
# rubocop:enable Metrics/MethodLength
|
49
57
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
58
|
+
#
|
59
|
+
# Cleanup rules in this script file
|
60
|
+
#
|
61
|
+
def self.cleanup_rules
|
62
|
+
@script_rules.each(&:cleanup)
|
63
|
+
end
|
64
|
+
Core::ScriptHandling.script_unloaded { cleanup_rules }
|
57
65
|
|
58
|
-
|
66
|
+
private
|
59
67
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
+
#
|
69
|
+
# Process a rule based on the supplied configuration
|
70
|
+
#
|
71
|
+
# @param [RuleConfig] config for rule
|
72
|
+
#
|
73
|
+
#
|
74
|
+
def process_rule_config(config)
|
75
|
+
return unless create_rule?(config)
|
68
76
|
|
69
|
-
|
70
|
-
|
71
|
-
|
77
|
+
rule = AutomationRule.new(config: config)
|
78
|
+
Rule.script_rules << rule
|
79
|
+
added_rule = add_rule(rule)
|
72
80
|
|
73
|
-
|
74
|
-
|
75
|
-
|
81
|
+
rule.execute(nil, { 'event' => Struct.new(:attachment).new(config.start_attachment) }) if config.on_start?
|
82
|
+
added_rule
|
83
|
+
end
|
76
84
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
85
|
+
#
|
86
|
+
# Should a rule be created based on rule configuration
|
87
|
+
#
|
88
|
+
# @param [RuleConfig] config to check
|
89
|
+
#
|
90
|
+
# @return [Boolean] true if it should be created, false otherwise
|
91
|
+
#
|
92
|
+
def create_rule?(config)
|
93
|
+
if !triggers?(config)
|
94
|
+
logger.warn "Rule '#{config.name}' has no triggers, not creating rule"
|
95
|
+
elsif !execution_blocks?(config)
|
96
|
+
logger.warn "Rule '#{config.name}' has no execution blocks, not creating rule"
|
97
|
+
elsif !config.enabled
|
98
|
+
logger.trace "Rule '#{config.name}' marked as disabled, not creating rule."
|
99
|
+
else
|
100
|
+
return true
|
101
|
+
end
|
102
|
+
false
|
93
103
|
end
|
94
|
-
false
|
95
|
-
end
|
96
104
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
#
|
106
|
+
# Check if the rule has any triggers
|
107
|
+
#
|
108
|
+
# @param [RuleConfig] config to check for triggers
|
109
|
+
#
|
110
|
+
# @return [Boolean] True if rule has triggers, false otherwise
|
111
|
+
#
|
112
|
+
def triggers?(config)
|
113
|
+
config.on_start? || config.triggers.length.positive?
|
114
|
+
end
|
107
115
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
116
|
+
#
|
117
|
+
# Check if the rule has any execution blocks
|
118
|
+
#
|
119
|
+
# @param [RuleConfig] config to check for triggers
|
120
|
+
#
|
121
|
+
# @return [Boolean] True if rule has execution blocks, false otherwise
|
122
|
+
#
|
123
|
+
def execution_blocks?(config)
|
124
|
+
(config.run || []).length.positive?
|
125
|
+
end
|
118
126
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
127
|
+
#
|
128
|
+
# Add a rule to the automation managed
|
129
|
+
#
|
130
|
+
# @param [Java::OrgOpenhabCoreAutomationModuleScriptRulesupportSharedSimple::SimpleRule] rule to add
|
131
|
+
#
|
132
|
+
#
|
133
|
+
def add_rule(rule)
|
134
|
+
logger.trace("Adding rule: #{rule.inspect}")
|
135
|
+
Rule.automation_manager.addRule(rule)
|
136
|
+
end
|
128
137
|
end
|
129
138
|
end
|
130
139
|
end
|
@@ -26,7 +26,6 @@ module OpenHAB
|
|
26
26
|
prepend OpenHAB::DSL::Rules::Triggers
|
27
27
|
include OpenHAB::DSL::Rules::Guard
|
28
28
|
include OpenHAB::DSL::Rules::Property
|
29
|
-
extend OpenHAB::DSL
|
30
29
|
extend Forwardable
|
31
30
|
|
32
31
|
# Provide backwards compatibility for these fields
|
@@ -86,7 +85,7 @@ module OpenHAB
|
|
86
85
|
# Start this rule on system startup
|
87
86
|
#
|
88
87
|
# @param [Boolean] run_on_start Run this rule on start, defaults to True
|
89
|
-
#
|
88
|
+
# @param [Object] attach object to be attached to the trigger
|
90
89
|
#
|
91
90
|
# rubocop: disable Style/OptionalBooleanParameter
|
92
91
|
# Disabled cop due to use in a DSL
|
@@ -33,9 +33,6 @@ module OpenHAB
|
|
33
33
|
#
|
34
34
|
# Create a new RuleTrigger
|
35
35
|
#
|
36
|
-
# @param [Object] caller_binding The object initializing this configuration.
|
37
|
-
# Used to execute within the object's context
|
38
|
-
#
|
39
36
|
def initialize
|
40
37
|
@triggers = []
|
41
38
|
@trigger_conditions = Hash.new(OpenHAB::DSL::Rules::Triggers::Conditions::Proc::ANY)
|
@@ -47,6 +44,7 @@ module OpenHAB
|
|
47
44
|
#
|
48
45
|
# @param [String] type of trigger to create
|
49
46
|
# @param [Map] config map describing trigger configuration
|
47
|
+
# @param [Object] attach object to be attached to the trigger
|
50
48
|
#
|
51
49
|
# @return [Trigger] OpenHAB trigger
|
52
50
|
#
|
@@ -4,7 +4,7 @@ module OpenHAB
|
|
4
4
|
module DSL
|
5
5
|
module Rules
|
6
6
|
# Module containing terse rule stubs
|
7
|
-
module
|
7
|
+
module TerseRule
|
8
8
|
%i[changed channel cron every updated received_command].each do |trigger|
|
9
9
|
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
10
10
|
def #{trigger}(*args, name: nil, **kwargs, &block) # def changed(*args, name: nil, **kwargs, &block)
|
@@ -22,6 +22,7 @@ module OpenHAB
|
|
22
22
|
# @param [to] to state for object to change for
|
23
23
|
# @param [from] from <description>
|
24
24
|
# @param [OpenHAB::Core::Duration] for Duration to delay trigger until to state is met
|
25
|
+
# @param [Object] attach object to be attached to the trigger
|
25
26
|
#
|
26
27
|
# @return [Trigger] OpenHAB trigger
|
27
28
|
#
|
@@ -69,7 +70,7 @@ module OpenHAB
|
|
69
70
|
# @param [Item State] from state to restrict trigger to
|
70
71
|
# @param [Item State] to state to restrict trigger to
|
71
72
|
# @param [OpenHAB::Core::Duration, nil] duration ruration to delay trigger until to state is met
|
72
|
-
# @param attach
|
73
|
+
# @param [Object] attach object to be attached to the trigger
|
73
74
|
#
|
74
75
|
# @return [Trigger] OpenHAB triggers
|
75
76
|
#
|
@@ -103,7 +104,7 @@ module OpenHAB
|
|
103
104
|
# @param [OpenHAB::Core::Duration] duration to delay trigger for until condition is met
|
104
105
|
# @param [Item State] to OpenHAB Item State item or group needs to change to
|
105
106
|
# @param [Item State] from OpenHAB Item State item or group needs to be coming from
|
106
|
-
# @param [Object] attach to trigger
|
107
|
+
# @param [Object] attach object to be attached to the trigger
|
107
108
|
#
|
108
109
|
# @return [Trigger] OpenHAB trigger
|
109
110
|
#
|
@@ -120,7 +121,7 @@ module OpenHAB
|
|
120
121
|
# @param [Object] item to create changed trigger on
|
121
122
|
# @param [Object] from state to restrict trigger to
|
122
123
|
# @param [Object] to state restrict trigger to
|
123
|
-
# @param [Object] attach to trigger
|
124
|
+
# @param [Object] attach object to be attached to the trigger
|
124
125
|
# @return [Trigger] OpenHAB trigger
|
125
126
|
#
|
126
127
|
def range_trigger(item:, from:, to:, attach:)
|
@@ -133,7 +134,7 @@ module OpenHAB
|
|
133
134
|
# @param [Object] item to create changed trigger on
|
134
135
|
# @param [Object] from state to restrict trigger to
|
135
136
|
# @param [Object] to state restrict trigger to
|
136
|
-
# @param [Object] attach to trigger
|
137
|
+
# @param [Object] attach object to be attached to the trigger
|
137
138
|
# @return [Trigger] OpenHAB trigger
|
138
139
|
#
|
139
140
|
def proc_trigger(item:, from:, to:, attach:)
|
@@ -152,7 +153,7 @@ module OpenHAB
|
|
152
153
|
# @param [Object] item to create changed trigger on
|
153
154
|
# @param [Object] from state to restrict trigger to
|
154
155
|
# @param [Object] to state restrict trigger to
|
155
|
-
#
|
156
|
+
# @param [Object] attach object to be attached to the trigger
|
156
157
|
#
|
157
158
|
def changed_trigger(item:, from:, to:, attach: nil, conditions: nil)
|
158
159
|
type, config = case item
|
@@ -22,6 +22,7 @@ module OpenHAB
|
|
22
22
|
# @param [String, Thing, ThingUID, Array<String, Thing, ThingUID>] thing
|
23
23
|
# thing(s) to create trigger for if not specified with the channel
|
24
24
|
# @param [String, Array<String>] triggered specific triggering condition(s) to match for trigger
|
25
|
+
# @param [Object] attach object to be attached to the trigger
|
25
26
|
#
|
26
27
|
def channel(*channels, thing: nil, triggered: nil, attach: nil)
|
27
28
|
channel_trigger = Channel.new(rule_triggers: @rule_triggers)
|
@@ -68,6 +69,7 @@ module OpenHAB
|
|
68
69
|
#
|
69
70
|
# @param [String] channel to look for triggers
|
70
71
|
# @param [String] trigger specific channel trigger to match
|
72
|
+
# @param [Object] attach object to be attached to the trigger
|
71
73
|
#
|
72
74
|
#
|
73
75
|
def trigger(channel:, trigger:, attach:)
|
@@ -20,6 +20,7 @@ module OpenHAB
|
|
20
20
|
# @param [Array] items Array of items to create trigger for
|
21
21
|
# @param [Array] command commands to match for trigger
|
22
22
|
# @param [Array] commands commands to match for trigger
|
23
|
+
# @param [Object] attach object to be attached to the trigger
|
23
24
|
#
|
24
25
|
#
|
25
26
|
def received_command(*items, command: nil, commands: nil, attach: nil)
|
@@ -63,7 +64,7 @@ module OpenHAB
|
|
63
64
|
#
|
64
65
|
# @param [Object] item item to create trigger for
|
65
66
|
# @param [Object] command to check against
|
66
|
-
# @param [Object] attach
|
67
|
+
# @param [Object] attach object to be attached to the trigger
|
67
68
|
#
|
68
69
|
# @return [Trigger] OpenHAB triggers
|
69
70
|
#
|
@@ -79,7 +80,7 @@ module OpenHAB
|
|
79
80
|
# Creates a trigger with a range condition on the 'command' field
|
80
81
|
# @param [Object] item to create changed trigger on
|
81
82
|
# @param [Object] command to restrict trigger to
|
82
|
-
# @param [Object] attach to trigger
|
83
|
+
# @param [Object] attach object to be attached to the trigger
|
83
84
|
# @return [Trigger] OpenHAB trigger
|
84
85
|
#
|
85
86
|
def range_trigger(item:, command:, attach:)
|
@@ -91,7 +92,7 @@ module OpenHAB
|
|
91
92
|
# Creates a trigger with a proc condition on the 'command' field
|
92
93
|
# @param [Object] item to create changed trigger on
|
93
94
|
# @param [Object] command to restrict trigger to
|
94
|
-
# @param [Object] attach to trigger
|
95
|
+
# @param [Object] attach object to be attached to the trigger
|
95
96
|
# @return [Trigger] OpenHAB trigger
|
96
97
|
#
|
97
98
|
def proc_trigger(item:, command:, attach:)
|
@@ -102,9 +103,9 @@ module OpenHAB
|
|
102
103
|
#
|
103
104
|
# Create a received trigger based on item type
|
104
105
|
#
|
105
|
-
# @param [Array] commands to create trigger for
|
106
106
|
# @param [Object] item to create trigger for
|
107
|
-
#
|
107
|
+
# @param [String] command to create trigger for
|
108
|
+
# @param [Object] attach object to be attached to the trigger
|
108
109
|
#
|
109
110
|
def command_trigger(item:, command:, attach: nil, conditions: nil)
|
110
111
|
type, config = if item.is_a? OpenHAB::DSL::Items::GroupItem::GroupMembers
|
@@ -28,7 +28,7 @@ module OpenHAB
|
|
28
28
|
# Create a new duration condition
|
29
29
|
# @param [Object] to optional condition on to state
|
30
30
|
# @param [Object] from optional condition on from state
|
31
|
-
# @param [Duration]
|
31
|
+
# @param [Duration] duration to state must stay at specific value before triggering
|
32
32
|
#
|
33
33
|
def initialize(to:, from:, duration:)
|
34
34
|
to = Conditions::Proc.from_value(to)
|
@@ -118,7 +118,7 @@ module OpenHAB
|
|
118
118
|
# Creates a timer for trigger delays
|
119
119
|
#
|
120
120
|
# @param [Hash] inputs rule trigger inputs
|
121
|
-
# @param [Hash]
|
121
|
+
# @param [Hash] _mod rule trigger mods
|
122
122
|
#
|
123
123
|
#
|
124
124
|
def create_trigger_delay_timer(inputs, _mod)
|
@@ -45,8 +45,8 @@ module OpenHAB
|
|
45
45
|
end
|
46
46
|
|
47
47
|
#
|
48
|
-
# Create
|
49
|
-
# @param [
|
48
|
+
# Create an equality proc for the supplied range object
|
49
|
+
# @param [State] value to build proc for
|
50
50
|
#
|
51
51
|
def self.equality_proc(value)
|
52
52
|
logger.trace("Creating equality proc for #{value}")
|
@@ -15,6 +15,7 @@ module OpenHAB
|
|
15
15
|
#
|
16
16
|
# @param [Object] value Symbol or Duration to execute this rule
|
17
17
|
# @param [Object] at TimeOfDay or String representing TimeOfDay in which to execute rule
|
18
|
+
# @param [Object] attach object to be attached to the trigger
|
18
19
|
#
|
19
20
|
#
|
20
21
|
def every(value, at: nil, attach: nil)
|
@@ -30,6 +31,7 @@ module OpenHAB
|
|
30
31
|
# Create a OpenHAB Cron trigger
|
31
32
|
#
|
32
33
|
# @param [String] expression OpenHAB style cron expression
|
34
|
+
# @param [Object] attach object to be attached to the trigger
|
33
35
|
#
|
34
36
|
def cron(expression, attach: nil)
|
35
37
|
cron = Cron.new(rule_triggers: @rule_triggers)
|
@@ -171,8 +173,8 @@ module OpenHAB
|
|
171
173
|
#
|
172
174
|
# Create a cron trigger based on item type
|
173
175
|
#
|
174
|
-
# @param [
|
175
|
-
# @param [Object]
|
176
|
+
# @param [Config] config Rule configuration
|
177
|
+
# @param [Object] attach object to be attached to the trigger
|
176
178
|
#
|
177
179
|
#
|
178
180
|
def trigger(config:, attach:)
|
@@ -57,7 +57,7 @@ module OpenHAB
|
|
57
57
|
field_accessor :callback
|
58
58
|
|
59
59
|
# Creates a new CronTriggerHandler
|
60
|
-
# @param [Trigger] OpenHAB trigger associated with handler
|
60
|
+
# @param [Trigger] trigger OpenHAB trigger associated with handler
|
61
61
|
#
|
62
62
|
def initialize(trigger)
|
63
63
|
@trigger = trigger
|
@@ -113,7 +113,7 @@ module OpenHAB
|
|
113
113
|
include org.openhab.core.automation.module.script.rulesupport.shared.factories.ScriptedTriggerHandlerFactory
|
114
114
|
|
115
115
|
# Invoked by the OpenHAB core to get a trigger handler for the supllied trigger
|
116
|
-
# @param [Trigger] OpenHAB trigger
|
116
|
+
# @param [Trigger] trigger OpenHAB trigger
|
117
117
|
#
|
118
118
|
# @return [WatchTriggerHandler] trigger handler for supplied trigger
|
119
119
|
def get(trigger)
|
@@ -15,8 +15,9 @@ module OpenHAB
|
|
15
15
|
#
|
16
16
|
# Create a generic trigger given the trigger type uid and a configuration hash
|
17
17
|
#
|
18
|
-
# @param [Type] Trigger type UID
|
19
|
-
# @param [
|
18
|
+
# @param [Type] type Trigger type UID
|
19
|
+
# @param [Object] attach object to be attached to the trigger
|
20
|
+
# @param [Configuration] configuration A hash containing the trigger configuration entries
|
20
21
|
#
|
21
22
|
# @return [Trigger] Trigger object
|
22
23
|
#
|
@@ -38,7 +38,7 @@ module OpenHAB
|
|
38
38
|
|
39
39
|
#
|
40
40
|
# Creates a new Trigger
|
41
|
-
# @param [RuleTrigger] rule trigger information
|
41
|
+
# @param [RuleTrigger] rule_triggers rule trigger information
|
42
42
|
def initialize(rule_triggers:)
|
43
43
|
@rule_triggers = rule_triggers
|
44
44
|
end
|
@@ -47,7 +47,7 @@ module OpenHAB
|
|
47
47
|
# Create a trigger for a thing
|
48
48
|
#
|
49
49
|
# @param [Thing] thing to create trigger for
|
50
|
-
# @param [Trigger] trigger to map with thing
|
50
|
+
# @param [Trigger] type trigger to map with thing
|
51
51
|
# @param [State] to for thing
|
52
52
|
# @param [State] from state of thing
|
53
53
|
#
|
@@ -17,6 +17,7 @@ module OpenHAB
|
|
17
17
|
#
|
18
18
|
# @param [Array] items array to trigger on updated
|
19
19
|
# @param [State] to to match for tigger
|
20
|
+
# @param [Object] attach object to be attached to the trigger
|
20
21
|
#
|
21
22
|
# @return [Trigger] Trigger for updated entity
|
22
23
|
#
|
@@ -40,9 +41,8 @@ module OpenHAB
|
|
40
41
|
# Create the trigger
|
41
42
|
#
|
42
43
|
# @param [Object] item item to create trigger for
|
43
|
-
# @param [Item State] from state to restrict trigger to
|
44
44
|
# @param [Item State] to state to restrict trigger to
|
45
|
-
# @param attach
|
45
|
+
# @param [Object] attach object to be attached to the trigger
|
46
46
|
#
|
47
47
|
# @return [Trigger] OpenHAB triggers
|
48
48
|
#
|
@@ -69,7 +69,7 @@ module OpenHAB
|
|
69
69
|
# Creates a trigger with a range condition on the 'to' field
|
70
70
|
# @param [Object] item to create changed trigger on
|
71
71
|
# @param [Object] to state restrict trigger to
|
72
|
-
# @param [Object] attach to trigger
|
72
|
+
# @param [Object] attach object to be attached to the trigger
|
73
73
|
# @return [Trigger] OpenHAB trigger
|
74
74
|
#
|
75
75
|
def range_trigger(item:, to:, attach:)
|
@@ -81,7 +81,7 @@ module OpenHAB
|
|
81
81
|
# Creates a trigger with a proc condition on the 'to' field
|
82
82
|
# @param [Object] item to create changed trigger on
|
83
83
|
# @param [Object] to state restrict trigger to
|
84
|
-
# @param [Object] attach to trigger
|
84
|
+
# @param [Object] attach object to be attached to the trigger
|
85
85
|
# @return [Trigger] OpenHAB trigger
|
86
86
|
#
|
87
87
|
def proc_trigger(item:, to:, attach:)
|
@@ -93,7 +93,8 @@ module OpenHAB
|
|
93
93
|
# Create a trigger for updates
|
94
94
|
#
|
95
95
|
# @param [Object] item Type of item [Group,Thing,Item] to create update trigger for
|
96
|
-
# @param [State]
|
96
|
+
# @param [State] to state restriction on trigger
|
97
|
+
# @param [Object] attach object to be attached to the trigger
|
97
98
|
#
|
98
99
|
# @return [Trigger] OpenHAB triggers
|
99
100
|
#
|
@@ -110,7 +111,7 @@ module OpenHAB
|
|
110
111
|
# Create an update trigger for an item
|
111
112
|
#
|
112
113
|
# @param [Item] item to create trigger for
|
113
|
-
# @param [State]
|
114
|
+
# @param [State] to optional state restriction for target
|
114
115
|
#
|
115
116
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
116
117
|
# second element is a Hash configuring trigger
|
@@ -125,7 +126,7 @@ module OpenHAB
|
|
125
126
|
# Create an update trigger for a group
|
126
127
|
#
|
127
128
|
# @param [Item] item to create trigger for
|
128
|
-
# @param [State]
|
129
|
+
# @param [State] to optional state restriction for target
|
129
130
|
#
|
130
131
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
131
132
|
# second element is a Hash configuring trigger
|
@@ -140,7 +141,7 @@ module OpenHAB
|
|
140
141
|
# Create an update trigger for a thing
|
141
142
|
#
|
142
143
|
# @param [Thing] thing to create trigger for
|
143
|
-
# @param [State]
|
144
|
+
# @param [State] to optional state restriction for target
|
144
145
|
#
|
145
146
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
146
147
|
# second element is a Hash configuring trigger
|
@@ -18,6 +18,9 @@ module OpenHAB
|
|
18
18
|
# Create a trigger to watch a path
|
19
19
|
#
|
20
20
|
# @param [String] path to watch
|
21
|
+
# @param [String] glob
|
22
|
+
# @param [Array, Symbol] for types of changes to watch: +:created+, +:deleted+, +:modified+
|
23
|
+
# @param [Object] attach object to be attached to the trigger
|
21
24
|
#
|
22
25
|
# @return [Trigger] Trigger object
|
23
26
|
#
|
@@ -40,10 +43,12 @@ module OpenHAB
|
|
40
43
|
|
41
44
|
#
|
42
45
|
# Automatically creates globs for supplied paths if necessary
|
46
|
+
#
|
43
47
|
# @param [Pathname] path to check
|
44
|
-
# @param [String]
|
48
|
+
# @param [String] glob
|
45
49
|
#
|
46
50
|
# @return [Pathname,String] Pathname to watch and glob to match
|
51
|
+
#
|
47
52
|
def self.glob_for_path(path, glob)
|
48
53
|
# Checks if the supplied pathname last element contains a glob char
|
49
54
|
if GLOB_CHARS.any? { |char| path.basename.to_s.include? char }
|
@@ -60,8 +65,8 @@ module OpenHAB
|
|
60
65
|
#
|
61
66
|
# Create a watch trigger based on item type
|
62
67
|
#
|
63
|
-
# @param [
|
64
|
-
# @param [Object]
|
68
|
+
# @param [Config] config Rule configuration
|
69
|
+
# @param [Object] attach object to be attached to the trigger
|
65
70
|
#
|
66
71
|
#
|
67
72
|
def trigger(config:, attach:)
|
@@ -79,7 +79,7 @@ module OpenHAB
|
|
79
79
|
# Invoked by java super class when an watch event occurs
|
80
80
|
# @param [String] _event ignored
|
81
81
|
# @param [StandardWatchEventKind] kind NIO watch event kind
|
82
|
-
# @param [java.nio.Path]
|
82
|
+
# @param [java.nio.Path] path that had an event
|
83
83
|
def processWatchEvent(_event, kind, path)
|
84
84
|
@block.call(WatchEvent.new(EVENT_TO_SYMBOL[kind], Pathname.new(path.to_s)))
|
85
85
|
end
|
@@ -92,7 +92,7 @@ module OpenHAB
|
|
92
92
|
include org.openhab.core.automation.handler.TriggerHandler
|
93
93
|
|
94
94
|
# Creates a new WatchTriggerHandler
|
95
|
-
# @param [Trigger] OpenHAB trigger associated with handler
|
95
|
+
# @param [Trigger] trigger OpenHAB trigger associated with handler
|
96
96
|
#
|
97
97
|
def initialize(trigger)
|
98
98
|
@trigger = trigger
|
@@ -139,7 +139,7 @@ module OpenHAB
|
|
139
139
|
include org.openhab.core.automation.module.script.rulesupport.shared.factories.ScriptedTriggerHandlerFactory
|
140
140
|
|
141
141
|
# Invoked by the OpenHAB core to get a trigger handler for the supllied trigger
|
142
|
-
# @param [Trigger] OpenHAB trigger
|
142
|
+
# @param [Trigger] trigger OpenHAB trigger
|
143
143
|
#
|
144
144
|
# @return [WatchTriggerHandler] trigger handler for supplied trigger
|
145
145
|
def get(trigger)
|