Metadata-Version: 2.1
Name: acr122u-websocket
Version: 1.1.4
Summary: A webserver that connects to a acr122u and exposes it over websocket
Author-email: Robert van Dijk <contact@robertvandijk.nl>
Project-URL: Homepage, https://github.com/robertdijk/acr122u-websocket
Keywords: nfc,acr,acr122u,websocket,web
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: dev
License-File: LICENSE

# ACR122U Websocket

[![PyPI - Version](https://img.shields.io/pypi/v/acr122u-websocket)](https://pypi.org/project/acr122u-websocket/)
[![PyPI - License](https://img.shields.io/pypi/l/acr122u-websocket)](https://pypi.org/project/acr122u-websocket/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/acr122u-websocket)](https://pypi.org/project/acr122u-websocket/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/acr122u-websocket)](https://pypi.org/project/acr122u-websocket/)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/acr122u-websocket)](https://pypi.org/project/acr122u-websocket/)

This project enables you to connect an usb ACR122U NFC card scanner to a computer and access it using Socket.IO.

## Features

- Read UUID from nfc cards and send them over Socket.IO.
- Websocket messages to start and stop the polling for cards.
- Websocket messages to give a confirmation or error beep and light signal.
- Automatically reconnect to the reader when interrupted.

## Installation

You can install this package from [PyPI](https://pypi.org/project/acr122u-websocket/).

```shell
pip install acr122u-websocket
```

## Usage

1. Connect the ACR122U reader to the computer
2. Run the app
    ```shell
    python -m acr122u_websocket.app
    ```

## API

You can connect to the webserver using [Socket.IO](https://socket.io).
These are the available events:

<details>
<summary><h3><code>polling</code></h3></summary>

Start or stop the polling.

#### Request

- `start` to start the polling.
- `stop` to stop the polling.

#### Reply

- `no card reader connected` if no card reader is connected.
- `polling started` if the polling has (already) started.
- `polling stopped` if the polling has (already) stopped.
- `invalid message` if the message is neither `start` nor `stop`.

</details>

<details>
<summary><h3><code>status indicator</code></h3></summary>

Set the status indicator.

#### Request

- `confim` to play the confirming status.
- `error` to play the error status.

#### Reply

- `no card reader connected` if no card reader is connected
- `confirm status set` if the confirm beep and light have been show
- `error status set` if the error beep and light have been show
- `invalid message` if the message is neither `confirm` nor `error`

</details>

<details>
<summary><h3><code>card scanned</code></h3></summary>

Broadcasts when a card has been scanned

#### Broadcast

- `{"uuid": [..]}` - An object containing the uuid in the form of a list of integers.

</details>

## Example

See an example webpage at [test.html](acr122u_websocket/templates/test.html).

This page is also served on [`http://localhost:8080/test`](http://localhost:8080/test).
