In dit overzicht worden de belangrijkste concepten geïntroduceerd voor het ontwikkelen van apparaten die verbinding maken met typische Azure IoT oplossingen. Elke sectie bevat koppelingen naar inhoud die meer details en richtlijnen biedt.
In een oplossing die is verbonden met de cloud, maken apparaten rechtstreeks verbinding met cloudservices, zoals IoT Hub, terwijl apparaten met een edge-verbonden oplossing verbinding maken met services die zijn verbonden met edge in uw omgeving, zoals Azure IoT Operations.
In het volgende diagram ziet u een weergave op hoog niveau van de onderdelen in een typische IoT-oplossing die is verbonden met edge. Dit artikel richt zich op de apparaten, middelen en connectors die worden weergegeven in het diagram.
Assets hebben doorgaans ingebouwde firmware die standaardprotocollen implementeert. Een robotarm kan bijvoorbeeld een OPC UA-client zijn en een beveiligingsvideocamera kan ONVIF implementeren. Azure IoT Operations bevat verschillende connectors die deze protocollen kunnen gebruiken om met assets te communiceren en berichten van de assets te vertalen naar MQTT-berichten. Sommige assets kunnen berichten ontvangen waarmee u bewerkingen kunt uitvoeren, zoals:
- Een beveiligingscamera pannen of kantelen.
- Wijzig het logniveau van een robotarm.
- Start een firmware-update.
U kunt uw eigen, aangepaste connectors maken om verbinding te maken met assets die gebruikmaken van protocollen die niet systeemeigen worden ondersteund door Azure IoT Operations.
In het volgende diagram ziet u een algemeen overzicht van de onderdelen in een typische IoT-oplossing die is verbonden met de cloud. Dit artikel richt zich op de apparaten en de gateway die in het diagram worden weergegeven.
In Azure IoT schrijft een apparaatontwikkelaar de code die moet worden uitgevoerd op de apparaten in de oplossing. Deze code is doorgaans:
- Hiermee wordt een beveiligde verbinding met een cloudeindpunt tot stand gebracht.
- Verzendt telemetrie die wordt verzameld van gekoppelde sensoren naar de cloud.
- Hiermee beheert u de apparaatstatus en synchroniseert u die status met de cloud.
- Reageert op opdrachten die vanuit de cloud worden verzonden.
- Hiermee schakelt u de installatie van software-updates vanuit de cloud in.
- Hiermee kan het apparaat blijven functioneren terwijl de verbinding met de cloud is verbroken.
Apparaattypen
Een IoT-oplossing kan veel soorten assets en apparaten bevatten.
Voorbeelden van assets in een met edge verbonden oplossing zijn:
- Robotarmen, transportbanden en liften.
- Industriële CNC-machines, draaiers, zaagbladen en boormachines.
- Medische diagnostische beeldapparatuur.
- Beveiligingsvideocamera's.
- Programmeerbare logische controllers.
Deze assets hebben doorgaans ingebouwde firmware die standaardprotocollen implementeert. Een robotarm kan bijvoorbeeld een OPC UA-client zijn en een beveiligingsvideocamera kan het ONVIF-protocol implementeren. In een met edge verbonden oplossing gebruikt u gespecialiseerde connectors om verbinding te maken met deze assets en berichten hiervan te vertalen in een gemeenschappelijke indeling.
Voor assets is er geen direct equivalent aan de rol van apparaatontwikkelaar. In plaats daarvan kan een operator de connectors configureren om verbinding te maken met de assets. Mogelijk moet u echter aangepaste connectors ontwikkelen om verbinding te maken met assets die gebruikmaken van protocollen die niet systeemeigen worden ondersteund door uw met edge verbonden oplossing.
Voorbeelden van apparaten in een cloudoplossing zijn:
- Een druksensor op een oliepomp op afstand.
- Temperatuur- en luchtvochtigheidssensoren in een airco-eenheid.
- Een versnellingsmeter in een lift.
- Aanwezigheidssensoren in een ruimte.
Deze apparaten worden doorgaans gebouwd met behulp van microcontrollers (MCU's) of microprocessors (MPU's):
- MCU's zijn goedkoper en eenvoudiger te bedienen dan MPU's.
- Een MCU bevat veel van de functies, zoals geheugen, interfaces en I/O op de chip zelf. Een MPU heeft toegang tot deze functionaliteit van onderdelen in ondersteunende chips.
- Een MCU maakt vaak gebruik van een realtime besturingssysteem (RTOS) of voert bare-metal (geen besturingssysteem) uit en biedt realtime reacties en zeer deterministische reacties op externe gebeurtenissen. MPU's voeren over het algemeen een algemeen besturingssysteem uit, zoals Windows, Linux of macOS dat een niet-deterministisch realtime-antwoord biedt. Er is doorgaans geen garantie voor wanneer een taak is voltooid.
Voorbeelden van gespecialiseerde hardware en besturingssystemen zijn:
Windows for IoT is een ingesloten versie van Windows voor MPU's met cloudconnectiviteit waarmee u veilige apparaten kunt maken met eenvoudig inrichten en beheren.
Eclipse ThreadX is een realtime-besturingssysteem voor IoT- en Edge-apparaten die mogelijk worden gemaakt door MCU's. Eclipse ThreadX is ontworpen ter ondersteuning van zeer beperkte apparaten die op batterijen worden aangedreven en minder dan 64 kB flashgeheugen hebben.
FreeRTOS is een realtime besturingssysteem voor ingesloten apparaten. U kunt FreeRTOS gebruiken met de Azure IoT Middleware for FreeRTOS om apparaten te verbinden met Azure IoT. Zie C SDK- en Embedded C SDK-gebruiksscenario's voor een overzicht van RTOS-opties voor apparaatontwikkeling.
Azure Sphere (geïntegreerd) is een beveiligd toepassingsplatform op hoog niveau met ingebouwde communicatie- en beveiligingsfuncties voor internetapparaten. Het omvat een beveiligd, verbonden, cross-over MCU, een aangepast, op Linux gebaseerd besturingssysteem op hoog niveau en een cloudbeveiligingsservice die continue, hernieuwbare beveiliging biedt.
Primitieven van apparaten
Een apparaatontwikkelaar implementeert doorgaans de volgende primitieven in apparaatcode om te communiceren met de cloud:
-
Apparaat-naar-cloud-berichten voor het verzenden van telemetriegegevens van tijdreeksen naar de cloud. Bijvoorbeeld temperatuurgegevens die zijn verzameld van een sensor die aan het apparaat is gekoppeld.
-
Bestandsuploads voor mediabestanden, zoals vastgelegde afbeeldingen en video. Onregelmatig verbonden apparaten kunnen telemetriebatches verzenden. Apparaten kunnen uploads comprimeren om bandbreedte te besparen.
-
Device twins voor het delen en synchroniseren van statusgegevens met de cloud. Een apparaat kan bijvoorbeeld de device twin gebruiken om de huidige status van een klep die het bedient naar de cloud te rapporteren en om een gewenste doeltemperatuur van de cloud te ontvangen.
-
Digitale tweelingen om een apparaat in de digitale wereld te vertegenwoordigen. Een digitale dubbel kan bijvoorbeeld de fysieke locatie van een apparaat, de mogelijkheden en de relaties met andere apparaten vertegenwoordigen.
-
Directe methoden voor het ontvangen van opdrachten uit de cloud. Een directe methode kan parameters bevatten en een antwoord retourneren. De cloud kan bijvoorbeeld een directe methode aanroepen om het apparaat binnen 30 seconden opnieuw op te starten.
-
Cloud-naar-apparaat-berichten voor het ontvangen van meldingen in één richting van de cloud. Bijvoorbeeld een melding dat een update gereed is om te downloaden.
Zie Richtlijnen voor apparaat-naar-cloud-communicatie en richtlijnen voor communicatie tussen clouds voor apparaten voor meer informatie.
SDK’s en bibliotheken
De apparaat-SDK's bieden abstracties op hoog niveau waarmee u de primitieven zonder kennis van de onderliggende communicatieprotocollen kunt gebruiken. De apparaat-SDK's verwerken ook de details van het tot stand brengen van een beveiligde verbinding met de cloud en het verifiëren van het apparaat.
Voor MPU-apparaten zijn apparaat-SDK's beschikbaar voor de volgende talen:
Zie voor MCU-apparaten:
Voorbeelden en richtlijnen
Alle apparaat-SDK's bevatten voorbeelden die laten zien hoe u de SDK gebruikt om verbinding te maken met de cloud, telemetrie te verzenden en de andere primitieven te gebruiken.
Meer voorbeelden vindt u in de codevoorbeeldbrowser.
Apparaatontwikkeling zonder een apparaat-SDK
Hoewel u wordt aangeraden een van de apparaat-SDK's te gebruiken, zijn er mogelijk scenario's waarin u liever niet. In deze scenario's moet uw apparaatcode direct gebruikmaken van een van de communicatieprotocollen die IoT Hub en de Device Provisioning Service (DPS) ondersteunen.
Zie voor meer informatie:
Modellering en schema's
Apparaat- en assetmodellen definiëren de gegevens die apparaten en assets uitwisselen met de cloud. Modellen maken een reeks scenario's met weinig code of geen code mogelijk voor het integreren van uw apparaten en assets met uw IoT-oplossing.
In een met edge verbonden oplossing configureert een operator connectors om verbinding te maken met assets. Deze configuratie omvat een toewijzing tussen de gegevens van de asset en een cloudschema. Met de OPC UA-connector kan de operator bijvoorbeeld OPC UA-knooppunt-id's toewijzen aan gegevenspunten en gebeurtenissen in een JSON-bericht dat is uitgewisseld met de MQTT-broker. In de volgende schermopname ziet u een voorbeeld in de webgebruikersinterface voor digitale bewerkingen waarmee twee dergelijke toewijzingen worden gedefinieerd:
Elders in de oplossing kan een operator rechtstreeks verwijzen naar de tags Temperatuur en Tag 10 zonder dat u de details van de OPC UA-knooppunt-id's hoeft te kennen.
In een cloudoplossing kunnen IoT Plug and Play ontwikkelaars van oplossingen IoT-apparaten integreren met hun oplossingen zonder handmatige configuratie. De kern van IoT Plug and Play is een apparaatmodel dat wordt gebruikt door een apparaat om zijn mogelijkheden te communiceren naar een IoT Plug and Play-toepassing zoals IoT Central. Dit model is gestructureerd als een set elementen waarmee het volgende wordt gedefinieerd:
-
Eigenschappen die de alleen-lezen- of schrijfbare status van apparaat of andere entiteit vertegenwoordigen. Een serienummer van een apparaat kan bijvoorbeeld een alleen-lezen eigenschap zijn en een doeltemperatuur op een thermostaat kan een beschrijfbare eigenschap zijn.
-
Telemetrie ofwel de gegevens die door een apparaat worden verzonden, ongeacht of het gaat om gegevens van een normale stroom met sensorwaarden, een incidentele fout of een informatiebericht.
-
Opdrachten waarmee functies of bewerkingen die op het apparaat kunnen worden uitgevoerd, worden beschreven. Met een opdracht kan bijvoorbeeld een gateway opnieuw worden opgestart of een foto worden gemaakt met een externe camera.
U kunt deze elementen groeperen in interfaces om de elementen opnieuw te gebruiken in verschillende modellen waardoor samenwerking eenvoudiger wordt en ontwikkeling sneller verloopt.
Het model wordt opgegeven met behulp van de Digital Twins Definition Language (DTDL).
Het gebruik van IoT Plug and Play, modellering en DTDL is optioneel. U kunt de Primitieven van het IoT-apparaat gebruiken zonder IoT Plug and Play of modellering te gebruiken. De service Azure Digital Twins maakt ook gebruik van DTDL-modellen om dubbelgrafieken te maken op basis van digitale modellen van omgevingen, zoals gebouwen of fabrieken.
Als apparaatontwikkelaar moet u, wanneer u een IoT Plug and Play apparaat implementeert, een reeks conventies volgen. Deze conventies bieden een standaardmethode voor het implementeren van het apparaatmodel in code met behulp van de primitieven die beschikbaar zijn in de apparaat-SDK's.
Containervorming
Containerisatie is een manier om uw code in een lichtgewicht, geïsoleerde omgeving te verpakken en uit te voeren. Containers zijn draagbaar en kunnen worden uitgevoerd op elk platform dat ondersteuning biedt voor de containerruntime. Containers zijn een goede manier om uw code te verpakken en te implementeren, omdat ze een consistente runtime-omgeving bieden voor uw code. De runtime-omgeving bevat doorgaans de services, bibliotheken en pakketten die uw code moet uitvoeren.
Azure IoT Operations containeriseert al zijn connectoren, brokers en andere componenten die aan de edge draaien. Azure IoT Operations wordt geïmplementeerd in een Kubernetes-cluster, wat een platform is voor containerorkestratie. Implementeer aangepaste connectors of andere onderdelen die u maakt in het Kubernetes-cluster.
U kunt een oplossing bekijken die gebruikmaakt van Azure IoT Edge als een edge-verbonden gateway naar IoT Hub als een hybride oplossing die elementen bevat van zowel edge-verbonden als cloudoplossingen.
Als u containers, zoals in Docker, gebruikt om uw apparaatcode uit te voeren, kunt u code implementeren op uw apparaten met behulp van de mogelijkheden van de containerinfrastructuur. Met containers kunt u ook een runtime-omgeving voor uw code definiëren waarbij alle vereiste bibliotheek- en pakketversies zijn geïnstalleerd. Met containers kunt u eenvoudiger updates implementeren en de levenscyclus van uw IoT-apparaten beheren.
Azure IoT Edge voert apparaatcode uit in containers. U kunt Azure IoT Edge gebruiken om codemodules op uw apparaten te implementeren. Zie Ontwikkeling van uw eigen IoT Edge modules voor meer informatie.
Tip
Azure IoT Edge maakt meerdere scenario's mogelijk. Naast het uitvoeren van uw IoT-apparaatcode in containers, kunt u Azure IoT Edge gebruiken om Azure services op uw apparaten uit te voeren en veldgateways te implementeren. Voor meer informatie, zie Wat is Azure IoT Edge?
De volgende tabel bevat enkele van de beschikbare ontwikkelhulpprogramma's voor IoT-apparaten:
| Tool |
Beschrijving |
|
Azure IoT Hub (VS Code-extensie) |
Met deze VS Code-extensie kunt u uw IoT Hub resources en apparaten beheren vanuit VS Code. |
|
Azure IoT Explorer |
Met dit platformoverschrijdende hulpprogramma kunt u uw IoT Hub resources en apparaten beheren vanuit een bureaubladtoepassing. |
|
Azure IoT-extensie voor Azure CLI |
Deze CLI-extensie bevat opdrachten zoals az iot device simulate, az iot device c2d-messageen az iot hub monitor-events waarmee u interacties met apparaten kunt testen. |
Verwante inhoud