Index: dialin/dg/valves.py =================================================================== diff -u -r8324424cdf429624a338837613b480672d872c25 -r7867f8415014213fc2a4e66f54f45fc199dcb33c --- dialin/dg/valves.py (.../valves.py) (revision 8324424cdf429624a338837613b480672d872c25) +++ dialin/dg/valves.py (.../valves.py) (revision 7867f8415014213fc2a4e66f54f45fc199dcb33c) @@ -86,39 +86,28 @@ def handler_valves_sync(self, message): """ - Handles published valves states messages. Valves states are captured for reference. + Handles published valves states message. \param message: published valves states message \returns none """ - vrf = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VRF:self.END_POS_VALVE_VRF])) - vri = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VRI:self.END_POS_VALVE_VRI])) - vrd = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VRD:self.END_POS_VALVE_VRD])) - vro = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VRO:self.END_POS_VALVE_VRO])) - vpo = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VPO:self.END_POS_VALVE_VPO])) - vbf = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VBF:self.END_POS_VALVE_VBF])) - vrc = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VRC:self.END_POS_VALVE_VRC])) - vdr = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VDR:self.END_POS_VALVE_VDR])) - vpi = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VPI:self.END_POS_VALVE_VPI])) - vsp = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VSP:self.END_POS_VALVE_VSP])) - vr1 = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VR1:self.END_POS_VALVE_VR1])) - vr2 = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VR2:self.END_POS_VALVE_VR2])) - vpd = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVE_VPD:self.END_POS_VALVE_VPD])) + vst = struct.unpack('f', bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_VALVES_STATES])) - self.valve_state_VRF = vrf[0] - self.valve_state_VRI = vri[0] - self.valve_state_VRD = vrd[0] - self.valve_state_VRO = vro[0] - self.valve_state_VPO = vpo[0] - self.valve_state_VBF = vbf[0] - self.valve_state_VRC = vrc[0] - self.valve_state_VDR = vdr[0] - self.valve_state_VPI = vpi[0] - self.valve_state_VSP = vsp[0] - self.valve_state_VR1 = vr1[0] - self.valve_state_VR2 = vr2[0] - self.valve_state_VPD = vpd[0] + # Extract each valve state from U16 valves states using bit-masking + self.valve_state_VRF = vst & 0x0001 + self.valve_state_VRI = vst & 0x0002 + self.valve_state_VRD = vst & 0x0003 + self.valve_state_VRO = vst & 0x0004 + self.valve_state_VPO = vst & 0x0005 + self.valve_state_VBF = vst & 0x0006 + self.valve_state_VRC = vst & 0x0007 + self.valve_state_VDR = vst & 0x0008 + self.valve_state_VPI = vst & 0x0009 + self.valve_state_VSP = vst & 0x0010 + self.valve_state_VR1 = vst & 0x0011 + self.valve_state_VR2 = vst & 0x0012 + self.valve_state_VPD = vst & 0x0013 def cmd_valve_override(self, state, valve, reset=NO_RESET): """