openhab-scripting 4.1.4 → 4.5.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/core/entity_lookup.rb +1 -57
- data/lib/openhab/dsl/actions.rb +2 -3
- data/lib/openhab/dsl/dsl.rb +8 -12
- data/lib/openhab/dsl/group.rb +1 -5
- data/lib/openhab/dsl/items/color_item.rb +60 -0
- data/lib/openhab/dsl/items/comparable_item.rb +49 -0
- data/lib/openhab/dsl/items/contact_item.rb +41 -0
- data/lib/openhab/dsl/items/date_time_item.rb +64 -0
- data/lib/openhab/dsl/items/dimmer_item.rb +59 -0
- data/lib/openhab/dsl/items/ensure.rb +93 -0
- data/lib/openhab/dsl/items/generic_item.rb +174 -0
- data/lib/openhab/dsl/items/group_item.rb +121 -89
- data/lib/openhab/dsl/items/image_item.rb +5 -41
- data/lib/openhab/dsl/items/item_equality.rb +36 -0
- data/lib/openhab/dsl/items/item_registry.rb +49 -0
- data/lib/openhab/dsl/items/items.rb +81 -35
- data/lib/openhab/dsl/items/metadata.rb +325 -0
- data/lib/openhab/dsl/items/number_item.rb +6 -312
- data/lib/openhab/dsl/items/numeric_item.rb +68 -0
- data/lib/openhab/dsl/items/persistence.rb +122 -0
- data/lib/openhab/dsl/items/player_item.rb +49 -40
- data/lib/openhab/dsl/items/rollershutter_item.rb +25 -77
- data/lib/openhab/dsl/items/string_item.rb +16 -58
- data/lib/openhab/dsl/items/switch_item.rb +62 -0
- data/lib/openhab/dsl/lazy_array.rb +8 -6
- data/lib/openhab/dsl/monkey_patch/events/events.rb +2 -2
- data/lib/openhab/dsl/monkey_patch/events/item_command.rb +67 -24
- data/lib/openhab/dsl/monkey_patch/events/item_event.rb +5 -5
- data/lib/openhab/dsl/monkey_patch/events/item_state.rb +10 -11
- data/lib/openhab/dsl/monkey_patch/events/item_state_changed.rb +10 -11
- data/lib/openhab/dsl/monkey_patch/ruby/number.rb +25 -2
- data/lib/openhab/dsl/monkey_patch/ruby/ruby.rb +0 -3
- data/lib/openhab/dsl/monkey_patch/ruby/string.rb +24 -24
- data/lib/openhab/dsl/rules/terse.rb +24 -0
- data/lib/openhab/dsl/states.rb +1 -1
- data/lib/openhab/dsl/time_of_day.rb +3 -5
- data/lib/openhab/dsl/types/comparable_type.rb +21 -0
- data/lib/openhab/dsl/types/date_time_type.rb +334 -0
- data/lib/openhab/dsl/types/decimal_type.rb +187 -0
- data/lib/openhab/dsl/types/hsb_type.rb +201 -0
- data/lib/openhab/dsl/types/increase_decrease_type.rb +23 -0
- data/lib/openhab/dsl/types/next_previous_type.rb +23 -0
- data/lib/openhab/dsl/types/numeric_type.rb +39 -0
- data/lib/openhab/dsl/types/on_off_type.rb +29 -0
- data/lib/openhab/dsl/types/open_closed_type.rb +29 -0
- data/lib/openhab/dsl/types/percent_type.rb +70 -0
- data/lib/openhab/dsl/types/play_pause_type.rb +27 -0
- data/lib/openhab/dsl/types/quantity_type.rb +275 -0
- data/lib/openhab/dsl/types/refresh_type.rb +18 -0
- data/lib/openhab/dsl/types/rewind_fastforward_type.rb +33 -0
- data/lib/openhab/dsl/types/stop_move_type.rb +23 -0
- data/lib/openhab/dsl/types/string_type.rb +88 -0
- data/lib/openhab/dsl/types/type.rb +72 -0
- data/lib/openhab/dsl/types/types.rb +78 -0
- data/lib/openhab/dsl/types/un_def_type.rb +22 -0
- data/lib/openhab/dsl/types/up_down_type.rb +32 -0
- data/lib/openhab/dsl/units.rb +11 -6
- data/lib/openhab/version.rb +1 -1
- data/lib/openhab.rb +0 -1
- metadata +36 -28
- data/lib/openhab/dsl/items/datetime_item.rb +0 -75
- data/lib/openhab/dsl/items/item_command.rb +0 -90
- data/lib/openhab/dsl/items/item_delegate.rb +0 -125
- data/lib/openhab/dsl/monkey_patch/items/contact_item.rb +0 -51
- data/lib/openhab/dsl/monkey_patch/items/dimmer_item.rb +0 -140
- data/lib/openhab/dsl/monkey_patch/items/items.rb +0 -142
- data/lib/openhab/dsl/monkey_patch/items/metadata.rb +0 -328
- data/lib/openhab/dsl/monkey_patch/items/persistence.rb +0 -123
- data/lib/openhab/dsl/monkey_patch/items/switch_item.rb +0 -71
- data/lib/openhab/dsl/monkey_patch/ruby/range.rb +0 -47
- data/lib/openhab/dsl/monkey_patch/ruby/time.rb +0 -32
- data/lib/openhab/dsl/monkey_patch/types/decimal_type.rb +0 -97
- data/lib/openhab/dsl/monkey_patch/types/increase_decrease_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/next_previous_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/on_off_type.rb +0 -79
- data/lib/openhab/dsl/monkey_patch/types/open_closed_type.rb +0 -71
- data/lib/openhab/dsl/monkey_patch/types/percent_type.rb +0 -77
- data/lib/openhab/dsl/monkey_patch/types/play_pause_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/quantity_type.rb +0 -69
- data/lib/openhab/dsl/monkey_patch/types/refresh_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/rewind_fastforward_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/stop_move_type.rb +0 -23
- data/lib/openhab/dsl/monkey_patch/types/types.rb +0 -15
- data/lib/openhab/dsl/monkey_patch/types/up_down_type.rb +0 -72
- data/lib/openhab/dsl/types/datetime.rb +0 -338
- data/lib/openhab/dsl/types/quantity.rb +0 -300
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'percent_type'
|
|
4
|
+
|
|
5
|
+
module OpenHAB
|
|
6
|
+
module DSL
|
|
7
|
+
module Types
|
|
8
|
+
java_import org.openhab.core.library.types.HSBType
|
|
9
|
+
|
|
10
|
+
# global alias
|
|
11
|
+
::HSBType = HSBType
|
|
12
|
+
|
|
13
|
+
# Adds methods to core OpenHAB HSBType to make it more natural in Ruby
|
|
14
|
+
class HSBType < PercentType
|
|
15
|
+
# @!parse BLACK = BLACK # @return [HSBType]
|
|
16
|
+
# @!parse WHITE = WHITE # @return [HSBType]
|
|
17
|
+
# @!parse RED = RED # @return [HSBType]
|
|
18
|
+
# @!parse GREEN = GREEN # @return [HSBType]
|
|
19
|
+
# @!parse BLUE = BLUE # @return [HSBType]
|
|
20
|
+
|
|
21
|
+
# conversion to QuantityType doesn't make sense on HSBType
|
|
22
|
+
undef_method :|
|
|
23
|
+
|
|
24
|
+
remove_method :==
|
|
25
|
+
|
|
26
|
+
# r, g, b as an array of symbols
|
|
27
|
+
RGB_KEYS = %i[r g b].freeze
|
|
28
|
+
private_constant :RGB_KEYS
|
|
29
|
+
|
|
30
|
+
class << self
|
|
31
|
+
# @!method from_rgb(r, g, b)
|
|
32
|
+
# Create HSBType from RGB values
|
|
33
|
+
# @param r [Integer] Red component (0-255)
|
|
34
|
+
# @param g [Integer] Green component (0-255)
|
|
35
|
+
# @param b [Integer] Blue component (0-255)
|
|
36
|
+
# @return [HSBType]
|
|
37
|
+
|
|
38
|
+
# @!method from_xy(x, y)
|
|
39
|
+
# Create HSBType representing the provided xy color values in CIE XY color model
|
|
40
|
+
# @param x [Float]
|
|
41
|
+
# @param y [Float]
|
|
42
|
+
# @return [HSBType]
|
|
43
|
+
|
|
44
|
+
# Create HSBType from hue, saturation, and brightness values
|
|
45
|
+
# @param hue [DecimalType, QuantityType, Numeric] Hue component (0-360º)
|
|
46
|
+
# @param saturation [PercentType, Numeric] Saturation component (0-100%)
|
|
47
|
+
# @param brightness [PercentType, Numeric] Brightness component (0-100%)
|
|
48
|
+
# @return [HSBType]
|
|
49
|
+
def from_hsv(hue, saturation, brightness)
|
|
50
|
+
new(hue, saturation, brightness)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# add additional "overloads" to the constructor
|
|
54
|
+
# @!visibility private
|
|
55
|
+
def new(*args) # rubocop:disable Metrics
|
|
56
|
+
if args.length == 1 && args.first.respond_to?(:to_str)
|
|
57
|
+
value = args.first.to_str
|
|
58
|
+
|
|
59
|
+
# parse some formats OpenHAB doesn't understand
|
|
60
|
+
# in this case, HTML hex format for rgb
|
|
61
|
+
if (match = value.match(/^#(\h{2})(\h{2})(\h{2})$/))
|
|
62
|
+
rgb = match.to_a[1..3].map { |v| v.to_i(16) }
|
|
63
|
+
logger.trace("creating from rgb #{rgb.inspect}")
|
|
64
|
+
return from_rgb(*rgb)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
return super unless args.length == 3
|
|
69
|
+
|
|
70
|
+
# convert from several numeric-like types to the exact types
|
|
71
|
+
# OpenHAB needs
|
|
72
|
+
hue = args[0]
|
|
73
|
+
args[0] = if hue.is_a?(DecimalType)
|
|
74
|
+
hue
|
|
75
|
+
elsif hue.is_a?(QuantityType)
|
|
76
|
+
DecimalType.new(hue.to_unit(::Units::DEGREE_ANGLE).to_big_decimal)
|
|
77
|
+
elsif hue.respond_to?(:to_d)
|
|
78
|
+
DecimalType.new(hue)
|
|
79
|
+
end
|
|
80
|
+
args[1..2] = args[1..2].map do |v|
|
|
81
|
+
if v.is_a?(PercentType)
|
|
82
|
+
v
|
|
83
|
+
elsif v.respond_to?(:to_d)
|
|
84
|
+
PercentType.new(v)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
super(*args)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
#
|
|
93
|
+
# Comparison
|
|
94
|
+
#
|
|
95
|
+
# @param [NumericType, Items::NumericItem, Items::ColorItem, Numeric, String]
|
|
96
|
+
# other object to compare to
|
|
97
|
+
#
|
|
98
|
+
# @return [Integer, nil] -1, 0, +1 depending on whether +other+ is
|
|
99
|
+
# less than, equal to, or greater than self
|
|
100
|
+
#
|
|
101
|
+
# nil is returned if the two values are incomparable
|
|
102
|
+
#
|
|
103
|
+
def <=>(other)
|
|
104
|
+
logger.trace("(#{self.class}) #{self} <=> #{other} (#{other.class})")
|
|
105
|
+
if other.is_a?(Items::ColorItem) ||
|
|
106
|
+
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(ColorItem))
|
|
107
|
+
return false unless other.state?
|
|
108
|
+
|
|
109
|
+
self <=> other.state
|
|
110
|
+
elsif other.respond_to?(:to_str)
|
|
111
|
+
self <=> HSBType.new(other)
|
|
112
|
+
else
|
|
113
|
+
super
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
#
|
|
118
|
+
# Type Coercion
|
|
119
|
+
#
|
|
120
|
+
# Coerce object to a HSBType
|
|
121
|
+
#
|
|
122
|
+
# @param [NumericType, Items::NumericItem, Items::ColorItem, Numeric, String]
|
|
123
|
+
# other object to coerce to a HSBType
|
|
124
|
+
#
|
|
125
|
+
# @return [[HSBType, HSBType]]
|
|
126
|
+
#
|
|
127
|
+
def coerce(other)
|
|
128
|
+
logger.trace("Coercing #{self} as a request from #{other.class}")
|
|
129
|
+
if other.is_a?(Items::NumericItem) ||
|
|
130
|
+
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
131
|
+
raise TypeError, "can't convert #{UnDefType} into #{self.class}" unless other.state?
|
|
132
|
+
|
|
133
|
+
[other.state, self]
|
|
134
|
+
elsif other.respond_to?(:to_str)
|
|
135
|
+
[HSBType.new(other.to_str), self]
|
|
136
|
+
else
|
|
137
|
+
super
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# rename raw methods so we can overwrite them
|
|
142
|
+
# @!visibility private
|
|
143
|
+
alias raw_hue hue
|
|
144
|
+
|
|
145
|
+
# @!attribute [r] hue
|
|
146
|
+
# @return [QuantityType]
|
|
147
|
+
def hue
|
|
148
|
+
QuantityType.new(raw_hue.to_big_decimal, ::Units::DEGREE_ANGLE)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Convert to a packed 32-bit RGB value representing the color in the default sRGB color model.
|
|
152
|
+
#
|
|
153
|
+
# The alpha component is always 100%.
|
|
154
|
+
#
|
|
155
|
+
# @return [Integer]
|
|
156
|
+
alias argb rgb
|
|
157
|
+
|
|
158
|
+
# Convert to a packed 24-bit RGB value representing the color in the default sRGB color model.
|
|
159
|
+
# @return [Integer]
|
|
160
|
+
def rgb
|
|
161
|
+
argb & 0xffffff
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# Convert to an HTML-style string of 6 hex characters in the default sRGB color model.
|
|
165
|
+
# @return [String] +'#xxxxxx'+
|
|
166
|
+
def to_hex
|
|
167
|
+
Kernel.format('#%06x', rgb)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# include units
|
|
171
|
+
# @!visibility private
|
|
172
|
+
def to_s
|
|
173
|
+
"#{hue},#{saturation},#{brightness}"
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# @!attribute [r] saturation
|
|
177
|
+
# @return [PercentType]
|
|
178
|
+
|
|
179
|
+
# @!attribute [r] brightness
|
|
180
|
+
# @return [PercentType]
|
|
181
|
+
|
|
182
|
+
# @!attribute [r] red
|
|
183
|
+
# @return [PercentType]
|
|
184
|
+
|
|
185
|
+
# @!attribute [r] green
|
|
186
|
+
# @return [PercentType]
|
|
187
|
+
|
|
188
|
+
# @!attribute [r] blue
|
|
189
|
+
# @return [PercentType]
|
|
190
|
+
|
|
191
|
+
# @!method to_rgb
|
|
192
|
+
# Convert to RGB values representing the color in the default sRGB color model
|
|
193
|
+
# @return [[PercentType, PercentType, PercentType]]
|
|
194
|
+
|
|
195
|
+
# @!method to_xy
|
|
196
|
+
# Convert to the xyY values representing this object's color in CIE XY color model
|
|
197
|
+
# @return [[PercentType, PercentType]]
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenHAB
|
|
4
|
+
module DSL
|
|
5
|
+
module Types
|
|
6
|
+
java_import org.openhab.core.library.types.IncreaseDecreaseType
|
|
7
|
+
|
|
8
|
+
# Adds methods to core OpenHAB IncreaseDecreaseType to make it more
|
|
9
|
+
# natural in Ruby
|
|
10
|
+
class IncreaseDecreaseType # rubocop:disable Lint/EmptyClass
|
|
11
|
+
# @!parse include Type
|
|
12
|
+
|
|
13
|
+
# @!method increase?
|
|
14
|
+
# Check if == +INCREASE+
|
|
15
|
+
# @return [Boolean]
|
|
16
|
+
|
|
17
|
+
# @!method decrease?
|
|
18
|
+
# Check if == +DECREASE+
|
|
19
|
+
# @return [Boolean]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenHAB
|
|
4
|
+
module DSL
|
|
5
|
+
module Types
|
|
6
|
+
java_import org.openhab.core.library.types.NextPreviousType
|
|
7
|
+
|
|
8
|
+
# Adds methods to core OpenHAB NextPreviousType to make it more
|
|
9
|
+
# natural in Ruby
|
|
10
|
+
class NextPreviousType # rubocop:disable Lint/EmptyClass
|
|
11
|
+
# @!parse include Type
|
|
12
|
+
|
|
13
|
+
# @!method next?
|
|
14
|
+
# Check if == +NEXT+
|
|
15
|
+
# @return [Boolean]
|
|
16
|
+
|
|
17
|
+
# @!method previous?
|
|
18
|
+
# Check if == +PREVIOUS+
|
|
19
|
+
# @return [Boolean]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'bigdecimal'
|
|
4
|
+
require 'forwardable'
|
|
5
|
+
|
|
6
|
+
module OpenHAB
|
|
7
|
+
module DSL
|
|
8
|
+
module Types
|
|
9
|
+
# Mixin for methods common to DecimalType and QuantityType
|
|
10
|
+
module NumericType
|
|
11
|
+
# apply meta-programming to including class
|
|
12
|
+
def self.included(klass)
|
|
13
|
+
klass.extend Forwardable
|
|
14
|
+
|
|
15
|
+
klass.delegate %i[to_d zero?] => :to_big_decimal
|
|
16
|
+
klass.delegate %i[positive? negative? to_f to_i to_int hash] => :to_d
|
|
17
|
+
# remove the JRuby default == so that we can inherit the Ruby method
|
|
18
|
+
klass.remove_method :==
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# Check equality without type conversion
|
|
23
|
+
#
|
|
24
|
+
# @return [Boolean] if the same value is represented, without type
|
|
25
|
+
# conversion
|
|
26
|
+
def eql?(other)
|
|
27
|
+
return false unless other.instance_of?(self.class)
|
|
28
|
+
|
|
29
|
+
compare_to(other).zero?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Unary plus
|
|
33
|
+
def +@
|
|
34
|
+
self
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenHAB
|
|
4
|
+
module DSL
|
|
5
|
+
module Types
|
|
6
|
+
java_import org.openhab.core.library.types.OnOffType
|
|
7
|
+
|
|
8
|
+
# Adds methods to core OpenHAB OnOffType to make it more natural in Ruby
|
|
9
|
+
class OnOffType
|
|
10
|
+
# @!parse include Type
|
|
11
|
+
|
|
12
|
+
# @!method on?
|
|
13
|
+
# Check if == +ON+
|
|
14
|
+
# @return [Boolean]
|
|
15
|
+
|
|
16
|
+
# @!method off?
|
|
17
|
+
# Check if == +OFF+
|
|
18
|
+
# @return [Boolean]
|
|
19
|
+
|
|
20
|
+
# Invert the type
|
|
21
|
+
# @return [OnOffType] +OFF+ if +ON+, +ON+ if +OFF+
|
|
22
|
+
def !
|
|
23
|
+
return OFF if on?
|
|
24
|
+
return ON if off?
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenHAB
|
|
4
|
+
module DSL
|
|
5
|
+
module Types
|
|
6
|
+
java_import org.openhab.core.library.types.OpenClosedType
|
|
7
|
+
|
|
8
|
+
# Adds methods to core OpenHAB OpenClosedType to make it more natural in Ruby
|
|
9
|
+
class OpenClosedType
|
|
10
|
+
# @!parse include Type
|
|
11
|
+
|
|
12
|
+
# @!method open?
|
|
13
|
+
# Check if == +OPEN+
|
|
14
|
+
# @return [Boolean]
|
|
15
|
+
|
|
16
|
+
# @!method closed?
|
|
17
|
+
# Check if == +CLOSED+
|
|
18
|
+
# @return [Boolean]
|
|
19
|
+
|
|
20
|
+
# Invert the type
|
|
21
|
+
# @return [OpenClosedType] +OPEN+ if +CLOSED+, +CLOSED+ if +OPEN+
|
|
22
|
+
def !
|
|
23
|
+
return OPEN if open?
|
|
24
|
+
return CLOSED if closed?
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'decimal_type'
|
|
4
|
+
|
|
5
|
+
module OpenHAB
|
|
6
|
+
module DSL
|
|
7
|
+
module Types
|
|
8
|
+
java_import org.openhab.core.library.types.PercentType
|
|
9
|
+
|
|
10
|
+
# global alias
|
|
11
|
+
::PercentType = PercentType
|
|
12
|
+
|
|
13
|
+
# Adds methods to core OpenHAB PercentType to make it more natural in Ruby
|
|
14
|
+
class PercentType < DecimalType
|
|
15
|
+
# remove the JRuby default == so that we can inherit the Ruby method
|
|
16
|
+
remove_method :==
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Check if +ON+
|
|
20
|
+
#
|
|
21
|
+
# Note that +ON+ is defined as any value besides 0%.
|
|
22
|
+
#
|
|
23
|
+
# @return [Boolean]
|
|
24
|
+
#
|
|
25
|
+
def on?
|
|
26
|
+
as(OnOffType).on?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
#
|
|
30
|
+
# Check if +OFF+
|
|
31
|
+
#
|
|
32
|
+
# Note that +OFF+ is defined as 0% exactly.
|
|
33
|
+
#
|
|
34
|
+
# @return [Boolean]
|
|
35
|
+
#
|
|
36
|
+
def off?
|
|
37
|
+
as(OnOffType).off?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
#
|
|
41
|
+
# Check if +UP+
|
|
42
|
+
#
|
|
43
|
+
# Note that +UP+ is defined as 0% exactly.
|
|
44
|
+
#
|
|
45
|
+
# @return [Boolean]
|
|
46
|
+
#
|
|
47
|
+
def up?
|
|
48
|
+
!!as(UpDownType)&.up?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# Check if +DOWN+
|
|
53
|
+
#
|
|
54
|
+
# Note that +DOWN+ is defined as 100% exactly.
|
|
55
|
+
#
|
|
56
|
+
# @return [Boolean]
|
|
57
|
+
#
|
|
58
|
+
def down?
|
|
59
|
+
!!as(UpDownType)&.down?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# include the %
|
|
63
|
+
# @!visibility private
|
|
64
|
+
def to_s
|
|
65
|
+
"#{to_string}%"
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenHAB
|
|
4
|
+
module DSL
|
|
5
|
+
module Types
|
|
6
|
+
java_import org.openhab.core.library.types.PlayPauseType
|
|
7
|
+
|
|
8
|
+
# Adds methods to core OpenHAB PlayPauseType to make it more
|
|
9
|
+
# natural in Ruby
|
|
10
|
+
class PlayPauseType # rubocop:disable Lint/EmptyClass
|
|
11
|
+
# @!parse include Type
|
|
12
|
+
|
|
13
|
+
# @!method playing?
|
|
14
|
+
# Check if == +PLAY+
|
|
15
|
+
# @return [Boolean]
|
|
16
|
+
|
|
17
|
+
# @!parse alias play? playing?
|
|
18
|
+
|
|
19
|
+
# @!method paused?
|
|
20
|
+
# Check if == +PAUSE+
|
|
21
|
+
# @return [Boolean]
|
|
22
|
+
|
|
23
|
+
# @!parse alias pause? paused?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|