Esempio n. 1
0
 def setUp(self):
     self.ms = MockInterface()
     if self.useMock:  # Use Mock Serial Port
         self.upb = UPB(self.ms)
     else:
         self.serial = Serial('/dev/ttyUSB0', 4800)
         self.upb = UPB(self.serial)
Esempio n. 2
0
 def setUp(self):
     self.ms = MockInterface()
     if self.useMock:  # Use Mock Serial Port
         self.upb = UPB(self.ms)
     else:
         self.serial = Serial('/dev/ttyUSB0', 4800)
         self.upb = UPB(self.serial)
Esempio n. 3
0
    def test_incoming_link(self):
        """
        UBP New Response: PU8A0431260F20FFFFFFEF
        UPBN:49:15:38:20
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(49,38,'L'), callback=m_interface.callback)
        m_interface.read.return_value = 'PU8A0431260F20FFFFFFEF'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,38,'L'), command=State.ON, source=upb)
        m_interface.read.return_value = ''
Esempio n. 4
0
    def test_incoming_link(self):
        """
        UBP New Response: PU8A0431260F20FFFFFFEF
        UPBN:49:15:38:20
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(49,38,'L'), callback=m_interface.callback)
        m_interface.read.return_value = 'PU8A0431260F20FFFFFFEF'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,38,'L'), command=State.ON, source=upb)  
        m_interface.read.return_value = ''
Esempio n. 5
0
    def test_incoming_k(self):
        """
0000   50 55 30 37 31 34 31 36    PU071416
0008   31 30 46 46 33 30 39 30    10FF3090
0010   0D 50 55 30 37 31 35 31    .PU07151
0018   36 31 30 46 46 33 30 38    610FF308
0020   46 0D                      F.
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(22,255), callback=m_interface.callback)
        m_interface.read.return_value = "PU07141610FF3090\x0DPU07151610FF308F\x0D"
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(22,255), command='status', source=upb)
        m_interface.read.return_value = ''
Esempio n. 6
0
    def test_incoming_k(self):
        """
0000   50 55 30 37 31 34 31 36    PU071416
0008   31 30 46 46 33 30 39 30    10FF3090
0010   0D 50 55 30 37 31 35 31    .PU07151
0018   36 31 30 46 46 33 30 38    610FF308
0020   46 0D                      F.
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(22,255), callback=m_interface.callback)
        m_interface.read.return_value = "PU07141610FF3090\x0DPU07151610FF308F\x0D"
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(22,255), command='status', source=upb)  
        m_interface.read.return_value = ''
Esempio n. 7
0
    def test_incoming_on(self):
        """
        UBP New: PU0804310006860037:0000   50 55 30 38 30 34 33 31    PU080431
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 37                      37

        UBP New: PU0805310006860036:0000   50 55 30 38 30 35 33 31    PU080531
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 36                      36
        """
        m_interface = Mock()
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        m_interface.callback.return_value = True
        upb.onCommand(address=(49,6), callback=m_interface.callback)
        m_interface.read.return_value = 'PU0805310006860036'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,6), command=State.OFF, source=upb)
        m_interface.read.return_value = ''
Esempio n. 8
0
    def test_incoming_on(self):
        """
        UBP New: PU0804310006860037:0000   50 55 30 38 30 34 33 31    PU080431
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 37                      37
        
        UBP New: PU0805310006860036:0000   50 55 30 38 30 35 33 31    PU080531
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 36                      36
        """
        m_interface = Mock()
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        m_interface.callback.return_value = True
        upb.onCommand(address=(49,6), callback=m_interface.callback)
        m_interface.read.return_value = 'PU0805310006860036'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,6), command=State.OFF, source=upb)  
        m_interface.read.return_value = ''
Esempio n. 9
0
class UPBInterfaceTests(TestCase):
    useMock = True

    def setUp(self):
        self.ms = MockInterface()
        if self.useMock:  # Use Mock Serial Port
            self.upb = UPB(self.ms)
        else:
            self.serial = Serial('/dev/ttyUSB0', 4800)
            self.upb = UPB(self.serial)

        #self.upb.start()

    def tearDown(self):
        self.upb.shutdown()
        self.serial = None

    def test_instantiation(self):
        self.assertIsNotNone(self.upb,
                             'UPB interface could not be instantiated')

    def test_get_firmware_version(self):
        # What will be written / what should we get back
        self.ms.add_response({'\x120202FC\x0D': 'PR021234\x0D'})

        response = self.upb.get_register(2, 2)
        self.assertEqual(response, '1234')
#        if self.useMock:
#            self.assertEqual(self.ms._written, '\x120202FC\x0D')
        #sit and spin, let the magic happen
        #select.select([], [], [])

    def test_device_on(self):
        """
        UPBPIM, myPIM, 49, 0x1B08, 30
        UPBD,   upb_foyer,      myPIM,  49, 3
        Response>  Foyer Light On
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   30 33 31 45 32 32 36 34    031E2264
        0010   31 30 0D                   10.
        """
        self.ms.add_response({'\x14081031031E226410\x0D': 'PA\x0D'})
        # Network / Device ID
        response = self.upb.on((49, 3))
        self.assertTrue(response)

    def test_device_status(self):
        """
        UPBPIM, myPIM, 49, 0x1B08, 30
        UPBD,   upb_foyer,      myPIM,  49, 3
        Response>  Foyer Light On
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   30 33 31 45 32 32 36 34    031E2264
        0010   31 30 0D                   10.
        """
        #071031031E3067
        self.ms.add_response({'\x14071031031E3067\x0D': 'PA\x0D'})
        # Network / Device ID
        response = self.upb.status((49, 3))
        self.assertTrue(response)

    def test_update_status(self):
        device = Mock()
        device.address.return_value ='a1'
        self.upb.update_status();


    def test_multiple_commands_at_same_time(self):
        """
        Response>
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   31 32 31 45 32 32 30 30    121E2200
        0010   36 35 0D 50 55 30 38 31    65.PU081
        0018   30 33 31 31 32 31 45 32    031121E2
        0020   32 30 30 36 35 0D          20065.
        """

    def test_incoming_on(self):
        """
        UBP New: PU0804310006860037:0000   50 55 30 38 30 34 33 31    PU080431
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 37                      37

        UBP New: PU0805310006860036:0000   50 55 30 38 30 35 33 31    PU080531
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 36                      36
        """
        m_interface = Mock()
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        m_interface.callback.return_value = True
        upb.onCommand(address=(49,6), callback=m_interface.callback)
        m_interface.read.return_value = 'PU0805310006860036'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,6), command=State.OFF, source=upb)
        m_interface.read.return_value = ''

    def test_incoming_link(self):
        """
        UBP New Response: PU8A0431260F20FFFFFFEF
        UPBN:49:15:38:20
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(49,38,'L'), callback=m_interface.callback)
        m_interface.read.return_value = 'PU8A0431260F20FFFFFFEF'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,38,'L'), command=State.ON, source=upb)
        m_interface.read.return_value = ''

    def test_incoming_k(self):
        """
0000   50 55 30 37 31 34 31 36    PU071416
0008   31 30 46 46 33 30 39 30    10FF3090
0010   0D 50 55 30 37 31 35 31    .PU07151
0018   36 31 30 46 46 33 30 38    610FF308
0020   46 0D                      F.
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(22,255), callback=m_interface.callback)
        m_interface.read.return_value = "PU07141610FF3090\x0DPU07151610FF308F\x0D"
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(22,255), command='status', source=upb)
        m_interface.read.return_value = ''


    def test_level(self):
        self.upb.l40((39, 4))
        self.assertTrue(True)

    def test_level2(self):
        self.upb.level((39, 4), 40)
        self.assertTrue(True)

    def test_link_activate(self):
        """
        """#        self.ms.add_response({'\x14081031031E226410\x0D': 'PA\x0D'})
        self.ms.add_response({'\x14871031031E20F7\x0D': 'PA\x0D'})
        # Network / Device ID
        response = self.upb.on((49, 3, "L"))
        self.assertTrue(response)
Esempio n. 10
0
from pytomation.interfaces import UPB, InsteonPLM, TCP, Serial, Stargate, W800rf32, \
                                    NamedPipe, StateInterface, Command, HTTPServer, \
                                    HTTP, HW_Thermostat, WeMo, InsteonPLM2
from pytomation.devices import Motion, Door, Light, Location, InterfaceDevice, \
                                Photocell, Generic, StateDevice, State, Attribute, \
                                Room, Thermostat, XMPP_Client

#from pytomation.common.system import *

###################### INTERFACE CONFIG #########################
web = HTTPServer()

xmpp = XMPP_Client(id='*****@*****.**', password='******', server='talk.google.com', port=5222)

upb = UPB(Serial('/dev/ttyMI0', 4800))

#insteon = InsteonPLM(TCP('192.168.13.146', 9761))
insteon = InsteonPLM(Serial('/dev/ttyMI1', 19200, xonxoff=False))

w800 = W800rf32(Serial('/dev/ttyMI3', 4800)) 

sg = Stargate(Serial('/dev/ttyMI4', 9600))
# invert the DIO channels for these contact sensors
sg.dio_invert(1)
sg.dio_invert(2)
sg.dio_invert(3)
sg.dio_invert(4)
sg.dio_invert(5)
sg.dio_invert(6)
sg.dio_invert(7)
Esempio n. 11
0
 def test_interface_name(self):
     name = "Main UPB"
     interface = Mock()
     interface.read.return_value = ""
     upb = UPB(interface, name=name)
     self.assertEqual(upb.name, name)
Esempio n. 12
0
class UPBInterfaceTests(TestCase):
    useMock = True

    def setUp(self):
        self.ms = MockInterface()
        if self.useMock:  # Use Mock Serial Port
            self.upb = UPB(self.ms)
        else:
            self.serial = Serial('/dev/ttyUSB0', 4800)
            self.upb = UPB(self.serial)

        #self.upb.start()

    def tearDown(self):
        self.upb.shutdown()
        self.serial = None

    def test_instantiation(self):
        self.assertIsNotNone(self.upb,
                             'UPB interface could not be instantiated')

    def test_get_firmware_version(self):
        # What will be written / what should we get back
        self.ms.add_response({'\x120202FC\x0D': 'PR021234\x0D'})

        response = self.upb.get_register(2, 2)
        self.assertEqual(response, '1234')
#        if self.useMock:
#            self.assertEqual(self.ms._written, '\x120202FC\x0D')
        #sit and spin, let the magic happen
        #select.select([], [], [])

    def test_device_on(self):
        """
        UPBPIM, myPIM, 49, 0x1B08, 30
        UPBD,   upb_foyer,      myPIM,  49, 3
        Response>  Foyer Light On
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   30 33 31 45 32 32 36 34    031E2264
        0010   31 30 0D                   10.
        """
        self.ms.add_response({'\x14081031031E226410\x0D': 'PA\x0D'})
        # Network / Device ID
        response = self.upb.on((49, 3))
        self.assertTrue(response)

    def test_device_status(self):
        """
        UPBPIM, myPIM, 49, 0x1B08, 30
        UPBD,   upb_foyer,      myPIM,  49, 3
        Response>  Foyer Light On
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   30 33 31 45 32 32 36 34    031E2264
        0010   31 30 0D                   10.
        """
        #071031031E3067
        self.ms.add_response({'\x14071031031E3067\x0D': 'PA\x0D'})
        # Network / Device ID
        response = self.upb.status((49, 3))
        self.assertTrue(response)

    def test_update_status(self):
        device = Mock()
        device.address.return_value ='a1'
        self.upb.update_status();


    def test_multiple_commands_at_same_time(self):
        """
        Response>
        0000   50 55 30 38 31 30 33 31    PU081031
        0008   31 32 31 45 32 32 30 30    121E2200
        0010   36 35 0D 50 55 30 38 31    65.PU081
        0018   30 33 31 31 32 31 45 32    031121E2
        0020   32 30 30 36 35 0D          20065.
        """
        
    def test_incoming_on(self):
        """
        UBP New: PU0804310006860037:0000   50 55 30 38 30 34 33 31    PU080431
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 37                      37
        
        UBP New: PU0805310006860036:0000   50 55 30 38 30 35 33 31    PU080531
        0008   30 30 30 36 38 36 30 30    00068600
        0010   33 36                      36
        """
        m_interface = Mock()
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        m_interface.callback.return_value = True
        upb.onCommand(address=(49,6), callback=m_interface.callback)
        m_interface.read.return_value = 'PU0805310006860036'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,6), command=State.OFF, source=upb)  
        m_interface.read.return_value = ''

    def test_incoming_link(self):
        """
        UBP New Response: PU8A0431260F20FFFFFFEF
        UPBN:49:15:38:20
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(49,38,'L'), callback=m_interface.callback)
        m_interface.read.return_value = 'PU8A0431260F20FFFFFFEF'
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(49,38,'L'), command=State.ON, source=upb)  
        m_interface.read.return_value = ''
        
    def test_incoming_k(self):
        """
0000   50 55 30 37 31 34 31 36    PU071416
0008   31 30 46 46 33 30 39 30    10FF3090
0010   0D 50 55 30 37 31 35 31    .PU07151
0018   36 31 30 46 46 33 30 38    610FF308
0020   46 0D                      F.
        """
        m_interface = Mock()
        m_interface.callback.return_value = True
        m_interface.read.return_value = ''
        upb = UPB(m_interface)
        upb.onCommand(address=(22,255), callback=m_interface.callback)
        m_interface.read.return_value = "PU07141610FF3090\x0DPU07151610FF308F\x0D"
#        time.sleep(4000)
        time.sleep(2)
        m_interface.callback.assert_called_with(address=(22,255), command='status', source=upb)  
        m_interface.read.return_value = ''
            
        
    def test_level(self):
        response = self.upb.l40((39, 4))
        self.assertTrue(True)
        
    def test_level2(self):
        response = self.upb.level((39, 4), 40)
        self.assertTrue(True)

    def test_link_activate(self):
        """
        """#        self.ms.add_response({'\x14081031031E226410\x0D': 'PA\x0D'})
        self.ms.add_response({'\x14871031031E20F7\x0D': 'PA\x0D'})
        # Network / Device ID 
        response = self.upb.on((49, 3, "L"))
        self.assertTrue(response)
Esempio n. 13
0
                                    HTTP, HW_Thermostat, WeMo, InsteonPLM2
from pytomation.devices import Motion, Door, Light, Location, InterfaceDevice, \
                                Photocell, Generic, StateDevice, State, Attribute, \
                                Room, Thermostat, XMPP_Client

#from pytomation.common.system import *

###################### INTERFACE CONFIG #########################
web = HTTPServer()

xmpp = XMPP_Client(id='*****@*****.**',
                   password='******',
                   server='talk.google.com',
                   port=5222)

upb = UPB(Serial('/dev/ttyMI0', 4800))

#insteon = InsteonPLM(TCP('192.168.13.146', 9761))
insteon = InsteonPLM(Serial('/dev/ttyMI1', 19200, xonxoff=False))

w800 = W800rf32(Serial('/dev/ttyMI3', 4800))

sg = Stargate(Serial('/dev/ttyMI4', 9600))
# invert the DIO channels for these contact sensors
sg.dio_invert(1)
sg.dio_invert(2)
sg.dio_invert(3)
sg.dio_invert(4)
sg.dio_invert(5)
sg.dio_invert(6)
sg.dio_invert(7)
from pytomation.config import *
from pytomation.interfaces import UPB, Serial

debug['UPB'] = 1
serial = Serial('/dev/ttyUSB0', 4800)
upb = UPB(serial)
upb.start()

# Turn on Light - Network: 49, ID: 3
response = upb.on((49, 3))

# Turn off Light - Network: 49, ID: 3
response2 = upb.off((49, 3))

# Check for success
if response:
    print "Message was successfully sent!"
else:
    print "Interface not responding"

# Code is done, we no longer need the interface
upb.shutdown()