Digital Twin

Asset Administration Shell (AAS) Explained: Submodels, Types and Live MQTT Data

The Asset Administration Shell is the Industry 4.0 standard for describing industrial assets as digital twins. Learn its structure, the three AAS types, and a practical pattern for feeding live submodel values from MQTT.

Asset administration shell diagram wrapping an industrial motor with submodels for nameplate, technical data and live operational data fed by MQTT
Run this on your own MQTT brokerGet a private, managed MQTT broker on the Free plan and start from ready-made code samples.
Try it free Code samples No card required

The Asset Administration Shell (AAS) is the Industry 4.0 standard for giving every industrial asset a structured, machine-readable digital twin. In this article you will learn how an asset administration shell is built from submodels and semantic IDs, how the three AAS types differ, and how to keep live submodel values up to date from MQTT data streaming through a broker.

For a broader introduction to twins, see our digital twin technology guide.

What Is an Asset Administration Shell?

An asset administration shell is a standardised digital representation of an asset: a motor, a drive, a robot, a whole production cell, even a piece of software. It was defined within Plattform Industrie 4.0 in Germany and is now maintained by the Industrial Digital Twin Association (IDTA), with its metamodel standardised internationally as IEC 63278.

The core idea is interoperability. A drive from one supplier and a pump from another should describe their nameplate, technical data, documentation and operating data in the same way, so a plant engineer, an MES or a maintenance tool can read them without custom integration for each vendor. The AAS gives every asset the same "wrapper", and the content inside it is organised into submodels.

The Structure of an AAS

An AAS has a small number of building blocks:

Element Purpose
Asset Administration Shell The twin itself, with its own ID, referencing exactly one asset
Asset information Global asset ID and kind (type or instance)
Submodel A self-contained aspect of the asset, such as nameplate or operational data
Submodel element The actual content: properties, ranges, files, collections, operations
Semantic ID A reference to a dictionary definition that says what an element means
Concept description The definition of a semantic ID, units and data type

Submodels

Submodels are the heart of the asset administration shell. Each one covers one aspect of the asset and can be maintained by a different party. The manufacturer supplies the digital nameplate and technical data; the operator adds maintenance records and live operational data.

The IDTA publishes submodel templates so that common aspects look the same everywhere. Widely used templates include the Digital Nameplate, Technical Data, Contact Information, Handover Documentation and Time Series Data. Using a template rather than inventing your own structure is what makes AAS interoperable.

Submodel Elements

Inside a submodel, content is expressed as typed elements. The ones you will meet most often:

  • Property: a single value with a data type, for example MaxRotationSpeed as a double.
  • MultiLanguageProperty: text in several languages.
  • Range: a minimum and maximum.
  • File and Blob: documents, images, CAD files.
  • SubmodelElementCollection and SubmodelElementList: grouping and repetition.
  • ReferenceElement and RelationshipElement: links between elements or assets.
  • Operation: a callable function with input and output variables.

Semantic IDs

Every element can carry a semantic ID that points to a definition in a dictionary such as ECLASS or the IEC Common Data Dictionary. This is what lets software know that a property called NenndrehzahlMax in one AAS and MaxSpeed in another mean the same thing. Without semantic IDs, an AAS is just another JSON format.

The Three Types of Asset Administration Shell

AAS type Form Typical use
Type 1 A file, usually an AASX package Manufacturer delivers twin data with the product
Type 2 A server exposing the AAS through an API Plant systems read and update twins at runtime
Type 3 Proactive shells that interact with each other Autonomous negotiation between assets, still emerging

Most industrial projects today work with Type 1 for engineering and handover data and Type 2 for runtime twins. Open-source implementations such as Eclipse BaSyx provide AAS servers and registries, and the AASX Package Explorer is commonly used to create and inspect AASX files.

Where MQTT Fits: Live Data for an Asset Administration Shell

The AAS standard defines the information model and APIs, but it does not prescribe how live shop-floor values arrive. In practice, operational data such as temperatures, speeds and states already flows over MQTT from PLCs and edge gateways. The practical pattern is to keep MQTT as the real-time transport and let an adapter update the relevant AAS submodel.

PLC / sensor -> edge gateway -> MQTT broker -> AAS adapter -> AAS server (Type 2)
                                     |
                                     +-> dashboards, 3D twins, historians

This keeps fast consumers (dashboards, alarms, real-time 3D twins) on MQTT, while the AAS server holds the standardised, semantically annotated view that MES, ERP and engineering tools read.

Topic Design that Maps Cleanly to Submodels

Choose topics that make the mapping to the AAS obvious. An ISA-95 path identifies the asset, and the last levels identify the submodel:

acme/plant1/assembly/line3/drive07/operational    live values, retained
acme/plant1/assembly/line3/drive07/status         online/offline, retained

The adapter keeps a mapping table from MQTT asset paths to AAS IDs and from JSON fields to submodel element idShorts. Sparkplug B payloads work too: ConnectMQ decodes Sparkplug B and can republish it into ISA-95 topics, which gives the adapter a simple JSON stream to consume.

A Minimal MQTT-to-AAS Adapter

This Python adapter subscribes to operational data and patches property values on an AAS server. The REST path follows the AAS Part 2 API style used by servers such as Eclipse BaSyx, where identifiers are base64url-encoded; check your server's documentation for the exact endpoint and version.

import base64
import json
import paho.mqtt.client as mqtt
import requests

AAS_SERVER = "http://localhost:8081"
SUBMODEL_IDS = {
    "acme/plant1/assembly/line3/drive07": "https://acme.example/ids/sm/drive07-operational",
}
FIELD_TO_IDSHORT = {"speed_rpm": "RotationSpeed", "temp_c": "MotorTemperature", "state": "OperatingState"}

def b64url(value: str) -> str:
    return base64.urlsafe_b64encode(value.encode()).decode().rstrip("=")

def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe("acme/plant1/+/+/+/operational", qos=1)

def on_message(client, userdata, msg):
    asset_path = msg.topic.rsplit("/", 1)[0]
    submodel_id = SUBMODEL_IDS.get(asset_path)
    if not submodel_id:
        return
    data = json.loads(msg.payload)
    for field, id_short in FIELD_TO_IDSHORT.items():
        if field in data:
            url = f"{AAS_SERVER}/submodels/{b64url(submodel_id)}/submodel-elements/{id_short}/$value"
            requests.patch(url, json=data[field], timeout=5)

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="YOUR_CLIENT_ID")
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.on_connect = on_connect
client.on_message = on_message
client.connect("YOUR_BROKER_HOST", 8883)
client.loop_forever()

Two design notes. First, do not push every high-rate sample into the AAS server; update it at a sensible rate, for example once per second or on change, and keep full-rate data in a historian. Second, keep the mapping tables in configuration, ideally generated from the AAS itself, so adding an asset does not require code changes.

You can test the MQTT side right now with the public MQTT test broker, using a unique prefix such as connectmq/demo/c58d/... in place of acme/..., and adjust the subscription accordingly.

Asset Administration Shell Implementation Checklist

  1. Define the assets in scope and assign stable global asset IDs.
  2. Start from IDTA submodel templates before creating custom submodels.
  3. Attach semantic IDs from ECLASS or IEC CDD to every property you expose.
  4. Decide which data lives in Type 1 files and which in a Type 2 server.
  5. Design MQTT topics so asset paths map one-to-one to AAS IDs.
  6. Write or deploy an adapter that updates live submodel values at a controlled rate.
  7. Secure the MQTT path with TLS and per-gateway credentials.
  8. Version submodels and keep the mapping configuration under source control.

AAS Compared with Other Twin Models

AAS is strongest for industrial assets that change hands between manufacturers, integrators and operators, because its submodel templates and semantic IDs travel with the asset. DTDL is lighter and developer-oriented, focused on telemetry, properties and commands. Eclipse Ditto models twins as things with attributes and features and connects natively to MQTT; see Eclipse Ditto with MQTT. Many plants combine them: AAS for the standardised asset description, MQTT and a Unified Namespace for live data, and a lightweight twin layer for visualization. Our Sparkplug B and Unified Namespace guide covers the live data side.

Feed Your Asset Administration Shell with ConnectMQ

ConnectMQ provides the real-time layer: a cloud MQTT broker with MQTT 3.1.1 and 5.0, TLS on 8883, ISA-95 topic detection, a devices view organised by ISA-95 levels and Sparkplug B decoding. Your AAS server and adapter run alongside it as normal MQTT clients. Sign up at app.connectmq.com, start on the free Serverless plan without a credit card, and stream your first asset's operational data into its shell.

Frequently Asked Questions

Is the asset administration shell a software product?

No. It is a standardised information model and API specification. Products and open-source projects such as Eclipse BaSyx implement it.

What is a submodel in the AAS?

A submodel is a self-contained aspect of an asset, such as its nameplate, technical data or operational data, built from typed elements with semantic IDs.

Does the AAS replace MQTT or OPC UA?

No. AAS describes assets and exposes them through APIs; MQTT and OPC UA move live data. A common pattern is MQTT for real-time streams with an adapter updating the AAS.

What is an AASX file?

An AASX file is a package format for Type 1 shells that bundles the AAS, its submodels and supplementary files such as manuals into one file for exchange.

Related articles

All articles →

Your private MQTT broker is a few clicks away

Create an account, get your broker credentials and connect your first device — no servers to install, patch or scale.