openhab-scripting 3.4.3 → 3.6.3

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: 9de0c3d111dc483c93a2338e5f76b4593c7c14765a9fd7de06088668b54258c2
4
- data.tar.gz: 5947a40d76a62377f7c447251ecd058c453ca5432f0a94e192e7099e68c59b7e
3
+ metadata.gz: b658ce46fd8c6b42e10fa6b84401a94e30edfd8b80604a7d61bb2e951841e090
4
+ data.tar.gz: 81b519605e1d6681e3857a513e8bb6a3a9029c14d2800a6418dc766632dce4c8
5
5
  SHA512:
6
- metadata.gz: b6922b2367a0fb9a6f0091ad6538cf8e03a83bf4a613c764528895c432c290f2819a65ece81bb4bc166c18b8e962559bb0fd33526a43d4ae96c2d08a83200e33
7
- data.tar.gz: fc9c9c10d35a896cc6643fe6dd33aab04cdffc74fb4005ced6beaa2392254bcfcc89b9c03d1d39c1827a08548e89adef16c4bb6da21fd131c8775a8df3433785
6
+ metadata.gz: 660e0548fa2f81c2e0f9975a1ce75fc39b48d8918ce64c93b79f9b5f6cbb738e11f9a227021f582b08d59c940882b25e429e3fca32f68272a97a41561fac257e
7
+ data.tar.gz: 38e028af8fe9abffb589ad0e022f56d58090064c212257df6de50e66ede18e3d14d7d48880570c1f4860259319d4944d8d093f7caccea0db1b229a108a0f853c
@@ -41,6 +41,7 @@ module OpenHAB
41
41
  logger.trace("Creating delegate for (#{method}) to #{item}) for #{self.class}")
42
42
  def_delegator item, method
43
43
  end
44
+ define_method(:oh_item) { instance_variable_get(item) }
44
45
  end
45
46
 
46
47
  #
@@ -23,8 +23,8 @@ module OpenHAB
23
23
 
24
24
  java_import org.openhab.core.library.types.DecimalType
25
25
  java_import org.openhab.core.library.types.QuantityType
26
- java_import 'tec.uom.se.format.SimpleUnitFormat'
27
- java_import 'tec.uom.se.AbstractUnit'
26
+ java_import org.openhab.core.types.util.UnitUtils
27
+ java_import org.openhab.core.library.unit.Units
28
28
 
29
29
  item_type Java::OrgOpenhabCoreLibraryItems::NumberItem
30
30
 
@@ -93,7 +93,7 @@ module OpenHAB
93
93
  # @return [OpenHAB::DSL::Types::Quantity] NumberItem converted to supplied Unit
94
94
  #
95
95
  def |(other)
96
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
96
+ other = UnitUtils.parse_unit(other) if other.is_a? String
97
97
 
98
98
  if dimension
99
99
  to_qt | other
@@ -111,7 +111,7 @@ module OpenHAB
111
111
  if dimension
112
112
  Quantity.new(@number_item.get_state_as(QuantityType))
113
113
  else
114
- Quantity.new(QuantityType.new(to_d.to_java, AbstractUnit::ONE))
114
+ Quantity.new(QuantityType.new(to_d.to_java, Units::ONE))
115
115
  end
116
116
  end
117
117
 
@@ -33,7 +33,7 @@ module OpenHAB
33
33
  #
34
34
  #
35
35
  def command(command)
36
- command = command.to_java.strip_trailing_zeros if command.is_a? BigDecimal
36
+ command = command.to_java.strip_trailing_zeros.to_plain_string if command.is_a? BigDecimal
37
37
  logger.trace "Sending Command #{command} to #{id}"
38
38
  BusEvent.sendCommand(self, command.to_s)
39
39
  end
@@ -47,6 +47,7 @@ module OpenHAB
47
47
  #
48
48
  #
49
49
  def update(update)
50
+ update = update.to_java.strip_trailing_zeros.to_plain_string if update.is_a? BigDecimal
50
51
  logger.trace "Sending Update #{update} to #{id}"
51
52
  BusEvent.postUpdate(self, update.to_s)
52
53
  end
@@ -10,6 +10,7 @@ module OpenHAB
10
10
  #
11
11
  module Types
12
12
  java_import Java::OrgOpenhabCoreLibraryTypes::DecimalType
13
+ java_import org.openhab.core.types.util.UnitUtils
13
14
 
14
15
  #
15
16
  # MonkeyPatching Decimal Type
@@ -72,7 +73,7 @@ module OpenHAB
72
73
  # @return [OpenHAB::Core::DSL::Types::Quantity] NumberItem converted to supplied Unit
73
74
  #
74
75
  def |(other)
75
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
76
+ other = UnitUtils.parse_unit(other) if other.is_a? String
76
77
  Quantity.new(QuantityType.new(to_big_decimal, other))
77
78
  end
78
79
 
@@ -48,7 +48,8 @@ module OpenHAB
48
48
  # @return [StateStorage] item states
49
49
  #
50
50
  def store_states(*items)
51
- states = StateStorage.new(BusEvent.storeStates(*items.flatten).to_h)
51
+ items = items.flatten.map { |item| item.respond_to?(:oh_item) ? item.oh_item : item }
52
+ states = StateStorage.new(BusEvent.storeStates(*items).to_h)
52
53
  if block_given?
53
54
  yield
54
55
  states.restore
@@ -23,8 +23,8 @@ module OpenHAB
23
23
 
24
24
  java_import org.openhab.core.library.types.QuantityType
25
25
  java_import org.openhab.core.library.types.DecimalType
26
- java_import 'tec.uom.se.format.SimpleUnitFormat'
27
- java_import 'tec.uom.se.AbstractUnit'
26
+ java_import org.openhab.core.types.util.UnitUtils
27
+ java_import org.openhab.core.library.unit.Units
28
28
 
29
29
  # @return [Hash] Mapping of operation symbols to BigDecimal methods
30
30
  OPERATIONS = {
@@ -48,7 +48,7 @@ module OpenHAB
48
48
  @quantity = case quantity
49
49
  when String then QuantityType.new(quantity)
50
50
  when QuantityType then quantity
51
- when NumberItem, Numeric then QuantityType.new(quantity.to_d.to_java, AbstractUnit::ONE)
51
+ when NumberItem, Numeric then QuantityType.new(quantity.to_d.to_java, Units::ONE)
52
52
  else raise ArgumentError, "Unexpected type #{quantity.class} provided to Quantity initializer"
53
53
  end
54
54
  super()
@@ -62,7 +62,7 @@ module OpenHAB
62
62
  # @return [Quantity] This quantity converted to another unit
63
63
  #
64
64
  def |(other)
65
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
65
+ other = UnitUtils.parse_unit(other) if other.is_a? String
66
66
 
67
67
  Quantity.new(quantity.to_unit(other))
68
68
  end
@@ -164,7 +164,7 @@ module OpenHAB
164
164
  # @return [String] Representing details about the quantity object
165
165
  #
166
166
  def inspect
167
- if @quantity.unit == AbstractUnit::ONE
167
+ if @quantity.unit == Units::ONE
168
168
  "unit=#{@quantity.unit}, value=#{@quantity.to_string}"
169
169
  else
170
170
  @quantity.to_string
@@ -198,7 +198,7 @@ module OpenHAB
198
198
  # @return [Boolean] True if the quantity should be unitzed based on the unit and operation, false otherwise
199
199
  #
200
200
  def unitize?(quantity, operation)
201
- !(quantity.unit == AbstractUnit::ONE && DIMENSIONLESS_NON_UNITIZED_OPERATIONS.include?(operation))
201
+ !(quantity.unit == Units::ONE && DIMENSIONLESS_NON_UNITIZED_OPERATIONS.include?(operation))
202
202
  end
203
203
 
204
204
  #
@@ -214,7 +214,7 @@ module OpenHAB
214
214
  case quantity.unit
215
215
  when unit
216
216
  quantity
217
- when AbstractUnit::ONE
217
+ when Units::ONE
218
218
  convert_unit_from_dimensionless(quantity, unit)
219
219
  else
220
220
  convert_unit_from_dimensioned(quantity, unit)
@@ -263,7 +263,12 @@ module OpenHAB
263
263
  def unitize(quantity_a, quantity_b, operation = nil)
264
264
  logger.trace("Unitizing (#{quantity_a}) and (#{quantity_b})")
265
265
  quantity_a, quantity_b = [quantity_a, quantity_b].map do |qt|
266
- unitize?(qt, operation) ? convert_unit(qt) : qt
266
+ unitize?(qt, operation) ? convert_unit(qt) : qt.to_big_decimal
267
+ end
268
+
269
+ # Make sure the operation is called on the QuantityType
270
+ if quantity_a.is_a?(Java::JavaMath::BigDecimal) && quantity_b.is_a?(QuantityType) && operation == '*'
271
+ quantity_a, quantity_b = [quantity_b, quantity_a]
267
272
  end
268
273
  return yield quantity_a, quantity_b if block_given?
269
274
 
@@ -10,6 +10,7 @@ end
10
10
 
11
11
  Object.send(:remove_const, :QuantityType)
12
12
  java_import org.openhab.core.library.types.QuantityType
13
+ java_import org.openhab.core.types.util.UnitUtils
13
14
 
14
15
  module OpenHAB
15
16
  module DSL
@@ -17,8 +18,6 @@ module OpenHAB
17
18
  # Provides support for interacting with OpenHAB Units of Measurement
18
19
  #
19
20
  module Units
20
- java_import 'tec.uom.se.format.SimpleUnitFormat'
21
-
22
21
  #
23
22
  # Sets a thread local variable to the supplied unit such that classes operating inside the block
24
23
  # can perform automatic conversions to the supplied unit for NumberItems
@@ -28,7 +27,7 @@ module OpenHAB
28
27
  #
29
28
  #
30
29
  def unit(unit)
31
- unit = SimpleUnitFormat.instance.unitFor(unit) if unit.is_a? String
30
+ unit = UnitUtils.parse_unit(unit) if unit.is_a? String
32
31
  Thread.current.thread_variable_set(:unit, unit)
33
32
  yield
34
33
  ensure
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '3.4.3'
8
+ VERSION = '3.6.3'
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: 3.4.3
4
+ version: 3.6.3
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: 2021-05-20 00:00:00.000000000 Z
11
+ date: 2021-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler