openhab-scripting 2.14.3 → 2.15.0
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: e06a1b4a2697fe4ac5d03467fb324ce1cf4d6e674946a7d96dae8928974b2460
|
4
|
+
data.tar.gz: 522268dcd796de02ee8dde9417d5a044dab87ef8a8d8100957268fc544443d3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51ea02b7ccc10fc831a17627e31f0b0d7e250e778a08c8e7d226118c61cb98a07761eabee1299e9c6a4a83e949b448c20f1c7ebb7e5877939b601f1108929cec
|
7
|
+
data.tar.gz: 1ea8435d4826e815c212e422e714ac0480266b2ebc283c4471116cf08f45b3336758c75a1b74d00d631f1c7b729e078620dd72d4e9b853465eee06010e2ea027
|
data/lib/openhab/core/dsl.rb
CHANGED
@@ -19,6 +19,7 @@ require 'core/dsl/gems'
|
|
19
19
|
require 'core/dsl/units'
|
20
20
|
require 'core/dsl/types/quantity'
|
21
21
|
require 'core/dsl/states'
|
22
|
+
require 'core/dsl/persistence'
|
22
23
|
|
23
24
|
module OpenHAB
|
24
25
|
#
|
@@ -30,6 +31,7 @@ module OpenHAB
|
|
30
31
|
#
|
31
32
|
module DSL
|
32
33
|
# Extend the calling module/class with the DSL
|
34
|
+
# rubocop: disable Metrics/MethodLength
|
33
35
|
def self.extended(base)
|
34
36
|
base.send :include, OpenHAB::Core::DSL::Rule
|
35
37
|
base.send :include, OpenHAB::Core::DSL::Items
|
@@ -40,8 +42,10 @@ module OpenHAB
|
|
40
42
|
base.send :include, OpenHAB::Core::DSL::Timers
|
41
43
|
base.send :include, OpenHAB::Core::DSL::States
|
42
44
|
base.send :include, OpenHAB::Core::DSL::Tod
|
45
|
+
base.send :include, OpenHAB::Core::DSL::Persistence
|
43
46
|
base.send :include, Things
|
44
47
|
end
|
48
|
+
# rubocop: enable Metrics/MethodLength
|
45
49
|
end
|
46
50
|
end
|
47
51
|
end
|
@@ -6,6 +6,7 @@ require 'bigdecimal'
|
|
6
6
|
|
7
7
|
# Monkey patch items
|
8
8
|
require 'openhab/core/dsl/monkey_patch/items/metadata'
|
9
|
+
require 'openhab/core/dsl/monkey_patch/items/persistence'
|
9
10
|
require 'openhab/core/dsl/monkey_patch/items/contact_item'
|
10
11
|
require 'openhab/core/dsl/monkey_patch/items/dimmer_item'
|
11
12
|
require 'openhab/core/dsl/monkey_patch/items/switch_item'
|
@@ -127,4 +128,5 @@ class Java::OrgOpenhabCoreItems::GenericItem
|
|
127
128
|
# rubocop:enable Style/ClassAndModuleChildren
|
128
129
|
prepend OpenHAB::Core::DSL::MonkeyPatch::Items::ItemExtensions
|
129
130
|
prepend OpenHAB::Core::DSL::MonkeyPatch::Items::Metadata
|
131
|
+
prepend OpenHAB::Core::DSL::MonkeyPatch::Items::Persistence
|
130
132
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module Core
|
5
|
+
module DSL
|
6
|
+
module MonkeyPatch
|
7
|
+
module Items
|
8
|
+
#
|
9
|
+
# Persistence extension for Items
|
10
|
+
#
|
11
|
+
module Persistence
|
12
|
+
%w[persist last_update].each do |method|
|
13
|
+
define_method(method) do |service = nil|
|
14
|
+
service ||= persistence_service
|
15
|
+
PersistenceExtensions.public_send(method, self, service&.to_s)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# Return the previous state of the item
|
21
|
+
#
|
22
|
+
# @param skip_equal [Boolean] if true, skips equal state values and
|
23
|
+
# searches the first state not equal the current state
|
24
|
+
# @param service [String] the name of the PersistenceService to use
|
25
|
+
#
|
26
|
+
# @return the previous state or nil if no previous state could be found,
|
27
|
+
# or if the default persistence service is not configured or
|
28
|
+
# does not refer to a valid service
|
29
|
+
#
|
30
|
+
def previous_state(service = nil, skip_equal: false)
|
31
|
+
service ||= persistence_service
|
32
|
+
PersistenceExtensions.previous_state(self, skip_equal, service&.to_s)
|
33
|
+
end
|
34
|
+
|
35
|
+
%w[
|
36
|
+
average_since
|
37
|
+
changed_since
|
38
|
+
delta_since
|
39
|
+
deviation_since
|
40
|
+
evolution_rate
|
41
|
+
historic_state
|
42
|
+
maximum_since
|
43
|
+
minimum_since
|
44
|
+
sum_since
|
45
|
+
updated_since
|
46
|
+
variance_since
|
47
|
+
].each do |method|
|
48
|
+
define_method(method) do |timestamp, service = nil|
|
49
|
+
service ||= persistence_service
|
50
|
+
if timestamp.is_a? Java::JavaTimeTemporal::TemporalAmount
|
51
|
+
timestamp = Java::JavaTime::ZonedDateTime.now.minus(timestamp)
|
52
|
+
end
|
53
|
+
PersistenceExtensions.public_send(method, self, timestamp, service&.to_s)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
#
|
60
|
+
# Get the specified persistence service from the current thread local variable
|
61
|
+
#
|
62
|
+
# @return [Object] Persistence service name as String or Symbol, or nil if not set
|
63
|
+
#
|
64
|
+
def persistence_service
|
65
|
+
Thread.current.thread_variable_get(:persistence_service)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module Core
|
5
|
+
module DSL
|
6
|
+
#
|
7
|
+
# Provides support for interacting with OpenHAB Persistence service
|
8
|
+
#
|
9
|
+
module Persistence
|
10
|
+
#
|
11
|
+
# Sets a thread local variable to set the default persistence service
|
12
|
+
# for method calls inside the block
|
13
|
+
#
|
14
|
+
# @param [Object] Persistence service either as a String or a Symbol
|
15
|
+
# @yield [] Block executed in context of the supplied persistence service
|
16
|
+
#
|
17
|
+
#
|
18
|
+
def persistence(service)
|
19
|
+
Thread.current.thread_variable_set(:persistence_service, service)
|
20
|
+
yield
|
21
|
+
ensure
|
22
|
+
Thread.current.thread_variable_set(:persistence_service, nil)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/openhab/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openhab-scripting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian O'Connell
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- lib/openhab/core/dsl/monkey_patch/items/group_item.rb
|
55
55
|
- lib/openhab/core/dsl/monkey_patch/items/items.rb
|
56
56
|
- lib/openhab/core/dsl/monkey_patch/items/metadata.rb
|
57
|
+
- lib/openhab/core/dsl/monkey_patch/items/persistence.rb
|
57
58
|
- lib/openhab/core/dsl/monkey_patch/items/switch_item.rb
|
58
59
|
- lib/openhab/core/dsl/monkey_patch/ruby/number.rb
|
59
60
|
- lib/openhab/core/dsl/monkey_patch/ruby/range.rb
|
@@ -63,6 +64,7 @@ files:
|
|
63
64
|
- lib/openhab/core/dsl/monkey_patch/types/open_closed_type.rb
|
64
65
|
- lib/openhab/core/dsl/monkey_patch/types/percent_type.rb
|
65
66
|
- lib/openhab/core/dsl/monkey_patch/types/types.rb
|
67
|
+
- lib/openhab/core/dsl/persistence.rb
|
66
68
|
- lib/openhab/core/dsl/property.rb
|
67
69
|
- lib/openhab/core/dsl/rule/automation_rule.rb
|
68
70
|
- lib/openhab/core/dsl/rule/guard.rb
|