Class: OpenHAB::DSL::Things::ThingBuilder
- Inherits:
 - 
      Object
      
        
- Object
 - OpenHAB::DSL::Things::ThingBuilder
 
 
- Defined in:
 - lib/openhab/dsl/things/builder.rb
 
Overview
The ThingBuilder DSL allows you to customize a thing
Direct Known Subclasses
Instance Attribute Summary collapse
- 
  
    
      #bridge_uid  ⇒ Core::Things::ThingUID? 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The bridge of this thing.
 - 
  
    
      #channels  ⇒ Array<ChannelBuilder> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Explicitly configured channels on this thing.
 - 
  
    
      #config  ⇒ Hash? 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The config for this thing.
 - 
  
    
      #enabled  ⇒ true, ... 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
If the thing should be enabled after it is created.
 - 
  
    
      #label  ⇒ String? 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
The label for this thing.
 - 
  
    
      #location  ⇒ String? 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
The location for this thing.
 - 
  
    
      #thing_type_uid  ⇒ ThingTypeUID 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The type of this thing.
 - 
  
    
      #uid  ⇒ Core::Things::ThingUID 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The id for this thing.
 
Instance Method Summary collapse
- 
  
    
      #channel(*args, **kwargs, &block)  ⇒ Core::Things::Channel 
    
    
  
  
  
  
  
  
  
  
  
    
Add an explicitly configured channel to this item.
 - 
  
    
      #initialize(uid, label = nil, binding: nil, type: nil, bridge: nil, location: nil, config: {}, enabled: nil)  ⇒ ThingBuilder 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Constructor for ThingBuilder.
 
Constructor Details
#initialize(uid, label = nil, binding: nil, type: nil, bridge: nil, location: nil, config: {}, enabled: nil) ⇒ ThingBuilder
Constructor for ThingBuilder
      190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 190 def initialize(uid, label = nil, binding: nil, type: nil, bridge: nil, location: nil, config: {}, enabled: nil) @channels = [] uid = uid.to_s uid_segments = uid.split(org.openhab.core.common.AbstractUID::SEPARATOR) @bridge_uid = nil bridge = bridge.uid if bridge.is_a?(org.openhab.core.thing.Bridge) || bridge.is_a?(BridgeBuilder) bridge = bridge&.to_s bridge_segments = bridge&.split(org.openhab.core.common.AbstractUID::SEPARATOR) || [] type = type&.to_s # infer missing components type ||= uid_segments[0] if uid_segments.length == 2 type ||= uid_segments[1] if uid_segments.length > 2 binding ||= uid_segments[0] if uid_segments.length > 2 binding ||= bridge_segments[0] if bridge_segments && bridge_segments.length > 2 if bridge bridge_segments.unshift(binding) if bridge_segments.length < 3 @bridge_uid = org.openhab.core.thing.ThingUID.new(*bridge_segments) end thinguid = if uid_segments.length > 2 [binding, type, uid_segments.last].compact else [binding, type, @bridge_uid&.id, uid_segments.last].compact end @uid = org.openhab.core.thing.ThingUID.new(*thinguid) @thing_type_uid = org.openhab.core.thing.ThingTypeUID.new(*@uid.all_segments[0..1]) @label = label @location = location @location = location.label if location.is_a?(Item) @config = config.transform_keys(&:to_s) @enabled = enabled @builder = org.openhab.core.thing.binding.builder.ThingBuilder unless instance_variable_defined?(:@builder) end  | 
  
Instance Attribute Details
#bridge_uid ⇒ Core::Things::ThingUID? (readonly)
The bridge of this thing
      136 137 138  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 136 def bridge_uid @bridge_uid end  | 
  
#channels ⇒ Array<ChannelBuilder> (readonly)
Explicitly configured channels on this thing
      145 146 147  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 145 def channels @channels end  | 
  
#config ⇒ Hash? (readonly)
The config for this thing
      139 140 141  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 139 def config @config end  | 
  
#enabled ⇒ true, ... (readonly)
If the thing should be enabled after it is created
      142 143 144  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 142 def enabled @enabled end  | 
  
#label ⇒ String?
The label for this thing
      124 125 126  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 124 def label @label end  | 
  
#location ⇒ String?
The location for this thing
      127 128 129  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 127 def location @location end  | 
  
#thing_type_uid ⇒ ThingTypeUID (readonly)
The type of this thing
      133 134 135  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 133 def thing_type_uid @thing_type_uid end  | 
  
#uid ⇒ Core::Things::ThingUID (readonly)
The id for this thing
      130 131 132  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 130 def uid @uid end  | 
  
Instance Method Details
#channel(*args, **kwargs, &block) ⇒ Core::Things::Channel
Add an explicitly configured channel to this item
      230 231 232 233 234  | 
    
      # File 'lib/openhab/dsl/things/builder.rb', line 230 def channel(*args, **kwargs, &block) channel = ChannelBuilder.new(*args, thing: self, **kwargs) channel.instance_eval(&block) if block channel.build.tap { |c| @channels << c } end  |