Class: OpenHAB::DSL::Things::ChannelBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/openhab/dsl/things/builder.rb

Overview

The ChannelBuilder DSL allows you to customize a channel

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uid, type, label = nil, thing:, description: nil, group: nil, config: nil, properties: nil, default_tags: nil, auto_update_policy: nil, accepted_item_type: nil) ⇒ ChannelBuilder

Constructor for ChannelBuilder

This class is instantiated by the #channel method inside a Builder#thing block.



332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
# File 'lib/openhab/dsl/things/builder.rb', line 332

def initialize(uid,
               type,
               label = nil,
               thing:,
               description: nil,
               group: nil,
               config: nil,
               properties: nil,
               default_tags: nil,
               auto_update_policy: nil,
               accepted_item_type: nil)
  @thing = thing

  uid = uid.to_s
  uid_segments = uid.split(org.openhab.core.common.AbstractUID::SEPARATOR)
  group_segments = uid_segments.last.split(org.openhab.core.thing.ChannelUID::CHANNEL_GROUP_SEPARATOR)
  if group
    if group_segments.length == 2
      group_segments[0] = group
    else
      group_segments.unshift(group)
    end
    uid_segments[-1] = group_segments.join(org.openhab.core.thing.ChannelUID::CHANNEL_GROUP_SEPARATOR)
  end
  @uid = org.openhab.core.thing.ChannelUID.new(thing.uid, uid_segments.last)
  unless type.is_a?(org.openhab.core.thing.type.ChannelTypeUID)
    type = org.openhab.core.thing.type.ChannelTypeUID.new(thing.uid.binding_id, type)
  end
  @type = type
  @label = label
  @config = config&.transform_keys(&:to_s)
  @default_tags = Items::ItemBuilder.normalize_tags(*Array.wrap(default_tags))
  @properties = properties&.transform_keys(&:to_s)
  @description = description
  @accepted_item_type = accepted_item_type
  return unless auto_update_policy

  @auto_update_policy = org.openhab.core.thing.type.AutoUpdatePolicy.value_of(auto_update_policy.to_s.upcase)
end

Instance Attribute Details

#accepted_item_typeString (readonly)



391
392
393
# File 'lib/openhab/dsl/things/builder.rb', line 391

def accepted_item_type
  @accepted_item_type ||= type.channel_type&.item_type
end

#auto_update_policyObject (readonly)

Returns the value of attribute auto_update_policy.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def auto_update_policy
  @auto_update_policy
end

#configObject (readonly)

Returns the value of attribute config.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def config
  @config
end

#default_tagsObject (readonly)

Returns the value of attribute default_tags.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def default_tags
  @default_tags
end

#descriptionObject (readonly)

Returns the value of attribute description.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def description
  @description
end

#labelObject

Returns the value of attribute label.



303
304
305
# File 'lib/openhab/dsl/things/builder.rb', line 303

def label
  @label
end

#propertiesObject (readonly)

Returns the value of attribute properties.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def properties
  @properties
end

#typeObject (readonly)

Returns the value of attribute type.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def type
  @type
end

#uidObject (readonly)

Returns the value of attribute uid.



304
305
306
# File 'lib/openhab/dsl/things/builder.rb', line 304

def uid
  @uid
end