A client application for 5G-ERA Network Applications. Contains the basic implementation of the client (client.py).
- era-5g-interface - python interface (support classes) for Network Applications.
- era-5g-server - server classes for 5G-ERA Network Applications with various transport options.
- Reference-NetApp - reference 5G-ERA Network Application implementation with MMCV detector.
The package could be installed via pip:
pip install era_5g_client
Two example clients (reference implementations) are provided to test the 5G-ERA Network Application.
System environment variables can be set, e.g.:
# Use video file
export FROM_SOURCE=False
export TEST_VIDEO_FILE=whatever_video.mp4
or
# Use webcam
export FROM_SOURCE=True
Using middleware (examples/client.py)
The first example uses middleware to deploy the 5G-ERA Network Application and to handle its life cycle. Therefore, the 5G-ERA Network Application needs to be uploaded to the accessible docker repository and the 5G-ERA Network Application needs to be registered within the middleware. Basic configuration needs to be provided:
System environment variables that should be set:
# ip address or hostname of the computer, where the middleware runs
export MIDDLEWARE_ADDRESS=middleware_address
# the GUID of the registered middleware user
export MIDDLEWARE_USER=middleware_user
the password of the registered middleware user
export MIDDLEWARE_PASSWORD=middleware_password
the middleware GUID of the task that should be initialized
export MIDDLEWARE_TASK_ID=middleware_task_id
The user and password could be registered with the /register endpoint on the middleware (using Postman for example).
python3 client.py
Avoiding middleware (examples/client_no_middleware.py)
For local testing, the middleware could be avoided, so the 5G-ERA Network Application needs to be started manually. Basic configuration needs to be provided:
System environment variables that can be set, e.g.:
# ip address or hostname and port (default is 5896) of the computer, where the 5G-ERA Network Application is deployed
export NETAPP_ADDRESS=http://localhost:5896
python3 client_no_middleware.py
NetAppClient (client.py)
Basic implementation of the client. Allows to register with the 5G-ERA Network Application and set the websocket-based communication for reading of results.
It creates websocket connection and bind callbacks from the 5G-ERA Network Application.
How to send data? E.g.:
client.send_image(frame, "image", ChannelType.H264, timestamp, encoding_options=h264_options)
client.send_image(frame, "image", ChannelType.JPEG, timestamp, metadata)
client.send_data({"message": "message text"}, "event_name")
client.send_data({"message": "message text"}, "event_name", ChannelType.JSON_LZ4)
How to create callbacks_info
? E.g.:
{
"results": CallbackInfoClient(ChannelType.JSON, results_callback),
"image": CallbackInfoClient(ChannelType.H264, image_callback, error_callback)
}
Callbacks have data parameter: e.g. def image_callback(data: Dict[str, Any]):
.
Image data dict including decoded frame (data["frame"]
) and send timestamp (data["timestamp"]
).
- The package is developed and tested with Python 3.8.
- Any contribution should go through a pull request from your fork.
- We use Pants to manage the code (how to install it).
- Before committing, please run locally:
pants fmt ::
- format all code according to our standard.pants lint ::
- checks formatting and few more things.pants check ::
- runs type checking (mypy).pants test ::
- runs Pytest tests.
- The same checks will be run within CI.
- A virtual environment with all necessary dependencies can be generated using
pants export ::
. You may then activate the environment and addera_5g_client
to yourPYTHONPATH
, which is equivalent to installing a package usingpip install -e
. - To generate distribution packages (
tar.gz
andwhl
), you may runpants package ::
. - For commit messages, please stick to https://www.conventionalcommits.org/en/v1.0.0/.