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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openhab/dsl/rules/automation_rule.rb +10 -158
  3. data/lib/openhab/dsl/rules/rule.rb +4 -46
  4. data/lib/openhab/dsl/rules/rule_config.rb +4 -3
  5. data/lib/openhab/dsl/rules/triggers/changed.rb +30 -16
  6. data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +184 -0
  7. data/lib/openhab/dsl/rules/triggers/conditions/none.rb +32 -0
  8. data/lib/openhab/dsl/rules/triggers/conditions/range.rb +74 -0
  9. data/lib/openhab/dsl/rules/triggers/cron.rb +118 -0
  10. data/lib/openhab/dsl/rules/triggers/trigger.rb +2 -1
  11. data/lib/openhab/dsl/rules/triggers/updated.rb +47 -16
  12. data/lib/openhab/dsl/rules/triggers/watch.rb +1 -3
  13. data/lib/openhab/dsl/timers/manager.rb +14 -1
  14. data/lib/openhab/dsl/types/date_time_type.rb +2 -2
  15. data/lib/openhab/dsl/types/decimal_type.rb +1 -1
  16. data/lib/openhab/dsl/types/hsb_type.rb +1 -1
  17. data/lib/openhab/dsl/types/increase_decrease_type.rb +1 -1
  18. data/lib/openhab/dsl/types/next_previous_type.rb +1 -1
  19. data/lib/openhab/dsl/types/on_off_type.rb +1 -1
  20. data/lib/openhab/dsl/types/open_closed_type.rb +1 -1
  21. data/lib/openhab/dsl/types/percent_type.rb +1 -1
  22. data/lib/openhab/dsl/types/play_pause_type.rb +1 -1
  23. data/lib/openhab/dsl/types/point_type.rb +1 -1
  24. data/lib/openhab/dsl/types/quantity_type.rb +1 -1
  25. data/lib/openhab/dsl/types/refresh_type.rb +1 -1
  26. data/lib/openhab/dsl/types/rewind_fastforward_type.rb +1 -1
  27. data/lib/openhab/dsl/types/stop_move_type.rb +1 -1
  28. data/lib/openhab/dsl/types/string_type.rb +1 -1
  29. data/lib/openhab/dsl/types/un_def_type.rb +1 -1
  30. data/lib/openhab/dsl/types/up_down_type.rb +1 -1
  31. data/lib/openhab/log/configuration.rb +1 -1
  32. data/lib/openhab/log/logger.rb +10 -0
  33. data/lib/openhab/version.rb +1 -1
  34. metadata +5 -3
  35. 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 = 'timer.GenericCronTrigger'
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
- trigger, config = create_update_trigger(item, to_state)
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 [Array<Hash,String>] first element is a String specifying trigger type
41
- # second element is a Hash configuring trigger
71
+ # @return [Trigger] OpenHAB triggers
42
72
  #
43
- def create_update_trigger(item, to_state)
44
- case item
45
- when OpenHAB::DSL::Items::GroupItem::GroupMembers then group_update(item, to_state)
46
- when Thing then thing_update(item, to_state)
47
- else item_update(item, to_state)
48
- end
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, to_state)
91
+ def item_update(item:, to:)
61
92
  config = { 'itemName' => item.name }
62
- config['state'] = to_state.to_s unless to_state.nil?
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, to_state)
107
+ def group_update(item:, to:)
77
108
  config = { 'groupName' => item.group.name }
78
- config['state'] = to_state.to_s unless to_state.nil?
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, to_state)
93
- trigger_for_thing(thing, Trigger::THING_UPDATE, to_state)
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] = Set.new unless @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
- java_import org.openhab.core.library.types.DateTimeType
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
- java_import org.openhab.core.library.types.DecimalType
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
@@ -6,7 +6,7 @@ require_relative 'percent_type'
6
6
  module OpenHAB
7
7
  module DSL
8
8
  module Types
9
- java_import org.openhab.core.library.types.HSBType
9
+ HSBType = org.openhab.core.library.types.HSBType
10
10
 
11
11
  # global alias
12
12
  ::HSBType = HSBType
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.library.types.IncreaseDecreaseType
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
- java_import org.openhab.core.library.types.NextPreviousType
6
+ NextPreviousType = org.openhab.core.library.types.NextPreviousType
7
7
 
8
8
  # Adds methods to core OpenHAB NextPreviousType 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
- java_import org.openhab.core.library.types.OnOffType
6
+ OnOffType = org.openhab.core.library.types.OnOffType
7
7
 
8
8
  # Adds methods to core OpenHAB OnOffType to make it more natural in Ruby
9
9
  class OnOffType
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.library.types.OpenClosedType
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
@@ -5,7 +5,7 @@ require_relative 'decimal_type'
5
5
  module OpenHAB
6
6
  module DSL
7
7
  module Types
8
- java_import org.openhab.core.library.types.PercentType
8
+ PercentType = org.openhab.core.library.types.PercentType
9
9
 
10
10
  # global alias
11
11
  ::PercentType = PercentType
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.library.types.PlayPauseType
6
+ PlayPauseType = org.openhab.core.library.types.PlayPauseType
7
7
 
8
8
  # Adds methods to core OpenHAB PlayPauseType 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
- java_import org.openhab.core.library.types.PointType
6
+ PointType = org.openhab.core.library.types.PointType
7
7
 
8
8
  # global scope
9
9
  # @!visibility private
@@ -5,7 +5,7 @@ require_relative 'numeric_type'
5
5
  module OpenHAB
6
6
  module DSL
7
7
  module Types
8
- java_import org.openhab.core.library.types.QuantityType
8
+ QuantityType = org.openhab.core.library.types.QuantityType
9
9
 
10
10
  # global alias
11
11
  ::QuantityType = QuantityType
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.types.RefreshType
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
- java_import org.openhab.core.library.types.RewindFastforwardType
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
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.library.types.StopMoveType
6
+ StopMoveType = org.openhab.core.library.types.StopMoveType
7
7
 
8
8
  # Adds methods to core OpenHAB StopMoveType 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
- java_import org.openhab.core.library.types.StringType
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
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.types.UnDefType
6
+ UnDefType = org.openhab.core.types.UnDefType
7
7
 
8
8
  # Adds methods to core OpenHAB UnDefType to make it more natural in Ruby
9
9
  class UnDefType # rubocop:disable Lint/EmptyClass
@@ -3,7 +3,7 @@
3
3
  module OpenHAB
4
4
  module DSL
5
5
  module Types
6
- java_import org.openhab.core.library.types.UpDownType
6
+ UpDownType = org.openhab.core.library.types.UpDownType
7
7
 
8
8
  # Adds methods to core OpenHAB UpDownType to make it more natural in Ruby
9
9
  class UpDownType
@@ -6,7 +6,7 @@ module OpenHAB
6
6
  # This module holds global configuration values
7
7
  module Configuration
8
8
  # -*- coding: utf-8 -*-
9
- LOG_PREFIX = 'jsr223.jruby'
9
+ LOG_PREFIX = 'org.openhab.automation.jruby'
10
10
 
11
11
  #
12
12
  # Gets the log prefix
@@ -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
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.27.1'
8
+ VERSION = '4.29.0'
9
9
  end
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.27.1
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-10 00:00:00.000000000 Z
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