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'")
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)")
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'")
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()
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)")
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()
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()