class Domotics::Core::Element

Attributes

device[R]
name[R]
room[R]
type[R]

Public Class Methods

data=(value) click to toggle source
# File lib/domotics/core/element.rb, line 55
def self.data=(value)
  @@data = value
end
new(args = {}) click to toggle source
# File lib/domotics/core/element.rb, line 6
def initialize(args = {})
  @room = args[:room]
  @device = args[:device]
  @room.register_element self, @name = args[:name]
  @type ||= :element
  set_state(self.state || :off)
end

Public Instance Methods

image() click to toggle source
# File lib/domotics/core/element.rb, line 41
def image
  nil
end
info() click to toggle source
# File lib/domotics/core/element.rb, line 37
def info
  nil
end
load_driver(args = {}) click to toggle source
# File lib/domotics/core/element.rb, line 14
def load_driver(args = {})
  return unless args[:device_type]
  device_space = args[:device_type].to_s.split("_").map{ |x| x.capitalize }.join
  self.class.class_eval(%(include Domotics::#{device_space}::#{args[:driver]}), __FILE__, __LINE__)
end
set_state(value) click to toggle source
# File lib/domotics/core/element.rb, line 45
def set_state(value)
  @@data[self].state = value
  @room.notify({ event: :state_set, element: self }) unless @type == :dimmer
end
state() click to toggle source
# File lib/domotics/core/element.rb, line 20
def state
  @@data[self].state
end
state_changed(value) click to toggle source
# File lib/domotics/core/element.rb, line 50
def state_changed(value)
  @@data[self].state = value
  @room.notify event: :state_changed, element: self
end
to_s() click to toggle source
# File lib/domotics/core/element.rb, line 59
def to_s
  "#{@room.name}@#{@name}(id:#{__id__})"
end
verbose_state() click to toggle source
# File lib/domotics/core/element.rb, line 24
def verbose_state
  { @room.name =>
    { :elements =>
      { @name =>
        { :state => state,
          :info => info,
          :img => image,
        }
      }
    }
  }
end