Class: OpenHAB::Core::Items::NumberItem

Inherits:
GenericItem show all
Includes:
NumericItem
Defined in:
lib/openhab/core/items/number_item.rb

Overview

A NumberItem has a decimal value and is usually used for all kinds of sensors, like temperature, brightness, wind, etc. It can also be used as a counter or as any other thing that can be expressed as a number.

Non-dimensioned numbers will have a state of DecimalType, while dimensioned numbers will have a state of QuantityType. Be sure to read the documentation for those two classes for how to work with the different states of a NumberItem.

Examples:

Number Items can be selected in an enumerable with grep.

# Get all NumberItems
items.grep(NumberItem)
     .each { |number| logger.info("#{item.name} is a Number Item") }

Constant Summary

Constants included from Semantics

Semantics::Equipment, Semantics::Location, Semantics::Point, Semantics::Property, Semantics::Tag

Instance Attribute Summary collapse

Attributes inherited from GenericItem

#category, #formatted_state, #label, #name, #raw_state, #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, #name

Instance Method Summary collapse

Methods inherited from GenericItem

#command, #modify, #null?, #refresh, #state?, #undef?, #update

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 DSL::Items::TimedCommand

#command

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

#ensure

Instance Attribute Details

#dimensionClass? (readonly)

Returns The dimension of the number item.

Returns:

  • (Class, nil)

    The dimension of the number item.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/openhab/core/items/number_item.rb', line 34

class NumberItem < GenericItem
  include NumericItem

  # raw numbers translate directly to {DecimalType}, not a string
  # @!visibility private
  def format_type(command)
    if command.is_a?(Numeric)
      if unit && (target_unit = DSL.unit(unit.dimension) || unit)
        return Types::QuantityType.new(command, target_unit)
      end

      return Types::DecimalType.new(command)
    end

    super
  end

  protected

  # Adds the unit dimension
  def type_details
    ":#{dimension}" if dimension
  end
end

#stateDecimalType, ... (readonly)

Returns:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/openhab/core/items/number_item.rb', line 34

class NumberItem < GenericItem
  include NumericItem

  # raw numbers translate directly to {DecimalType}, not a string
  # @!visibility private
  def format_type(command)
    if command.is_a?(Numeric)
      if unit && (target_unit = DSL.unit(unit.dimension) || unit)
        return Types::QuantityType.new(command, target_unit)
      end

      return Types::DecimalType.new(command)
    end

    super
  end

  protected

  # Adds the unit dimension
  def type_details
    ":#{dimension}" if dimension
  end
end

#unitjavax.measure.Unit? (readonly)

Returns:



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/openhab/core/items/number_item.rb', line 34

class NumberItem < GenericItem
  include NumericItem

  # raw numbers translate directly to {DecimalType}, not a string
  # @!visibility private
  def format_type(command)
    if command.is_a?(Numeric)
      if unit && (target_unit = DSL.unit(unit.dimension) || unit)
        return Types::QuantityType.new(command, target_unit)
      end

      return Types::DecimalType.new(command)
    end

    super
  end

  protected

  # Adds the unit dimension
  def type_details
    ":#{dimension}" if dimension
  end
end

Instance Method Details

#type_detailsObject (protected)

Adds the unit dimension



54
55
56
# File 'lib/openhab/core/items/number_item.rb', line 54

def type_details
  ":#{dimension}" if dimension
end