Class: OpenHAB::DSL::Things::Builder

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

Overview

A thing builder allows you to dynamically create openHAB things at runtime. This can be useful either to create things as soon as the script loads, or even later based on a rule executing.

Examples:

Create a Thing from the Astro Binding

things.build do
  thing "astro:sun:home", "Astro Sun Data", config: { "geolocation" => "0,0" }
end

Create a Thing with Channels

thing_config = {
  availabilityTopic: "my-switch/status",
  payloadAvailable: "online",
  payloadNotAvailable: "offline"
}
things.build do
  thing("mqtt:topic:my-switch", "My Switch", bridge: "mqtt:bridge:mosquitto", config: thing_config) do
    channel("switch1", "switch", config: {
      stateTopic: "stat/my-switch/switch1/state", commandTopic="cmnd/my-switch/switch1/command"
    })
    channel("button1", "string", config: {
      stateTopic: "stat/my-switch/button1/state", commandTopic="cmnd/my-switch/button1/command"
    })
  end
end

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider) ⇒ Builder

Returns a new instance of Builder.



43
44
45
# File 'lib/openhab/dsl/things/builder.rb', line 43

def initialize(provider)
  @provider = Core::Things::Provider.current(provider)
end

Instance Attribute Details

#providerorg.openhab.core.thing.ManagedThingProvider (readonly)



41
42
43
# File 'lib/openhab/dsl/things/builder.rb', line 41

def provider
  @provider
end

Instance Method Details

#bridge(*args, **kwargs, &block) ⇒ Object

Create a new Bridge



49
50
51
# File 'lib/openhab/dsl/things/builder.rb', line 49

def bridge(*args, **kwargs, &block)
  build(BridgeBuilder, *args, **kwargs, &block)
end

#thing(*args, **kwargs, &block) ⇒ Object

Create a new Thing



55
56
57
# File 'lib/openhab/dsl/things/builder.rb', line 55

def thing(*args, **kwargs, &block)
  build(ThingBuilder, *args, **kwargs, &block)
end