openhab-scripting 2.14.3 → 2.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7d7048855cb4074024e55eb6bc763859c7c41220108dc2115cde683b7d84eb2
4
- data.tar.gz: a9fdcb6e2605eab24f8c0dd74a1a307bd50c12e3b1dc0c499ae5d8627a8c4eb1
3
+ metadata.gz: e06a1b4a2697fe4ac5d03467fb324ce1cf4d6e674946a7d96dae8928974b2460
4
+ data.tar.gz: 522268dcd796de02ee8dde9417d5a044dab87ef8a8d8100957268fc544443d3b
5
5
  SHA512:
6
- metadata.gz: c513245aa07d4a4cd21490c3761e2a3ea93f108ff9751ab7f679e79e30941ebe411e7cc3eac9312f51913988122dcaea2f228dbc15d3caa71e5aea6ffe1f7d2e
7
- data.tar.gz: b54ef2191000331f5cfc671e5b3ec0183661ea3c56a80d55d269873e18bb5e340225bb1994db5748d462c49d5ba876aa8d8be60ec61e4b9b49868ff31ad9a5cb
6
+ metadata.gz: 51ea02b7ccc10fc831a17627e31f0b0d7e250e778a08c8e7d226118c61cb98a07761eabee1299e9c6a4a83e949b448c20f1c7ebb7e5877939b601f1108929cec
7
+ data.tar.gz: 1ea8435d4826e815c212e422e714ac0480266b2ebc283c4471116cf08f45b3336758c75a1b74d00d631f1c7b729e078620dd72d4e9b853465eee06010e2ea027
@@ -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
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '2.14.3'
8
+ VERSION = '2.15.0'
9
9
  end
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.14.3
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