openhab-scripting 4.32.6 → 4.32.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|