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.5.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.5-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aas_thing-0.9.5.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.5.tar.gz
Algorithm Hash digest
SHA256 7bf11d0f0a30e8f359b502faf30bcad8e502ad42b83e204542b3da5e6ddf6d40
MD5 2960f91930296b791077319d4a9a0a82
BLAKE2b-256 015614af87334318d0f52c1a62246a0c1b96347eaf30c5ef4b171de6f9bafb2f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aas_thing-0.9.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ffdd7ba22369abca0a6c8d8a1bee738d2f307cbf6de97cd185cb79616210495b
MD5 81cd43f59940f1b1b1724e22b07ae58d
BLAKE2b-256 6dc5ec8104d244770f68fb69ab7097fba81a5b33ee050f8ef7915d42fa512db9

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