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.

Das Endgeräte-SDK enthält Python-Plugins und Jinja2-Vorlagen, mit denen Sie codegen.py
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:
-
Hinzufügen von Informationen, die nicht verfügbar sind
codegen.py
, z. B. globale Typen -
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.
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 dascodegen.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.