예제 #1
0
    def test_parse_bytes(self):

        rfy = RFXtrx.lowlevel.parse(
            bytearray(b'\x08\x1A\x00\x00\x0A\x00\x01\x01\x03'))
        self.assertEqual(rfy.__repr__(),
                         "Rfy [subtype=0, seqnbr=0, id=0a0001:1, cmnd=Down]")
        self.assertEqual(rfy.packetlength, 8)
        self.assertEqual(rfy.subtype, 0)
        self.assertEqual(rfy.type_string, "Rfy")
        self.assertEqual(rfy.seqnbr, 0)
        self.assertEqual(rfy.id_string, "0a0001:1")
        self.assertEqual(rfy.cmnd, 3)
        self.assertEqual(rfy.cmnd_string, "Down")

        rfy = RFXtrx.lowlevel.Rfy()
        rfy.set_transmit(0, 0, 0x0a0001, 1, 3)
        self.assertEqual(rfy.__repr__(),
                         "Rfy [subtype=0, seqnbr=0, id=0a0001:1, cmnd=Down]")
        self.assertEqual(rfy.packetlength, 8)
        self.assertEqual(rfy.subtype, 0)
        self.assertEqual(rfy.type_string, "Rfy")
        self.assertEqual(rfy.seqnbr, 0)
        self.assertEqual(rfy.id_string, "0a0001:1")
        self.assertEqual(rfy.cmnd, 3)
        self.assertEqual(rfy.cmnd_string, "Down")

        rfy = RFXtrx.lowlevel.Rfy()
        rfy.parse_id(0, "0a0001:2")
        self.assertEqual(rfy.unitcode, 2)
        self.assertRaises(ValueError, rfy.parse_id, 0, "AA")

        rfy = RFXtrx.get_device(0x1A, 0, "0a0001:1")
        self.assertEqual(
            rfy.__str__(),
            "<class 'RFXtrx.RfyDevice'> type='Rfy' id='0a0001:1'")
        self.assertEqual(rfy.unitcode, 1)

        rfy = RFXtrx.lowlevel.parse(
            bytearray(b'\x08\x1A\x01\x00\x0A\x00\x01\x01\x05'))
        self.assertEqual(rfy.cmnd_string, "Unknown command (0x05)")
        self.assertEqual(rfy.type_string, "Rfy Extended")

        rfy = RFXtrx.lowlevel.parse(
            bytearray(b'\x08\x1A\x02\x00\x0A\x00\x01\x01\x05'))
        self.assertEqual(rfy.cmnd_string, "Unknown command (0x05)")
        self.assertEqual(rfy.type_string, "Unknown type (0x1a/0x02)")

        rfy = RFXtrx.get_device(0x1A, 3, '0a0001:2')
        self.assertEqual(rfy.subtype, 3)
        self.assertEqual(
            rfy.__str__(),
            "<class 'RFXtrx.RfyDevice'> type='ASA' id='0a0001:2'")
예제 #2
0
    def test_parse_bytes(self):

        rfy = RFXtrx.lowlevel.parse(bytearray(b'\x08\x1A\x00\x00\x0A\x00\x01\x01\x03'))
        self.assertEquals(rfy.__repr__(), "Rfy [subtype=0, seqnbr=0, id=0a0001:1, cmnd=Down]")
        self.assertEquals(rfy.packetlength, 8)
        self.assertEquals(rfy.subtype, 0)
        self.assertEquals(rfy.type_string, "Rfy")
        self.assertEquals(rfy.seqnbr, 0)
        self.assertEquals(rfy.id_string, "0a0001:1")
        self.assertEquals(rfy.cmnd, 3)
        self.assertEquals(rfy.cmnd_string, "Down")

        rfy = RFXtrx.lowlevel.Rfy()
        rfy.set_transmit(0, 0, 0x0a0001, 1, 3)
        self.assertEquals(rfy.__repr__(), "Rfy [subtype=0, seqnbr=0, id=0a0001:1, cmnd=Down]")
        self.assertEquals(rfy.packetlength, 8)
        self.assertEquals(rfy.subtype, 0)
        self.assertEquals(rfy.type_string, "Rfy")
        self.assertEquals(rfy.seqnbr, 0)
        self.assertEquals(rfy.id_string, "0a0001:1")
        self.assertEquals(rfy.cmnd, 3)
        self.assertEquals(rfy.cmnd_string, "Down")

        rfy = RFXtrx.lowlevel.Rfy()
        rfy.parse_id(0, "0a0001:2")
        self.assertEqual(rfy.unitcode, 2)
        self.assertRaises(ValueError, rfy.parse_id, 0, "AA")

        rfy = RFXtrx.get_device(0x1A, 0, "0a0001:1")
        self.assertEquals(rfy.__str__(), "<class 'RFXtrx.RfyDevice'> type='Rfy' id='0a0001:1'")
        self.assertEqual(rfy.unitcode, 1)

        rfy = RFXtrx.lowlevel.parse(bytearray(b'\x08\x1A\x01\x00\x0A\x00\x01\x01\x05'))
        self.assertEquals(rfy.cmnd_string, "Unknown command (0x05)")
        self.assertEquals(rfy.type_string, "Unknown type (0x1a/0x01)")
예제 #3
0
    def test_parse_bytes(self):

        fan = RFXtrx.lowlevel.parse(bytearray(b'\x08\x17\x00\x00\x0A\x00\x01\x03\x00'))
        self.assertEqual(fan.__repr__(), "Fan [subtype=0, seqnbr=0, id=0a0001, cmnd=Learn]")
        self.assertEqual(fan.packetlength, 8)
        self.assertEqual(fan.subtype, 0)
        self.assertEqual(fan.type_string, "Siemens SF01")
        self.assertEqual(fan.seqnbr, 0)
        self.assertEqual(fan.id_string, "0a0001")
        self.assertEqual(fan.cmnd, 3)
        self.assertEqual(fan.cmnd_string, "Learn")

        fan = RFXtrx.lowlevel.Fan()
        fan.set_transmit(0, 0, 0x0a0001, 3)
        self.assertEqual(fan.__repr__(), "Fan [subtype=0, seqnbr=0, id=0a0001, cmnd=Learn]")
        self.assertEqual(fan.packetlength, 8)
        self.assertEqual(fan.subtype, 0)
        self.assertEqual(fan.type_string, "Siemens SF01")
        self.assertEqual(fan.seqnbr, 0)
        self.assertEqual(fan.id_string, "0a0001")
        self.assertEqual(fan.cmnd, 3)
        self.assertEqual(fan.cmnd_string, "Learn")

        fan = RFXtrx.lowlevel.Fan()
        fan.parse_id(0, "0a0001")
        self.assertEqual(fan.id_string, "0a0001")
        self.assertEqual(fan.id_combined, 0x0a0001)
        self.assertRaises(ValueError, fan.parse_id, 0, "AA")

        fan = RFXtrx.get_device(0x17, 0, "0a0001")
        self.assertEqual(fan.__str__(), "<class 'RFXtrx.FanDevice'> type='Siemens SF01' id='0a0001'")
        self.assertEqual(fan.id_combined, 0x0a0001)

        fan = RFXtrx.lowlevel.parse(bytearray(b'\x08\x17\x02\x00\x0A\x00\x01\x06\x00'))
        self.assertEqual(fan.cmnd_string, "Unknown command (0x06)")
        self.assertEqual(fan.type_string, "Lucci Air AC")

        fan = RFXtrx.lowlevel.parse(bytearray(b'\x08\x17\x0A\x00\x0A\x00\x01\x05\x00'))
        self.assertEqual(fan.cmnd_string, "Unknown command (0x05)")
        self.assertEqual(fan.type_string, "Unknown type (0x17/0x0a)")

        fan = RFXtrx.get_device(0x17,3,'0a0001')
        self.assertEqual(fan.subtype, 3)
        self.assertEqual(fan.__str__(), "<class 'RFXtrx.FanDevice'> type='SEAV TXS4' id='0a0001'")
예제 #4
0
    def test_get_device(self):
        core = RFXtrx.Connect(self.path, event_callback=_callback, debug=False, transport_protocol=RFXtrx.DummyTransport)
        # Lighting1
        bytes_array = bytearray([0x07, 0x10, 0x00, 0x2a, 0x45, 0x05, 0x01, 0x70])
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting2
        bytes_array =[0x0b, 0x11, 0x00, 0x2a, 0x01, 0x23, 0x45, 0x67, 0x05, 0x02, 0x07, 0x70]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting3
        bytes_array = [0x08, 0x12, 0x00, 0x2a, 0x01, 0x34, 0x02, 0x15, 0x79]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting5
        bytes_array = bytearray(b'\x0A\x14\x00\xAD\xF3\x94\xAB'
                              b'\x01\x01\x00\x60')
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        #Lighting 6
        bytes_array = [0x0b, 0x15, 0x00, 0x2a, 0x12, 0x34, 0x41, 0x05, 0x03, 0x01, 0x00, 0x70]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        #energy sensor
        bytes_array = bytearray(b'\x11\x5A\x01\x00\x2E\xB2\x03\x00\x00'
                          b'\x02\xB4\x00\x00\x0C\x46\xA8\x11\x69')
        event = core.transport.parse(bytes_array)
        self.assertRaises(ValueError, RFXtrx.get_device,event.device.packettype, event.device.subtype, event.device.id_string)
        core.close_connection()
예제 #5
0
    def test_parse_bytes(self):

        rollertrol = RFXtrx.lowlevel.parse(
            bytearray(b'\x09\x19\x00\x00\x00\x9b\xa8\x01\x01\x00'))
        self.assertEquals(
            rollertrol.__repr__(),
            "RollerTrol [subtype=0, seqnbr=0, id=009ba8:1, cmnd=Down, rssi=0]")
        self.assertEquals(rollertrol.packetlength, 9)
        self.assertEquals(rollertrol.subtype, 0)
        self.assertEquals(rollertrol.type_string, "RollerTrol")
        self.assertEquals(rollertrol.seqnbr, 0)
        self.assertEquals(rollertrol.id_string, "009ba8:1")
        self.assertEquals(rollertrol.cmnd, 1)
        self.assertEquals(rollertrol.cmnd_string, "Down")
        self.assertEquals(rollertrol.rssi_byte, 0)
        self.assertEquals(rollertrol.rssi, 0)

        rollertrol = RFXtrx.lowlevel.RollerTrol()
        rollertrol.set_transmit(0, 0, 0x009ba8, 1, 1)
        self.assertEquals(
            rollertrol.__repr__(),
            "RollerTrol [subtype=0, seqnbr=0, id=009ba8:1, cmnd=Down, rssi=0]")
        self.assertEquals(rollertrol.packetlength, 9)
        self.assertEquals(rollertrol.subtype, 0)
        self.assertEquals(rollertrol.type_string, "RollerTrol")
        self.assertEquals(rollertrol.seqnbr, 0)
        self.assertEquals(rollertrol.id_string, "009ba8:1")
        self.assertEquals(rollertrol.cmnd, 1)
        self.assertEquals(rollertrol.cmnd_string, "Down")
        self.assertEquals(rollertrol.rssi_byte, 0)
        self.assertEquals(rollertrol.rssi, 0)

        rollertrol = RFXtrx.lowlevel.RollerTrol()
        rollertrol.parse_id(0, "009ba8:2")
        self.assertEqual(rollertrol.unitcode, 2)
        self.assertRaises(ValueError, rollertrol.parse_id, 0, "AA")

        rollertrol = RFXtrx.get_device(0x19, 0, "009ba8:1")
        self.assertEquals(
            rollertrol.__str__(),
            "<class 'RFXtrx.RollerTrolDevice'> type='RollerTrol' id='009ba8:1'"
        )
        self.assertEqual(rollertrol.unitcode, 1)

        rollertrol = RFXtrx.lowlevel.parse(
            bytearray(b'\x09\x19\x02\x00\x00\x9b\xa8\x01\x05\x00'))
        self.assertEquals(rollertrol.cmnd_string, "Unknown command (0x05)")
        self.assertEquals(rollertrol.type_string, "Unknown type (0x19/0x02)")
예제 #6
0
def main():
    if len(sys.argv) >= 2:
        rfxcom_device = sys.argv[1]
    else:
        rfxcom_device = '/dev/serial/by-id/usb-RFXCOM_RFXtrx433XL_DO2ZW4OB-if00-port0'

    def on_message(client, userdata, message):
        print('message topic=', message.topic)
        if message.topic == '/seav_fan/t1':
            fan.send_high(conn.transport)
        elif message.topic == '/seav_fan/t2':
            fan.send_medium(conn.transport)
        elif message.topic == '/seav_fan/t3':
            fan.send_low(conn.transport)
        elif message.topic == '/seav_fan/t4':
            fan.send_off(conn.transport)
        time.sleep(3)

    try:
        conn = RFXtrx.Connect(rfxcom_device, print_callback, debug=True)

        print(conn)
        fan = RFXtrx.get_device(0x17, 0x03, "005545")

        print('creating new mqtt client instance')
        client = mqtt.Client("P1")
        print('connecting to broker')
        client.connect(broker_address)
        print('subscribing to topics')
        client.subscribe('/seav_fan/t1')
        client.subscribe('/seav_fan/t2')
        client.subscribe('/seav_fan/t3')
        client.subscribe('/seav_fan/t4')

        client.on_message = on_message

        client.loop_forever()

    finally:
        conn.close_connection()
        client.loop_stop()
예제 #7
0
    def test_get_device(self):
        core = RFXtrx.Connect(self.path, event_callback=_callback, transport_protocol=RFXtrx.DummyTransport)
        # Lighting1
        bytes_array = bytearray([0x07, 0x10, 0x00, 0x2a, 0x45, 0x05, 0x01, 0x70])
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting2
        bytes_array =[0x0b, 0x11, 0x00, 0x2a, 0x01, 0x23, 0x45, 0x67, 0x05, 0x02, 0x07, 0x70]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting3
        bytes_array = [0x08, 0x12, 0x00, 0x2a, 0x01, 0x34, 0x02, 0x15, 0x79]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting4
        bytes_array = [0x09, 0x13, 0x00, 0x2a, 0x12, 0x34, 0x56, 0x01, 0x5e, 0x70]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        # Lighting5
        bytes_array = bytearray(b'\x0A\x14\x00\xAD\xF3\x94\xAB'
                              b'\x01\x01\x00\x60')
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        #Lighting 6
        bytes_array = [0x0b, 0x15, 0x00, 0x2a, 0x12, 0x34, 0x41, 0x05, 0x03, 0x01, 0x00, 0x70]
        event = core.transport.parse(bytes_array)
        device = RFXtrx.get_device(event.device.packettype, event.device.subtype, event.device.id_string)
        self.assertTrue(device==event.device)

        #energy sensor
        bytes_array = bytearray(b'\x11\x5A\x01\x00\x2E\xB2\x03\x00\x00'
                          b'\x02\xB4\x00\x00\x0C\x46\xA8\x11\x69')
        event = core.transport.parse(bytes_array)
        self.assertRaises(ValueError, RFXtrx.get_device,event.device.packettype, event.device.subtype, event.device.id_string)
        core.close_connection()