openhab-scripting 5.12.1 → 5.13.0

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: 0d3cc7138b6a4b42066a80ec926d31c2b6f1dc9538ae4498d1b6014be8d8aa1d
4
- data.tar.gz: eae0f6ddcde8c3a2b8b6b747554e73dc3b86b63f599f9afe2e50676e4cc8c4f8
3
+ metadata.gz: bfe5a24aad596dbbc699c68d39ffec4417b9199a75738a54292386d80e725525
4
+ data.tar.gz: 7aa7877384c2df3ee41588660e3db596f807fd5b2b7b781921528f14b0f9fdeb
5
5
  SHA512:
6
- metadata.gz: 5fb2a8142e739424fabd68595923588066edc753f62467c6cd1e4b3ab38b9d2b1717d7d24dbfcd96533000fa1adcef1e8470790167d7b5f031dc24ce34c25f82
7
- data.tar.gz: 5ea1f6bd0c4926ae9126f388af80c2d69bd643f14495226cad3388150b971080705bea645e52b76308a7c96a48026c5be02ae6ba6408973eba73d22b6bee3626
6
+ metadata.gz: 756ab20dcfdfce97ba6dfdcbf76d1f40c544607312622e0e013ddd38f7a0d201ae0fec69c13017300fba938d7081eb89f5be5d65ad59abcadf17380ae580dad8
7
+ data.tar.gz: d9facdcb106fe9fa3e2e51574fa2e52168b9c07eb9c1fad1498a6380e9bc783c8a63535c2a715956a894eb39a2b741ff6f9284fb1de71f9e083262b9f4ed42d0
@@ -4,7 +4,7 @@ module OpenHAB
4
4
  module Core
5
5
  java_import org.openhab.core.common.AbstractUID
6
6
 
7
- # Adds methods to core openHAB AbstractUID to make it more natural in Ruby
7
+ # A non specific base class for unique identifiers.
8
8
  class AbstractUID
9
9
  # implicit conversion to string
10
10
  alias_method :to_str, :to_s
@@ -52,8 +52,6 @@ module OpenHAB
52
52
  @registration.unregister
53
53
  end
54
54
 
55
- # rubocop:disable Layout/LineLength
56
-
57
55
  #
58
56
  # Enter the Sitemap Builder DSL.
59
57
  #
@@ -69,18 +67,45 @@ module OpenHAB
69
67
  # frame label: "Control" do
70
68
  # text label: "Climate", icon: "if:mdi:home-thermometer-outline" do
71
69
  # frame label: "Main Floor" do
72
- # text item: MainFloor_AmbTemp
73
70
  # # colors are set with a hash, with key being condition, and value being the color
74
- # switch item: MainFloorThermostat_TargetMode, label: "Mode", mappings: %w[off auto cool heat], label_color: { "==heat" => "red", "" => "black" }
75
- # # an array of conditions are OR'd together
76
- # switch item: MainFloorThermostat_TargetMode, label: "Mode", mappings: %w[off auto cool heat], label_color: { ["==heat", "==cool"], => "green" }
77
- # setpoint item: MainFloorThermostat_SetPoint, label: "Set Point", visibility: "MainFloorThermostat_TargetMode!=off"
71
+ # # The :default key is used when no other condition matches
72
+ # text item: MainFloor_AmbTemp,
73
+ # label_color: "purple", # A simple string can be used when no conditions are needed
74
+ # value_color: { ">=90" => "red", "<=70" => "blue", :default => "black" }
75
+ #
76
+ # # If item name is not provided in the condition, it will default to the widget's Item
77
+ # # The operator will default to == if not specified
78
+ # switch item: MainFloorThermostat_TargetMode, label: "Mode",
79
+ # mappings: %w[off auto cool heat],
80
+ # value_color: { "cool" => "blue", "heat" => "red", :default => "black" }
81
+ #
82
+ # # an array of conditions are AND'd together
83
+ # setpoint item: MainFloorThermostat_SetPoint, label: "Set Point",
84
+ # value_color: {
85
+ # ["MainFloorThermostat_TargetMode!=off", ">80"] => "red", # red if mode!=off AND setpoint > 80
86
+ # ["MainFloorThermostat_TargetMode!=off", ">74"] => "yellow",
87
+ # ["MainFloorThermostat_TargetMode!=off", ">70"] => "green",
88
+ # "MainFloorThermostat_TargetMode!=off" => "blue",
89
+ # :default => "gray"
90
+ # }
78
91
  # end
79
92
  # frame label: "Basement" do
80
93
  # text item: Basement_AmbTemp
81
- # switch item: BasementThermostat_TargetMode, label: "Mode", mappings: { OFF: "off", COOL: "cool", HEAT: "heat" }
82
- # # nested arrays are conditions that are AND'd together, instead of OR'd (requires openHAB 4.1)
83
- # setpoint item: BasementThermostat_SetPoint, label: "Set Point", visibility: [["BasementThermostat_TargetMode!=off", "Vacation_Switch!=OFF"]]
94
+ # switch item: BasementThermostat_TargetMode, label: "Mode",
95
+ # mappings: { OFF: "off", COOL: "cool", HEAT: "heat" }
96
+ #
97
+ # # Conditions within a nested array are AND'd together (requires openHAB 4.1)
98
+ # setpoint item: BasementThermostat_SetPoint, label: "Set Point",
99
+ # visibility: [["BasementThermostat_TargetMode!=off", "Vacation_Switch==OFF"]]
100
+ #
101
+ # # Additional elements are OR'd
102
+ # # The following visibility conditions are evaluated as:
103
+ # # (BasementThermostat_TargetMode!=off AND Vacation_Switch==OFF) OR Verbose_Mode==ON
104
+ # setpoint item: BasementThermostat_SetPoint, label: "Set Point",
105
+ # visibility: [
106
+ # ["BasementThermostat_TargetMode!=off", "Vacation_Switch==OFF"],
107
+ # "Verbose_Mode==ON"
108
+ # ]
84
109
  # end
85
110
  # end
86
111
  # end
@@ -90,7 +115,6 @@ module OpenHAB
90
115
  def build(update: true, &block)
91
116
  DSL::Sitemaps::Builder.new(self, update: update).instance_eval(&block)
92
117
  end
93
- # rubocop:enable Layout/LineLength
94
118
 
95
119
  # For use in specs
96
120
  # @!visibility private
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module Core
5
+ module Things
6
+ java_import org.openhab.core.thing.type.AbstractDescriptionType
7
+
8
+ #
9
+ # Base class for {ThingType}, {ChannelType}, and {ChannelGroupType}
10
+ #
11
+ # @!attribute [r] label
12
+ # @return [String]
13
+ #
14
+ # @!attribute [r] description
15
+ # @return [String, nil]
16
+ #
17
+ class AbstractDescriptionType # rubocop:disable Lint/EmptyClass
18
+ end
19
+ end
20
+ end
21
+ end
@@ -23,6 +23,9 @@ module OpenHAB
23
23
  # @!attribute [r] uid
24
24
  # @return [ChannelUID]
25
25
  #
26
+ # @!attribute [r] channel_type_uid
27
+ # @return [ChannelTypeUID]
28
+ #
26
29
  class Channel
27
30
  extend Forwardable
28
31
 
@@ -43,6 +46,12 @@ module OpenHAB
43
46
  "#{r}>"
44
47
  end
45
48
 
49
+ # @!attribute [r] channel_type
50
+ # @return [ChannelType]
51
+ def channel_type
52
+ ChannelType.registry.get_channel_type(channel_type_uid)
53
+ end
54
+
46
55
  # @return [String]
47
56
  def to_s
48
57
  uid.to_s
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ module OpenHAB
6
+ module Core
7
+ module Things
8
+ java_import org.openhab.core.thing.type.ChannelDefinition
9
+
10
+ #
11
+ # {ChannelDefinition} is a part of a {ChannelGroupType} that represents a functionality of it.
12
+ # Therefore {Item Items} can be linked a to a channel.
13
+ #
14
+ # @!attribute [r] id
15
+ # @return [String]
16
+ #
17
+ # @!attribute [r] label
18
+ # @return [String, nil]
19
+ #
20
+ # @!attribute [r] description
21
+ # @return [String, nil]
22
+ #
23
+ # @!attribute [r] channel_type_uid
24
+ # @return [ChannelTypeUID]
25
+ #
26
+ # @!attribute [r] channel_type
27
+ # (see ChannelTypeUID#channel_type)
28
+ #
29
+ # @!attribute [r] properties
30
+ # @return [Hash<String, String>]
31
+ #
32
+ class ChannelDefinition
33
+ extend Forwardable
34
+
35
+ delegate channel_type: :channel_type_uid
36
+
37
+ # @!attribute [r] auto_update_policy
38
+ # @return [:veto, :default, :recommend, nil]
39
+ def auto_update_policy
40
+ get_auto_update_policy&.to_s&.downcase&.to_sym
41
+ end
42
+
43
+ # @return [String]
44
+ def inspect
45
+ r = "#<OpenHAB::Core::Things::ChannelDefinition #{id}"
46
+ r += " channel_type_uid=#{channel_type_uid.inspect}" if channel_type_uid
47
+ r += " #{label.inspect}" if label
48
+ r += " description=#{description.inspect}" if description
49
+ r += " auto_update_policy=#{auto_update_policy}" if auto_update_policy
50
+ r += " properties=#{properties.to_h}" unless properties.empty?
51
+ "#{r}>"
52
+ end
53
+
54
+ # @return [String]
55
+ def to_s
56
+ id.to_s
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ module OpenHAB
6
+ module Core
7
+ module Things
8
+ java_import org.openhab.core.thing.type.ChannelGroupDefinition
9
+
10
+ #
11
+ # {ChannelGroupDefinition} is a part of a {ThingType} that represents a set of channels
12
+ #
13
+ # @!attribute [r] id
14
+ # @return [String]
15
+ #
16
+ # @!attribute [r] label
17
+ # @return [String, nil]
18
+ #
19
+ # @!attribute [r] description
20
+ # @return [String, nil]
21
+ #
22
+ # @!attribute [r] channel_group_type_uid
23
+ # @return [ChannelGroupTypeUID]
24
+ #
25
+ # @!attribute [r] channel_group_type
26
+ # (see ChannelGroupTypeUID#channel_group_type)
27
+ #
28
+ class ChannelGroupDefinition
29
+ extend Forwardable
30
+
31
+ alias_method :channel_group_type_uid, :type_uid
32
+
33
+ delegate channel_group_type: :channel_group_type_uid
34
+
35
+ # @return [String]
36
+ def inspect
37
+ r = "#<OpenHAB::Core::Things::ChannelGroupDefinition #{id}"
38
+ r += " channel_group_type_uid=#{channel_group_type_uid.inspect}"
39
+ r += " #{label.inspect}" if label
40
+ r += " description=#{description.inspect}" if description
41
+ "#{r}>"
42
+ end
43
+
44
+ # @return [String]
45
+ def to_s
46
+ id.to_s
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module Core
5
+ module Things
6
+ java_import org.openhab.core.thing.type.ChannelGroupType
7
+
8
+ #
9
+ # {ChannelGroupType} contains a list of
10
+ # {ChannelDefinition channel definitions} and further meta information
11
+ # such as label and description, which are generally used by user
12
+ # interfaces.
13
+ #
14
+ # @!attribute [r] uid
15
+ # @return [ChannelGroupTypeUID]
16
+ #
17
+ # @!attribute [r] channel_definitions
18
+ # @return [Array<ChannelDefinition>]
19
+ #
20
+ # @!attribute [r] category
21
+ # @return [String, nil]
22
+ #
23
+ class ChannelGroupType < AbstractDescriptionType
24
+ class << self
25
+ # @!visibility private
26
+ def registry
27
+ @registry ||= OSGi.service("org.openhab.core.thing.type.ChannelGroupTypeRegistry")
28
+ end
29
+ end
30
+
31
+ # @return [String]
32
+ def inspect
33
+ r = "#<OpenHAB::Core::Things::ChannelGroupType #{uid}"
34
+ r += " category=#{category.inspect}" if category
35
+ "#{r}>"
36
+ end
37
+
38
+ # @return [String]
39
+ def to_s
40
+ uid.to_s
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ require_relative "uid"
6
+
7
+ module OpenHAB
8
+ module Core
9
+ module Things
10
+ java_import org.openhab.core.thing.type.ChannelGroupTypeUID
11
+
12
+ #
13
+ # {ChannelGroupTypeUID} represents a unique identifier for a {ChannelGroupType}.
14
+ #
15
+ # @!attribute [r] id
16
+ # @return [String]
17
+ #
18
+ # @!attribute [r] channel_definitions
19
+ # (see ChannelGroupType#channel_definitions)
20
+ #
21
+ # @!attribute [r] category
22
+ # (see ChannelGroupType#category)
23
+ #
24
+ class ChannelGroupTypeUID < UID
25
+ extend Forwardable
26
+
27
+ delegate %i[category channel_definitions] => :channel_group_type
28
+
29
+ # @!attribute [r] channel_group_type
30
+ # @return [ChannelGroupType]
31
+ def channel_group_type
32
+ ChannelGroupType.registry.get_channel_group_type(self)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ require_relative "uid"
6
+
7
+ module OpenHAB
8
+ module Core
9
+ module Things
10
+ java_import org.openhab.core.thing.ChannelGroupUID
11
+
12
+ #
13
+ # {ChannelGroupUID} represents a unique identifier for a group of channels.
14
+ #
15
+ # @!attribute [r] id
16
+ # @return [String]
17
+ #
18
+ # @!attribute [r] thing_uid
19
+ # @return [ThingUID]
20
+ #
21
+ class ChannelGroupUID < UID
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ module OpenHAB
6
+ module Core
7
+ module Things
8
+ java_import org.openhab.core.thing.type.ChannelType
9
+
10
+ #
11
+ # {ChannelGroupType} contains a list of
12
+ # {ChannelDefinition channel definitions} and further meta information
13
+ # such as label and description, which are generally used by user
14
+ # interfaces.
15
+ #
16
+ # @!attribute [r] uid
17
+ # @return [ChannelTypeUID]
18
+ #
19
+ # @!attribute [r] item_type
20
+ # @return [String]
21
+ #
22
+ # @!attribute [r] tags
23
+ # @return [Set<String>]
24
+ #
25
+ # @!attribute [r] category
26
+ # @return [String, nil]
27
+ #
28
+ class ChannelType < AbstractDescriptionType
29
+ class << self
30
+ # @!visibility private
31
+ def registry
32
+ @registry ||= OSGi.service("org.openhab.core.thing.type.ChannelTypeRegistry")
33
+ end
34
+ end
35
+
36
+ # @!attribute [r] kind
37
+ # @return [:state, :trigger]
38
+ def kind
39
+ get_kind.to_s.to_sym
40
+ end
41
+
42
+ # @!attribute [r] advanced?
43
+ # @return [true, false]
44
+ alias_method :advanced?, :advanced
45
+
46
+ # @!visibility private
47
+ alias_method :state_description, :state
48
+
49
+ # @!attribute [r] auto_update_policy
50
+ # @return [:veto, :default, :recommend, nil]
51
+ def auto_update_policy
52
+ get_auto_update_policy&.to_s&.downcase&.to_sym
53
+ end
54
+
55
+ # @return [String]
56
+ def inspect
57
+ r = "#<OpenHAB::Core::Things::ChannelType #{uid}"
58
+ r += " (#{kind})" unless kind == :state
59
+ r += " (advanced)" if advanced?
60
+ r += " item_type=#{item_type}"
61
+ r += " tags=(#{tags.join(", ")})" unless tags.empty?
62
+ r += " category=#{category.inspect}" if category
63
+ r += " auto_update_policy=#{auto_update_policy}" if auto_update_policy
64
+ "#{r}>"
65
+ end
66
+
67
+ # @return [String]
68
+ def to_s
69
+ uid.to_s
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ require_relative "uid"
6
+
7
+ module OpenHAB
8
+ module Core
9
+ module Things
10
+ java_import org.openhab.core.thing.type.ChannelTypeUID
11
+
12
+ #
13
+ # {ChannelTypeUID} represents a unique identifier for a {ChannelType}.
14
+ #
15
+ # @!attribute [r] id
16
+ # @return [String]
17
+ #
18
+ # @!attribute [r] item_type
19
+ # (see ChannelType#item_type)
20
+ #
21
+ # @!attribute [r] tags
22
+ # (see ChannelType#tags)
23
+ #
24
+ # @!attribute [r] category
25
+ # (see ChannelType#category)
26
+ #
27
+ # @!attribute [r] auto_update_policy
28
+ # (see ChannelType#auto_update_policy)
29
+ #
30
+ class ChannelTypeUID < UID
31
+ extend Forwardable
32
+
33
+ # @!method advanced?
34
+ # @return [true, false]
35
+
36
+ delegate %i[item_type
37
+ tags
38
+ category
39
+ auto_update_policy
40
+ command_description
41
+ event_description
42
+ state_description
43
+ advanced?] => :channel_type
44
+
45
+ # @!attribute [r] channel_type
46
+ # @return [ChannelType]
47
+ def channel_type
48
+ ChannelType.registry.get_channel_type(self)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -2,15 +2,32 @@
2
2
 
3
3
  require "forwardable"
4
4
 
5
+ require_relative "uid"
6
+
5
7
  module OpenHAB
6
8
  module Core
7
9
  module Things
8
10
  java_import org.openhab.core.thing.ChannelUID
9
11
 
10
12
  #
11
- # {ChannelUID} represents a unique identifier for {Channel channels}.
13
+ # {ChannelUID} represents a unique identifier for a {Channel}.
14
+ #
15
+ # @!attribute [r] id
16
+ # @return [String]
17
+ #
18
+ # @!attribute [r] id_without_group
19
+ # @return [String]
12
20
  #
13
- class ChannelUID
21
+ # @!attribute [r] group_id
22
+ # @return [String, nil]
23
+ #
24
+ # @!attribute [r] thing_uid
25
+ # @return [ThingUID]
26
+ #
27
+ class ChannelUID < UID
28
+ # @return [true, false]
29
+ alias_method :in_group?, :is_in_group
30
+
14
31
  #
15
32
  # @attribute [r] thing
16
33
  #
@@ -39,11 +39,14 @@ module OpenHAB
39
39
  #
40
40
  # @!attribute [r] uid
41
41
  # Return the UID.
42
- # @return [org.openhab.core.thing.ThingUID]
42
+ # @return [ThingUID]
43
43
  #
44
44
  # @!attribute [r] bridge_uid
45
45
  # Return the Bridge UID when available.
46
- # @return [org.openhab.core.thing.ThingUID]
46
+ # @return [ThingUID]
47
+ #
48
+ # @!attribute [r] thing_type_uid
49
+ # @return [ThingTypeUID]
47
50
  #
48
51
  # @!attribute [r] configuration
49
52
  # Return the thing's configuration.
@@ -156,6 +159,12 @@ module OpenHAB
156
159
  enable(enabled: false)
157
160
  end
158
161
 
162
+ # @!attribute [r] thing_type
163
+ # @return [ThingType]
164
+ def thing_type
165
+ ThingType.registry.get_thing_type(thing_type_uid)
166
+ end
167
+
159
168
  # @return [String]
160
169
  def inspect
161
170
  r = "#<OpenHAB::Core::Things::Thing #{uid}"
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module Core
5
+ module Things
6
+ java_import org.openhab.core.thing.type.ThingType
7
+
8
+ #
9
+ # {ThingType} contains a list of
10
+ # {ChannelGroupDefinition channel group definitions},
11
+ # {ChannelDefinition channel definitions} and further meta information.
12
+ #
13
+ # This description is used as template definition for the creation of the
14
+ # according concrete {Thing} object.
15
+ #
16
+ # @!attribute [r] uid
17
+ # @return [ChannelGroupTypeUID]
18
+ #
19
+ # @!attribute [r] channel_group_definitions
20
+ # @return [Array<ChannelGroupDefinition>]
21
+ #
22
+ # @!attribute [r] channel_definitions
23
+ # @return [Array<ChannelDefinition>]
24
+ #
25
+ # @!attribute [r] supported_bridge_type_uids
26
+ # @return [Array<String>]
27
+ #
28
+ # @!attribute [r] category
29
+ # @return [String, nil]
30
+ #
31
+ # @!attribute [r] properties
32
+ # @return [Hash<String, String>]
33
+ #
34
+ class ThingType < AbstractDescriptionType
35
+ class << self
36
+ # @!visibility private
37
+ def registry
38
+ @registry ||= OSGi.service("org.openhab.core.thing.type.ThingTypeRegistry")
39
+ end
40
+ end
41
+
42
+ # @!attribute [r] listed?
43
+ # @return [true, false]
44
+ alias_method :listed?, :is_listed
45
+
46
+ # @return [String]
47
+ def inspect
48
+ r = "#<OpenHAB::Core::Things::ThingType #{uid}"
49
+ r += " (unlisted)" unless listed?
50
+ r += " category=#{category.inspect}" if category
51
+ r += " properties=#{properties.to_h}" unless properties.empty?
52
+ "#{r}>"
53
+ end
54
+
55
+ # @return [String]
56
+ def to_s
57
+ uid.to_s
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+
5
+ require_relative "uid"
6
+
7
+ module OpenHAB
8
+ module Core
9
+ module Things
10
+ java_import org.openhab.core.thing.ThingTypeUID
11
+
12
+ #
13
+ # {ThingTypeUID} represents a unique identifier for a {ThingType}.
14
+ #
15
+ # @!attribute [r] id
16
+ # @return [String]
17
+ #
18
+ # @!attribute [r] channel_group_definitions
19
+ # (see ThingType#channel_group_definitions)
20
+ #
21
+ # @!attribute [r] channel_definitions
22
+ # (see ThingType#channel_definitions)
23
+ #
24
+ # @!attribute [r] supported_bridge_type_uids
25
+ # (see ThingType#supported_bridge_type_uids)
26
+ #
27
+ # @!attribute [r] category
28
+ # (see ThingType#category)
29
+ #
30
+ # @!attribute [r] properties
31
+ # (see ThingType#properties)
32
+ #
33
+ class ThingTypeUID < UID
34
+ extend Forwardable
35
+
36
+ # @!method listed?
37
+ # @return [true, false]
38
+
39
+ delegate %i[channel_group_definitions
40
+ channel_definitions
41
+ supported_bridge_type_uids
42
+ category
43
+ properties
44
+ listed?] => :thing_type
45
+
46
+ # @!attribute [r] thing_type
47
+ # @return [ThingType]
48
+ def thing_type
49
+ ThingType.registry.get_thing_type(self)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end