Digital Twins
10 min
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 twins all 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