Class: SAAL::Envoy::Inverters

Inherits:
Object
  • Object
show all
Defined in:
lib/envoy.rb

Constant Summary collapse

DEFAULT_TIMEOUT =
2
DEFAULT_CACHE_TIMEOUT =
50
DEFAULT_SOURCES =
[]
DEFAULT_TYPES =

“last_report_date”, “w_max”

["w_now"]
DEFAULT_USER =
nil
DEFAULT_PASSWORD =
nil
DEFAULT_PREFIX =
"inverters"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(defs, opts = {}) ⇒ Inverters

Returns a new instance of Inverters.



225
226
227
228
229
230
231
232
233
234
235
236
237
# File 'lib/envoy.rb', line 225

def initialize(defs, opts={})
  @host = defs[:host] || defs['host'] || DEFAULT_HOST
  @user = defs[:user] || defs['user'] || DEFAULT_USER
  @password = defs[:password] || defs['password'] || DEFAULT_PASSWORD
  @timeout = opts[:timeout] || opts['timeout'] || DEFAULT_TIMEOUT
  @cache_timeout = opts[:cache_timeout] || opts['cache_timeout'] || DEFAULT_CACHE_TIMEOUT
  @cache = nil
  @cachetime = nil
  @inverters_list = {}
  @inverters = defs[:inverters] || defs['inverters'] || DEFAULT_SOURCES
  @types = defs[:types] || defs['types'] || DEFAULT_TYPES
  @prefix = defs[:prefix] || defs['prefix'] || DEFAULT_PREFIX
end

Instance Attribute Details

#invertersObject (readonly)

Returns the value of attribute inverters.



223
224
225
# File 'lib/envoy.rb', line 223

def inverters
  @inverters
end

Instance Method Details

#create_sensorsObject



256
257
258
259
260
261
262
263
# File 'lib/envoy.rb', line 256

def create_sensors
  sensors = {}
  @inverters.product(@types).each do |source, type|
    key = "#{@prefix}_#{source}_#{type}"
    sensors[key] = InverterUnderlying.new(key, self)
  end
  sensors
end

#enumerateObject



247
248
249
250
# File 'lib/envoy.rb', line 247

def enumerate
  read_val("foo") # Force a read to make sure the inverter serials are stored
  @inverters_list.keys
end

#read_val(name) ⇒ Object



239
240
241
242
243
244
245
# File 'lib/envoy.rb', line 239

def read_val(name)
  if !@cachetime or @cachetime < Time.now - @cache_timeout
    @cache = read_all()
    @cachetime = Time.now
  end
  return @cache ? @cache[name] : nil
end

#set_all_inverters!Object



252
253
254
# File 'lib/envoy.rb', line 252

def set_all_inverters!
  @inverters = self.enumerate
end