openhab-scripting 2.16.2 → 2.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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openhab.rb +12 -16
  3. data/lib/openhab/core/entity_lookup.rb +173 -0
  4. data/lib/openhab/core/openhab_setup.rb +31 -0
  5. data/lib/openhab/core/osgi.rb +61 -0
  6. data/lib/openhab/dsl/actions.rb +105 -0
  7. data/lib/openhab/dsl/dsl.rb +49 -0
  8. data/lib/openhab/{core/dsl → dsl}/gems.rb +0 -1
  9. data/lib/openhab/dsl/group.rb +100 -0
  10. data/lib/openhab/dsl/items/datetime_item.rb +97 -0
  11. data/lib/openhab/dsl/items/items.rb +46 -0
  12. data/lib/openhab/dsl/items/number_item.rb +352 -0
  13. data/lib/openhab/dsl/items/rollershutter_item.rb +179 -0
  14. data/lib/openhab/dsl/items/string_item.rb +120 -0
  15. data/lib/openhab/dsl/monkey_patch/actions/actions.rb +4 -0
  16. data/lib/openhab/dsl/monkey_patch/actions/script_thing_actions.rb +32 -0
  17. data/lib/openhab/dsl/monkey_patch/events/events.rb +5 -0
  18. data/lib/openhab/dsl/monkey_patch/events/item_command.rb +23 -0
  19. data/lib/openhab/dsl/monkey_patch/events/item_state_changed.rb +35 -0
  20. data/lib/openhab/dsl/monkey_patch/events/thing_status_info.rb +33 -0
  21. data/lib/openhab/dsl/monkey_patch/items/contact_item.rb +61 -0
  22. data/lib/openhab/dsl/monkey_patch/items/dimmer_item.rb +193 -0
  23. data/lib/openhab/dsl/monkey_patch/items/group_item.rb +37 -0
  24. data/lib/openhab/dsl/monkey_patch/items/items.rb +133 -0
  25. data/lib/openhab/dsl/monkey_patch/items/metadata.rb +281 -0
  26. data/lib/openhab/dsl/monkey_patch/items/persistence.rb +70 -0
  27. data/lib/openhab/dsl/monkey_patch/items/switch_item.rb +95 -0
  28. data/lib/openhab/dsl/monkey_patch/ruby/number.rb +39 -0
  29. data/lib/openhab/dsl/monkey_patch/ruby/range.rb +47 -0
  30. data/lib/openhab/dsl/monkey_patch/ruby/ruby.rb +8 -0
  31. data/lib/openhab/dsl/monkey_patch/ruby/string.rb +41 -0
  32. data/lib/openhab/dsl/monkey_patch/ruby/time.rb +32 -0
  33. data/lib/openhab/dsl/monkey_patch/types/decimal_type.rb +70 -0
  34. data/lib/openhab/dsl/monkey_patch/types/on_off_type.rb +51 -0
  35. data/lib/openhab/dsl/monkey_patch/types/open_closed_type.rb +36 -0
  36. data/lib/openhab/dsl/monkey_patch/types/percent_type.rb +32 -0
  37. data/lib/openhab/dsl/monkey_patch/types/quantity_type.rb +69 -0
  38. data/lib/openhab/dsl/monkey_patch/types/types.rb +9 -0
  39. data/lib/openhab/dsl/monkey_patch/types/up_down_type.rb +33 -0
  40. data/lib/openhab/dsl/persistence.rb +25 -0
  41. data/lib/openhab/dsl/rules/automation_rule.rb +342 -0
  42. data/lib/openhab/dsl/rules/guard.rb +134 -0
  43. data/lib/openhab/dsl/rules/property.rb +102 -0
  44. data/lib/openhab/dsl/rules/rule.rb +116 -0
  45. data/lib/openhab/dsl/rules/rule_config.rb +151 -0
  46. data/lib/openhab/dsl/rules/triggers/changed.rb +143 -0
  47. data/lib/openhab/dsl/rules/triggers/channel.rb +53 -0
  48. data/lib/openhab/dsl/rules/triggers/command.rb +104 -0
  49. data/lib/openhab/dsl/rules/triggers/cron.rb +177 -0
  50. data/lib/openhab/dsl/rules/triggers/trigger.rb +124 -0
  51. data/lib/openhab/dsl/rules/triggers/updated.rb +98 -0
  52. data/lib/openhab/dsl/states.rb +61 -0
  53. data/lib/openhab/dsl/things.rb +91 -0
  54. data/lib/openhab/dsl/time_of_day.rb +232 -0
  55. data/lib/openhab/dsl/timers.rb +77 -0
  56. data/lib/openhab/dsl/types/datetime.rb +326 -0
  57. data/lib/openhab/dsl/types/quantity.rb +290 -0
  58. data/lib/openhab/dsl/units.rb +39 -0
  59. data/lib/openhab/log/configuration.rb +21 -0
  60. data/lib/openhab/log/logger.rb +172 -0
  61. data/lib/openhab/version.rb +1 -1
  62. metadata +60 -58
  63. data/lib/openhab/configuration.rb +0 -16
  64. data/lib/openhab/core/cron.rb +0 -27
  65. data/lib/openhab/core/debug.rb +0 -34
  66. data/lib/openhab/core/dsl.rb +0 -51
  67. data/lib/openhab/core/dsl/actions.rb +0 -107
  68. data/lib/openhab/core/dsl/entities.rb +0 -147
  69. data/lib/openhab/core/dsl/group.rb +0 -102
  70. data/lib/openhab/core/dsl/items/items.rb +0 -51
  71. data/lib/openhab/core/dsl/items/number_item.rb +0 -323
  72. data/lib/openhab/core/dsl/items/string_item.rb +0 -122
  73. data/lib/openhab/core/dsl/monkey_patch/actions/actions.rb +0 -4
  74. data/lib/openhab/core/dsl/monkey_patch/actions/script_thing_actions.rb +0 -22
  75. data/lib/openhab/core/dsl/monkey_patch/events.rb +0 -5
  76. data/lib/openhab/core/dsl/monkey_patch/events/item_command.rb +0 -13
  77. data/lib/openhab/core/dsl/monkey_patch/events/item_state_changed.rb +0 -25
  78. data/lib/openhab/core/dsl/monkey_patch/events/thing_status_info.rb +0 -26
  79. data/lib/openhab/core/dsl/monkey_patch/items/contact_item.rb +0 -54
  80. data/lib/openhab/core/dsl/monkey_patch/items/dimmer_item.rb +0 -182
  81. data/lib/openhab/core/dsl/monkey_patch/items/group_item.rb +0 -27
  82. data/lib/openhab/core/dsl/monkey_patch/items/items.rb +0 -132
  83. data/lib/openhab/core/dsl/monkey_patch/items/metadata.rb +0 -283
  84. data/lib/openhab/core/dsl/monkey_patch/items/persistence.rb +0 -72
  85. data/lib/openhab/core/dsl/monkey_patch/items/switch_item.rb +0 -87
  86. data/lib/openhab/core/dsl/monkey_patch/ruby/number.rb +0 -41
  87. data/lib/openhab/core/dsl/monkey_patch/ruby/range.rb +0 -47
  88. data/lib/openhab/core/dsl/monkey_patch/ruby/ruby.rb +0 -7
  89. data/lib/openhab/core/dsl/monkey_patch/ruby/string.rb +0 -43
  90. data/lib/openhab/core/dsl/monkey_patch/types/decimal_type.rb +0 -60
  91. data/lib/openhab/core/dsl/monkey_patch/types/on_off_type.rb +0 -41
  92. data/lib/openhab/core/dsl/monkey_patch/types/open_closed_type.rb +0 -25
  93. data/lib/openhab/core/dsl/monkey_patch/types/percent_type.rb +0 -23
  94. data/lib/openhab/core/dsl/monkey_patch/types/quantity_type.rb +0 -58
  95. data/lib/openhab/core/dsl/monkey_patch/types/types.rb +0 -8
  96. data/lib/openhab/core/dsl/persistence.rb +0 -27
  97. data/lib/openhab/core/dsl/property.rb +0 -96
  98. data/lib/openhab/core/dsl/rule/automation_rule.rb +0 -345
  99. data/lib/openhab/core/dsl/rule/guard.rb +0 -136
  100. data/lib/openhab/core/dsl/rule/rule.rb +0 -117
  101. data/lib/openhab/core/dsl/rule/rule_config.rb +0 -153
  102. data/lib/openhab/core/dsl/rule/triggers/changed.rb +0 -145
  103. data/lib/openhab/core/dsl/rule/triggers/channel.rb +0 -55
  104. data/lib/openhab/core/dsl/rule/triggers/command.rb +0 -106
  105. data/lib/openhab/core/dsl/rule/triggers/cron.rb +0 -160
  106. data/lib/openhab/core/dsl/rule/triggers/trigger.rb +0 -126
  107. data/lib/openhab/core/dsl/rule/triggers/updated.rb +0 -100
  108. data/lib/openhab/core/dsl/states.rb +0 -63
  109. data/lib/openhab/core/dsl/things.rb +0 -93
  110. data/lib/openhab/core/dsl/time_of_day.rb +0 -231
  111. data/lib/openhab/core/dsl/timers.rb +0 -79
  112. data/lib/openhab/core/dsl/types/quantity.rb +0 -292
  113. data/lib/openhab/core/dsl/units.rb +0 -41
  114. data/lib/openhab/core/log.rb +0 -170
  115. data/lib/openhab/core/patch_load_path.rb +0 -7
  116. data/lib/openhab/core/startup_delay.rb +0 -23
  117. data/lib/openhab/osgi.rb +0 -59
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'java'
4
- require 'core/log'
5
- require 'core/dsl/monkey_patch/events'
6
- require 'core/dsl/monkey_patch/ruby/ruby'
7
- require 'core/dsl/monkey_patch/items/items'
8
- require 'core/dsl/monkey_patch/types/types'
9
- require 'core/dsl/monkey_patch/actions/actions'
10
- require 'core/dsl/rule/rule'
11
- require 'core/dsl/actions'
12
- require 'core/dsl/timers'
13
- require 'core/dsl/group'
14
- require 'core/dsl/things'
15
- require 'core/dsl/items/items'
16
- require 'core/dsl/items/number_item'
17
- require 'core/dsl/time_of_day'
18
- require 'core/dsl/gems'
19
- require 'core/dsl/units'
20
- require 'core/dsl/types/quantity'
21
- require 'core/dsl/states'
22
- require 'core/dsl/persistence'
23
-
24
- module OpenHAB
25
- #
26
- # Holds core functions for OpenHAB Helper Library
27
- #
28
- module Core
29
- #
30
- # Module to be extended to access the OpenHAB Ruby DSL
31
- #
32
- module DSL
33
- # Extend the calling module/class with the DSL
34
- # rubocop: disable Metrics/MethodLength
35
- def self.extended(base)
36
- base.send :include, OpenHAB::Core::DSL::Rule
37
- base.send :include, OpenHAB::Core::DSL::Items
38
- base.send :include, OpenHAB::Core::DSL::Types
39
- base.send :include, OpenHAB::Core::DSL::Groups
40
- base.send :include, OpenHAB::Core::DSL::Units
41
- base.send :include, OpenHAB::Core::DSL::Actions
42
- base.send :include, OpenHAB::Core::DSL::Timers
43
- base.send :include, OpenHAB::Core::DSL::States
44
- base.send :include, OpenHAB::Core::DSL::Tod
45
- base.send :include, OpenHAB::Core::DSL::Persistence
46
- base.send :include, Things
47
- end
48
- # rubocop: enable Metrics/MethodLength
49
- end
50
- end
51
- end
@@ -1,107 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'java'
4
- require 'openhab/osgi'
5
-
6
- module OpenHAB
7
- module Core
8
- module DSL
9
- #
10
- # Module to import and steramlime access to OpenHAB actions
11
- #
12
- module Actions
13
- java_import org.openhab.core.library.types.PercentType
14
- include Logging
15
-
16
- OpenHAB::OSGI.services('org.openhab.core.model.script.engine.action.ActionService')&.each do |service|
17
- java_import service.actionClass.to_s
18
- logger.trace("Loaded ACTION: #{service.actionClass}")
19
- end
20
- # Import common actions
21
- %w[Exec HTTP Ping].each { |action| java_import "org.openhab.core.model.script.actions.#{action}" }
22
-
23
- #
24
- # Return an OpenHAB Action object for the given scope and thing
25
- #
26
- # @param scope [String] The action scope
27
- # @param thing_uid [String] Thing UID
28
- #
29
- # @return [Object] OpenHAB action
30
- #
31
- def actions(scope, thing_uid)
32
- # rubocop: disable Style/GlobalVars
33
- $actions.get(scope, thing_uid)
34
- # rubocop: enable Style/GlobalVars
35
- end
36
-
37
- #
38
- # Gets the list of action objects associated with a specific ThingUID
39
- #
40
- # @param [Java::org::openhab::core::thing::ThingUID] thing_uid to get associated actions for
41
- #
42
- # @return [Array] of action objects associated with thing_uid, may be empty
43
- #
44
- def actions_for_thing(thing_uid)
45
- thing_uid = thing_uid.to_s
46
- # rubocop: disable Style/GlobalVars
47
- action_keys = $actions.action_keys
48
- # rubocop: enable Style/GlobalVars
49
- logger.trace("Registered actions: '#{action_keys}' for thing '#{thing_uid}'")
50
- action_keys.map { |action_key| action_key.split('-', 2) }
51
- .select { |action_pair| action_pair.last == thing_uid }
52
- .map(&:first)
53
- .map { |scope| actions(scope, thing_uid) }
54
- end
55
-
56
- #
57
- # Send notification to an email or broadcast
58
- #
59
- # @param msg [String] The notification message to send
60
- # @param email [String] The email address to send to. If nil, the message will be broadcasted
61
- #
62
- # @return [void]
63
- #
64
- def notify(msg, email: nil)
65
- unless defined? NotificationAction
66
- raise NoMethodError, 'NotificationAction is not available. Please install the OpenHAB cloud addon'
67
- end
68
-
69
- if email
70
- NotificationAction.sendNotification email, msg
71
- else
72
- NotificationAction.sendBroadcastNotification msg
73
- end
74
- end
75
-
76
- #
77
- # Say text via OpenHAB Text-To-Speech service, Voice.say()
78
- #
79
- # @param text [String] The text to say
80
- # @param voice [String] Specify a particular voice to use
81
- # @param sink [String] Specify a particular sink to output the speech
82
- # @param volume [PercentType] Specify the volume for the speech
83
- #
84
- # @return [void]
85
- #
86
- def say(text, voice: nil, sink: nil, volume: nil)
87
- volume = PercentType.new(volume&.to_i) unless volume.is_a?(PercentType) || volume.nil?
88
- Voice.say text, voice, sink, volume
89
- end
90
-
91
- #
92
- # Play an audio file via OpenHAB sound service, Audio.playSound()
93
- #
94
- # @param filename [String] The sound file to play
95
- # @param sink [String] Specify a particular sink to output the speech
96
- # @param volume [PercentType] Specify the volume for the speech
97
- #
98
- # @return [void]
99
- #
100
- def play_sound(filename, sink: nil, volume: nil)
101
- volume = PercentType.new(volume&.to_i) unless volume.is_a?(PercentType) || volume.nil?
102
- Audio.playSound sink, filename, volume
103
- end
104
- end
105
- end
106
- end
107
- end
@@ -1,147 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pp'
4
- require 'java'
5
- require 'set'
6
- require 'core/dsl/group'
7
- require 'core/log'
8
- require 'core/dsl/items/number_item'
9
- require 'core/dsl/items/string_item'
10
-
11
- # Automation lookup and injection of OpenHab entities
12
- java_import org.openhab.core.items.GroupItem
13
-
14
- #
15
- # Implements const_missing to return OpenHAB items or things if mapping to missing name if they exist
16
- #
17
- # @param [String] name Capital string that was not set as a constant and to be looked up
18
- #
19
- # @return [Object] OpenHAB Item or Thing if their name exist in OpenHAB item and thing regestries
20
- #
21
- def Object.const_missing(name)
22
- EntityLookup.lookup_item(name) || EntityLookup.lookup_thing(name) || super
23
- end
24
-
25
- #
26
- # Manages access to OpenHAB entities
27
- #
28
- module EntityLookup
29
- include Logging
30
-
31
- #
32
- # Decorate items with Ruby wrappers
33
- #
34
- # @param [Array] items Array of items to decorate
35
- #
36
- # @return [Array] Array of decorated items
37
- #
38
- def self.decorate_items(*items)
39
- items.flatten.map { |item| decorate_item(item) }
40
- end
41
-
42
- #
43
- # Decorate item with Ruby wrappers
44
- #
45
- # @param [Object] item the item object to decorate
46
- #
47
- # @return [Object] the ruby wrapper for the item
48
- #
49
- def self.decorate_item(item)
50
- case item
51
- when GroupItem
52
- decorate_group(item)
53
- when Java::Org.openhab.core.library.items::NumberItem
54
- OpenHAB::Core::DSL::Items::NumberItem.new(item)
55
- when Java::Org.openhab.core.library.items::StringItem
56
- OpenHAB::Core::DSL::Items::StringItem.new(item)
57
- else
58
- item
59
- end
60
- end
61
-
62
- #
63
- # Looks up a Thing in the OpenHAB registry replacing '_' with ':'
64
- #
65
- # @param [String] name of Thing to lookup in Thing registry
66
- #
67
- # @return [Thing] if found, nil otherwise
68
- #
69
- def self.lookup_thing(name)
70
- logger.trace("Looking up thing(#{name})")
71
- # Convert from : syntax to underscore
72
- name = name.to_s if name.is_a? Symbol
73
-
74
- # Thing UIDs have at least 3 segements
75
- return if name.count('_') < 3
76
-
77
- name = name.gsub('_', ':')
78
- # rubocop: disable Style/GlobalVars
79
- $things.get(Java::OrgOpenhabCoreThing::ThingUID.new(name))
80
- # rubocop: enable Style/GlobalVars
81
- end
82
-
83
- #
84
- # Lookup OpenHAB items in item registry
85
- #
86
- # @param [String] name of item to lookup
87
- #
88
- # @return [Item] OpenHAB item if registry contains a matching item, nil othewise
89
- #
90
- def self.lookup_item(name)
91
- logger.trace("Looking up item(#{name})")
92
- name = name.to_s if name.is_a? Symbol
93
- # rubocop: disable Style/GlobalVars
94
- item = $ir.get(name)
95
- # rubocop: enable Style/GlobalVars
96
- EntityLookup.decorate_item(item)
97
- end
98
-
99
- #
100
- # Automatically looks up OpenHAB items and things in appropriate registries
101
- #
102
- # @param [method] method Name of item to lookup
103
- # @param [<Type>] args method arguments
104
- # @param [<Type>] block supplied to missing method
105
- #
106
- # @return [Object] Item or Thing if found in registry
107
- #
108
- def method_missing(method, *args, &block)
109
- return if method.to_s == 'scriptLoaded'
110
- return if method.to_s == 'scriptUnloaded'
111
-
112
- logger.trace("method missing, performing OpenHab Lookup for: #{method}")
113
- EntityLookup.lookup_item(method) || EntityLookup.lookup_thing(method) || super
114
- end
115
-
116
- #
117
- # Checks if this method responds to the missing method
118
- #
119
- # @param [String] method_name Name of the method to check
120
- # @param [Boolean] _include_private boolean if private methods should be checked
121
- #
122
- # @return [Boolean] true if this object will respond to the supplied method, false otherwise
123
- #
124
- def respond_to_missing?(method_name, _include_private = false)
125
- logger.trace("Checking if OpenHAB entites exist for #{method_name}")
126
- method_name = method_name.to_s if method_name.is_a? Symbol
127
-
128
- method_name == 'scriptLoaded' ||
129
- method_name == 'scriptUnloaded' ||
130
- EntityLookup.lookup_item(method_name) ||
131
- EntityLookup.lookup_thing(method_name) ||
132
- super
133
- end
134
-
135
- #
136
- # Decorate a group from an item base
137
- #
138
- # @param [OpenHAB item] item item to convert to a group item
139
- #
140
- # @return [OpenHAB::Core::DSL::Groups::Group] Group created from supplied item
141
- #
142
- def self.decorate_group(item)
143
- group = OpenHAB::Core::DSL::Groups::Group.new(Set.new(EntityLookup.decorate_items(item.all_members.to_a)))
144
- group.group = item
145
- group
146
- end
147
- end
@@ -1,102 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'delegate'
4
- require 'forwardable'
5
- require 'openhab/core/dsl/entities'
6
-
7
- module OpenHAB
8
- module Core
9
- module DSL
10
- #
11
- # Provides access to OpenHAB Groups
12
- #
13
- module Groups
14
- #
15
- # Indicator struct interpreted by rules to trigger based on items contained in a group
16
- #
17
- GroupItems = Struct.new(:group, keyword_init: true)
18
-
19
- #
20
- # Provide access to groups as a set
21
- #
22
- class Groups < SimpleDelegator
23
- #
24
- # Get a OpenHAB Group by name
25
- # @param [String] name of the group to retrieve
26
- #
27
- # @return [Set] of OpenHAB Groups
28
- #
29
- def[](name)
30
- group = EntityLookup.lookup_item(name)
31
- group.is_a?(Group) ? group : nil
32
- end
33
- end
34
-
35
- #
36
- # Retreive all OpenHAB groups
37
- #
38
- # @return [Set] of OpenHAB Groups
39
- #
40
- def groups
41
- # rubocop: disable Style/GlobalVars
42
- Groups.new(EntityLookup.decorate_items($ir.items.select { |item| item.is_a? GroupItem }))
43
- # rubocop: enable Style/GlobalVars
44
- end
45
-
46
- # Group class that provides access to OpenHAB group object and delegates other methods to
47
- # a set of group items
48
- class Group < SimpleDelegator
49
- extend Forwardable
50
-
51
- java_import org.openhab.core.items.GroupItem
52
-
53
- # @return [org.openhab.core.items.GroupItem] OpenHAB Java Group Item
54
- attr_accessor :group
55
-
56
- # @!macro [attach] def_delegators
57
- # @!method $2
58
- # Forwards to org.openhab.core.items.GroupItem
59
- # @see org::openhab::core::items::GroupItem
60
- def_delegator :@group, :name
61
- def_delegator :@group, :label
62
-
63
- #
64
- # Gets members of this group that are themselves a group
65
- #
66
- # @return [Set] Set of members that are of type group
67
- #
68
- def groups
69
- group.members.grep(org.openhab.core.items.GroupItem)
70
- end
71
-
72
- #
73
- # Wraps the group in a struct, this method is intended to be called
74
- # as an indicator to the rule method that the user wishes to trigger
75
- # based on changes to group items
76
- #
77
- # @return [GroupItems] Indicator struct used by rules engine to trigger based on item changes
78
- #
79
- def items
80
- GroupItems.new(group: group)
81
- end
82
-
83
- #
84
- # @return [String] List of groups seperated by commas
85
- #
86
- def to_s
87
- "[#{map(&:to_s).join(',')}]"
88
- end
89
-
90
- #
91
- # Get an ID for the group, using the label if set, otherwise group name
92
- #
93
- # @return [String] label if set otherwise name
94
- #
95
- def id
96
- label || name
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'java'
4
- require 'openhab/core/dsl/entities'
5
-
6
- module OpenHAB
7
- module Core
8
- module DSL
9
- #
10
- # Manages OpenHAB items
11
- #
12
- module Items
13
- #
14
- # Delegates to underlying set of all OpenHAB Items, provides convenience methods
15
- #
16
- class Items < SimpleDelegator
17
- # Fetches the named item from the the ItemRegistry
18
- # @param [String] name
19
- # @return Item from registry, nil if item missing or requested item is a Group Type
20
- def[](name)
21
- # rubocop: disable Style/GlobalVars
22
- item = $ir.getItem(name)
23
- # rubocop: enable Style/GlobalVars
24
- item.is_a?(GroupItem) ? nil : EntityLookup.decorate_item(item)
25
- rescue Java::OrgOpenhabCoreItems::ItemNotFoundException
26
- nil
27
- end
28
-
29
- # Returns true if the given item name exists
30
- # @param name [String] Item name to check
31
- # @return [Boolean] true if the item exists, false otherwise
32
- def include?(name)
33
- # rubocop: disable Style/GlobalVars
34
- !$ir.getItems(name).empty?
35
- # rubocop: enable Style/GlobalVars
36
- end
37
- alias key? include?
38
- end
39
-
40
- java_import org.openhab.core.items.GroupItem
41
- # Fetches all non-group items from the item registry
42
- # @return [OpenHAB::Core::DSL::Items::Items]
43
- def items
44
- # rubocop: disable Style/GlobalVars
45
- Items.new(EntityLookup.decorate_items($ir.items.reject { |item| item.is_a? GroupItem }))
46
- # rubocop: enable Style/GlobalVars
47
- end
48
- end
49
- end
50
- end
51
- end