Class: SAAL::Envoy::Inverters

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

Constant Summary collapse

DEFAULT_HOST =
"envoy.local"
DEFAULT_TOKEN =
nil
DEFAULT_TIMEOUT =
2
DEFAULT_CACHE_TIMEOUT =
50
DEFAULT_SOURCES =
[]
DEFAULT_TYPES =

“last_report_date”, “w_max”

["w_now"]
DEFAULT_PREFIX =
"inverters"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Inverters.



229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/envoy.rb', line 229

def initialize(defs, opts={})
  @host = defs[:host] || defs['host'] || DEFAULT_HOST
  @token = defs[:token] || defs['token'] || DEFAULT_TOKEN
  @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.



227
228
229
# File 'lib/envoy.rb', line 227

def inverters
  @inverters
end

Instance Method Details

#create_sensorsObject



259
260
261
262
263
264
265
266
# File 'lib/envoy.rb', line 259

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



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

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

#read_val(name) ⇒ Object



242
243
244
245
246
247
248
# File 'lib/envoy.rb', line 242

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



255
256
257
# File 'lib/envoy.rb', line 255

def set_all_inverters!
  @inverters = self.enumerate
end