openhab-scripting 2.19.2 → 2.20.3
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/item_command.rb +57 -0
- data/lib/openhab/dsl/items/rollershutter_item.rb +6 -46
- data/lib/openhab/dsl/monkey_patch/items/contact_item.rb +5 -17
- data/lib/openhab/dsl/monkey_patch/items/items.rb +2 -2
- data/lib/openhab/dsl/monkey_patch/items/metadata.rb +12 -0
- data/lib/openhab/dsl/monkey_patch/items/switch_item.rb +7 -32
- data/lib/openhab/dsl/monkey_patch/ruby/string.rb +1 -1
- data/lib/openhab/dsl/rules/automation_rule.rb +3 -3
- data/lib/openhab/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61465187d78f8e9a3d7ad5aeec2fab9ebd8875b1799397fa0d47ef2bfae50e6b
|
4
|
+
data.tar.gz: c5d76638ae55a32c23d582dd637b0dd511d22e2dd20c23c8c920e1799f310379
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a568a92846ef850d66d04b197cf1124d567c177aa2054dac42b9171528c0f5ae8f7ace8f87197c854392c870dfbb3a639f6d764149ace7ed9ab24d2f20d0080
|
7
|
+
data.tar.gz: 11a98624829df60763fc27d79f2e3f1de6766080fcd7c4b24d6a4eb5fb9bb442c6ba6345eb99d253083e95913eee8aa6f7b524d67b8ed3195d78960c5d55338b
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'java'
|
4
|
+
|
5
|
+
module OpenHAB
|
6
|
+
module DSL
|
7
|
+
module Items
|
8
|
+
#
|
9
|
+
# Holds methods to automatically generate commands and
|
10
|
+
# accessors for items
|
11
|
+
module ItemCommand
|
12
|
+
#
|
13
|
+
# For every value in the supplied enumeration create a corresponding method mapped to the lowercase
|
14
|
+
# string representation of the enum value For example, an enum with values of STOP and START
|
15
|
+
# would create methods stop() and start() that send the corresponding STOP and START commands to the item
|
16
|
+
#
|
17
|
+
# @param [Java::JavaLang::Enum] command_enum Enumeration to create commands for
|
18
|
+
#
|
19
|
+
#
|
20
|
+
def item_command(command_enum)
|
21
|
+
# rubocop:disable Style/HashEachMethods
|
22
|
+
# Disable rule because Java enum does not support each_value
|
23
|
+
command_enum.values.each do |command|
|
24
|
+
command_method = command.to_s.downcase
|
25
|
+
define_method(command_method) do
|
26
|
+
self.command(command)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
# rubocop:enable Style/HashEachMethods
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# For every value in the supplied enumeration create a corresponding method mapped to the lowercase
|
34
|
+
# string representation appended with a question mark '?' of the enum value For example,
|
35
|
+
# an enum with values of UP and DOWN would create methods up? and down? that check
|
36
|
+
# if the current state matches the value of the enum
|
37
|
+
#
|
38
|
+
# @param [Java::JavaLang::Enum] command_enum Enumeration to create methods for each value
|
39
|
+
# to check if current state matches that enum
|
40
|
+
# @yield [state] Optional block that can be used to transform state prior to comparison
|
41
|
+
#
|
42
|
+
#
|
43
|
+
def item_state(command_enum)
|
44
|
+
# rubocop:disable Style/HashEachMethods
|
45
|
+
# Disable rule because Java enum does not support each_value
|
46
|
+
command_enum.values.each do |command|
|
47
|
+
status_method = "#{command.to_s.downcase}?"
|
48
|
+
define_method(status_method) do
|
49
|
+
state? && state.as(command_enum) == command
|
50
|
+
end
|
51
|
+
end
|
52
|
+
# rubocop:enable Style/HashEachMethods
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
4
|
require 'java'
|
5
|
+
require 'openhab/dsl/items/item_command'
|
5
6
|
|
6
7
|
module OpenHAB
|
7
8
|
module DSL
|
@@ -11,6 +12,7 @@ module OpenHAB
|
|
11
12
|
#
|
12
13
|
class RollershutterItem < Numeric
|
13
14
|
extend Forwardable
|
15
|
+
extend OpenHAB::DSL::Items::ItemCommand
|
14
16
|
include Comparable
|
15
17
|
|
16
18
|
def_delegator :@rollershutter_item, :to_s
|
@@ -19,6 +21,10 @@ module OpenHAB
|
|
19
21
|
java_import Java::OrgOpenhabCoreLibraryTypes::UpDownType
|
20
22
|
java_import Java::OrgOpenhabCoreLibraryTypes::StopMoveType
|
21
23
|
|
24
|
+
item_command Java::OrgOpenhabCoreLibraryTypes::StopMoveType
|
25
|
+
item_command Java::OrgOpenhabCoreLibraryTypes::UpDownType
|
26
|
+
item_state Java::OrgOpenhabCoreLibraryTypes::UpDownType
|
27
|
+
|
22
28
|
#
|
23
29
|
# Creates a new RollershutterItem
|
24
30
|
#
|
@@ -32,24 +38,6 @@ module OpenHAB
|
|
32
38
|
super()
|
33
39
|
end
|
34
40
|
|
35
|
-
#
|
36
|
-
# Check if the rollershutter is up
|
37
|
-
#
|
38
|
-
# @return [Boolean] true if the rollershutter is up, false otherwise
|
39
|
-
#
|
40
|
-
def up?
|
41
|
-
state.as(UpDownType) == UpDownType::UP
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
# Check if the rollershutter is down
|
46
|
-
#
|
47
|
-
# @return [Boolean] true if the rollershutter is down, false otherwise
|
48
|
-
#
|
49
|
-
def down?
|
50
|
-
state.as(UpDownType) == UpDownType::DOWN
|
51
|
-
end
|
52
|
-
|
53
41
|
#
|
54
42
|
# Returns the rollershutter's position
|
55
43
|
#
|
@@ -104,34 +92,6 @@ module OpenHAB
|
|
104
92
|
state.as(UpDownType).equals(other)
|
105
93
|
end
|
106
94
|
|
107
|
-
#
|
108
|
-
# Sends an UP command to the Item
|
109
|
-
#
|
110
|
-
def up
|
111
|
-
command UpDownType::UP
|
112
|
-
end
|
113
|
-
|
114
|
-
#
|
115
|
-
# Sends a DOWN command to the Item
|
116
|
-
#
|
117
|
-
def down
|
118
|
-
command UpDownType::DOWN
|
119
|
-
end
|
120
|
-
|
121
|
-
#
|
122
|
-
# Sends a STOP command to the Item
|
123
|
-
#
|
124
|
-
def stop
|
125
|
-
command StopMoveType::STOP
|
126
|
-
end
|
127
|
-
|
128
|
-
#
|
129
|
-
# Sends a MOVE command to the Item
|
130
|
-
#
|
131
|
-
def move
|
132
|
-
command StopMoveType::MOVE
|
133
|
-
end
|
134
|
-
|
135
95
|
#
|
136
96
|
# Define math operations
|
137
97
|
#
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'java'
|
4
|
+
require 'openhab/dsl/items/item_command'
|
4
5
|
|
5
6
|
module OpenHAB
|
6
7
|
module DSL
|
@@ -20,24 +21,11 @@ module OpenHAB
|
|
20
21
|
# Monkey patch Contact Item with Ruby methods
|
21
22
|
#
|
22
23
|
class ContactItem
|
23
|
-
|
24
|
-
#
|
25
|
-
# Check if the contact is open
|
26
|
-
#
|
27
|
-
# @return [Boolean] True if contact has state and is open, false otherwise
|
28
|
-
#
|
29
|
-
def open?
|
30
|
-
state? && state == OpenClosedType::OPEN
|
31
|
-
end
|
24
|
+
extend OpenHAB::DSL::Items::ItemCommand
|
32
25
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
# @return [Boolean] True if contact has state and is closed, false otherwise
|
37
|
-
#
|
38
|
-
def closed?
|
39
|
-
state? && state == OpenClosedType::CLOSED
|
40
|
-
end
|
26
|
+
java_import Java::OrgOpenhabCoreLibraryTypes::OpenClosedType
|
27
|
+
|
28
|
+
item_state Java::OrgOpenhabCoreLibraryTypes::OpenClosedType
|
41
29
|
|
42
30
|
#
|
43
31
|
# Compares contacts to OpenClosedTypes
|
@@ -101,10 +101,10 @@ module OpenHAB
|
|
101
101
|
#
|
102
102
|
# Get the string representation of the state of the item
|
103
103
|
#
|
104
|
-
# @return [String] State of the item as a string
|
104
|
+
# @return [String] State of the item as a string
|
105
105
|
#
|
106
106
|
def to_s
|
107
|
-
state
|
107
|
+
method(:state).super_method.call.to_s # call the super state to include UNDEF/NULL
|
108
108
|
end
|
109
109
|
|
110
110
|
#
|
@@ -134,6 +134,18 @@ module OpenHAB
|
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
+
#
|
138
|
+
# Implements Hash#dig-like functionaity to metadata
|
139
|
+
#
|
140
|
+
# @param [String] key The first key
|
141
|
+
# @param [Array<String, Symbol>] keys More keys to dig deeper
|
142
|
+
#
|
143
|
+
# @return [OpenHAB::DSL::MonkeyPatch::Items::MetadataItem], or nil if the namespace doesn't exist
|
144
|
+
#
|
145
|
+
def dig(key, *keys)
|
146
|
+
keys.empty? ? self[key]&.value : self[key]&.dig(*keys)
|
147
|
+
end
|
148
|
+
|
137
149
|
#
|
138
150
|
# Enumerates through all the namespaces
|
139
151
|
#
|
@@ -1,5 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'java'
|
4
|
+
require 'openhab/dsl/items/item_command'
|
5
|
+
|
3
6
|
module OpenHAB
|
4
7
|
module DSL
|
5
8
|
module MonkeyPatch
|
@@ -16,43 +19,15 @@ module OpenHAB
|
|
16
19
|
# Monkeypatching SwitchItem to add Ruby Support methods
|
17
20
|
#
|
18
21
|
class SwitchItem
|
19
|
-
|
20
|
-
#
|
21
|
-
# Send the OFF command to the switch
|
22
|
-
#
|
23
|
-
#
|
24
|
-
def off
|
25
|
-
command(OnOffType::OFF)
|
26
|
-
end
|
22
|
+
extend OpenHAB::DSL::Items::ItemCommand
|
27
23
|
|
28
|
-
|
29
|
-
# Send the OFF command to the switch
|
30
|
-
#
|
31
|
-
#
|
32
|
-
def on
|
33
|
-
command(OnOffType::ON)
|
34
|
-
end
|
24
|
+
java_import Java::OrgOpenhabCoreLibraryTypes::OnOffType
|
35
25
|
|
36
|
-
|
37
|
-
|
38
|
-
#
|
39
|
-
# @return [Boolean] True if the switch is on, false otherwise
|
40
|
-
#
|
41
|
-
def on?
|
42
|
-
state? && state == OnOffType::ON
|
43
|
-
end
|
26
|
+
item_command Java::OrgOpenhabCoreLibraryTypes::OnOffType
|
27
|
+
item_state Java::OrgOpenhabCoreLibraryTypes::OnOffType
|
44
28
|
|
45
29
|
alias truthy? on?
|
46
30
|
|
47
|
-
#
|
48
|
-
# Check if a switch is off
|
49
|
-
#
|
50
|
-
# @return [Boolean] True if the switch is off, false otherwise
|
51
|
-
#
|
52
|
-
def off?
|
53
|
-
state? && state == OnOffType::OFF
|
54
|
-
end
|
55
|
-
|
56
31
|
#
|
57
32
|
# Send a command to invert the state of the switch
|
58
33
|
#
|
@@ -70,7 +70,7 @@ module OpenHAB
|
|
70
70
|
def create_queue(inputs)
|
71
71
|
case check_guards(event: inputs&.dig('event'))
|
72
72
|
when true
|
73
|
-
@run_queue.dup
|
73
|
+
@run_queue.dup.grep_v(RuleConfig::Otherwise)
|
74
74
|
when false
|
75
75
|
@run_queue.dup.grep(RuleConfig::Otherwise)
|
76
76
|
end
|
@@ -122,7 +122,7 @@ module OpenHAB
|
|
122
122
|
# @return [Boolean] true if no from state is defined or defined state equals supplied state
|
123
123
|
#
|
124
124
|
def check_from(trigger_delay, state)
|
125
|
-
trigger_delay.from.nil? || trigger_delay.from
|
125
|
+
trigger_delay.from.nil? || state == trigger_delay.from
|
126
126
|
end
|
127
127
|
|
128
128
|
#
|
@@ -134,7 +134,7 @@ module OpenHAB
|
|
134
134
|
# @return [Boolean] true if no to state is defined or defined state equals supplied state
|
135
135
|
#
|
136
136
|
def check_to(trigger_delay, state)
|
137
|
-
trigger_delay.to.nil? || trigger_delay.to
|
137
|
+
trigger_delay.to.nil? || state == trigger_delay.to
|
138
138
|
end
|
139
139
|
|
140
140
|
#
|
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: 2.
|
4
|
+
version: 2.20.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-02-
|
11
|
+
date: 2021-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- lib/openhab/dsl/gems.rb
|
41
41
|
- lib/openhab/dsl/group.rb
|
42
42
|
- lib/openhab/dsl/items/datetime_item.rb
|
43
|
+
- lib/openhab/dsl/items/item_command.rb
|
43
44
|
- lib/openhab/dsl/items/items.rb
|
44
45
|
- lib/openhab/dsl/items/number_item.rb
|
45
46
|
- lib/openhab/dsl/items/rollershutter_item.rb
|