def read_phases(self): values = self._from_float(self.read_input_register(1, 30)) # Note: PAC reports phase powers as NaN, if all phases aren't connected. # However, the total power read with PAC.read_power() is seems valid even then. self.L1 = Phase(values[0], values[6], values[9], values[12]) self.L2 = Phase(values[1], values[7], values[10], values[13]) self.L3 = Phase(values[2], values[8], values[11], values[14])
def __init__(self): self.power = Power() self.L1 = Phase() self.L2 = Phase() self.L3 = Phase() self.tariff_1 = Tariff() self.tariff_2 = Tariff() self.frequency = float('nan')
def test_add(): L1 = Phase(230, 1, 2, 1) L2 = Phase(230, 1, 2, 1) L3 = Phase(230, 1, 2, 1) L_total = L1 + L2 + L3 assert isinstance(L_total, Phase) assert L_total.voltage == 230 assert L_total.current == 3 assert isinstance(L_total.power, Power) assert L_total.power.apparent == 3 * 2 assert L_total.power.active == 3
def test_sub(): L1 = Phase(230, 1, 2, 1) L2 = Phase(230, 1, 2, 1) L3 = Phase(230, 1, 2, 1) L_total = L1 - L2 - L3 assert isinstance(L_total, Phase) assert L_total.voltage == 230 assert L_total.current == -1 assert isinstance(L_total.power, Power) assert L_total.power.apparent == -2 assert L_total.power.active == -1
def test_power_calc(): L1 = Phase(230, 1) assert isinstance(L1.power, Power) assert L1.power.apparent == 230 assert isnan(L1.power.active) assert isnan(L1.power.reactive)