import asyncio from asyncio_mqtt import Client import json import fabapi async def main(): done = False cap = None auth = None msg = None async with Client("192.168.178.31") as client: await client.publish("/cmnd/reader", payload='{"Cmd":"haltPICC"}', qos=2, retain=False) await client.publish("/cmnd/reader", payload='{"Cmd": "message", "MssgID": 0, "AddnTxt":" Karte auflegen"}', qos=2, retain=False) async with client.filtered_messages("/rfid_reader/111") as messages: await client.subscribe("/rfid_reader/#") async for message in messages: if not auth: auth, msg, cap = await fabapi.connect_with_fabfire_initial("192.168.178.31", 59661, message.payload) elif not done: msg, done = await fabapi.connect_with_fabfire_step(auth, message.payload) if done: await client.publish("/cmnd/reader", payload='{"Cmd":"haltPICC"}', qos=2, retain=False) ms = await cap.machineSystem().a_wait() info = await ms.machineSystem.info().a_wait() ma = await info.info.getMachineURN("urn:fabaccess:resource:Testmachine").a_wait() if ma.machine.state == "inUse": await ma.machine.inuse.giveBack().a_wait() else: await ma.machine.use.use().a_wait() done = False cap = None auth = None msg = None await client.publish("/cmnd/reader", payload=msg, qos=2, retain=False) if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(main())