class SAAL::Envoy::Inverters
Constants
- DEFAULT_CACHE_TIMEOUT
- DEFAULT_PASSWORD
- DEFAULT_PREFIX
- DEFAULT_SOURCES
- DEFAULT_TIMEOUT
- DEFAULT_TYPES
- DEFAULT_USER
Attributes
inverters[R]
Public Class Methods
new(defs, opts={})
click to toggle source
# File lib/envoy.rb 225 def initialize(defs, opts={}) 226 @host = defs[:host] || defs['host'] || DEFAULT_HOST 227 @user = defs[:user] || defs['user'] || DEFAULT_USER 228 @password = defs[:password] || defs['password'] || DEFAULT_PASSWORD 229 @timeout = opts[:timeout] || opts['timeout'] || DEFAULT_TIMEOUT 230 @cache_timeout = opts[:cache_timeout] || opts['cache_timeout'] || DEFAULT_CACHE_TIMEOUT 231 @cache = nil 232 @cachetime = nil 233 @inverters_list = {} 234 @inverters = defs[:inverters] || defs['inverters'] || DEFAULT_SOURCES 235 @types = defs[:types] || defs['types'] || DEFAULT_TYPES 236 @prefix = defs[:prefix] || defs['prefix'] || DEFAULT_PREFIX 237 end
Public Instance Methods
create_sensors()
click to toggle source
# File lib/envoy.rb 256 def create_sensors 257 sensors = {} 258 @inverters.product(@types).each do |source, type| 259 key = "#{@prefix}_#{source}_#{type}" 260 sensors[key] = InverterUnderlying.new(key, self) 261 end 262 sensors 263 end
enumerate()
click to toggle source
# File lib/envoy.rb 247 def enumerate 248 read_val("foo") # Force a read to make sure the inverter serials are stored 249 @inverters_list.keys 250 end
read_val(name)
click to toggle source
# File lib/envoy.rb 239 def read_val(name) 240 if !@cachetime or @cachetime < Time.now - @cache_timeout 241 @cache = read_all() 242 @cachetime = Time.now 243 end 244 return @cache ? @cache[name] : nil 245 end
set_all_inverters!()
click to toggle source
# File lib/envoy.rb 252 def set_all_inverters! 253 @inverters = self.enumerate 254 end
Private Instance Methods
read_all()
click to toggle source
# File lib/envoy.rb 266 def read_all 267 response = SAAL::do_http_get_digest(@host, 80, "/api/v1/production/inverters", @user, @password, @timeout) 268 return nil if !response 269 270 values = JSON.parse(response.body) 271 inverters = {} 272 values.each do |inverter| 273 serial = inverter["serialNumber"] 274 @inverters_list[serial] = true 275 {"lastReportDate" => "last_report_date", 276 "lastReportWatts" => "w_now", 277 "maxReportWatts" => "w_max", 278 }.each do |type, label| 279 inverters["#{@prefix}_#{serial}_#{label}"] = inverter[type] 280 end 281 end 282 283 inverters 284 end