def test_no_port(self, win): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = True ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() with self.assertRaises(KeyError): ot.sendCommand(**data)
def test_no_port( self, win ): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = True ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() with self.assertRaises( KeyError ): ot.sendCommand( **data )
def test_pack_and_unpack(self, win): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.port] = 'DIO-7' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = 1 value = 1 ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() ot.sendCommand(**data)
def test_pack_and_unpack( self, win ): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.port] = 'DIO-7' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = 1 value = 1 ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() ot.sendCommand( **data )
def test_invalid_device( self, win ): data = {} data[Constants.DataPacket.device] = 'xxxxxxxxxx' data[Constants.DataPacket.port] = 'DIO-7' data[Constants.DataPacket.value] = True data[Constants.DataPacket.ID] = 0xff ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() with self.assertRaisesRegexp( ValueError, "invalid literal for int.. with base 16:.*" ): ot.sendCommand( **data )
def test_invalid_device(self, win): data = {} data[Constants.DataPacket.device] = 'xxxxxxxxxx' data[Constants.DataPacket.port] = 'DIO-7' data[Constants.DataPacket.value] = True data[Constants.DataPacket.ID] = 0xff ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() with self.assertRaisesRegexp( ValueError, "invalid literal for int.. with base 16:.*"): ot.sendCommand(**data)
def test_set_DIO_3_Low( self, win ): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.port] = 'DIO-3' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = False ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() ot.sendCommand( **data ) ot.zigbee.remote_at.assert_called_once_with( command='D3', parameter='\x04', dest_addr_long='\x00\x13\xa2\x00@\x90*\x02', frame_id='\xaa' )
def test_set_DIO_2_Low(self, win): data = {} data[Constants.DataPacket.device] = '0x13a20040902a02' data[Constants.DataPacket.port] = 'DIO-2' data[Constants.DataPacket.ID] = 0xAA data[Constants.DataPacket.value] = False ot = ZigBeeOutput() ot.zigbee = MagicMock() ot.zigbee.remote_at = MagicMock() ot.sendCommand(**data) ot.zigbee.remote_at.assert_called_once_with( command='D2', parameter='\x04', dest_addr_long='\x00\x13\xa2\x00@\x90*\x02', frame_id='\xaa')
class ZigBeeOutputThread( Base, threading.Thread ): ''' classdocs ''' output_queue = None zigbee_output = None done = False connected = False talking = True def __init__( self, queue, in_test_mode ): ''' Constructor args: queue is the xbee output Queue ''' super( ZigBeeOutputThread, self ).__init__() threading.Thread.__init__( self ) self.output_queue = queue self.in_test_mode = in_test_mode @property def logger_name( self ): return Constants.LogKeys.outputsZigBee def zigbeeConnect( self ): try: self.zigbee_output = ZigBeeOutput( self.in_test_mode ) self.zigbee_output.startCorrectZigbee() self.connected = self.talking = True self.logger.debug( 'Connect to ZibBee' ) except Exception as ex: self.logger.error( ex ) time.sleep( 10 ) self.connected = self.talking = False return self.connected def processCommandToZigBee( self ): packet = self.output_queue.receive() self.logger.debug( "Thread Output ZigBee Received packet for sending to XBee" ) try: self.zigbee_output.sendCommand( **packet ) self.talking = self.connected = True except IOError as er: self.logger.exception( er ) self.connected = self.talking = False return self.talking def connectAndProcessZigBeeCommands( self ): try: while not self.done: while not self.connected: self.connected = self.zigbeeConnect() self.logger.debug( "Successfully connected to the zigbee".format( self.connected ) ) while self.talking: self.talking = self.processCommandToZigBee() except KeyboardInterrupt as ki: self.logger.exception( ki ) def run( self ): self.connectAndProcessZigBeeCommands()