

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
<a name="managedintegrations-sdk-device-codegen"></a>

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.

**Topics**
+ [Prozess der Codegenerierung](#managedintegrations-sdk-codegen-intro)
+ [Einrichtung der Umgebung](managedintegrations-sdk-codegen-env.md)
+ [Generieren Sie Code für Geräte](managedintegrations-sdk-codegen-generate.md)

## Prozess der Codegenerierung
<a name="managedintegrations-sdk-codegen-intro"></a>

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.](http://docs.aws.amazon.com/de_de/iot-mi/latest/devguide/images/iot-managedintegrations-sdk-codegen.png)


Das Endgeräte-SDK enthält Python-Plugins und Jinja2-Vorlagen, mit denen Sie [https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py](https://github.com/project-chip/connectedhomeip/blob/master/scripts/codegen.py)im [https://github.com/project-chip/connectedhomeip/tree/master](https://github.com/project-chip/connectedhomeip/tree/master)Projekt arbeiten können. Diese Kombination generiert mehrere C-Dateien für jeden Cluster auf der Grundlage Ihrer .matter-Dateieingabe.

**Topics**
+ [Python-Plugin](#managedintegrations-sdk-codegen-plugin)
+ [Jinja2-Vorlagen](#managedintegrations-sdk-codegen-jinja)
+ [(Optional) Benutzerdefiniertes Schema](#managedintegrations-sdk-codegen-schema)

### Python-Plugin
<a name="managedintegrations-sdk-codegen-plugin"></a>

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 sind`codegen.py`, wie z. B. globale Typen

1. 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
<a name="managedintegrations-sdk-codegen-jinja"></a>

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
<a name="managedintegrations-sdk-codegen-schema"></a>

 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](managedintegrations-data-model.md) 

 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 unter`codegen/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 unter`codegen/matter_files/custom-light.matter`. 

 Ausführliche Anweisungen zur Integration von Datenmodellen für benutzerdefinierte verwaltete Integrationen in Ihren Workflow zur Codegenerierung finden Sie unter[Generieren Sie Code für Geräte](managedintegrations-sdk-codegen-generate.md). 