openhab-scripting 4.27.1 → 4.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/openhab/dsl/rules/automation_rule.rb +10 -158
- data/lib/openhab/dsl/rules/rule.rb +4 -46
- data/lib/openhab/dsl/rules/rule_config.rb +4 -3
- data/lib/openhab/dsl/rules/triggers/changed.rb +30 -16
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +184 -0
- data/lib/openhab/dsl/rules/triggers/conditions/none.rb +32 -0
- data/lib/openhab/dsl/rules/triggers/conditions/range.rb +74 -0
- data/lib/openhab/dsl/rules/triggers/cron.rb +118 -0
- data/lib/openhab/dsl/rules/triggers/trigger.rb +2 -1
- data/lib/openhab/dsl/rules/triggers/updated.rb +47 -16
- data/lib/openhab/dsl/rules/triggers/watch.rb +1 -3
- data/lib/openhab/dsl/timers/manager.rb +14 -1
- data/lib/openhab/dsl/types/date_time_type.rb +2 -2
- data/lib/openhab/dsl/types/decimal_type.rb +1 -1
- data/lib/openhab/dsl/types/hsb_type.rb +1 -1
- data/lib/openhab/dsl/types/increase_decrease_type.rb +1 -1
- data/lib/openhab/dsl/types/next_previous_type.rb +1 -1
- data/lib/openhab/dsl/types/on_off_type.rb +1 -1
- data/lib/openhab/dsl/types/open_closed_type.rb +1 -1
- data/lib/openhab/dsl/types/percent_type.rb +1 -1
- data/lib/openhab/dsl/types/play_pause_type.rb +1 -1
- data/lib/openhab/dsl/types/point_type.rb +1 -1
- data/lib/openhab/dsl/types/quantity_type.rb +1 -1
- data/lib/openhab/dsl/types/refresh_type.rb +1 -1
- data/lib/openhab/dsl/types/rewind_fastforward_type.rb +1 -1
- data/lib/openhab/dsl/types/stop_move_type.rb +1 -1
- data/lib/openhab/dsl/types/string_type.rb +1 -1
- data/lib/openhab/dsl/types/un_def_type.rb +1 -1
- data/lib/openhab/dsl/types/up_down_type.rb +1 -1
- data/lib/openhab/log/configuration.rb +1 -1
- data/lib/openhab/log/logger.rb +10 -0
- data/lib/openhab/version.rb +1 -1
- metadata +5 -3
- data/lib/openhab/dsl/rules/cron_trigger_rule.rb +0 -42
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'openhab/log/logger'
|
4
|
+
|
5
|
+
module OpenHAB
|
6
|
+
module DSL
|
7
|
+
module Rules
|
8
|
+
module Triggers
|
9
|
+
#
|
10
|
+
# Module for conditions for triggers
|
11
|
+
#
|
12
|
+
module Conditions
|
13
|
+
include OpenHAB::Log
|
14
|
+
|
15
|
+
#
|
16
|
+
# This creates trigger conditions that work on ranges
|
17
|
+
# @param [Range:] From range
|
18
|
+
# @param [To:] To range
|
19
|
+
#
|
20
|
+
class Range
|
21
|
+
def initialize(from: nil, to: nil)
|
22
|
+
@from = from
|
23
|
+
@to = to
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Process rule
|
28
|
+
# @param [Hash] inputs inputs from trigger
|
29
|
+
#
|
30
|
+
def process(mod:, inputs:) # rubocop:disable Lint/UnusedMethodArgument - mod is unused here but required
|
31
|
+
logger.trace("Checking #{inputs} against condition trigger #{self}")
|
32
|
+
yield if check_from(inputs: inputs) && check_to(inputs: inputs)
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Check if from condition match the inputs
|
37
|
+
# @param [Hash] inputs inputs from trigger
|
38
|
+
# @return [true/false] depending on if from is set and matches supplied conditions
|
39
|
+
#
|
40
|
+
def check_from(inputs:)
|
41
|
+
old_state = inputs['oldState']
|
42
|
+
return true if @from.nil? || @from.include?(old_state)
|
43
|
+
|
44
|
+
logger.trace("Skipped execution of rule because old state #{old_state}"\
|
45
|
+
" does not equal specified range(#{@from})")
|
46
|
+
false
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
# Check if to conditions match the inputs
|
51
|
+
# @param [Hash] inputs inputs from trigger
|
52
|
+
# @return [true/false] depending on if from is set and matches supplied conditions
|
53
|
+
#
|
54
|
+
def check_to(inputs:)
|
55
|
+
new_state = inputs['newState'] || inputs['state'] # Get state for changed or update
|
56
|
+
return true if @to.nil? || @to.include?(new_state)
|
57
|
+
|
58
|
+
logger.trace("Skipped execution of rule because new state #{new_state}"\
|
59
|
+
" does not equal specified range(#{@to})")
|
60
|
+
false
|
61
|
+
end
|
62
|
+
|
63
|
+
# Describe the Range Condition as a string
|
64
|
+
# @return [String] string representation of range condition
|
65
|
+
#
|
66
|
+
def to_s
|
67
|
+
"From:(#{@from}) To:(#{@to})"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -164,7 +164,125 @@ module OpenHAB
|
|
164
164
|
end
|
165
165
|
expression_map
|
166
166
|
end
|
167
|
+
|
168
|
+
#
|
169
|
+
# Cron trigger that provides trigger ID
|
170
|
+
#
|
171
|
+
module Cron
|
172
|
+
include OpenHAB::Log
|
173
|
+
|
174
|
+
#
|
175
|
+
# Creates trigger types and trigger type factories for OpenHAB
|
176
|
+
#
|
177
|
+
def self.add_script_cron_handler
|
178
|
+
java_import org.openhab.core.automation.type.TriggerType
|
179
|
+
OpenHAB::Core.automation_manager.add_trigger_handler(
|
180
|
+
OpenHAB::DSL::Rules::Triggers::Cron::CRON_TRIGGER_MODULE_ID,
|
181
|
+
OpenHAB::DSL::Rules::Triggers::Cron::CronTriggerHandlerFactory.new
|
182
|
+
)
|
183
|
+
|
184
|
+
OpenHAB::Core.automation_manager.add_trigger_type(cron_trigger_type)
|
185
|
+
OpenHAB::Log.logger(self).trace('Added script cron trigger handler')
|
186
|
+
end
|
187
|
+
|
188
|
+
#
|
189
|
+
# Creates trigger types and trigger type factories for OpenHAB
|
190
|
+
#
|
191
|
+
private_class_method def self.cron_trigger_type
|
192
|
+
TriggerType.new(
|
193
|
+
OpenHAB::DSL::Rules::Triggers::Cron::CRON_TRIGGER_MODULE_ID,
|
194
|
+
nil,
|
195
|
+
'A specific instant occurs',
|
196
|
+
'Triggers when the specified instant occurs',
|
197
|
+
nil,
|
198
|
+
org.openhab.core.automation.Visibility::VISIBLE,
|
199
|
+
nil
|
200
|
+
)
|
201
|
+
end
|
202
|
+
|
203
|
+
# Trigger ID for Watch Triggers
|
204
|
+
CRON_TRIGGER_MODULE_ID = 'jsr223.jruby.CronTrigger'
|
205
|
+
|
206
|
+
# Cron Trigger Handler that provides trigger IDs
|
207
|
+
# Unfortunatly because the CronTriggerHandler in OpenHAB core is marked internal
|
208
|
+
# the entire thing must be recreated here
|
209
|
+
class CronTriggerHandler < org.openhab.core.automation.handler.BaseTriggerModuleHandler
|
210
|
+
include OpenHAB::Log
|
211
|
+
include org.openhab.core.scheduler.SchedulerRunnable
|
212
|
+
include org.openhab.core.automation.handler.TimeBasedTriggerHandler
|
213
|
+
|
214
|
+
# Provides access to protected fields
|
215
|
+
field_accessor :callback
|
216
|
+
|
217
|
+
# Creates a new CronTriggerHandler
|
218
|
+
# @param [Trigger] OpenHAB trigger associated with handler
|
219
|
+
#
|
220
|
+
def initialize(trigger)
|
221
|
+
@trigger = trigger
|
222
|
+
@scheduler = OpenHAB::Core::OSGI.service('org.openhab.core.scheduler.CronScheduler')
|
223
|
+
@expression = trigger.configuration.get('cronExpression')
|
224
|
+
super(trigger)
|
225
|
+
end
|
226
|
+
|
227
|
+
#
|
228
|
+
# Set the callback to execute when cron trigger fires
|
229
|
+
# @param [Object] callback to run
|
230
|
+
#
|
231
|
+
def setCallback(callback) # rubocop:disable Naming/MethodName
|
232
|
+
synchronized do
|
233
|
+
super(callback)
|
234
|
+
@scheduler.schedule(self, @expression)
|
235
|
+
logger.trace("Scheduled cron job '#{@expression}' for trigger '#{@trigger.id}'.")
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
#
|
240
|
+
# Get the temporal adjuster
|
241
|
+
# @return [CronAdjuster]
|
242
|
+
#
|
243
|
+
def getTemporalAdjuster # rubocop:disable Naming/MethodName
|
244
|
+
org.openhab.core.scheduler.CronAdjuster.new(expression)
|
245
|
+
end
|
246
|
+
|
247
|
+
#
|
248
|
+
# Execute the callback
|
249
|
+
#
|
250
|
+
def run
|
251
|
+
callback&.triggered(@trigger, { 'module' => @trigger.id })
|
252
|
+
end
|
253
|
+
|
254
|
+
#
|
255
|
+
# Displose of the handler
|
256
|
+
# cancel the cron scheduled task
|
257
|
+
#
|
258
|
+
def dispose
|
259
|
+
synchronized do
|
260
|
+
super
|
261
|
+
return unless @schedule
|
262
|
+
|
263
|
+
@schedule&.cancel(true)
|
264
|
+
end
|
265
|
+
logger.trace("cancelled job for trigger '#{@trigger.id}'.")
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
# Implements the ScriptedTriggerHandlerFactory interface to create a new Cron Trigger Handler
|
270
|
+
class CronTriggerHandlerFactory
|
271
|
+
include org.openhab.core.automation.module.script.rulesupport.shared.factories.ScriptedTriggerHandlerFactory
|
272
|
+
|
273
|
+
# Invoked by the OpenHAB core to get a trigger handler for the supllied trigger
|
274
|
+
# @param [Trigger] OpenHAB trigger
|
275
|
+
#
|
276
|
+
# @return [WatchTriggerHandler] trigger handler for supplied trigger
|
277
|
+
def get(trigger)
|
278
|
+
CronTriggerHandler.new(trigger)
|
279
|
+
end
|
280
|
+
end
|
281
|
+
end
|
167
282
|
end
|
168
283
|
end
|
169
284
|
end
|
170
285
|
end
|
286
|
+
|
287
|
+
# Add the cron handler to OpenHAB
|
288
|
+
OpenHAB::DSL::Rules::Triggers::Cron.add_script_cron_handler
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'securerandom'
|
4
4
|
require 'java'
|
5
|
+
require_relative 'cron'
|
5
6
|
|
6
7
|
module OpenHAB
|
7
8
|
module DSL
|
@@ -111,7 +112,7 @@ module OpenHAB
|
|
111
112
|
TIME_OF_DAY = 'timer.TimeOfDayTrigger'
|
112
113
|
|
113
114
|
# @return [String] A cron trigger
|
114
|
-
CRON =
|
115
|
+
CRON = OpenHAB::DSL::Rules::Triggers::Cron::CRON_TRIGGER_MODULE_ID
|
115
116
|
|
116
117
|
#
|
117
118
|
# Create a trigger
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'openhab/log/logger'
|
4
|
+
require_relative 'trigger'
|
4
5
|
|
5
6
|
module OpenHAB
|
6
7
|
module DSL
|
@@ -23,29 +24,59 @@ module OpenHAB
|
|
23
24
|
separate_groups(items).map do |item|
|
24
25
|
logger.trace("Creating updated trigger for item(#{item}) to(#{to})")
|
25
26
|
[to].flatten.map do |to_state|
|
26
|
-
|
27
|
-
append_trigger(trigger, config, attach: attach)
|
27
|
+
update_trigger(item: item, to: to_state, attach: attach)
|
28
28
|
end
|
29
29
|
end.flatten
|
30
30
|
end
|
31
31
|
|
32
32
|
private
|
33
33
|
|
34
|
+
#
|
35
|
+
# Create the trigger
|
36
|
+
#
|
37
|
+
# @param [Object] item item to create trigger for
|
38
|
+
# @param [Item State] from state to restrict trigger to
|
39
|
+
# @param [Item State] to state to restrict trigger to
|
40
|
+
# @param attach attachment
|
41
|
+
#
|
42
|
+
# @return [Trigger] OpenHAB triggers
|
43
|
+
#
|
44
|
+
def update_trigger(item:, to:, attach:)
|
45
|
+
if to.is_a? Range
|
46
|
+
create_update_range_trigger(item: item, to: to, attach: attach)
|
47
|
+
else
|
48
|
+
create_update_trigger(item: item, to: to, attach: attach)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Creates a trigger with a range condition on the 'to' field
|
54
|
+
# @param [Object] item to create changed trigger on
|
55
|
+
# @param [Object] to state restrict trigger to
|
56
|
+
# @param [Object] attach to trigger
|
57
|
+
# @return [Trigger] OpenHAB trigger
|
58
|
+
#
|
59
|
+
def create_update_range_trigger(item:, to:, attach:)
|
60
|
+
trigger = create_update_trigger(item: item, to: nil, attach: attach)
|
61
|
+
@trigger_conditions[trigger.id] = Conditions::Range.new(to: to, from: nil)
|
62
|
+
trigger
|
63
|
+
end
|
64
|
+
|
34
65
|
#
|
35
66
|
# Create a trigger for updates
|
36
67
|
#
|
37
68
|
# @param [Object] item Type of item [Group,Thing,Item] to create update trigger for
|
38
69
|
# @param [State] to_state state restriction on trigger
|
39
70
|
#
|
40
|
-
# @return [
|
41
|
-
# second element is a Hash configuring trigger
|
71
|
+
# @return [Trigger] OpenHAB triggers
|
42
72
|
#
|
43
|
-
def create_update_trigger(item
|
44
|
-
case item
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
73
|
+
def create_update_trigger(item:, to:, attach:)
|
74
|
+
trigger, config = case item
|
75
|
+
when OpenHAB::DSL::Items::GroupItem::GroupMembers then group_update(item: item, to: to)
|
76
|
+
when Thing then thing_update(thing: item, to: to)
|
77
|
+
else item_update(item: item, to: to)
|
78
|
+
end
|
79
|
+
append_trigger(trigger, config, attach: attach)
|
49
80
|
end
|
50
81
|
|
51
82
|
#
|
@@ -57,9 +88,9 @@ module OpenHAB
|
|
57
88
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
58
89
|
# second element is a Hash configuring trigger
|
59
90
|
#
|
60
|
-
def item_update(item
|
91
|
+
def item_update(item:, to:)
|
61
92
|
config = { 'itemName' => item.name }
|
62
|
-
config['state'] =
|
93
|
+
config['state'] = to.to_s unless to.nil?
|
63
94
|
trigger = Trigger::ITEM_STATE_UPDATE
|
64
95
|
[trigger, config]
|
65
96
|
end
|
@@ -73,9 +104,9 @@ module OpenHAB
|
|
73
104
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
74
105
|
# second element is a Hash configuring trigger
|
75
106
|
#
|
76
|
-
def group_update(item
|
107
|
+
def group_update(item:, to:)
|
77
108
|
config = { 'groupName' => item.group.name }
|
78
|
-
config['state'] =
|
109
|
+
config['state'] = to.to_s unless to.nil?
|
79
110
|
trigger = Trigger::GROUP_STATE_UPDATE
|
80
111
|
[trigger, config]
|
81
112
|
end
|
@@ -89,8 +120,8 @@ module OpenHAB
|
|
89
120
|
# @return [Array<Hash,String>] first element is a String specifying trigger type
|
90
121
|
# second element is a Hash configuring trigger
|
91
122
|
#
|
92
|
-
def thing_update(thing
|
93
|
-
trigger_for_thing(thing, Trigger::THING_UPDATE,
|
123
|
+
def thing_update(thing:, to:)
|
124
|
+
trigger_for_thing(thing, Trigger::THING_UPDATE, to)
|
94
125
|
end
|
95
126
|
end
|
96
127
|
end
|
@@ -138,11 +138,9 @@ module OpenHAB
|
|
138
138
|
|
139
139
|
# Called by OpenHAB to set the rule engine to invoke when triggered
|
140
140
|
# Must match java method name style
|
141
|
-
# rubocop:disable Naming/MethodName
|
142
|
-
def setCallback(callback)
|
141
|
+
def setCallback(callback) # rubocop:disable Naming/MethodName
|
143
142
|
@rule_engine_callback = callback
|
144
143
|
end
|
145
|
-
# rubocop:enable Naming/MethodName
|
146
144
|
|
147
145
|
#
|
148
146
|
# Dispose of handler which deactivates watcher
|
@@ -39,7 +39,7 @@ module OpenHAB
|
|
39
39
|
|
40
40
|
if timer.respond_to? :id
|
41
41
|
logger.trace("Adding #{timer} with id #{timer.id.inspect} timer ids")
|
42
|
-
@timer_ids[timer.id] =
|
42
|
+
@timer_ids[timer.id] = TimerSet.new unless @timer_ids[timer.id]
|
43
43
|
@timer_ids[timer.id] << timer
|
44
44
|
end
|
45
45
|
|
@@ -87,6 +87,19 @@ module OpenHAB
|
|
87
87
|
@timers.clear
|
88
88
|
end
|
89
89
|
end
|
90
|
+
|
91
|
+
#
|
92
|
+
# Provide additional methods for the timers set
|
93
|
+
#
|
94
|
+
class TimerSet < Set
|
95
|
+
#
|
96
|
+
# A shorthand to cancel all the timer objects held within the set
|
97
|
+
# so that timers[timer_id].cancel_all is equivalent to timers[timer_id].each(&:cancel)
|
98
|
+
#
|
99
|
+
def cancel_all
|
100
|
+
each(&:cancel)
|
101
|
+
end
|
102
|
+
end
|
90
103
|
end
|
91
104
|
end
|
92
105
|
end
|
@@ -7,8 +7,8 @@ require 'java'
|
|
7
7
|
module OpenHAB
|
8
8
|
module DSL
|
9
9
|
module Types
|
10
|
-
|
11
|
-
java_import java.time.ZonedDateTime
|
10
|
+
DateTimeType = org.openhab.core.library.types.DateTimeType
|
11
|
+
java_import java.time.ZonedDateTime # This is needed for the addon prior to ruby_class fix (OH 3.2.0)
|
12
12
|
|
13
13
|
# global alias
|
14
14
|
::DateTimeType = DateTimeType
|
@@ -6,7 +6,7 @@ require_relative 'numeric_type'
|
|
6
6
|
module OpenHAB
|
7
7
|
module DSL
|
8
8
|
module Types
|
9
|
-
|
9
|
+
DecimalType = org.openhab.core.library.types.DecimalType
|
10
10
|
|
11
11
|
#
|
12
12
|
# Add methods to core OpenHAB DecimalType to make it behave as a Ruby
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module OpenHAB
|
4
4
|
module DSL
|
5
5
|
module Types
|
6
|
-
|
6
|
+
IncreaseDecreaseType = org.openhab.core.library.types.IncreaseDecreaseType
|
7
7
|
|
8
8
|
# Adds methods to core OpenHAB IncreaseDecreaseType to make it more
|
9
9
|
# natural in Ruby
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module OpenHAB
|
4
4
|
module DSL
|
5
5
|
module Types
|
6
|
-
|
6
|
+
OpenClosedType = org.openhab.core.library.types.OpenClosedType
|
7
7
|
|
8
8
|
# Adds methods to core OpenHAB OpenClosedType to make it more natural in Ruby
|
9
9
|
class OpenClosedType
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module OpenHAB
|
4
4
|
module DSL
|
5
5
|
module Types
|
6
|
-
|
6
|
+
RefreshType = org.openhab.core.types.RefreshType
|
7
7
|
|
8
8
|
# Adds methods to core OpenHAB RefreshType to make it more natural in Ruby
|
9
9
|
class RefreshType # rubocop:disable Lint/EmptyClass
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module OpenHAB
|
4
4
|
module DSL
|
5
5
|
module Types
|
6
|
-
|
6
|
+
RewindFastforwardType = org.openhab.core.library.types.RewindFastforwardType
|
7
7
|
|
8
8
|
# Adds methods to core OpenHAB RewindFastforwardType to make it more
|
9
9
|
# natural in Ruby
|
@@ -7,7 +7,7 @@ require_relative 'comparable_type'
|
|
7
7
|
module OpenHAB
|
8
8
|
module DSL
|
9
9
|
module Types
|
10
|
-
|
10
|
+
StringType = org.openhab.core.library.types.StringType
|
11
11
|
|
12
12
|
#
|
13
13
|
# Add methods to core OpenHAB StringType to make it behave as a Ruby
|
data/lib/openhab/log/logger.rb
CHANGED
@@ -82,6 +82,16 @@ module OpenHAB
|
|
82
82
|
error
|
83
83
|
end
|
84
84
|
|
85
|
+
#
|
86
|
+
# Print error and stack trace without calls to internal classes
|
87
|
+
#
|
88
|
+
# @param [Exception] error A rescued error
|
89
|
+
#
|
90
|
+
def log_exception(exception, rule_name)
|
91
|
+
exception = clean_backtrace(exception)
|
92
|
+
error { "#{exception.message} (#{exception.class})\nIn rule: #{rule_name}\n#{exception.backtrace&.join("\n")}" }
|
93
|
+
end
|
94
|
+
|
85
95
|
private
|
86
96
|
|
87
97
|
#
|
data/lib/openhab/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openhab-scripting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian O'Connell
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -97,7 +97,6 @@ files:
|
|
97
97
|
- lib/openhab/dsl/openhab.rb
|
98
98
|
- lib/openhab/dsl/persistence.rb
|
99
99
|
- lib/openhab/dsl/rules/automation_rule.rb
|
100
|
-
- lib/openhab/dsl/rules/cron_trigger_rule.rb
|
101
100
|
- lib/openhab/dsl/rules/guard.rb
|
102
101
|
- lib/openhab/dsl/rules/item_event.rb
|
103
102
|
- lib/openhab/dsl/rules/property.rb
|
@@ -107,6 +106,9 @@ files:
|
|
107
106
|
- lib/openhab/dsl/rules/triggers/changed.rb
|
108
107
|
- lib/openhab/dsl/rules/triggers/channel.rb
|
109
108
|
- lib/openhab/dsl/rules/triggers/command.rb
|
109
|
+
- lib/openhab/dsl/rules/triggers/conditions/duration.rb
|
110
|
+
- lib/openhab/dsl/rules/triggers/conditions/none.rb
|
111
|
+
- lib/openhab/dsl/rules/triggers/conditions/range.rb
|
110
112
|
- lib/openhab/dsl/rules/triggers/cron.rb
|
111
113
|
- lib/openhab/dsl/rules/triggers/generic.rb
|
112
114
|
- lib/openhab/dsl/rules/triggers/trigger.rb
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'java'
|
4
|
-
require 'openhab/log/logger'
|
5
|
-
|
6
|
-
module OpenHAB
|
7
|
-
module DSL
|
8
|
-
#
|
9
|
-
# Creates and manages OpenHAB Rules
|
10
|
-
#
|
11
|
-
module Rules
|
12
|
-
#
|
13
|
-
# Specialized rule for cron triggers with attachments because OpenHAB does not provide trigger UID for cron rules
|
14
|
-
#
|
15
|
-
class CronTriggerRule < Java::OrgOpenhabCoreAutomationModuleScriptRulesupportSharedSimple::SimpleRule
|
16
|
-
include OpenHAB::Log
|
17
|
-
|
18
|
-
def initialize(rule_config:, rule:, trigger:)
|
19
|
-
super()
|
20
|
-
set_name("#{rule_config.name}-cron-#{trigger.id}")
|
21
|
-
set_triggers([trigger])
|
22
|
-
@rule = rule
|
23
|
-
@trigger = trigger
|
24
|
-
logger.trace("Created Cron Trigger Rule for #{@trigger}")
|
25
|
-
end
|
26
|
-
|
27
|
-
#
|
28
|
-
# Execute the rule
|
29
|
-
#
|
30
|
-
# @param [Map] mod map provided by OpenHAB rules engine
|
31
|
-
# @param [Map] inputs map provided by OpenHAB rules engine containing event and other information
|
32
|
-
#
|
33
|
-
#
|
34
|
-
def execute(mod = nil, _inputs = nil)
|
35
|
-
logger.trace "Trigger #{@trigger} fired for base rule #{@rule.inspect}"
|
36
|
-
inputs = { 'module' => @trigger.id }
|
37
|
-
@rule.execute(mod, inputs)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|