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.7.tar.gz (43.9 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.7-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aas_thing-0.9.7.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for aas_thing-0.9.7.tar.gz
Algorithm Hash digest
SHA256 4d030c30099a4e957ef861ac18ede481fd02f25204298c011d16aeebfb9c487d
MD5 d3504f3c5d3c50200c358ddc754b9d20
BLAKE2b-256 f880b808831c2368f9c3dd4712e60306876419ed8b98d857a954929425fe1108

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aas_thing-0.9.7-py3-none-any.whl
  • Upload date:
  • Size: 48.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for aas_thing-0.9.7-py3-none-any.whl
Algorithm Hash digest
SHA256 66e0ab6856bf16aaf0d7f059a940159748a005b3a2fbb222c29cef0dd3e99c28
MD5 68b8cb9cc3d810da7758ca9abc952965
BLAKE2b-256 13db20569b250d69f45b9db5ba755587b8d0202a6339d41652cb2697ba5cfeb5

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