Skip to main content

A Python toolkit for building Industry 4.0-compliant Things as Asset Administration Shells (AAS), with seamless integration into the Smart Systems Service Infrastructure (S³I).

Project description

Asset Administration Shell (AAS) Thing Python SDK

PyPI Release License: LGPL v3

A Python toolkit for building Industry 4.0-compliant Things using Asset Administration Shell (AAS), with seamless integration into the Smart Systems Service Infrastructure (S³I). Please refer to the whitepaper for details:

Hoppen M., Chen, J., Roßmann, J. (2025) Smart Systems Service Infrastructure (S3I) — Design and deployment of the Smart Systems Service Infrastructure (S3I) for decentralized networking in Forestry 4.0. KWH4.0 Position Paper. DOI: 10.18154/RWTH-2025-03168


Table of Contents


Overview

The AAS Thing Python SDK helps you:

  • Instantiate and manipulate AAS and submodels using the Eclipse BaSyx Python SDK
  • Exchange standardized I4.0 messages (VDI 2193-1) over AMQP (store-and-forward) or (in future) HTTP
  • Authenticate, manage and discover services, exchange information via the S³I core (IdentityProvider, Directory, Repository, Broker)

By following the AAS specification, your Things become members in Industry 4.0 ecosystems, interoperating securely and reliably.


Features

Core Functionality

  • AAS management
    Load and parse .json, .xml, or .aasx AAS on disk using BaSyx Python SDK.

  • Message-based communication
    Create, send and receive I4.0 messages (I40Message) combined with the AAS API specification defined in Specification of the Asset Administration Shell Part 2, over AMQP (store-and-forward) or (in future) HTTP.

  • S³I integration

    • IdentityProvider: OpenID Connect authentication via Keycloak
    • Broker: AMQP 0.9 messaging with RabbitMQ
    • Directory & Repository: Endpoint discovery and cloud storage

Global instance of S³I

We provide a global instance of the S³I, which runs in a server located at MMI, RWTH Aachen University and can be used for testing. It includes:

Name Endpoint
S³I IdentityProvider https://idp.mmi-0.s3i.mmi-services.de/
S³I Broker https://broker.mmi-0.s3i.mmi-services.de/
S³I Directory https://dir.mmi-0.s3i.mmi-services.de/
S³I Repository https://repo.mmi-0.s3i.mmi-services.de/
S³I Config https://config.mmi-0.s3i.mmi-services.de/
S³I Postbox API https://postbox.mmi-0.s3i.mmi-services.de/
S³I Manager (coming soon) http://manager.mmi-0.s3i.mmi-services.de/

Roadmap of the SDK

In the near future, we will provide the supports to:

  • Postbox API: REST-based alternative to AMQP for sending and receiving I4.0 messages
  • Discovery Service: Endpoint discovery using query parameters
  • Authorization: XACML-based access control framework
  • Events: Support for AAS- and AMQP-based events
  • Server Infrastructure: The open-source server infrastructure for the Smart Systems Service Infrastructure (S³I) and its configuration for docker and kubernetes

Technical Structure

Module Purpose
aas_thing/core.py BaseAASThing: lifecycle, configuration, event loop
aas_thing/aas_connection.py AASConnector: load/sync AAS & submodels
aas_thing/s3i_connection.py S3IConnector: interface to S³I IdentityProvider, Broker
aas_thing/message_handler.py I40SemanticProtocolHandler: handle_request, handle_reply of incoming I4.0 messages
aas_thing/s3i.identity_provider.py S3IIdentityProviderClient: create connection to S³I IdP
aas_thing/s3i.broker.py S3IBrokerAMQPClient: create connection to S³I Broker
aas_thing/s3i.directory.py S3IDirectoryClient: create connection with S³I Directory
aas_thing/s3i.repository.py S3IRepositoryClient: create connection with S³I Repository

Installation

Install from PyPI:

$ python -m pip install aas-thing

Or build & install from source:

$ git clone git@git.rwth-aachen.de:co2for-it/s3i/aas-thing-python-sdk.git
$ cd aas-thing-python-sdk
$ python -m pip install .

Documentation

Full API reference, tutorials, and demos are available in the documentation.

Contributing

Contributions, bug reports, and feature requests are welcome!

Please:

  • Fork the repository
  • Create a feature branch (git checkout -b feature/XYZ)
  • Commit your changes (git commit -m "Add XYZ")
  • Push to your fork (git push origin feature/XYZ)
  • Open a Merge Request

See CONTRIBUTING.md for detailed guidelines.

License

This project is licensed under the LGPL v3 License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aas_thing-0.9.6.tar.gz (42.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aas_thing-0.9.6-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

Details for the file aas_thing-0.9.6.tar.gz.

File metadata

  • Download URL: aas_thing-0.9.6.tar.gz
  • Upload date:
  • Size: 42.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for aas_thing-0.9.6.tar.gz
Algorithm Hash digest
SHA256 20ce6b2d00cf622860363fe78cba53ff3aa2719158c511eac7de7be01a46395d
MD5 14b0030b0da53461d178222a9b82a733
BLAKE2b-256 c3be2c08d6b8ba4ba7b34aacf26fe7dac5dd7ce50c6102d889d39083b1b7f371

See more details on using hashes here.

File details

Details for the file aas_thing-0.9.6-py3-none-any.whl.

File metadata

  • Download URL: aas_thing-0.9.6-py3-none-any.whl
  • Upload date:
  • Size: 47.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for aas_thing-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0d6392909637a6be73a6710270a9b9662283d2a6a015a85652914cb0420cd644
MD5 1017b98c4ee42196e587df9e21b6aea2
BLAKE2b-256 02d14698a5be953020bef1ed93e5bbbba959dad021558d46ff2fb1b8f1bce3be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page