De release van EdgeX 2.0 is gepresenteerd, een open modulaire platform voor het waarborgen van interactie tussen IoT-apparaten, applicaties en services. Het platform is niet gebonden aan hardware van specifieke leveranciers en besturingssystemen en wordt ontwikkeld door een onafhankelijke werkgroep, onder auspiciën van de Linux Foundation. De componenten van het platform zijn geschreven in de programmeertaal Go en worden verspreid onder de Apache 2.0-licentie.
EdgeX stelt in staat om gateways te creëren die bestaande IoT-apparaten verbinden en gegevens verzamelen van verschillende sensoren. De gateway regelt zowel de interactie met de apparaten als de initiële verwerking, aggregatie en analyse van informatie, en fungeert als een tussenliggende schakel tussen het netwerk van IoT-apparaten en een lokaal beheerscentrum of cloudinfrastructuur. Op de gateways kunnen ook verwerkers draaien die zijn opgesteld als microservices. De interactie met IoT-apparaten kan worden georganiseerd via bedrade of draadloze netwerken met gebruikmaking van TCP/IP-netwerken en specifieke (niet-IP) protocollen.

Gateways van verschillende doeleinden kunnen in ketens worden samengevoegd; bijvoorbeeld, de eerste schakel kan verantwoordelijk zijn voor apparaatbeheer (system management) en beveiliging, terwijl de tweede schakel (fog-server) binnenkomende gegevens kan opslaan, analyses kan uitvoeren en diensten kan leveren. Het systeem is modulair, wat betekent dat de functionaliteit over afzonderlijke knooppunten kan worden verdeeld, afhankelijk van de belasting: in eenvoudige gevallen is één gateway voldoende, terwijl voor grote IoT-netwerken een hele cluster kan worden uitgerold.

Als basis voor EdgeX fungeert de open IoT-stack Fuse, die wordt gebruikt in gateways voor IoT-apparaten van Dell Edge Gateway. Het platform kan op elke hardware worden geïnstalleerd, inclusief servers op basis van CPU x86 en ARM, die draaien op Linux, Windows of macOS. Het project omvat een verzameling kant-en-klare microservices voor data-analyse, beveiliging, beheer en het oplossen van verschillende problemen. Voor de ontwikkeling van eigen microservices kunnen programmeertalen Java, Javascript, Python, Go en C/C++ worden gebruikt. Voor de ontwikkeling van drivers voor IoT-apparaten en sensoren wordt een SDK aangeboden.
Belangrijkste wijzigingen:
- Een nieuwe webinterface is geïmplementeerd, gemaakt met behulp van het Angular JS-framework. Voordelen van de nieuwe GUI zijn onder andere de eenvoud van onderhoud en uitbreiding van functionaliteit, een wizard voor het aansluiten van nieuwe apparaten, middelen voor data-visualisatie, een aanzienlijk verbeterde interface voor het beheer van metadata, en mogelijkheden voor het monitoren van de status van services (geheugengebruik, CPU-belasting, enzovoorts).

- De API voor het werken met microservices is volledig herschreven, nu onafhankelijk van het communicatieprotocol, veiliger, goed gestructureerd (gebruikt JSON) en beter in staat om de door de service verwerkte gegevens te volgen.
- De efficiëntie is verhoogd en de mogelijkheid om lichtgewicht configuraties te creëren is aangeboden. De Core Data-component, verantwoordelijk voor het opslaan van gegevens, is nu niet verplicht (bijvoorbeeld, deze kan worden weggelaten wanneer alleen gegevens van sensoren moeten worden verwerkt zonder dat opslag noodzakelijk is).
- De betrouwbaarheid is verhoogd en de middelen voor kwaliteitsborging van de service (QoS) zijn uitgebreid. Bij de gegevensoverdracht van apparaatdiensten (Device Services, verantwoordelijk voor het verzamelen van gegevens van sensoren en apparaten) naar de applicatiediensten (Application Services) kan nu een berichtenbus (Redis Pub/Sub, 0MQ of MQTT) worden gebruikt, zonder gebonden te zijn aan het HTTP REST-protocol, en kunnen de QoS-prioriteiten op het niveau van de message broker worden beheerd. Ook is directe gegevensoverdracht van Device Service naar Application Service toegestaan, met optionele duplicatie in de Core Data-service. De ondersteuning voor gegevensoverdracht via het REST-protocol blijft behouden, maar wordt niet standaard gebruikt.

- Er is een universele module (secret provider) geïmplementeerd voor het extraheren van geheime gegevens (wachtwoorden, sleutels, etc.) uit beveiligde opslagplaatsen, zoals Vault.
- Voor het bijhouden van de register van diensten en instellingen, evenals voor toegangsbeheer en authenticatie, is het Consul-hulpmiddel ingezet. In de API Gateway is ondersteuning geboden voor toegang tot de API van Consul.
- Het aantal processen en diensten die root-rechten nodig hebben in Docker-containers is geminimaliseerd. Beveiliging tegen het gebruik van Redis in onveilige modus is toegevoegd.
- De configuratie van de API Gateway (Kong) is vereenvoudigd.
- Apparaatprofielen zijn vereenvoudigd, waarin parameters voor sensoren en apparaten worden ingesteld, evenals gegevens over de verzamelde data. Profielen kunnen worden gedefinieerd in YAML- en JSON-formaten.

- Nieuwe apparaatdiensten zijn toegevoegd:
- CoAP (geschreven in C) met implementatie van het Constrained Application Protocol.
- GPIO (geschreven in Go) voor aansluiting op microcontrollers en andere apparaten, waaronder Raspberry Pi-borden, via GPIO-poorten (General Pin Input/Output).
- LLRP (geschreven in Go) met implementatie van het LLRP (Low Level Reader Protocol) voor aansluiting op RFID-lezer.
- UART (geschreven in Go) met ondersteuning voor UART (Universal Asynchronous Receiver/Transmitter).
- De mogelijkheden van applicatiediensten (Application Services), verantwoordelijk voor de voorbereidingen en export van gegevens voor verdere verwerking in cloudsystemen en applicaties, zijn uitgebreid. Ondersteuning voor gegevensfiltering van sensoren op basis van de naam van het apparaatsprofiel en het type bron is toegevoegd. De mogelijkheid om gegevens van één dienst naar meerdere ontvangers te verzenden en op meerdere berichtenbussen te abonneren, is gerealiseerd. Er is een sjabloon aangeboden voor het snel creëren van eigen applicatiediensten.
- De gekozen poortnummers voor microservices zijn afgestemd op de bereik van de IANA (Internet Assigned Numbers Authority) voor privégebruik, wat conflicten met bestaande systemen voorkomt.
Bron: opennet.ru



