Apparaatimplementatie en aanbevolen procedures voor IoT Central

Dit artikel bevat informatie over het implementeren van apparaten die verbinding maken met uw IoT Central-toepassing. Het bevat ook enkele aanbevolen procedures. Zie Verbinding maken een apparaat voor meer informatie over het algehele verbindingsproces.

Zie Zelfstudie: Een clienttoepassing maken en verbinden met uw Azure IoT Central-toepassing voor voorbeeldcode voor apparaatimplementatie.

Het apparaat implementeren

Apparaten die verbinding maken met IoT Central, moeten de IoT-Plug en Play-conventies volgen. Een van deze conventies is dat een apparaat de model-id moet verzenden van het apparaatmodel dat wordt geïmplementeerd wanneer het verbinding maakt. Met de model-id kan de IoT Central-toepassing het apparaat toewijzen aan de juiste apparaatsjabloon.

Een IoT Central-apparaatsjabloon bevat een model dat het gedrag specificeert dat een apparaat van dat type moet implementeren. Gedragingen zijn onder andere telemetrie, eigenschappen en opdrachten.

Elk model heeft een unieke DTMI (Digital Twin Model Identifier ), zoals dtmi:com:example:Thermostat;1. Wanneer een apparaat verbinding maakt met IoT Central, verzendt het een DTMI van het model dat het implementeert. IoT Central kan vervolgens de juiste apparaatsjabloon toewijzen aan het apparaat.

IoT Plug en Play definieert een set conventies die een apparaat moet volgen wanneer het een DTDL-model (Digital Twin Definition Language) implementeert.

De Azure IoT Device SDK’s bevat ook ondersteuning voor de IoT-Plug and Play-conventies.

Apparaatmodel

Een apparaatmodel wordt gedefinieerd met behulp van de DTDL V2-modelleringstaal . Met deze taal kunt u het volgende definiëren:

  • De telemetrie die het apparaat verzendt. De definitie bevat de naam en het gegevenstype van de telemetrie. Zo verstuurt een apparaat bijvoorbeeld de temperatuurtelemetrie als een dubbel.
  • De eigenschappen die het apparaat rapporteert aan IoT Central. Een eigenschapsdefinitie bevat de naam en het gegevenstype. Zo rapporteert een apparaat bijvoorbeeld de status van een klep als een Booleaanse waarde.
  • De eigenschappen van het apparaat kunnen ontvangen van IoT Central. U kunt desgewenst een eigenschap markeren als beschrijfbaar. IoT Central verzendt bijvoorbeeld een doeltemperatuur als een dubbel naar een apparaat.
  • De opdrachten waarop een apparaat reageert. De definitie bevat de naam van de opdracht en de namen en gegevenstypen van parameters. Een apparaat reageert bijvoorbeeld op een opdracht voor opnieuw opstarten, waarmee wordt opgegeven hoeveel seconden moet worden gewacht voordat opnieuw wordt opgestart.

Notitie

IoT Central definieert enkele extensies voor de DTDL v2-taal. Zie de IoT Central-extensie voor meer informatie.

Een DTDL-model kan een model met geen-onderdeel of multi-onderdeel zijn:

  • Geen onderdeelmodel: een eenvoudig model maakt geen gebruik van ingesloten of trapsgewijze onderdelen. Alle telemetrie, eigenschappen en opdrachten worden gedefinieerd als één hoofdonderdeel. Zie het Thermostaat-model voor een voorbeeld.
  • Multi-onderdeelmodel. Een complexer model met twee of meer onderdelen. Deze onderdelen omvatten één hoofdonderdeel en een of meer geneste onderdelen. Zie het Temperatuur-controller-model voor een voorbeeld.

Tip

U kunt een volledig apparaatmodel of een afzonderlijke interface importeren en exporteren vanuit een IoT Central-apparaatsjabloon als een DTDL v2-bestand.

Zie de IoT Plug en Play modelleringshandleiding voor meer informatie over apparaatmodellen

Conventies

Een apparaat moet de IoT Plug and Play-conventies volgen wanneer het gegevens uitwisselt met IoT Central. De conventies zijn onder andere:

  • De DTMI verzenden wanneer deze verbinding maakt met IoT Central.
  • De juist geformatteerde JSON-payloads en -metagegevens verzenden naar IoT Central.
  • Op de juiste manier reageren op schrijfbare eigenschappen en opdrachten van IoT Central.
  • De naamconventies voor onderdeelopdrachten volgen.

Notitie

Momenteel biedt IoT Central geen volledige ondersteuning voor de Matrix- en Georuimtelijke gegevenstypen van DTDL.

Zie voor meer informatie over de IoT Plug and Play-conventies IoT Plug and Play-conventies.

Zie Telemetrie-, eigenschap- en opdracht-payloads voor meer informatie over de indeling van de JSON-berichten die door een apparaat worden uitgewisseld met IoT Central.

Apparaat-SDK's

Gebruik een van de SDK's voor Azure IoT-apparaten om het gedrag van uw apparaat te implementeren. De code moet:

  • Het apparaat registreren met DPS en de informatie van DPS gebruiken om verbinding te maken met de interne IoT-hub in uw IoT Central-toepassing.
  • De DTMI aankondigen van het model dat het apparaat implementeert.
  • Telemetrie verzenden in de indeling die door het apparaatmodel wordt opgegeven. IoT Central gebruikt het model in de apparaatsjabloon om te bepalen hoe u de telemetrie gebruikt voor visualisaties en analyses.
  • De eigenschapswaarden synchroniseren tussen het apparaat en IoT Central. In het model worden de eigenschapsnamen en gegevenstypen opgegeven, zodat IoT Central de informatie kan weergeven.
  • Opdrachthandlers implementeren voor de opdrachten die worden opgegeven in het model. In het model worden de opdrachtnamen en parameters opgegeven die het apparaat moet gebruiken.

Zie Wat zijn apparaatsjablonen? voor meer informatie over de rol van apparaatsjablonen.

De volgende tabel bevat een overzicht van hoe azure IoT Central-apparaatfuncties zijn toegewezen aan IoT Hub-functies:

Azure IoT Central Azure IoT Hub
Telemetrie Apparaat-naar-cloud-berichten
Offlineopdrachten Cloud-naar-apparaat-berichten
Eigenschappen Gerapporteerde eigenschappen van apparaatdubbel
Eigenschap (beschrijfbaar) Gewenste en gerapporteerde eigenschappen van apparaatdubbel
Opdracht Directe methoden

Communicatieprotocollen

Communicatieprotocollen die een apparaat kan gebruiken om verbinding te maken met IoT Central zijn MQTT, AMQP en HTTPS. Intern gebruikt IoT Central een IoT-hub om connectiviteit van apparaten in te schakelen. Zie Een communicatieprotocol kiezen voor meer informatie over de communicatieprotocollen die door IoT Hub worden ondersteund voor connectiviteit van apparaten.

Als uw apparaat geen van de ondersteunde protocollen kan gebruiken, gebruikt u Azure IoT Edge om protocolconversie uit te voeren. IoT Edge biedt ondersteuning voor andere intelligence-on-the-edge-scenario's voor het offloaden van verwerking vanuit de Azure IoT Central-toepassing.

Telemetrietijdstempels

IoT Central maakt standaard gebruik van de tijd waarin berichten worden verzonden wanneer telemetrie op dashboards en grafieken wordt weergegeven. De tijd voor het ontvangen van berichten wordt intern ingesteld wanneer IoT Central het bericht van het apparaat ontvangt.

Een apparaat kan de iothub-creation-time-utc eigenschap instellen wanneer er een bericht wordt gemaakt dat naar IoT Central moet worden verzonden. Als deze eigenschap aanwezig is, gebruikt IoT Central deze wanneer telemetrie op dashboards en grafieken wordt weergegeven.

U kunt zowel de tijd van de enqueued als de iothub-creation-time-utc eigenschap exporteren wanneer u telemetrie exporteert vanuit uw IoT Central-toepassing.

Zie Systeemeigenschappen van Apparaat-naar-cloud IoT Hub-berichten voor meer informatie over berichteigenschappen.

Aanbevolen procedures

Deze aanbevelingen laten zien hoe u apparaten implementeert om te profiteren van de ingebouwde hoge beschikbaarheid, herstel na noodgevallen en automatisch schalen in IoT Central.

Verbindingsfouten afhandelen

Voor schalen of herstel na noodgevallen kan IoT Central de onderliggende IoT-hubs bijwerken. Als u connectiviteit wilt onderhouden, moet uw apparaatcode specifieke verbindingsfouten afhandelen door een verbinding met een nieuw IoT Hub-eindpunt tot stand te brengen.

Als het apparaat een van de volgende fouten krijgt wanneer het verbinding maakt, moet het apparaat opnieuw worden voorzien van DPS om een nieuwe verbindingsreeks op te halen. Deze fouten betekenen dat de verbindingsreeks niet meer geldig is:

  • Onbereikbaar IoT Hub-eindpunt.
  • Verlopen beveiligingstoken.
  • Apparaat uitgeschakeld in IoT Hub.

Als het apparaat een van de volgende fouten krijgt wanneer het verbinding maakt, moet er een back-offstrategie worden gebruikt om de verbinding opnieuw uit te voeren. Deze fouten betekenen dat de verbindingsreeks nog steeds geldig is, maar tijdelijke omstandigheden verhinderen dat het apparaat verbinding maakt:

  • Operator geblokkeerd apparaat.
  • Interne fout 500 van de service.

Zie Problemen met apparaatverbindingen oplossen voor meer informatie over apparaatfoutcodes.

Zie Apparaatherconnecties beheren om flexibele toepassingen te maken voor meer informatie over het implementeren van automatische herconnecties.

Mogelijkheden voor testfailover

Met de Azure CLI kunt u de failovermogelijkheden van uw apparaatcode testen. De CLI-opdracht werkt door tijdelijk een apparaatregistratie over te schakelen naar een andere interne IoT-hub. Als u wilt controleren of de failover van het apparaat heeft gewerkt, controleert u of het apparaat nog steeds telemetrie verzendt en reageert op opdrachten.

Voer de volgende opdracht uit om de failovertest voor uw apparaat uit te voeren:

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

Tip

Als u de toepassings-id wilt vinden, gaat u naar Toepassingsbeheer > in uw IoT Central-toepassing.

Als de opdracht slaagt, ziet u uitvoer die eruitziet als in het volgende voorbeeld:

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

Zie az iot central device manual-failover voor meer informatie over de CLI-opdracht.

U kunt nu controleren of telemetrie van het apparaat uw IoT Central-toepassing nog steeds bereikt.

Tip

Zie IoT Central-clients voor hoge beschikbaarheid om voorbeeldcode te zien die failovers in verschillende programmeertalen verwerkt.

Volgende stappen

Enkele voorgestelde volgende stappen zijn: