Digital Twins
The digital_twins module manages the Digital Twin layer on Litmus Edge: models, instances, static and dynamic attributes, transformations, hierarchy, and parameters.
Imports
from litmussdk import digital_twinsAll sub-areas are exposed off the package root: list_models, create_model, list_all_instances, create_dynamic_attribute, save_hierarchy, set_model_parameters, etc.
Models
# List all model definitions
models = digital_twins.list_models()
# Create a new model
model = digital_twins.create_model(name="PumpModel", description="Centrifugal pump")
model_id = model.id
# Update / clone / delete
digital_twins.update_model(model_id, name="PumpModel-v2")
clone = digital_twins.clone_model(model_id, new_name="PumpModel-clone")
digital_twins.delete_model(model_id)
# Export / import (template payload)
payload = digital_twins.export_model(model_id)
digital_twins.import_model(payload)Instances
# List instances of a model
instances = digital_twins.get_instance_by_model(model_id)
all_instances = digital_twins.list_all_instances()
# Create / update / delete
inst = digital_twins.create_instance(model_id=model_id, name="Pump-01")
digital_twins.update_instance(inst.id, name="Pump-01-v2")
digital_twins.delete_instance(inst.id)
# Set running state
digital_twins.set_instance_state(inst.id, state="RUNNING")Static Attributes
Static attributes are key/value pairs attached to a model that don't change at runtime (e.g. location, manufacturer).
attrs = digital_twins.list_static_attributes(model_id)
digital_twins.create_static_attributes(
model_id=model_id,
attributes=[{"key": "Location", "value": "Plant 1"}],
)
digital_twins.delete_static_attribute(attr_id)Dynamic Attributes
Dynamic attributes pull live values from a tag, processor, or topic.
dyn = digital_twins.list_dynamic_attributes(model_id)
new = digital_twins.create_dynamic_attribute(
model_id=model_id,
name="Pressure",
data_type="Number",
unit="kPa",
topic="pump.pressure",
)
digital_twins.update_dynamic_attribute(new.id, unit="psi")
digital_twins.delete_dynamic_attribute(new.id)Transformations
Transformations apply a formula to one or more dynamic attributes.
transforms = digital_twins.list_transformations(model_id)
digital_twins.create_transformations(
model_id=model_id,
transformations=[{
"name": "PressureDelta",
"formula": "Pressure_in - Pressure_out",
}],
)
digital_twins.delete_transformations([transform_id])Hierarchy
Models can be organized into a tree so child instances inherit context from their parent.
tree = digital_twins.get_hierarchy(model_id)
digital_twins.save_hierarchy(model_id, hierarchy=tree)Parameters (4.0.x only)
Model and instance parameters are first-class settings that can be queried and tweaked at runtime. These functions raise UnsupportedVersionError on 3.x.
model_params = digital_twins.list_model_parameters(model_id)
inst_params = digital_twins.list_instance_parameters(inst.id)
digital_twins.set_model_parameters(model_id, parameters={"polling_interval": "1000"})
digital_twins.delete_model_parameters(model_id, parameter_names=["polling_interval"])Schema Introspection
schema = digital_twins.schema_introspection()Useful for tooling that needs the GraphQL schema for digital twins.
License
Copyright (c) Litmus Automation Inc.