Class: OpenHAB::Core::Items::GenericItem
- Inherits:
-
Object
- Object
- OpenHAB::Core::Items::GenericItem
- Includes:
- Item, Persistence, Semantics, DSL::Items::Ensure::Item, DSL::Items::TimedCommand
- Defined in:
- lib/openhab/core/items/generic_item.rb
Overview
The abstract base class for all items.
Direct Known Subclasses
ContactItem, DateTimeItem, GroupItem, ImageItem, LocationItem, NumberItem, PlayerItem, RollershutterItem, StringItem, SwitchItem
Constant Summary
Constants included from Semantics
Semantics::Equipment, Semantics::Location, Semantics::Point, Semantics::Property, Semantics::Tag
Instance Attribute Summary collapse
-
#category ⇒ String
The item's category.
-
#formatted_state ⇒ String
readonly
Format the item's state according to its state description.
-
#label ⇒ String
The item's descriptive label.
-
#name ⇒ String
readonly
The item's name.
-
#raw_state ⇒ State
readonly
Get the raw item state.
- #state ⇒ State? readonly
-
#tags ⇒ Array<String>
The item's tags.
Attributes included from Semantics
#equipment, #equipment_type, #location, #location_type, #point_type, #property_type, #semantic_type
Attributes included from Item
#accepted_command_types, #accepted_data_types, #all_groups, #groups, #metadata
Instance Method Summary collapse
-
#command(command) ⇒ self?
(also: #<<)
Send a command to this item.
-
#modify(force: false) { ... } ⇒ Object
Defers notifying openHAB of modifications to multiple attributes until the block is complete.
-
#null? ⇒ true, false
Check if the item state == NULL.
-
#refresh ⇒ Item
Send the REFRESH command to the item.
- #state? ⇒ true, false
-
#undef? ⇒ true, false
Check if the item state == UNDEF.
-
#update(state) ⇒ self?
Send an update to this item.
Methods included from Semantics
#equipment?, #location?, #point?, #points, #semantic?
Methods included from Item
#inspect, #member_of?, #provider, #tagged?, #thing, #things, #to_s
Methods included from Persistence
#average_between, #average_since, #changed_between?, #changed_since?, #count_between, #count_since, #count_state_changes_between, #count_state_changes_since, #delta_between, #delta_since, #deviation_between, #deviation_since, #evolution_rate, #historic_state, #last_update, #maximum_between, #maximum_since, #minimum_between, #minimum_since, #persist, #previous_state, #sum_between, #sum_since, #updated_between?, #updated_since?, #variance_between, #variance_since
Methods included from DSL::Items::Ensure::Ensurable
Instance Attribute Details
#category ⇒ String
The item's category.
255 256 257 258 259 260 261 262 263 |
# File 'lib/openhab/core/items/generic_item.rb', line 255 def category=(value) modify do value = value&.to_s next if category == value @modified = true set_category(value) end end |
#formatted_state ⇒ String (readonly)
Format the item's state according to its state description
This may include running a transformation.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/openhab/core/items/generic_item.rb', line 85 def formatted_state # use to_string, not to_s, to get the original openHAB toString(), instead of any overrides # the JRuby library has defined raw_state_string = raw_state.to_string return raw_state_string unless (pattern = state_description&.pattern) transformed_state_string = org.openhab.core.transform.TransformationHelper.transform(OSGi.bundle_context, pattern, raw_state_string) return state.format(pattern) if transformed_state_string.nil? || transformed_state_string == raw_state_string transformed_state_string rescue org.openhab.core.transform.TransformationException raw_state_string end |
#label ⇒ String
The item's descriptive label.
|
# File 'lib/openhab/core/items/generic_item.rb', line 48
|
#name ⇒ String (readonly)
The item's name.
|
# File 'lib/openhab/core/items/generic_item.rb', line 44
|
#raw_state ⇒ State (readonly)
63 |
# File 'lib/openhab/core/items/generic_item.rb', line 63 alias_method :raw_state, :state |
#state ⇒ State? (readonly)
Returns openHAB item state if state is not UNDEF or NULL, nil otherwise.
This makes it easy to use with the
Ruby safe navigation operator &.
Use #undef? or #null? to check for those states.
110 111 112 |
# File 'lib/openhab/core/items/generic_item.rb', line 110 def state raw_state if state? end |
#tags ⇒ Array<String> #tags=(values) ⇒ void
The item's tags
277 278 279 280 281 282 283 284 285 286 |
# File 'lib/openhab/core/items/generic_item.rb', line 277 def tags=(values) modify do values = DSL::Items::ItemBuilder.normalize_tags(*values) next if values.to_set == tags.to_set @modified = true remove_all_tags add_tags(values) end end |
Instance Method Details
#command(command) ⇒ self? Also known as: <<
Send a command to this item
When this method is chained after the ensure method, or issued inside an ensure_states block, the command will only be sent if the item is not already in the same state.
137 138 139 140 141 142 |
# File 'lib/openhab/core/items/generic_item.rb', line 137 def command(command) command = format_command(command) logger.trace "Sending Command #{command} to #{name}" $events.send_command(self, command) Proxy.new(self) end |
#modify(force: false) { ... } ⇒ Object
Defers notifying openHAB of modifications to multiple attributes until the block is complete.
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
# File 'lib/openhab/core/items/generic_item.rb', line 216 def modify(force: false) raise ArgumentError, "you must pass a block to modify" unless block_given? return yield if instance_variable_defined?(:@modifying) && @modifying begin provider = self.provider if provider && !provider.is_a?(org.openhab.core.common.registry.ManagedProvider) raise FrozenError, "Cannot modify item #{name} from provider #{provider.inspect}." unless force provider = nil logger.debug("Forcing modifications to non-managed item #{name}") end @modified = false @modifying = true r = yield provider&.update(self) if @modified r ensure @modifying = false end end |
#null? ⇒ true, false
Check if the item state == NULL
|
# File 'lib/openhab/core/items/generic_item.rb', line 114
|
#refresh ⇒ Item
Send the REFRESH command to the item
|
# File 'lib/openhab/core/items/generic_item.rb', line 151
|
#state? ⇒ true, false
70 71 72 |
# File 'lib/openhab/core/items/generic_item.rb', line 70 def state? !raw_state.is_a?(Types::UnDefType) end |
#undef? ⇒ true, false
Check if the item state == UNDEF
|
# File 'lib/openhab/core/items/generic_item.rb', line 118
|
#update(state) ⇒ self?
Send an update to this item
162 163 164 165 166 167 |
# File 'lib/openhab/core/items/generic_item.rb', line 162 def update(state) state = format_update(state) logger.trace "Sending Update #{state} to #{name}" $events.post_update(self, state) Proxy.new(self) end |