openhab-scripting 4.33.0 → 4.34.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b5fd36cfc11c1123c6dc979a7d7072ee7aff804deded7d4bb72716be4c2e216
|
4
|
+
data.tar.gz: f324548ea1075012f58076195a8c25d8cb6bb4afe62344d9752ba4a2415a4394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49b5fab340c77c046ad534568efb939206ab11824f6f08c56622a691d066fd4ce79c308e153d4b45d408cb901f461f5b97c6b14b00deceaba70efbdb46475e2c
|
7
|
+
data.tar.gz: 70c98aaec888f7c889a3bcac861caf216fee51b71c0f086c624ad4caf51f497f6db56c4b218e808524fa3b903d2c149a4c580a862878158fd988d12eb2ce8659
|
@@ -18,7 +18,7 @@ module OpenHAB
|
|
18
18
|
# @param [Hash] values Keys and values to set for running thread, if hash is nil no values are set
|
19
19
|
#
|
20
20
|
def self.thread_local(**values)
|
21
|
-
old_values = values.
|
21
|
+
old_values = values.to_h { |key, _value| [key, Thread.current[key]] }
|
22
22
|
values.each { |key, value| Thread.current[key] = value }
|
23
23
|
logger.trace "Executing block with thread local context: #{values} - old context: #{old_values}"
|
24
24
|
yield
|
@@ -145,7 +145,7 @@ module OpenHAB
|
|
145
145
|
include OpenHAB::Log
|
146
146
|
include OpenHAB::Core::ThreadLocal
|
147
147
|
|
148
|
-
def initialize(timed_command_details, semaphore, &block) # rubocop:disable
|
148
|
+
def initialize(timed_command_details, semaphore, &block) # rubocop:disable Metrics/MethodLength
|
149
149
|
super()
|
150
150
|
@semaphore = semaphore
|
151
151
|
@timed_command_details = timed_command_details
|
@@ -42,7 +42,7 @@ module OpenHAB
|
|
42
42
|
@guard = config.guard
|
43
43
|
# Convert between to correct range or nil if not set
|
44
44
|
between = config.between&.then { between(config.between) }
|
45
|
-
@between = between
|
45
|
+
@between = between
|
46
46
|
@trigger_conditions = config.trigger_conditions
|
47
47
|
@attachments = config.attachments
|
48
48
|
end
|
@@ -153,6 +153,8 @@ module OpenHAB
|
|
153
153
|
# Loggging inflates method length
|
154
154
|
def check_guards(event:)
|
155
155
|
if @guard.should_run? event
|
156
|
+
return true if @between.nil?
|
157
|
+
|
156
158
|
now = Time.now
|
157
159
|
return true if @between.cover? now
|
158
160
|
|
@@ -13,16 +13,19 @@ module OpenHAB
|
|
13
13
|
#
|
14
14
|
# Create a rule that executes at the specified interval
|
15
15
|
#
|
16
|
-
# @param [Object] value Symbol or
|
16
|
+
# @param [Object] value String, Symbol, Duration, or MonthDay to execute this rule
|
17
17
|
# @param [Object] at TimeOfDay or String representing TimeOfDay in which to execute rule
|
18
18
|
# @param [Object] attach object to be attached to the trigger
|
19
19
|
#
|
20
20
|
#
|
21
21
|
def every(value, at: nil, attach: nil)
|
22
|
+
return every(MonthDay.parse(value), at: at, attach: attach) if value.is_a? String
|
23
|
+
|
22
24
|
cron_expression = case value
|
23
25
|
when Symbol then Cron.from_symbol(value, at)
|
24
26
|
when Java::JavaTime::Duration then Cron.from_duration(value, at)
|
25
|
-
|
27
|
+
when Java::JavaTime::MonthDay then Cron.from_monthday(value, at)
|
28
|
+
else raise ArgumentError, 'Unknown interval'
|
26
29
|
end
|
27
30
|
cron(cron_expression, attach: attach)
|
28
31
|
end
|
@@ -32,8 +35,18 @@ module OpenHAB
|
|
32
35
|
#
|
33
36
|
# @param [String] expression OpenHAB style cron expression
|
34
37
|
# @param [Object] attach object to be attached to the trigger
|
38
|
+
# @param [Hash] elements cron expression elements (second, minute, hour, dom, month, dow, year)
|
35
39
|
#
|
36
|
-
def cron(expression, attach: nil)
|
40
|
+
def cron(expression = nil, attach: nil, **fields)
|
41
|
+
if fields.any?
|
42
|
+
raise ArgumentError, 'Cron elements cannot be used with a cron expression' if expression
|
43
|
+
|
44
|
+
cron_expression = Cron.from_fields(fields)
|
45
|
+
return cron(cron_expression, attach: attach)
|
46
|
+
end
|
47
|
+
|
48
|
+
raise ArgumentError, 'Missing cron expression or elements' unless expression
|
49
|
+
|
37
50
|
cron = Cron.new(rule_triggers: @rule_triggers)
|
38
51
|
cron.trigger(config: { 'cronExpression' => expression }, attach: attach)
|
39
52
|
end
|
@@ -59,7 +72,8 @@ module OpenHAB
|
|
59
72
|
hour: '*',
|
60
73
|
dom: '?',
|
61
74
|
month: '*',
|
62
|
-
dow: '?'
|
75
|
+
dow: '?',
|
76
|
+
year: '*'
|
63
77
|
}.freeze
|
64
78
|
private_constant :CRON_EXPRESSION_MAP
|
65
79
|
|
@@ -96,7 +110,7 @@ module OpenHAB
|
|
96
110
|
#
|
97
111
|
# Create a cron map from a duration
|
98
112
|
#
|
99
|
-
# @param [
|
113
|
+
# @param [Java::JavaTime::Duration] duration
|
100
114
|
# @param [Object] at TimeOfDay or String representing time of day
|
101
115
|
#
|
102
116
|
# @return [Hash] map describing cron expression
|
@@ -107,6 +121,20 @@ module OpenHAB
|
|
107
121
|
map_to_cron(duration_to_map(duration))
|
108
122
|
end
|
109
123
|
|
124
|
+
#
|
125
|
+
# Create a cron map from a MonthDay
|
126
|
+
#
|
127
|
+
# @param [Java::JavaTime::MonthDay] month_day
|
128
|
+
# @param [Object] at TimeOfDay or String representing time of day
|
129
|
+
#
|
130
|
+
# @return [Hash] map describing cron expression
|
131
|
+
#
|
132
|
+
def self.from_monthday(monthday, at)
|
133
|
+
expression_map = EXPRESSION_MAP[:day].merge(month: monthday.month_value, dom: monthday.day_of_month)
|
134
|
+
expression_map = at_condition(expression_map, at) if at
|
135
|
+
map_to_cron(expression_map)
|
136
|
+
end
|
137
|
+
|
110
138
|
#
|
111
139
|
# Create a cron map from a symbol
|
112
140
|
#
|
@@ -121,6 +149,19 @@ module OpenHAB
|
|
121
149
|
map_to_cron(expression_map)
|
122
150
|
end
|
123
151
|
|
152
|
+
#
|
153
|
+
# Create a cron map from cron elements
|
154
|
+
#
|
155
|
+
# @param [Hash] elements Cron fields (second, minute, hour, dom, month, dow, year)
|
156
|
+
#
|
157
|
+
# @return [Hash] map describing cron expression
|
158
|
+
#
|
159
|
+
def self.from_fields(fields)
|
160
|
+
fields = fields.transform_values { |value| value.to_s.gsub(/\s+/, '') }
|
161
|
+
expression_map = CRON_EXPRESSION_MAP.merge(fields)
|
162
|
+
map_to_cron(expression_map)
|
163
|
+
end
|
164
|
+
|
124
165
|
#
|
125
166
|
# Map cron expression to to cron string
|
126
167
|
#
|
@@ -129,7 +170,7 @@ module OpenHAB
|
|
129
170
|
# @return [String] OpenHAB cron string
|
130
171
|
#
|
131
172
|
def self.map_to_cron(map)
|
132
|
-
%i[second minute hour dom month dow].map { |field| map.fetch(field) }.join(' ')
|
173
|
+
%i[second minute hour dom month dow year].map { |field| map.fetch(field) }.join(' ')
|
133
174
|
end
|
134
175
|
|
135
176
|
#
|
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.34.1
|
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-03-
|
11
|
+
date: 2022-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|