Codegenerator für Datenmodelle - Verwaltete Integrationen für AWS IoT Device Management

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Codegenerator für Datenmodelle

Erfahren Sie, wie Sie den Codegenerator für das Datenmodell verwenden. Der generierte Code kann zur Serialisierung und Deserialisierung der Datenmodelle verwendet werden, die zwischen der Cloud und dem Gerät ausgetauscht werden.

Das Projekt-Repository enthält ein Tool zur Codegenerierung zum Erstellen von C-Code-Datenmodell-Handlern. In den folgenden Themen werden der Codegenerator und der Arbeitsablauf beschrieben.

Prozess der Codegenerierung

Der Codegenerator erstellt C-Quelldateien aus drei Haupteingaben: AWS'Implementierung des Matter-Datenmodells (.matter-Datei) von der Zigbee Cluster Library (ZCL) Advanced Platform, einem Python-Plugin, das die Vorverarbeitung übernimmt, und Jinja2-Vorlagen, die die Codestruktur definieren. Während der Generierung verarbeitet das Python-Plugin Ihre .matter-Dateien, indem es globale Typdefinitionen hinzufügt, Datentypen auf der Grundlage ihrer Abhängigkeiten organisiert und die Informationen für das Rendern von Vorlagen formatiert.

Die folgende Abbildung beschreibt den Codegenerator, der die C-Quelldateien erstellt.

Der SDK-Codegenerator für Endgeräte und seine Funktionsweise.

Das Endgeräte-SDK enthält Python-Plugins und Jinja2-Vorlagen, mit denen Sie codegen.pyim connectedhomeipProjekt arbeiten können. Diese Kombination generiert mehrere C-Dateien für jeden Cluster auf der Grundlage Ihrer .matter-Dateieingabe.

In den folgenden Unterthemen werden diese Dateien beschrieben.

Python-Plugin

Der Codegenerator analysiert die .matter-Dateien und sendet die Informationen als Python-Objekte an das Plugin. codegen.py Die Plugin-Datei iotmi_data_model.py verarbeitet diese Daten vor und rendert Quellen mit den bereitgestellten Vorlagen. Die Vorverarbeitung beinhaltet:

  1. Hinzufügen von Informationen, die nicht verfügbar sindcodegen.py, z. B. globale Typen

  2. Durchführen einer topologischen Sortierung von Datentypen, um die richtige Reihenfolge der Definitionen festzulegen

    Anmerkung

    Die topologische Sortierung stellt sicher, dass abhängige Typen unabhängig von ihrer ursprünglichen Reihenfolge nach ihren Abhängigkeiten definiert werden.

Jinja2-Vorlagen

Das Endgeräte-SDK bietet Jinja2-Vorlagen, die auf Datenmodell-Handler und C-Funktionen auf niedriger Ebene zugeschnitten sind.

Jinja2-Vorlagen
Vorlage Generierte Quelle Anmerkungen
cluster.h.jinja iotmi_device_<cluster>.h Erzeugt Header-Dateien für C-Funktionen auf niedriger Ebene.
cluster.c.jinja iotmi_device_<cluster>.c Implementieren und registrieren Sie Callback-Funktionszeiger mit dem Data Model Handler.
cluster_type_helpers.h.jinja iotmi_device_type_helpers_<cluster>.h Definiert Funktionsprototypen für Datentypen.
cluster_type_helpers.c.jinja iotmi_device_type_helpers_<cluster>.c Generiert Prototypen von Datentypfunktionen für clusterspezifische Aufzählungen, Bitmaps, Listen und Strukturen.
iot_device_dm_types.h.jinja iotmi_device_dm_types.h Definiert C-Datentypen für globale Datentypen.
iot_device_type_helpers_global.h.jinja iotmi_device_type_helpers_global.h Definiert C-Datentypen für globale Operationen.
iot_device_type_helpers_global.c.jinja iotmi_device_type_helpers_global.c Deklariert Standarddatentypen wie boolesche Werte, Ganzzahlen, Fließkommazahlen, Zeichenketten, Bitmaps, Listen und Strukturen.

(Optional) Benutzerdefiniertes Schema

Das SDK für Endgeräte kombiniert den standardisierten Codegenerierungsprozess mit einem benutzerdefinierten Schema. Dies ermöglicht die Erweiterung von Matter Data Model für Ihre Geräte und Gerätesoftware. Benutzerdefinierte Schemas können dabei helfen, die device-to-cloud Kommunikationsmöglichkeiten von Geräten zu beschreiben.

Ausführliche Informationen zu Datenmodellen für verwaltete Integrationen, einschließlich Format, Struktur und Anforderungen, finden Sie unter. Datenmodell für verwaltete Integrationen

Verwenden Sie codegen.py das Tool, um C-Quelldateien für ein benutzerdefiniertes Schema wie folgt zu generieren:

Anmerkung

Jeder benutzerdefinierte Cluster benötigt dieselbe Cluster-ID für die folgenden drei Dateien.

  • Erstellen Sie ein benutzerdefiniertes Schema in einem JSON Format, das eine Darstellung von Clustern für die Erstellung neuer benutzerdefinierter Cluster in der Cloud zur Verfügung stellt. Eine Beispieldatei befindet sich untercodegen/custom_schemas/custom.SimpleLighting@1.0.

  • Erstellen Sie eine ZCL-Definitionsdatei (Zigbee Cluster Library) in einem XML Format, das dieselben Informationen wie das benutzerdefinierte Schema enthält. Verwenden Sie das ZAP-Tool, um Ihre Matter-IDL-Dateien aus ZCL-XML zu generieren. Eine Beispieldatei befindet sich unter. codegen/zcl/custom.SimpleLighting.xml

  • Die Ausgabe des ZAP-Tool ist Matter IDL File (.matter) und definiert die Matter-Cluster, die Ihrem benutzerdefinierten Schema entsprechen. Dies ist die Eingabe für das codegen.py Tool zum Generieren von C-Quelldateien für das Endgeräte-SDK. Eine Beispieldatei befindet sich untercodegen/matter_files/custom-light.matter.

Ausführliche Anweisungen zur Integration von Datenmodellen für benutzerdefinierte verwaltete Integrationen in Ihren Workflow zur Codegenerierung finden Sie unterGenerieren Sie Code für Geräte.