class LXP::Packet::ReadInput1
Public Class Methods
new()
click to toggle source
Calls superclass method
LXP::Packet::ReadInput::new
# File lib/lxp/packet/read_input1.rb, line 8 def initialize super self.register = 0 self.value = 40 end
Public Instance Methods
to_h()
click to toggle source
Decode the data and return a hash of values in this input packet
# File lib/lxp/packet/read_input1.rb, line 16 def to_h { # 0 = static 1 # 1 = R_INPUT # 2..12 = serial # 13/14 = length status: Utils.int(@data[15, 2]), v_pv_1: Utils.int(@data[17, 2]) / 10.0, # V v_pv_2: Utils.int(@data[19, 2]) / 10.0, # V v_pv_3: Utils.int(@data[21, 2]) / 10.0, # V v_bat: Utils.int(@data[23, 2]) / 10.0, # V soc: @data[25], # % # 26 used for anything? # 27 always been 0 so far # 28 I've seen anything from 0 to 53, changes occasionally but # not spotted a pattern yet. _unknown_i1_27: @data[27], _unknown_i1_28: @data[28], # this might be useless if 27 and 28 are independent _unknown_i1_27_28: Utils.int(@data[27, 2]), p_pv: Utils.int(@data[29, 2]) + Utils.int(@data[31, 2]) + Utils.int(@data[33, 2]), # W p_pv_1: Utils.int(@data[29, 2]), # W p_pv_2: Utils.int(@data[31, 2]), # W p_pv_3: Utils.int(@data[33, 2]), # W p_charge: Utils.int(@data[35, 2]), # W p_discharge: Utils.int(@data[37, 2]), # W v_ac_r: Utils.int(@data[39, 2]) / 10.0, # V v_ac_s: Utils.int(@data[41, 2]) / 10.0, # V v_ac_t: Utils.int(@data[43, 2]) / 10.0, # V f_ac: Utils.int(@data[45, 2]) / 100.0, # Hz p_inv: Utils.int(@data[47, 2]), # W p_rec: Utils.int(@data[49, 2]), # W # this seems to track with charge/discharge but at lower values. # no idea what this means. _unknown_i1_51_52: Utils.int(@data[51, 2]), # W ? pf: Utils.int(@data[53, 2]) / 1000.0, # Hz v_eps_r: Utils.int(@data[55, 2]) / 10.0, # V v_eps_s: Utils.int(@data[57, 2]) / 10.0, # V v_eps_t: Utils.int(@data[59, 2]) / 10.0, # V f_eps: Utils.int(@data[61, 2]) / 100.0, # Hz # peps and seps in 63..66? p_to_grid: Utils.int(@data[67, 2]), # W p_to_user: Utils.int(@data[69, 2]), # W e_pv_day: (Utils.int(@data[71, 2]) + Utils.int(@data[73, 2]) + Utils.int(@data[75, 2])) / 10.0, # kWh e_pv_1_day: Utils.int(@data[71, 2]) / 10.0, # kWh e_pv_2_day: Utils.int(@data[73, 2]) / 10.0, # kWh e_pv_3_day: Utils.int(@data[75, 2]) / 10.0, # kWh e_inv_day: Utils.int(@data[77, 2]) / 10.0, # kWh e_rec_day: Utils.int(@data[79, 2]) / 10.0, # kWh e_chg_day: Utils.int(@data[81, 2]) / 10.0, # kWh e_dischg_day: Utils.int(@data[83, 2]) / 10.0, # kWh e_eps_day: Utils.int(@data[85, 2]) / 10.0, # kWh e_to_grid_day: Utils.int(@data[87, 2]) / 10.0, # kWh e_to_user_day: Utils.int(@data[89, 2]) / 10.0, # kWh v_bus_1: Utils.int(@data[91, 2]) / 10.0, # V v_bus_2: Utils.int(@data[93, 2]) / 10.0 # V } end