openhab-scripting 4.18.0 → 4.19.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/dsl.rb +1 -0
- data/lib/openhab/dsl/rules/triggers/channel.rb +14 -12
- data/lib/openhab/dsl/things.rb +1 -1
- data/lib/openhab/dsl/types/type.rb +14 -0
- data/lib/openhab/dsl/uid.rb +55 -0
- 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: 7a1c3efdcd1a6b1b37802084ae9905afca8ea737cf870e1d51c0df7fabafd7f2
|
4
|
+
data.tar.gz: 3bf072ccd50f0271a2633d174e95e8fd4de112f669ba40e0c5f325be6b30946f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f3d963c6d2bc0b148dc122ec3483e301a04ee70c3f3cdf9b04a98b289f4dd823f1192344767aed9712d2745f01be7a51e62043d76a652dbdafd63ff7a98d065
|
7
|
+
data.tar.gz: d6a98e072d3462a1d74fd9d968c8a3eeeb66f7df747aee054640b6d2f9ca76358dc7e10bc93a2106b60bc508778f83ef649dfd2e3153f6d6c2e43590cfeeed53
|
data/lib/openhab/dsl/dsl.rb
CHANGED
@@ -15,16 +15,19 @@ module OpenHAB
|
|
15
15
|
#
|
16
16
|
# Creates a channel trigger
|
17
17
|
#
|
18
|
-
# @param [
|
18
|
+
# @param [String, Channel, ChannelUID, Array<String, Channel, ChannelUID>] channels
|
19
|
+
# channels to create triggers for in form of 'binding_id:type_id:thing_id#channel_id'
|
19
20
|
# or 'channel_id' if thing is provided
|
20
|
-
# @param [
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
def channel(*channels, thing: nil, triggered: nil, attach: nil)
|
25
|
-
channels.flatten.each do |channel|
|
26
|
-
channel =
|
27
|
-
|
21
|
+
# @param [String, Thing, ThingUID, Array<String, Thing, ThingUID>] thing
|
22
|
+
# thing(s) to create trigger for if not specified with the channel
|
23
|
+
# @param [String, Array<String>] triggered specific triggering condition(s) to match for trigger
|
24
|
+
#
|
25
|
+
def channel(*channels, thing: nil, triggered: nil, attach: nil) # rubocop:disable Metrics/AbcSize
|
26
|
+
channels.flatten.product([thing].flatten).each do |(channel, t)|
|
27
|
+
channel = channel.uid if channel.is_a?(org.openhab.core.thing.Channel)
|
28
|
+
t = t.uid if t.is_a?(Thing)
|
29
|
+
channel = [t, channel].compact.join(':')
|
30
|
+
logger.trace("Creating channel trigger for channel(#{channel}), thing(#{t}), trigger(#{triggered})")
|
28
31
|
[triggered].flatten.each do |trigger|
|
29
32
|
create_channel_trigger(channel, trigger, attach)
|
30
33
|
end
|
@@ -36,14 +39,13 @@ module OpenHAB
|
|
36
39
|
#
|
37
40
|
# Create a trigger for a channel
|
38
41
|
#
|
39
|
-
# @param [
|
40
|
-
# @param [
|
42
|
+
# @param [String] channel to look for triggers
|
43
|
+
# @param [String] trigger specific channel trigger to match
|
41
44
|
#
|
42
45
|
#
|
43
46
|
def create_channel_trigger(channel, trigger, attach)
|
44
47
|
config = { 'channelUID' => channel }
|
45
48
|
config['event'] = trigger.to_s unless trigger.nil?
|
46
|
-
config['channelUID'] = channel
|
47
49
|
logger.trace("Creating Change Trigger for #{config}")
|
48
50
|
append_trigger(Trigger::CHANNEL_EVENT, config, attach: attach)
|
49
51
|
end
|
data/lib/openhab/dsl/things.rb
CHANGED
@@ -41,6 +41,20 @@ module OpenHAB
|
|
41
41
|
equals(other)
|
42
42
|
end
|
43
43
|
|
44
|
+
#
|
45
|
+
# Case equality
|
46
|
+
#
|
47
|
+
# @return [Boolean] if the values are of the same Type
|
48
|
+
# or item state of the same type
|
49
|
+
#
|
50
|
+
def ===(other)
|
51
|
+
logger.trace("(#{self.class}) #{self} === #{other} (#{other.class})")
|
52
|
+
other = other.state if other.respond_to?(:state)
|
53
|
+
return false unless instance_of?(other.class)
|
54
|
+
|
55
|
+
eql?(other)
|
56
|
+
end
|
57
|
+
|
44
58
|
#
|
45
59
|
# Check equality, including type conversion
|
46
60
|
#
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module DSL
|
5
|
+
java_import org.openhab.core.common.AbstractUID
|
6
|
+
java_import org.openhab.core.thing.ThingTypeUID
|
7
|
+
|
8
|
+
# Adds methods to core OpenHAB AbstractUID to make it more natural in Ruby
|
9
|
+
class AbstractUID
|
10
|
+
# implicit conversion to string
|
11
|
+
alias to_str to_s
|
12
|
+
# inspect result is just the string representation
|
13
|
+
alias inspect to_s
|
14
|
+
|
15
|
+
# compares if equal to `other`, including string conversion
|
16
|
+
# @return [true, false]
|
17
|
+
def ==(other)
|
18
|
+
return true if equals(other)
|
19
|
+
|
20
|
+
to_s == other
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Adds methods to core OpenHAB ThingUID to make it more natural in Ruby
|
25
|
+
class ThingUID
|
26
|
+
# Returns the id of the binding this thing belongs to
|
27
|
+
# @return [String]
|
28
|
+
def binding_id
|
29
|
+
get_segment(0)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Adds methods to core OpenHAB ThingTypeUID to make it more natural in Ruby
|
34
|
+
class ThingTypeUID
|
35
|
+
# Returns the id of the binding this thing type belongs to
|
36
|
+
# @return [String]
|
37
|
+
def binding_id
|
38
|
+
get_segment(0)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# have to remove == from all descendant classes so that they'll inherit
|
43
|
+
# the new implementation
|
44
|
+
[org.openhab.core.items.MetadataKey,
|
45
|
+
org.openhab.core.thing.UID,
|
46
|
+
org.openhab.core.thing.ChannelUID,
|
47
|
+
org.openhab.core.thing.ChannelGroupUID,
|
48
|
+
org.openhab.core.thing.ThingUID,
|
49
|
+
org.openhab.core.thing.ThingTypeUID,
|
50
|
+
org.openhab.core.thing.type.ChannelTypeUID,
|
51
|
+
org.openhab.core.thing.type.ChannelGroupTypeUID].each do |klass|
|
52
|
+
klass.remove_method(:==)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
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.19.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-
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/openhab/dsl/types/types.rb
|
137
137
|
- lib/openhab/dsl/types/un_def_type.rb
|
138
138
|
- lib/openhab/dsl/types/up_down_type.rb
|
139
|
+
- lib/openhab/dsl/uid.rb
|
139
140
|
- lib/openhab/dsl/units.rb
|
140
141
|
- lib/openhab/log/configuration.rb
|
141
142
|
- lib/openhab/log/logger.rb
|