Správa digitálních dvojčat ioT technologie Plug and Play

IoT technologie Plug and Play podporuje operace získání digitálního dvojčete a aktualizace operací digitálního dvojčete pro správu digitálních dvojčat. Můžete použít buď rozhraní REST API , nebo některou ze sad SDK služby.

Aktualizace digitálního dvojčete

Zařízení technologie Plug and Play IoT implementuje model popsaný jazykem DTDL (Digital Twins Definition Language). Vývojáři řešení můžou k aktualizaci stavu komponenty a vlastností digitálního dvojčete použít rozhraní API služby Update Digital Twin.

Zařízení IoT technologie Plug and Play použité jako příklad v tomto článku implementuje model teplotního kontroleru s komponentami termostatu.

Následující fragment kódu ukazuje odpověď na požadavek Get digital twin naformátovaný jako objekt JSON. Další informace o formátu digitálního dvojčete najdete v tématu Vysvětlení technologie Plug and Play digitálních dvojčat IoT:

{
    "$dtId": "sample-device",
    "serialNumber": "alwinexlepaho8329",
    "thermostat1": {
        "maxTempSinceLastReboot": 25.3,
        "targetTemperature": 20.4,
        "$metadata": {
            "targetTemperature": {
                "desiredValue": 20.4,
                "desiredVersion": 4,
                "ackVersion": 4,
                "ackCode": 200,
                "ackDescription": "Successfully executed patch",
                "lastUpdateTime": "2020-07-17T06:11:04.9309159Z"
            },
            "maxTempSinceLastReboot": {
                "lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
            }
        }
    },
    "$metadata": {
        "$model": "dtmi:com:example:TemperatureController;1",
        "serialNumber": {
            "lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
        }
    }
}

Digitální dvojčata umožňují aktualizovat celou komponentu nebo vlastnost pomocí opravy JSON.

Vlastnost můžete například aktualizovat targetTemperature následujícím způsobem:

[
    {
        "op": "add",
        "path": "/thermostat1/targetTemperature",
        "value": 21.4
    }
]

Předchozí aktualizace nastaví požadovanou hodnotu vlastnosti na odpovídající úrovni $metadata komponenty, jak je znázorněno v následujícím fragmentu kódu. IoT Hub aktualizuje požadovanou verzi vlastnosti:

"thermostat1": {
    "targetTemperature": 20.4,
    "$metadata": {
        "targetTemperature": {
            "desiredValue": 21.4,
            "desiredVersion": 5,
            "ackVersion": 4,
            "ackCode": 200,
            "ackDescription": "Successfully executed patch",
            "lastUpdateTime": "2020-07-17T06:11:04.9309159Z"
        }
    }
}

Přidání, nahrazení nebo odebrání komponenty

Operace na úrovni komponent vyžadují v rámci hodnoty prázdnou značku objektu $metadata .

Operace přidání nebo nahrazení komponenty nastaví požadované hodnoty všech zadaných vlastností. Vymaže také požadované hodnoty pro všechny zapisovatelné vlastnosti, které nejsou součástí aktualizace.

Odebrání komponenty vymaže požadované hodnoty všech zapisovatelných vlastností, které jsou přítomné. Zařízení nakonec toto odebrání synchronizuje a přestane hlásit jednotlivé vlastnosti. Komponenta se pak odebere z digitálního dvojčete.

Následující ukázka opravy JSON ukazuje, jak přidat, nahradit nebo odebrat komponentu:

[
    {
        "op": "add",
        "path": "/thermostat1",
        "value": {
            "targetTemperature": 21.4,
            "anotherWritableProperty": 42,
            "$metadata": {}
        }
    },
    {
        "op": "replace",
        "path": "/thermostat1",
        "value": {
            "targetTemperature": 21.4,
            "$metadata": {}
        }
    },
    {
        "op": "remove",
        "path": "/thermostat2"
    }
]

Přidání, nahrazení nebo odebrání vlastnosti

Operace přidání nebo nahrazení nastaví požadovanou hodnotu vlastnosti. Zařízení může synchronizovat stav a hlásit aktualizaci hodnoty spolu s kódem, verzí a popisem ack .

Odebráním vlastnosti se vymaže požadovaná hodnota vlastnosti, pokud je nastavená. Zařízení pak může tuto vlastnost přestat hlásit a ze komponenty se odebere. Pokud je tato vlastnost poslední v komponentě, odebere se i tato komponenta.

Následující ukázka opravy JSON ukazuje, jak přidat, nahradit nebo odebrat vlastnost v rámci komponenty:

[
    {
        "op": "add",
        "path": "/thermostat1/targetTemperature",
        "value": 21.4
    },
    {
        "op": "replace",
        "path": "/thermostat1/anotherWritableProperty",
        "value": 42
    },
    {
        "op": "remove",
        "path": "/thermostat2/targetTemperature",
    }
]

Pravidla pro nastavení požadované hodnoty vlastnosti digitálního dvojčete

Název

Název komponenty nebo vlastnosti musí být platný název DTDL.

Povolené znaky jsou a-z, A-Z, 0-9 (ne jako první znak) a podtržítka (ne jako první nebo poslední znak).

Název může mít délku 1 až 64 znaků.

Hodnota vlastnosti

Hodnota musí být platná vlastnost DTDL.

Podporují se všechny primitivní typy. V rámci komplexních typů se podporují výčty, mapy a objekty. Další informace najdete v tématu Schémata DTDL.

Vlastnosti nepodporují pole ani žádné komplexní schéma s polem.

Komplexní objekt podporuje maximální hloubku pěti úrovní.

Všechny názvy polí v rámci komplexního objektu by měly být platné názvy DTDL.

Všechny klíče mapování by měly být platné názvy DTDL.

Řešení chyb rozhraní API pro aktualizaci digitálního dvojčete

Rozhraní API digitálního dvojčete vyvolá následující obecnou chybovou zprávu:

ErrorCode:ArgumentInvalid;'{propertyName}' exists within the device twin and is not digital twin conformant property. Please refer to aka.ms/dtpatch to update this to be conformant.

Pokud se zobrazí tato chyba, ujistěte se, že oprava aktualizace dodržuje pravidla pro nastavení požadované hodnoty vlastnosti digitálního dvojčete.

Při aktualizaci komponenty se ujistěte, že je nastavena prázdná značka objektu $metadata.

Aktualizace může selhat, pokud hlášené hodnoty zařízení nevyhovují Konvence plug-and play IoT

Další kroky

Teď, když jste se seznámili s digitálními dvojčaty, najdete tady několik dalších zdrojů informací: