fabfire_adapter/single.py
2022-03-12 10:46:38 +01:00

45 lines
1.8 KiB
Python

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