openhab-scripting 4.21.0 → 4.23.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 +4 -4
- data/lib/openhab/dsl/items/color_item.rb +41 -0
- data/lib/openhab/dsl/items/date_time_item.rb +3 -0
- data/lib/openhab/dsl/items/timed_command.rb +1 -1
- data/lib/openhab/dsl/time/month_day.rb +8 -2
- data/lib/openhab/dsl/types/hsb_type.rb +1 -1
- data/lib/openhab/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a1dda09cc4876b335d5da064fa1e19a1196f56d030225e96f6c6efe0c22d3f6
|
4
|
+
data.tar.gz: 23cac17429e99d6757db5f7232e53f8d77a656fb9bfb15d2ee4984fde63d691c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e473c9f0e2764d041613fd728377895430e790846986d3aca9b508f1ef3c0999c72473402cc0094d42c866871fa3161daeb0d4eedc3173b5485e9e33ab9f979
|
7
|
+
data.tar.gz: fdddf783a82f71c0e1364f47f8397daa394ded4935bd16f7746000f9c6f466db074000a2bf065ee1f1daf05f43f1fa1a3d94db3169144cadc7cb2114b5a96a36
|
@@ -48,10 +48,51 @@ module OpenHAB
|
|
48
48
|
# convert it to an HSBType
|
49
49
|
# @!visibility private
|
50
50
|
def format_type(command)
|
51
|
+
return format_hash(command.to_hash) if command.respond_to?(:to_hash)
|
51
52
|
return Types::HSBType.new(command) if command.respond_to?(:to_str)
|
52
53
|
|
53
54
|
super
|
54
55
|
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# Convert the ColorItem to a hash
|
59
|
+
# @param [:hsb, :rgb] format for hash
|
60
|
+
# @return [Hash] in requested format
|
61
|
+
def to_h(format = :hsb)
|
62
|
+
values = to_a(format)
|
63
|
+
keys = (format == :hsb ? %i[hue saturation brightness] : %i[red green blue])
|
64
|
+
keys.zip(values).to_h
|
65
|
+
end
|
66
|
+
|
67
|
+
#
|
68
|
+
# Convert the ColorItem to an array of values
|
69
|
+
# @param [:hsb, :rgb] format for elements in the array
|
70
|
+
# @return [Array] of ColorItem components in requested format
|
71
|
+
def to_a(format = :hsb)
|
72
|
+
case format
|
73
|
+
when :hsb then [hue, saturation, brightness]
|
74
|
+
when :rgb then [red, green, blue].map(&:to_byte)
|
75
|
+
else
|
76
|
+
raise ArgumentError, "Unsupported format #{format}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
# Mapping of hash values sets to conversion methods
|
83
|
+
HASH_KEYS = { %i[r g b] => :from_rgb,
|
84
|
+
%i[red green blue] => :from_rgb,
|
85
|
+
%i[h s b] => :from_hsb,
|
86
|
+
%i[hue saturation brightness] => :from_hsb }.freeze
|
87
|
+
|
88
|
+
def format_hash(hash)
|
89
|
+
hash = hash.transform_keys(&:to_sym)
|
90
|
+
HASH_KEYS.each do |key_set, method|
|
91
|
+
values = hash.values_at(*key_set).compact
|
92
|
+
return Types::HSBType.public_send(method, *values) if values.length == 3
|
93
|
+
end
|
94
|
+
raise ArgumentError, "Supplied hash (#{hash}) must contain one of the following keysets #{keys.keys}"
|
95
|
+
end
|
55
96
|
end
|
56
97
|
end
|
57
98
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
4
|
require 'time'
|
5
|
+
require 'java'
|
5
6
|
|
6
7
|
require 'openhab/dsl/items/comparable_item'
|
7
8
|
|
@@ -9,6 +10,7 @@ module OpenHAB
|
|
9
10
|
module DSL
|
10
11
|
module Items
|
11
12
|
java_import org.openhab.core.library.items.DateTimeItem
|
13
|
+
java_import java.time.format.DateTimeFormatter
|
12
14
|
|
13
15
|
# Adds methods to core OpenHAB DateTimeItem type to make it more natural
|
14
16
|
# in Ruby
|
@@ -53,6 +55,7 @@ module OpenHAB
|
|
53
55
|
# @!visibility private
|
54
56
|
def format_type(command)
|
55
57
|
return command.iso8601 if command.respond_to?(:iso8601)
|
58
|
+
return DateTimeFormatter::ISO_OFFSET_DATE_TIME.format(command) if command.is_a? java.time.ZonedDateTime
|
56
59
|
|
57
60
|
super
|
58
61
|
end
|
@@ -152,7 +152,7 @@ module OpenHAB
|
|
152
152
|
@thread_locals = Thread.current[:RULE_NAME] ? { RULE_NAME: Thread.current[:RULE_NAME] } : {}
|
153
153
|
set_name("Cancels implicit timer for #{timed_command_details.item.id}")
|
154
154
|
set_triggers([OpenHAB::DSL::Rules::Triggers::Trigger.trigger(
|
155
|
-
type: OpenHAB::DSL::Rules::Triggers::Trigger::
|
155
|
+
type: OpenHAB::DSL::Rules::Triggers::Trigger::ITEM_STATE_CHANGE,
|
156
156
|
config: { 'itemName' => timed_command_details.item.name }
|
157
157
|
)])
|
158
158
|
end
|
@@ -107,10 +107,13 @@ module OpenHAB
|
|
107
107
|
# Extend MonthDay java object with some helper methods
|
108
108
|
class MonthDay
|
109
109
|
include OpenHAB::Log
|
110
|
+
java_import java.time.format.DateTimeFormatter
|
110
111
|
# Parse MonthDay string as defined with by Monthday class without leading double dash "--"
|
111
112
|
def self.parse(string)
|
112
|
-
|
113
|
-
java_send :parse, [java.lang.CharSequence],
|
113
|
+
logger.trace("#{self.class}.parse #{string} (#{string.class})")
|
114
|
+
java_send :parse, [java.lang.CharSequence, java.time.format.DateTimeFormatter],
|
115
|
+
string.to_s,
|
116
|
+
DateTimeFormatter.ofPattern('[--]M-d')
|
114
117
|
end
|
115
118
|
|
116
119
|
# Can the supplied object be parsed into a MonthDay
|
@@ -123,6 +126,9 @@ module OpenHAB
|
|
123
126
|
to_string.delete_prefix('--')
|
124
127
|
end
|
125
128
|
|
129
|
+
# remove the inherited #== method to use our <=> below
|
130
|
+
remove_method :==
|
131
|
+
|
126
132
|
# Extends MonthDay comparison to support Strings
|
127
133
|
# Necessary to support mixed ranges of Strings and MonthDay types
|
128
134
|
# @return [Number, nil] -1,0,1 if other MonthDay is less than, equal to, or greater than this MonthDay
|
@@ -47,7 +47,7 @@ module OpenHAB
|
|
47
47
|
# @param saturation [PercentType, Numeric] Saturation component (0-100%)
|
48
48
|
# @param brightness [PercentType, Numeric] Brightness component (0-100%)
|
49
49
|
# @return [HSBType]
|
50
|
-
def
|
50
|
+
def from_hsb(hue, saturation, brightness)
|
51
51
|
new(hue, saturation, brightness)
|
52
52
|
end
|
53
53
|
|
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.23.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: 2021-12-
|
11
|
+
date: 2021-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|