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)
Exemple #4
0
 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 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')
 def test_logger_name(self):
     out = ZigBeeOutput()
     self.assertEqual(out.logger_name, Constants.LogKeys.outputsZigBee)
Exemple #11
0
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()