

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.

# MQTT-fähige V3-Gateways für Edge AWS IoT SiteWise
<a name="mqtt-enabled-v3-gateway"></a>

AWS IoT SiteWise kann MQTT-fähige V3-Gateways verwenden, was einen bedeutenden Fortschritt in der Edge-Gateway-Architektur darstellt. SiteWise Dieser Gateway-Typ nutzt das MQTT-Protokoll (Message Queuing Telemetry Transport) für die Datenkommunikation und bietet so mehr Flexibilität und Effizienz in industriellen IoT-Implementierungen.

Das MQTT-fähige V3-Gateway verwendet MQTT für die Datenübertragung und ermöglicht so ein schlankes Publish-Subscribe-Netzwerkprotokoll, das Nachrichten effizient zwischen Geräten und der Cloud transportiert. Sie können verschiedene Datenziele einrichten, darunter die direkte Datenaufnahme in Echtzeit AWS IoT SiteWise und die gepufferte Datenaufnahme mit Amazon S3. Um eine präzise Datenerfassung zu ermöglichen, können Sie Pfadfilter implementieren, um bestimmte MQTT-Themen zu abonnieren.

MQTT-fähige V3-Gateways verfügen über ein vorkonfiguriertes Echtzeitziel mit Filtern, die auf „\$1“ eingestellt sind (alle Themen), die Sie nach Bedarf anpassen oder entfernen können. Um die Datenverwaltung zu optimieren, kann in jedem Gateway nur ein Echtzeitziel existieren.

Die MQTT-fähige Architektur unterscheidet sich erheblich vom Classic Streams, V2-Gateway. Während V2 einen stream-basierten Ansatz verwendet, verwendet V3 MQTT und bietet mehr konfigurierbare Datenziele und Filteroptionen. Beachten Sie jedoch, dass V3 das Datenverarbeitungspaket, das in V2 verfügbar ist, nicht unterstützt.

Das MQTT-fähige V3-Gateway bietet mehrere Vorteile: 
+ Verbesserte Skalierbarkeit aufgrund der geringen Größe von MQTT, die eine bessere Handhabung zahlreicher Geräte und eine hochfrequente Datenübertragung ermöglicht.
+ Verbesserte Datenkontrolle durch Pfadfilter, die eine detaillierte Verwaltung der Datenerfassung ermöglichen und unnötige Datenübertragungen und -verarbeitung reduzieren.
+ Flexible Datenverarbeitung, die je nach Bedarf eine Konfiguration zwischen Echtzeitverarbeitung und gepuffertem Speicher ermöglicht.
+ Anpassung an moderne IoT-Kommunikationsstandards, wodurch die Voraussetzungen für future Verbesserungen und Integrationen geschaffen werden.

Erwägen Sie die Einführung des MQTT-fähigen V3-Gateways für neue Implementierungen, insbesondere wenn Sie flexible Datenaufnahmeoptionen und eine präzise Kontrolle über die Datenerfassung benötigen.

**Anmerkung**  
Für bestehende Bereitstellungen oder Szenarien, die das Datenverarbeitungspaket erfordern, bleibt das Classic Streams, V2-Gateway eine praktikable Option.

Durch das Angebot beider Gateway-Typen AWS IoT SiteWise wird sichergestellt, dass Sie die Lösung wählen können, die Ihren spezifischen industriellen IoT-Anforderungen am besten entspricht, unabhängig davon, ob Sie erweiterte MQTT-Funktionen oder Kompatibilität mit bestehenden Systemen bevorzugen.

## Ziele und Pfadfilter
<a name="create-destination-summary"></a>

In den folgenden Themen erfahren Sie mehr über Ziele und Pfadfilter in MQTT-fähigen Gateways:
+ [Verstehen Sie AWS IoT SiteWise Edge-Ziele](gw-destinations.md#source-destination)
+ [Fügen Sie ein AWS IoT SiteWise Edge-Echtzeitziel hinzu](destinations-real-time.md)
+ [Fügen Sie ein AWS IoT SiteWise gepuffertes Ziel mit Amazon S3 hinzu](destinations-buffered.md)
+ [Machen Sie sich mit Pfadfiltern für AWS IoT SiteWise Edge-Ziele vertrautInformationen zu Pfadfiltern](gw-destinations.md#destinations-path-filters)
+ [Fügen Sie Pfadfilter zu AWS IoT SiteWise Edge-Zielen hinzu](destinations-add-path-filters.md)
+ [AWS IoT SiteWise Edge-Ziele verwalten](destinations-manage.md)

# Connect externe Anwendungen mit dem EMQX-Broker
<a name="connect-external-applications-emqx"></a>

In diesem Handbuch wird erklärt, wie Sie externe Anwendungen über einen EMQX-Broker auf Ihrem bereitgestellten MQTT-fähigen V3-Gateway mit Ihrem AWS IoT SiteWise Edge-Gateway verbinden. Zu den externen Anwendungen können benutzerdefinierte Überwachungstools, Visualisierungssoftware von Drittanbietern oder ältere Systeme gehören, die mit Ihren Industriedaten am Netzwerkrand interagieren müssen.

Wir behandeln die Konfigurationsschritte sowohl für Linux als auch für Microsoft Windows Umgebungen, einschließlich der Konfiguration der EMQX-Bereitstellung, der TLS-Einrichtung für sichere Verbindungen und Autorisierungsregeln zur Zugriffskontrolle für bestimmte Themen.

**Anmerkung**  
EMQX ist kein Anbieter oder Lieferant für Edge. AWS IoT SiteWise 

**Wichtig**  
Um Verbindungen zu Ihrem Gateway zu sichern, empfehlen wir dringend, die zertifikatsbasierte Authentifizierung über die Authentifizierungsfunktion für AWS IoT Greengrass Client-Geräte zu verwenden. Diese Methode bietet zuverlässige Sicherheit durch gegenseitige TLS-Authentifizierung (mTLS). Weitere Informationen finden Sie im *AWS IoT Greengrass Version 2 Entwicklerhandbuch* unter [Connect von Client-Geräten mit Kerngeräten](https://docs.aws.amazon.com/greengrass/v2/developerguide/connect-client-devices.html).

Wenn Sie die zertifikatsbasierte Authentifizierung nicht verwenden können, folgen Sie dieser Anleitung, um die Authentifizierung mit Benutzernamen und Passwörtern einzurichten.

## Voraussetzungen
<a name="emqx-broker-prerequisites"></a>
+ Ein SiteWise Edge-MQTT-fähiges V3-Gateway, das bereitgestellt wurde und online ist
+ Zugriff auf den Gateway-Host
+ Zugriff auf die AWS IoT Greengrass Konsolen AWS IoT SiteWise und

**Topics**
+ [Voraussetzungen](#emqx-broker-prerequisites)
+ [Nachrichten-Payload-Format für den EMQX-Broker auf Edge AWS IoT SiteWise](connect-broker-payload-format.md)
+ [Konfigurieren Sie den EMQX-Broker](configure-emqx-broker.md)
+ [Connect eine Anwendung mit dem EMQX-Broker auf Edge AWS IoT SiteWise](connect-app-to-broker.md)
+ [Richten Sie Autorisierungsregeln für AWS IoT SiteWise Edge in EMQX ein](authorization-rules-emqx-broker.md)

# Nachrichten-Payload-Format für den EMQX-Broker auf Edge AWS IoT SiteWise
<a name="connect-broker-payload-format"></a>

Damit die SiteWise IoT-Publisher-Komponente Daten aus Ihrer externen Anwendung verarbeiten und in der AWS IoT SiteWise Cloud veröffentlichen kann, muss die an den Broker gesendete Nutzlast bestimmte Anforderungen erfüllen.

Das Verständnis des Payload-Formats ist der Schlüssel zu einer erfolgreichen MQTT-Kommunikation mit Edge. AWS IoT SiteWise Der Verbindungsaufbau wird zwar in späteren Abschnitten behandelt, wir stellen Ihnen jedoch zunächst die Payload-Anforderungen vor, um Ihnen bei der Planung Ihrer Implementierung zu helfen.

## Anforderungen an das MQTT-Thema
<a name="connect-broker-mqtt-requirements"></a>

Es gibt keine Einschränkungen hinsichtlich der Struktur von MQTT-Themen, einschließlich der Anzahl der verwendeten Ebenen oder Zeichen. Wir empfehlen jedoch, dass das Thema mit dem `propertyAlias` Feld in der Payload übereinstimmt.

**Example Beispiel für einen Eigenschaftsalias**  
Wenn das MQTT-Thema lautet`site1/line1/compressor1/temperature`, stellen Sie sicher, dass die `propertyAlias` Treffer übereinstimmen.  

```
{
  "assetId": "compressor_asset_01",
  "propertyAlias": "site1/line1/compressor1/temperature",
  "propertyId": "temperature_sensor_01",
  "propertyValues": [
    {
      "quality": "GOOD",
      "timestamp": {
        "offsetInNanos": 0,
        "timeInSeconds": 1683000000
      },
      "value": {
        "doubleValue": 23.5
      }
    }
  ]
}
```

## Struktur der JSON-Nutzlast
<a name="connect-broker-json-payload"></a>

[Die MQTT-Nachrichtennutzdaten sind in JSON geschrieben und folgen dem in der `PutAssetPropertyValueEntry` API-Referenz definierten Nachrichtenformat.AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html)

```
{
   "assetId": "string",
   "propertyAlias": "string",
   "propertyId": "string",
   "propertyValues": [
      {
         "quality": "string",
         "timestamp": {
            "offsetInNanos": number,
            "timeInSeconds": number
         },
         "value": {
            "booleanValue": boolean,
            "doubleValue": number,
            "integerValue": number,
            "stringValue": "string"
         }
      }
   ]
}
```

**Anmerkung**  
Damit eine Nachricht als gültig angesehen werden kann, kann nur eine der folgenden Bedingungen erfüllt sein:  
Das `propertyAlias` ist gesetzt, oder
`assetId`Sowohl als auch `propertyId` sind gesetzt
Das `PutAssetPropertyValueEntry` hat ein `entryId` Feld, das in diesem Zusammenhang nicht erforderlich ist.

# Konfigurieren Sie den EMQX-Broker
<a name="configure-emqx-broker"></a>

In diesem Abschnitt wird beschrieben, wie Sie Benutzernamen und Passwörter hinzufügen. Außerdem wird beschrieben, wie Sie mithilfe des hinzugefügten Benutzernamens und Kennworts eine TLS-Verbindung von einer externen Quelle aus herstellen. Sie können den EMQX-Broker unter Linux oder konfigurieren. Microsoft Windows

**Anmerkung**  
Um den Broker zu konfigurieren, benötigen Sie ein Core-Gerät, das mit der EMQX-Standardkonfiguration in Ihrem MQTT-fähigen V3-Gateway eingerichtet ist.

**Wichtig**  
Nach Abschluss dieses Verfahrens empfehlen wir dringend, Autorisierungsregeln zu konfigurieren. Weitere Informationen finden Sie unter [Richten Sie Autorisierungsregeln für AWS IoT SiteWise Edge in EMQX ein](authorization-rules-emqx-broker.md). Autorisierungsregeln für hinzugefügte Benutzer erhöhen die Sicherheit. 

## Aktualisieren Sie die EMQX-Bereitstellungskonfiguration für die Authentifizierung
<a name="update-emqx-broker-authentication"></a>

**Um die EMQX-Bereitstellungskonfiguration für die Authentifizierung zu aktualisieren**

1. <a name="sitewise-open-console"></a>Navigieren Sie zur [AWS IoT SiteWise -Konsole](https://console.aws.amazon.com/iotsitewise/).

1. **Wählen Sie in der linken Navigationsleiste im Abschnitt **Edge die Option Edge-Gateways** aus.**

1. Wählen Sie das zu konfigurierende Gateway aus.

1. Kopieren Sie im Abschnitt **Edge-Gateway-Konfiguration** Ihren **Greengrass-Core-Gerätewert**. Speichern Sie ihn für die spätere Verwendung.

1. Öffnen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/).

1. Wählen Sie in der linken Navigationsleiste im Bereich **Verwalten** die Option **Greengrass-Geräte** und dann **Bereitstellungen** aus.

1. Suchen Sie den Core-Gerätewert, den Sie zuvor gespeichert haben, und wählen Sie diesen Link, um die Bereitstellung zu öffnen.

1. Wählen Sie die Dropdownschaltfläche „**Aktionen**“ und anschließend „**Überarbeiten**“.

1. Lesen Sie die angezeigte Meldung und wählen Sie dann Bereitstellung **überarbeiten** aus. Die Seite **„Ziel angeben**“ wird angezeigt.

1. Wählen Sie **Weiter**, bis Sie zum Schritt **Komponenten konfigurieren** gelangen.

1. Wählen Sie das Optionsfeld `aws.greengrass.clientdevices.mqtt.EMQX`.

1. Wählen Sie die Schaltfläche **Komponente konfigurieren**. Eine Konfigurationsseite für die Komponente wird angezeigt.

1. Wählen Sie unter **Konfigurationsupdate** **die Option Auf Standardkonfiguration zurücksetzen für die Komponentenversion: 2.\$1 aus. **\$1.

1. Geben Sie je nach Betriebssystem im Abschnitt **Konfiguration zum Zusammenführen** die folgende Konfiguration ein.

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

------
#### [ Windows ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

   Das `dockerOptions` Feld ist nur für Linux-Gateways bestimmt.

------

1. Wählen Sie **Bestätigen** aus.

1. Wählen Sie **Weiter**, bis Sie zum Schritt **Überprüfen** gelangen.

1. Wählen Sie **Bereitstellen**.

1. Wenn die Bereitstellung erfolgreich war, fahren Sie mit dem nächsten Schritt fort.

## Aktivieren Sie die Authentifizierung mit Benutzername und Passwort
<a name="emqx-broker-username-password-auth"></a>

In diesem Abschnitt erfahren Sie, wie Sie Benutzernamen und Passwörter über die EMQX-Dashboard-GUI hinzufügen.

**Anmerkung**  
Die bereitgestellten EMQX-bezogenen Anweisungen dienen nur als Referenz. Da sich die Dokumentation und Funktionen von EMQX im Laufe der Zeit ändern können und wir ihre Dokumentation nicht pflegen, empfehlen wir, die [offizielle Dokumentation von EMQX](https://docs.emqx.com/en/emqx/latest/) für die aktuellsten Informationen zu konsultieren.

------
#### [ EMQX Dashboard ]

**Um die Authentifizierung mit Benutzername und Passwort über das EMQX-Dashboard zu aktivieren**

1. Stellen Sie sicher, dass Sie sich innerhalb des Gateway-Hosts befinden.

1. Öffnen Sie ein Browserfenster und besuchen Sie [http://localhost:18083/](http://localhost:18083/).

1. Geben Sie den Standardbenutzernamen von **admin** und das Standardkennwort von ein**public**. Weitere Informationen finden Sie unter [EMQX Dashboard](https://docs.emqx.com/en/emqx/latest/dashboard/introduction.html#first-login) in den *EMQX-Dokumenten*.

1. Nach der Anmeldung werden Sie aufgefordert, Ihr Passwort zu ändern. Aktualisieren Sie Ihr Passwort, um zum EMQX Dashboard zu gelangen.

1. **Wählen Sie in der linken Navigationsleiste das Schildsymbol und dann Authentifizierung.**

1. Wählen Sie in der Zeile **Integrierte Datenbank** die Schaltfläche **Benutzer** aus.

1. Wählen Sie die Schaltfläche mit dem Pluszeichen, um Benutzer hinzuzufügen. Ein Bildschirm zum **Hinzufügen** wird angezeigt.

1. Geben Sie einen Benutzernamen und ein Passwort für den Benutzer der externen Anwendung ein.

1. Wählen Sie **Speichern**. Der von Ihnen gewählte Benutzername wird in der Tabelle der **Authentifizierungsseite** angezeigt.

**Anmerkung**  
Für den neuen Benutzer gelten bestehende oder standardmäßige Autorisierungsregeln. Es wird empfohlen, sie zu überprüfen und an die Anforderungen Ihrer externen Anwendung anzupassen.

------
#### [ EMQX Management with Linux ]

Verwenden Sie das AWS IoT SiteWise EMQX CLI-Tool unter. `/greengrass/v2/bin/swe-emqx-cli`

**Um die Authentifizierung mit Benutzername und Passwort über EMQX Management unter Linux zu aktivieren**

1. Ändern Sie das Admin-Passwort, indem Sie den folgenden Befehl ausführen:

   ```
   /greengrass/v2/bin/swe-emqx-cli admin change-pwd
   ```

1. Gehen Sie wie folgt vor, wenn Sie dazu aufgefordert werden:

   1. Geben Sie Ihren aktuellen Administratorbenutzer (Standard ist`admin`) und Ihr Passwort (Standard ist`public`) ein.

   1. Geben Sie Ihr neues Passwort ein und bestätigen Sie es.

   Bei Erfolg wird die folgende Meldung angezeigt:

   ```
   admin password changed successfully
   ```

1. Fügen Sie Benutzer für externe Anwendungen hinzu, indem Sie den folgenden Befehl ausführen:

   ```
   /greengrass/v2/bin/swe-emqx-cli users add
   ```

1. Gehen Sie wie folgt vor, wenn Sie dazu aufgefordert werden:

   1. Geben Sie den Benutzernamen für den neuen Benutzer ein.

   1. Geben Sie das Passwort für den neuen Benutzer ein und bestätigen Sie es.

   Bei Erfolg wird die folgende Meldung angezeigt:

   ```
   User '[username]' created successfully
   ```

1. Überprüfen Sie die Benutzerkonfiguration, indem Sie den folgenden Befehl ausführen:

   ```
   /greengrass/v2/bin/swe-emqx-cli users list
   ```

   Die Ausgabe zeigt alle konfigurierten Benutzer:

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------
#### [ EMQX Management with Windows ]

Verwenden Sie das AWS IoT SiteWise EMQX CLI Tool an einem der folgenden Orte:
+ PowerShell: `C:\greengrass\v2\bin\swe-emqx-cli.ps1`
+ Eingabeaufforderung: `C:\greengrass\v2\bin\swe-emqx-cli.bat`

**Um die Authentifizierung mit Benutzername und Passwort über EMQX Management unter Windows zu aktivieren**

1. Ändern Sie das Admin-Passwort, indem Sie den folgenden Befehl ausführen:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 admin change-pwd
   ```

1. Gehen Sie wie folgt vor, wenn Sie dazu aufgefordert werden:

   1. Geben Sie Ihren aktuellen Administratorbenutzer (Standard ist`admin`) und Ihr Passwort (Standard ist`public`) ein.

   1. Geben Sie Ihr neues Passwort ein und bestätigen Sie es.

   Bei Erfolg wird die folgende Meldung angezeigt:

   ```
   admin password changed successfully
   ```

1. Fügen Sie Benutzer für externe Anwendungen hinzu, indem Sie den folgenden Befehl ausführen:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users add
   ```

1. Gehen Sie wie folgt vor, wenn Sie dazu aufgefordert werden:

   1. Geben Sie den Benutzernamen für den neuen Benutzer ein.

   1. Geben Sie das Passwort für den neuen Benutzer ein und bestätigen Sie es.

   Bei Erfolg wird die folgende Meldung angezeigt:

   ```
   User '[username]' created successfully
   ```

1. Überprüfen Sie die Benutzerkonfiguration, indem Sie den folgenden Befehl ausführen:

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users list
   ```

   Die Ausgabe zeigt alle konfigurierten Benutzer:

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------

# Connect eine Anwendung mit dem EMQX-Broker auf Edge AWS IoT SiteWise
<a name="connect-app-to-broker"></a>

Der EMQX-Broker verwendet Transport Layer Security (TLS) auf Port 8883, um die gesamte Kommunikation zu verschlüsseln und so sicherzustellen, dass Ihre Daten während der Übertragung geschützt bleiben. Dieser Abschnitt führt Sie durch die Schritte zum Herstellen von Verbindungen zwischen Ihren Anwendungen und dem EMQX-Broker. Die Einhaltung dieser Schritte trägt dazu bei, die Integrität und Vertraulichkeit Ihrer Industriedaten zu wahren. Der Verbindungsprozess umfasst zwei Hauptansätze: die automatische IP-Erkennung mithilfe von Komponenten oder die manuelle Konfiguration von DNS-Namen und IP-Adressen als alternative Subject Names (SANs) in Ihren TLS-Zertifikaten. Jede Methode hat ihre eigenen Vorteile, abhängig von Ihrer Netzwerkkonfiguration und Ihren Sicherheitsanforderungen. Diese Dokumentation führt Sie durch beide Optionen.

**Topics**
+ [Konfigurieren Sie TLS für sichere Verbindungen zum EMQX-Broker auf Edge AWS IoT SiteWise](#configure-tls-emqx-broker)
+ [Testen Sie die EMQX-Brokerverbindung auf Edge AWS IoT SiteWise](#test-emqx-connection)
+ [Verwenden Sie Ihre eigene CA](#configure-tls-custom-ca)
+ [Öffnen Sie Port 8883 für externe Firewallverbindungen](#emqx-firewall)

## Konfigurieren Sie TLS für sichere Verbindungen zum EMQX-Broker auf Edge AWS IoT SiteWise
<a name="configure-tls-emqx-broker"></a>

 AWS IoT Greengrass Generiert standardmäßig ein TLS-Serverzertifikat für den EMQX-Broker, das von der Core Device Certificate Authority (CA) signiert ist. Weitere Informationen finden Sie unter [Client-Geräte über einen MQTT-Broker mit einem AWS IoT Greengrass Core-Gerät verbinden](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html).

### Rufen Sie das TLS-Zertifikat ab
<a name="configure-tls-retrieve-certificate"></a>

Um das CA-Zertifikat zu erhalten, führen Sie den folgenden Befehl auf dem Gateway-Host aus:

------
#### [ Linux ]

Führen Sie den folgenden Befehl in einer Shell-Sitzung auf dem Gateway-Host aus:

```
/greengrass/v2/bin/swe-emqx-cli cert
```

Mit diesem Befehl wird der Speicherort des Zertifikats angezeigt und der Inhalt des Zertifikats gedruckt.

Sie können das Zertifikat alternativ mit diesem Befehl in einer Datei speichern:

```
/greengrass/v2/bin/swe-emqx-cli cert --output /path/to/certificate.pem
```

------
#### [ Windows ]

Führen Sie den folgenden Befehl in einer PowerShell Sitzung auf dem Gateway-Host aus:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert
```

Mit diesem Befehl wird der Speicherort des Zertifikats angezeigt und der Inhalt des Zertifikats gedruckt.

Sie können das Zertifikat alternativ mit diesem Befehl in einer Datei speichern:

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert --output C:\path\to\certificate.pem
```

Die CLI findet das Zertifikat automatisch, unabhängig vom genauen Pfad auf Ihrem System.

------

Kopieren Sie den Inhalt der Datei ca.pem in die externe Anwendung, die Sie mit dem Broker verbinden. Speichern Sie diese unter `BrokerCoreDeviceCA.pem`.

### Fügen Sie dem TLS-Serverzertifikat benutzerdefinierte names/IP DNS-Adressen hinzu
<a name="configure-tls-custom-dns-ip"></a>

Der alternative Name des Antragstellers (SAN) auf dem von AWS IoT Greengrass is `localhost` generierten Zertifikat Beim Herstellen einer TLS-Verbindung von außerhalb des Gateway-Hosts schlägt der TLS-Überprüfungsschritt fehl, da der Hostname des Brokers nicht mit dem Hostnamen `localhost` auf dem Serverzertifikat übereinstimmt.

Um das Problem mit nicht übereinstimmenden Hostnamen zu beheben, AWS IoT Greengrass bietet diese Option zwei Möglichkeiten zur Verwaltung von Endpunkten auf Kerngeräten. In diesem Abschnitt werden beide Optionen behandelt. Ausführlichere Informationen finden Sie unter [Manage core device endpoints](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-core-device-endpoints.html) im *AWS IoT Greengrass Version 2 Developer Guide*.
+ Verwenden Sie den Abschnitt Automatisierte IP-Erkennung, um über die IP-Adresse des Kerngeräts eine Verbindung zum EMQX-Broker herzustellen.
+ Um mithilfe eines DNS-Namens statt einer IP-Adresse eine Verbindung zum EMQX-Broker herzustellen, verwenden Sie den Abschnitt Manuelle Verwaltung.

------
#### [ Automated IP discovery ]

Diese Option ermöglicht es Ihrem Core-Gerät, seine IP-Adresse automatisch zu ermitteln und sie dem Broker-Zertifikat als Subject Alternative Name (SAN) hinzuzufügen.

1. Fügen Sie die `aws.greengrass.clientdevices.IPDetector` Komponente zur Bereitstellung Ihres Kerngeräts hinzu.

1. Stellen Sie die Änderungen auf Ihrem Gerät bereit

1. Warten Sie, bis die Bereitstellung abgeschlossen ist.

   Nach Abschluss der Bereitstellung können Sie mithilfe der IP-Adresse des Brokers eine sichere TLS-Verbindung herstellen.

   Die IP-Adresse wird dem Brokerzertifikat automatisch als SAN hinzugefügt.

------
#### [ Manual DNS and IP Configuration ]

Sie können Ihrem TLS-Zertifikat manuell DNS-Namen und IP-Adressen als alternative Subject Names (SANs) hinzufügen. Diese Methode ist nützlich, wenn Sie einen DNS-Namen für Ihren Gateway-Host konfiguriert haben.

**Wichtig**  
Wenn Sie die IPDetector Komponente verwenden, entfernen Sie sie aus Ihrer Bereitstellung, bevor Sie fortfahren. Die IPDetector Komponente überschreibt manuelle Endpunktkonfigurationen.

**Um Endpunkte manuell zu konfigurieren**

1. <a name="sitewise-open-console"></a>Navigieren Sie zur [AWS IoT SiteWise -Konsole](https://console.aws.amazon.com/iotsitewise/).

1. **Wählen Sie in der linken Navigationsleiste im Abschnitt **Edge die Option Edge-Gateways** aus.**

1. Wählen Sie das zu konfigurierende Gateway aus.

1. Wählen Sie im Abschnitt **Edge-Gateway-Konfiguration** die URL Ihres **Greengrass-Core-Geräts** aus. Die Seite des Core-Geräts wird angezeigt.

1. Wählen Sie die Registerkarte **Client-Geräte**.

1. Wählen Sie **Endpunkte verwalten** aus.

1. Geben Sie im Dialogfeld „Endpoints verwalten“ die DNS-Namen und alle IP-Adressen ein, die Sie hinzufügen möchten. SANs Verwenden Sie Port 8883.

1. Wählen Sie **Aktualisieren** aus.

Das TLS-Serverzertifikat des Brokers wird automatisch aktualisiert und schließt Ihre neuen Endpunkte mit ein.

**Um das Update des TLS-Serverzertifikats unter Linux zu überprüfen**

1. Starten Sie eine Shell-Sitzung auf Ihrem Gateway-Host.

   ```
   docker exec emqx openssl x509 -in ./data/cert.pem -text -noout | grep -A1 "Subject Alternative Name"
   ```

1. Der Befehl gibt eine Ausgabe zurück, die der folgenden ähnelt:

   ```
   X509v3 Subject Alternative Name: 
   DNS:endpoint_you_added, DNS:localhost
   ```

1. Stellen Sie sicher, dass Ihr Endpunkt in der Liste von angezeigt wird SANs.

**Um das Update des TLS-Serverzertifikats unter Windows zu überprüfen**

1. Starten Sie eine Shell-Sitzung auf Ihrem Gateway-Host.

   ```
   (Get-PfxCertificate -FilePath "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\cert.pem").Extensions | Where-Object { $_.Oid.FriendlyName -eq "Subject Alternative Name" } | ForEach-Object { "Subject Alternative Name:", ($_.Format($true) -split "`n")[0..1] }
   ```

1. Der Befehl gibt eine Ausgabe zurück, die der folgenden ähnelt:

   ```
   Subject Alternative Name:
   DNS Name=your-endpoint
   DNS Name=localhost
   ```

1. Stellen Sie sicher, dass der von Ihnen hinzugefügte Endpunkt in der Liste von enthalten ist SANs.

------

## Testen Sie die EMQX-Brokerverbindung auf Edge AWS IoT SiteWise
<a name="test-emqx-connection"></a>

Nachdem Sie Ihren EMQX-Broker mit TLS-Zertifikaten und Authentifizierungsdaten konfiguriert haben, müssen Sie unbedingt überprüfen, ob Ihr Setup ordnungsgemäß funktioniert. Durch das Testen der Verbindung können Sie sicherstellen, dass Ihre Sicherheitskonfigurationen ordnungsgemäß implementiert sind und dass Clients erfolgreich verschlüsselte Verbindungen zum Broker herstellen können. In diesem Abschnitt wird gezeigt, wie Sie Ihre Broker-Verbindung mit dem Mosquitto Command Line Interface (CLI) -Client testen, einem weit verbreiteten MQTT-Client-Tool, das TLS-Verschlüsselung und -Authentifizierung unterstützt.

### Verwenden Sie den Mosquitto CLI-Client, um die EMQX-Broker-Verbindung zu testen
<a name="test-emqx-connection-mosquitto"></a>

In diesem Schritt verwenden wir den Mosquitto CLI-Client, um unser Setup zu testen und sicherzustellen, dass wir mit dem zuvor erstellten Benutzernamen und Passwort erfolgreich eine Verbindung zum Broker herstellen können. Die `BrokerCoreDeviceCA.pem` folgenden Schritte finden Sie unter Schritt 3: TLS einrichten.

```
mosquitto_sub -h hostname|ip address \
    -p 8883 \
    -t "#" \
    -q 1 \
    -u username -P password \
    --cafile BrokerCoreDeviceCA.pem
```

**Anmerkung**  
Möglicherweise wird ein SSL:Verify-Fehler angezeigt, wenn die hostname/IP Adresse, mit der Sie eine Verbindung herstellen, nicht mit dem Subject Alternative Name (SAN) übereinstimmt, der auf dem CA-Zertifikat steht, das Sie an den Client übergeben. Informationen zum Abrufen eines Zertifikats mit dem richtigen SAN finden Sie unter „Hinzufügen von benutzerdefinierten names/IP DNS-Adressen zum TLS-Serverzertifikat“ unter Schritt 3: TLS einrichten.

Zu diesem Zeitpunkt haben alle Benutzer Zugriff darauf, alle Themen auf dem Broker zu veröffentlichen und zu abonnieren. Fahren Sie mit [Richten Sie Autorisierungsregeln für AWS IoT SiteWise Edge in EMQX ein](authorization-rules-emqx-broker.md) fort.

## Verwenden Sie Ihre eigene CA
<a name="configure-tls-custom-ca"></a>

AWS IoT Greengrass beschreibt, wie Sie Ihre eigene Authentifizierungskomponente für Client-Geräte so konfigurieren, dass sie Ihre eigene Zertifizierungsstelle (CA) verwendet. Die Authentifizierungskomponente für Clientgeräte (`aws.greengrass.clientdevices.Auth`) authentifiziert Client-Geräte und autorisiert Aktionen auf Client-Geräten. *Weitere Informationen finden Sie unter [Verwenden Ihrer eigenen Zertifizierungsstelle im Entwicklerhandbuch](https://docs.aws.amazon.com/greengrass/v2/developerguide/connecting-to-mqtt.html#use-your-own-CA).AWS IoT Greengrass Version 2 *

Um Ihre eigene Zertifizierungsstelle zu verwenden, fügen Sie die `aws.greengrass.clientdevices.Auth` Komponente zu Ihrer Bereitstellung hinzu, sodass Sie eine benutzerdefinierte Konfiguration angeben können.

## Öffnen Sie Port 8883 für externe Firewallverbindungen
<a name="emqx-firewall"></a>

------
#### [ Linux ]

Fügen Sie in Ihrer Linux-Host-Firewallregel eine eingehende Regel für Port 8883 hinzu, um eingehende Verbindungen von außerhalb des Gateway-Hosts zuzulassen. Wenn Firewalls vorhanden sind, stellen Sie sicher, dass eingehende TLS-Verbindungen auf Port 8883 zulässig sind.

------
#### [ Windows ]

Fügen Sie in Ihrer Microsoft Windows Host-Firewallregel eine Regel für eingehenden Datenverkehr für Port 8883 hinzu, um eingehende Verbindungen von außerhalb des Gateway-Hosts zuzulassen. Stellen Sie sicher, dass es sich bei der Regel um eine Zulassungsregel vom Typ Port handelt, wobei Port 8883 angegeben wird. Sie können dies entsprechend Ihrer Netzwerkkonfiguration konfigurieren, um Verbindungen von Ihren externen Anwendungen zum Broker zuzulassen.

------

# Richten Sie Autorisierungsregeln für AWS IoT SiteWise Edge in EMQX ein
<a name="authorization-rules-emqx-broker"></a>

EMQX unterstützt das Hinzufügen von Autorisierungsregeln auf der Grundlage von Kennungen wie Benutzername, IP-Adresse oder Client-ID. Dies ist nützlich, wenn Sie die Anzahl der externen Anwendungen einschränken möchten, die eine Verbindung zu verschiedenen Vorgängen oder Themen herstellen.

**Topics**
+ [Konfigurieren Sie die Autorisierung mithilfe der integrierten Datenbank unter Linux](add-auth-rules-database-emqx-broker-linux.md)
+ [Konfigurieren Sie die Autorisierung mithilfe der integrierten Datenbank in Windows](add-auth-rules-database-emqx-broker-windows.md)
+ [Aktualisieren Sie die EMQX-Bereitstellungskonfiguration für die Autorisierung](update-emqx-broker-authorization.md)
+ [Fügen Sie Autorisierungsregeln über das EMQX-Dashboard für Benutzer hinzu](add-rules-emqx-broker.md)

# Konfigurieren Sie die Autorisierung mithilfe der integrierten Datenbank unter Linux
<a name="add-auth-rules-database-emqx-broker-linux"></a>

Wenn Sie Autorisierungsregeln konfigurieren, gibt es zwei Konfigurationsoptionen, die von Ihrer Bereitstellungseinrichtung abhängen.
+ **Docker**— Wenn Sie eine Docker Standardinstallation ohne ausführenLitmus Edge, verwenden Sie die **Docker Bridge Gateway-Konfiguration**. Dies ist in der Regel der Fall, wenn Sie nur AWS IoT SiteWise Komponenten bereitgestellt haben.
+ **Litmus Edge**— Wenn Sie auf Ihrem Gateway Litmus Edge installiert haben, verwenden Sie die **Litmus EdgeNetzwerk-Subnetzkonfiguration**.

**Anmerkung**  
Wenn Sie das Docker Bridge-Gateway zunächst konfigurieren und später installierenLitmus Edge, konfigurieren Sie die Autorisierungsregeln mithilfe der Litmus Edge Netzwerk-Subnetzoption neu, um eine ordnungsgemäße Kommunikation zwischen allen Komponenten sicherzustellen.

**Um grundlegende Autorisierungsregeln hinzuzufügen**

1. Stellen Sie sicher, dass der EMQX-Broker bereitgestellt ist und ausgeführt wird.

1. Starten Sie eine Shell-Sitzung auf Ihrem Gateway-Host.

------
#### [ Docker without Litmus Edge ]

   Führen Sie für eine Docker Standardinstallation ohne folgenden Litmus Edge Befehl aus:

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init
   ```

------
#### [ Litmus Edge network subnet ]

   Wenn du verwendestLitmus Edge, ermittele die Litmus Edge-Netzwerksubnetz-IP:

   ```
   docker network inspect LitmusNetwork | grep IPAM -A9
   ```

   Notieren Sie sich den Subnetzwert aus der Ausgabe und führen Sie den folgenden Befehl aus. `litmus_subnet_ip`Ersetzen Sie ihn durch den Subnetzwert aus dem vorherigen Schritt.

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init litmus_subnet_ip
   ```

------

   Das Tool erstellt automatisch Autorisierungsregeln und wendet sie an, um Verbindungen von der angegebenen IP-Adresse zum Broker zuzulassen. Es ermöglicht den Zugriff auf alle Themen. Dazu gehören der IoT SiteWise OPC UA Collector und der IoT SiteWise Publisher.

1. Fahren Sie mit [Aktualisieren Sie die EMQX-Bereitstellungskonfiguration für die Autorisierung](update-emqx-broker-authorization.md) fort.

# Konfigurieren Sie die Autorisierung mithilfe der integrierten Datenbank in Windows
<a name="add-auth-rules-database-emqx-broker-windows"></a>

In diesem Abschnitt wird die Konfiguration von Autorisierungsregeln mithilfe der integrierten Datenbank für Windows-Bereitstellungen behandelt.

**Um grundlegende Autorisierungsregeln hinzuzufügen**

1. Stellen Sie sicher, dass der EMQX-Broker bereitgestellt ist und ausgeführt wird.

1. Führen Sie das AWS IoT SiteWise EMQX CLI-Tool aus: 

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 acl init
   ```

   Das Tool erstellt und wendet automatisch ACL-Regeln an, die Verbindungen von localhost (127.0.0.1) zum Broker zulassen. Es ermöglicht den Zugriff auf alle Themen. Dazu gehören der IoT SiteWise OPC UA Collector und der IoT SiteWise Publisher.

1. Fahren Sie mit [Aktualisieren Sie die EMQX-Bereitstellungskonfiguration für die Autorisierung](update-emqx-broker-authorization.md) fort.

# Aktualisieren Sie die EMQX-Bereitstellungskonfiguration für die Autorisierung
<a name="update-emqx-broker-authorization"></a>

**Um die EMQX-Bereitstellungskonfiguration für die Autorisierung zu aktualisieren**

1. <a name="sitewise-open-console"></a>Navigieren Sie zur [AWS IoT SiteWise -Konsole](https://console.aws.amazon.com/iotsitewise/).

1. **Wählen Sie in der linken Navigationsleiste im Abschnitt **Edge die Option Edge-Gateways** aus.**

1. Wählen Sie das zu konfigurierende Gateway aus.

1. Kopieren Sie im Abschnitt **Edge-Gateway-Konfiguration** Ihren **Greengrass-Core-Gerätewert**. Speichern Sie ihn für die spätere Verwendung.

1. Öffnen Sie die [AWS IoT -Konsole](https://console.aws.amazon.com/iot/).

1. Wählen Sie in der linken Navigationsleiste im Bereich **Verwalten** die Option **Greengrass-Geräte** und dann **Bereitstellungen** aus.

1. Suchen Sie den Core-Gerätewert, den Sie zuvor gespeichert haben, und wählen Sie diesen Link, um die Bereitstellung zu öffnen.

1. Wählen Sie die Dropdownschaltfläche „**Aktionen**“ und anschließend „**Überarbeiten**“.

1. Lesen Sie die angezeigte Meldung und wählen Sie dann Bereitstellung **überarbeiten** aus. Die Seite **„Ziel angeben**“ wird angezeigt.

1. Wählen Sie **Weiter**, bis Sie zum Schritt **Komponenten konfigurieren** gelangen.

1. Wählen Sie das Optionsfeld `aws.greengrass.clientdevices.mqtt.EMQX`.

1. Wählen Sie die Schaltfläche **Komponente konfigurieren**. Eine Konfigurationsseite für die Komponente wird angezeigt.

1. Wählen Sie unter **Konfigurationsupdate** **die Option Auf Standardkonfiguration zurücksetzen für die Komponentenversion: 2.\$1 aus. **\$1.

1. Fügen Sie je nach Betriebssystem den folgenden Inhalt in den Abschnitt **Konfiguration zum Zusammenführen** ein.

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "data/authz/acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

------
#### [ Windows ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "C:\\greengrass\\v2\\work\\aws.greengrass.clientdevices.mqtt.EMQX\\v2\\data\\authz\\acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

------

1. Wählen Sie **Bestätigen** aus.

1. Wählen Sie **Weiter**, bis Sie zum Schritt **Überprüfen** gelangen.

1. Wählen Sie **Bereitstellen**.

**Anmerkung**  
Ab diesem Zeitpunkt können Sie die ACL-Datei nicht mehr bearbeiten, um die Autorisierungsregeln zu aktualisieren. Alternativ können Sie [Fügen Sie Autorisierungsregeln über das EMQX-Dashboard für Benutzer hinzu](add-rules-emqx-broker.md) nach einer erfolgreichen Bereitstellung mit fortfahren.

# Fügen Sie Autorisierungsregeln über das EMQX-Dashboard für Benutzer hinzu
<a name="add-rules-emqx-broker"></a>

Sie können Autorisierungsregeln mit dem EMQX-Dashboard oder dem EMQX-CLI-Tool hinzufügen oder aktualisieren. AWS IoT SiteWise Das AWS IoT SiteWise EMQX CLI-Tool verwaltet die Autorisierung mithilfe der integrierten Datenbank von EMQX.

**Anmerkung**  
Das Hinzufügen von Autorisierungsregeln ist ein fortgeschrittener Konfigurationsschritt, der Kenntnisse der MQTT-Themenmuster und der Zugriffskontrolle erfordert. *Weitere Informationen zum Erstellen von Autorisierungsregeln mithilfe der integrierten Datenbank von EMQX finden Sie unter [Verwenden der integrierten Datenbank](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html) in den EMQX-Dokumenten.*

**Anmerkung**  
Die bereitgestellten EMQX-bezogenen Anweisungen dienen nur als Referenz. Da sich die Dokumentation und Funktionen von EMQX im Laufe der Zeit ändern können und wir ihre Dokumentation nicht pflegen, empfehlen wir, die [offizielle Dokumentation von EMQX](https://docs.emqx.com/en/emqx/latest/) für die aktuellsten Informationen zu konsultieren.

------
#### [ EMQX dashboard ]

Dieses Verfahren zeigt, wie Sie Autorisierungsregeln im EMQX-Dashboard hinzufügen können.

Auf das EMQX-Dashboard kann nur vom Gateway-Host aus zugegriffen werden. Wenn Sie versuchen, von außerhalb des Gateway-Hosts eine Verbindung herzustellen, können Sie nicht auf das Dashboard zugreifen.

**Um Autorisierungsregeln mithilfe des EMQX-Dashboards hinzuzufügen**

1. Stellen Sie sicher, dass Sie sich innerhalb des Gateway-Hosts befinden.

1. Öffnen Sie ein Browserfenster und besuchen Sie [http://localhost:18083/](http://localhost:18083/).

1. Melden Sie sich im EMQX-Dashboard an. Bei diesem Verfahren wird davon ausgegangen, dass Sie Ihre Standardanmeldedaten in etwas Ihrer Wahl geändert haben. Weitere Informationen zur Ersteinrichtung finden Sie unter[Aktivieren Sie die Authentifizierung mit Benutzername und Passwort](configure-emqx-broker.md#emqx-broker-username-password-auth).

1. Wählen Sie im Dropdownmenü das Schildsymbol und anschließend **Autorisierung** aus.

1. Wählen Sie in der Zeile **Integrierte Datenbank** die Schaltfläche „**Berechtigungen**“. 

1. Fügen Sie im Abschnitt Integrierte Datenbankautorisierung die Benutzerautorisierungsregeln für Ihre Geschäftsanforderungen hinzu oder aktualisieren Sie sie. Weitere Anleitungen zum Erstellen von Regeln finden Sie im Abschnitt [Integrierte Datenbank verwenden](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html) in den *EMQX-Dokumenten*.

------
#### [ AWS IoT SiteWise CLI tool using Linux ]

**So verwalten Sie Autorisierungsregeln mit dem AWS IoT SiteWise EMQX CLI-Tool unter Linux:**
+ Fügen Sie Autorisierungsregeln für einen Benutzer im folgenden Format hinzu:

  ```
  /greengrass/v2/bin/swe-emqx-cli auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example Fügen Sie Autorisierungsregeln für einen Benutzer hinzu**  
Dieses Beispiel zeigt, wie Regeln für einen Benutzer mit dem Namen hinzugefügt werden`system1`:  

```
/greengrass/v2/bin/swe-emqx-cli auth add system1 \
    publish allow "sensors/#" \
    subscribe allow "control/#" \
    all deny "#"
```

**Example : Autorisierungsregeln für einen Benutzer anzeigen**  
Führen Sie den folgenden Befehl aus, um die Autorisierungsregeln für die `system1` Benutzer anzuzeigen:  

```
/greengrass/v2/bin/swe-emqx-cli auth list system1
```

**Example : Alle vorhandenen Autorisierungsregeln anzeigen**  
Führen Sie den folgenden Befehl aus, um alle Autorisierungsregeln anzuzeigen, die Sie derzeit haben:  

```
/greengrass/v2/bin/swe-emqx-cli auth list
```

**Example : Löscht alle Autorisierungsregeln für einen Benutzer**  
Führen Sie den folgenden Befehl aus, um alle Autorisierungsregeln zu löschen, die für einen bestimmten Benutzer gelten:  

```
/greengrass/v2/bin/swe-emqx-cli auth delete system1
```
Sie werden aufgefordert, den Löschvorgang zu bestätigen.

------
#### [ AWS IoT SiteWise CLI tool using Windows ]

**So verwalten Sie Autorisierungsregeln mit dem AWS IoT SiteWise EMQX CLI-Tool in: Windows PowerShell**
+ Fügen Sie Autorisierungsregeln für einen Benutzer im folgenden Format hinzu:

  ```
  C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example : Autorisierungsregeln für einen Benutzer hinzufügen**  
Dieses Beispiel zeigt, wie Regeln für einen Benutzer mit dem Namen hinzugefügt werden`system1`:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add system1 `
    publish allow "sensors/#" `
    subscribe allow "control/#" `
    all deny "#"
```

**Example : Autorisierungsregeln für einen Benutzer anzeigen**  
Führen Sie den folgenden Befehl aus, um die Autorisierungsregeln für die `system1` Benutzer anzuzeigen:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list system1
```

**Example : Alle vorhandenen Autorisierungsregeln anzeigen**  
Führen Sie den folgenden Befehl aus, um alle Autorisierungsregeln anzuzeigen, die Sie derzeit haben:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list
```

**Example : Löscht alle Autorisierungsregeln für einen Benutzer**  
Führen Sie den folgenden Befehl aus, um alle Autorisierungsregeln zu löschen, die für einen bestimmten Benutzer gelten:  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth delete system1
```
Sie werden aufgefordert, den Löschvorgang zu bestätigen.

------

# Verarbeiten und visualisieren Sie Daten mit SiteWise Edge- und Open-Source-Tools
<a name="open-source-edge-integrations"></a>

Konfigurieren Sie AWS IoT SiteWise Edge-MQTT-fähige Gateways mit Open-Source-Tools für die lokale Verarbeitung und Visualisierung, um Ihre industriellen Datenverwaltungsfunktionen zu verbessern.

Mit SiteWise Edge können Sie mithilfe externer Open-Source-Tools eine lokale Datenverarbeitungspipeline erstellen. [Verwenden Sie [Node-RED®](https://nodered.org/), um Zeitreihendaten mit [InfluxDB® zu speichern und den Betrieb über Grafana® -Dashboards](https://www.influxdata.com/lp/influxdb-database/) zu überwachen.](https://grafana.com/)

Node-RED verarbeitet und transformiert Ihre Datenflüsse, während InfluxDB die Speicherung von Zeitreihendaten ermöglicht. Grafana zeigt Ihre Betriebsdaten in Echtzeit an. Verwenden Sie diese Tools mit SiteWise Edge, um Daten zwischen Ihrer lokalen Umgebung und der zu synchronisieren AWS Cloud, sodass Sie sowohl sofortige lokale Einblicke als auch langfristige Cloud-Analysefunktionen erhalten.

**Anmerkung**  
Node-RED®, InfluxDB® und Grafana® sind keine Anbieter oder Lieferanten für Edge. SiteWise 

![\[Ein Diagramm, das einige Datenquellen und den Turbinensimulator zeigt, der zur Veröffentlichung eine Verbindung zum EMQX Broker herstellt. Anschließend abonniert der EMQX-Broker das Gateway und Node-RED. AWS IoT SiteWise Node-RED speist in InfluxDB und dann Influx DB in das Grafana-Dashboard ein.\]](http://docs.aws.amazon.com/de_de/iot-sitewise/latest/userguide/images/gateway-open-source-overview.png)


**Anmerkung**  
In diesem Handbuch verwenden wir die Open-Source-Version von [Grafana](https://grafana.com/) for SiteWise Edge im Gegensatz zum [Amazon Managed Grafana-Service](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html).

## Optionen für die Bereitstellung
<a name="deployment-options"></a>

Sie können diese Lösung mit einem von zwei Ansätzen bereitstellen. Mit einer Microsoft Windows manuellen Einrichtung kontrollieren Sie die Konfiguration und Integration der Komponenten in Ihre Infrastruktur. Mit können Sie Docker verwendenLinux, um vorkonfigurierte Komponenten in Containern bereitzustellen.

Wählen Sie die Methode, die Ihren betrieblichen Anforderungen entspricht.
+ [Richten Sie Open-Source-Integrationen manuell ein (Windows)](windows-manual-setup.md)— Für benutzerdefinierte Konfigurationen oder bestehende Infrastruktur
+ [Richten Sie Open-Source-Integrationen mit Docker (Linux) ein](linux-docker-setup.md)— Für eine schnelle Bereitstellung mit vorkonfigurierten Komponenten

## Übersicht über das Beispiel eines Windparks
<a name="open-source-example-overview"></a>

In diesem Leitfaden wird anhand eines Beispiels für einen Windpark veranschaulicht, wie Sie die Windgeschwindigkeit einer Turbine in einem Windpark überwachen können. Dieses praktische Szenario veranschaulicht allgemeine Anforderungen an die industrielle Überwachung, bei denen sowohl lokale als auch cloudbasierte Transparenz für die betriebliche Effizienz von Nutzen sind.

Mit dieser Integration können Sie:
+ Erfassen Sie Daten von Industrieanlagen mithilfe eines AWS IoT SiteWise Edge-Gateways
+ Verarbeiten Sie Daten lokal mit Node-RED, InfluxDB und Grafana
+ Speichern Sie Daten lokal mit InfluxDB
+ Überwachen Sie Daten in Echtzeit mithilfe von Grafana-Dashboards

In diesem Handbuch verwenden wir das Beispiel eines Windparks. Wir verwenden Node-RED, um eine Turbine zu simulieren, die Windgeschwindigkeitdaten generiert. Node-RED übersetzt die Datennutzdaten, veröffentlicht die Daten auf dem SiteWise Edge-MQTT-Broker, abonniert den Empfang von Daten vom Broker und speichert die Daten lokal in InfluxDB. Dieser Ansatz stellt sicher, dass alle Betriebsdaten sowohl lokal für den sofortigen Zugriff als auch in der Cloud für weitere Analysen verfügbar sind. Durch die Implementierung dieses Musters erhöhen Sie die Widerstandsfähigkeit gegenüber Netzwerkunterbrechungen und behalten gleichzeitig die Möglichkeit, fortschrittliche Analysen in der AWS Cloud durchzuführen. Grafana stellt für die lokale Überwachung eine Verbindung zu InfluxDB her und bietet Betreibern so Echtzeiteinblicke in Metriken ohne Cloud-Abhängigkeiten. Ein SiteWise Edge-MQTT-fähiges Gateway stellt eine Verbindung zu demselben MQTT-Broker her, an den Daten gesendet werden sollen AWS IoT SiteWise, und schafft so eine Brücke zwischen Ihren Edge-Operationen und Cloud-basierten Diensten.

Sie können Ihre eigenen Daten und Konfigurationen verwenden, um einen ähnlichen Workflow zu erstellen, der auf Ihre spezifischen industriellen Anforderungen zugeschnitten ist, unabhängig davon, ob Sie Produktionsanlagen, Versorgungsinfrastrukturen oder andere Industrieanlagen überwachen.

## Anforderungen für Open-Source-Integrationen
<a name="open-source-requirements"></a>

Stellen Sie vor der Implementierung von Open-Source-Integrationen mit SiteWise Edge sicher, dass Ihre Umgebung die erforderlichen Anforderungen erfüllt.
+ **Hardwareanforderungen** — Ihre Gateway-Hardware muss die Anforderungen für SiteWise Edge-Gateways erfüllen. Weitere Informationen finden Sie unter [AWS IoT SiteWise Anforderungen an das selbst gehostete Edge-Gateway](configure-gateway-ggv2.md) für MQTT-fähige V3-Gateways und. [Anforderungen für die AWS IoT SiteWise Edge-Anwendung](siemens-app-gateway-requirements.md)
**Wichtig**  
[Stellen Sie bei der Bereitstellung zusätzlicher Open-Source-Komponenten sicher, dass Ihre Hardware die Anforderungen für [InfluxDB](https://docs.influxdata.com/influxdb/v2/install/), [Node-RED](https://nodered.org/docs/getting-started/) und Grafana erfüllt.](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
+ Ihre Netzwerkkonfiguration muss sowohl die lokale Kommunikation zwischen Komponenten als auch Cloud-Konnektivität für Edge unterstützen. SiteWise 
+ Alle Dienste müssen auf demselben Host ausgeführt werden.

## Sicherheitsüberlegungen
<a name="open-source-security-considerations"></a>

Es wird empfohlen, die gesamte Kommunikation zwischen Komponenten zu verschlüsseln, insbesondere beim Zugriff auf Schnittstellen von nicht lokalen Netzwerken aus. Implementieren Sie die richtigen Zugriffskontrollen für jede Komponente und befolgen Sie die AWS bewährten Methoden für die Konfiguration AWS IoT SiteWise des Edge-Gateways und die AWS Kontosicherheit.

**Entwicklungsumgebung**  
Dieses Handbuch zeigt, wie Node-RED, InfluxDB und Grafana lokal auf einem Gateway-Host ausgeführt und darauf zugegriffen wird. Implementieren Sie für Produktionsbereitstellungen, die externen Zugriff erfordern, Sicherheitsmaßnahmen wie TLS-Verschlüsselung, Authentifizierung und Autorisierung. Halten Sie sich an die bewährten Sicherheitsmethoden der einzelnen Anwendungen.

**Software von Drittanbietern**  
Diese Lösung verwendet Software von Drittanbietern, die nicht von InfluxDB AWS, Node-RED, Grafana und dem Plugin verwaltet wird. `node-red-contrib-influxdb` Stellen Sie vor der Bereitstellung sicher, dass diese Komponenten den Sicherheitsanforderungen, Compliance-Standards und Governance-Richtlinien Ihres Unternehmens entsprechen.

**Wichtig**  
In diesem Handbuch wird auf Software von Drittanbietern verwiesen und verwendet, die nicht Eigentum von Drittanbietern ist oder von dieser nicht verwaltet wird AWS. Stellen Sie vor der Implementierung sicher, dass alle Komponenten Ihren Sicherheits-, Compliance- und Governance-Anforderungen entsprechen. Halten Sie die gesamte Software mit den neuesten Sicherheitspatches auf dem neuesten Stand und befolgen Sie die bewährten Methoden zur Sicherung Ihrer Edge-Bereitstellung.  
 InfluxDB, Node-RED, Grafana sind keine Anbieter oder Lieferanten für Edge. SiteWise 

## Weitere Überlegungen
<a name="open-source-other-considerations"></a>

Berücksichtigen Sie diese zusätzlichen Faktoren bei der Implementierung von Open-Source-Integrationen mit Edge. SiteWise 
+ Verwenden Sie die neuesten Versionen aller Dienste, Tools und Komponenten.
+ Filtern und aggregieren Sie Daten vor der Cloud-Übertragung lokal, um die Kosten für die AWS IoT SiteWise Datenaufnahme zu senken. Konfigurieren Sie geeignete Datenaufbewahrungszeiträume in InfluxDB und dimensionieren Sie Ihre Gateway-Hardware richtig. Weitere Informationen finden Sie unter [AWS IoT SiteWise Preise](https://aws.amazon.com/iot-sitewise/pricing/).
+ Implementieren Sie regelmäßige Backup-Verfahren für alle Daten.
+ Überwachen Sie die Ressourcennutzung auf Ihrem Gateway und konfigurieren Sie entsprechende Ressourcenlimits für jede Komponente. Implementieren Sie Datenaufbewahrungsrichtlinien in InfluxDB, um die Festplattennutzung zu verwalten.

# Richten Sie Open-Source-Integrationen manuell ein (Windows)
<a name="windows-manual-setup"></a>

Verwenden Sie diese Anleitung, um manuell einen Zeitreihen-Bucket für Windgeschwindigkeitsdaten zu erstellen, der eine Verbindung zu Grafana® und Node-RED® herstellt.

 Installieren und konfigurieren Sie Node-RED, InfluxDB® und Grafana manuell, um Ihre Bereitstellungskonfiguration Microsoft Windows zu kontrollieren. Mit InfluxDB können Sie Zeitreihendaten von Ihren Geräten speichern und verwalten.

## Voraussetzungen für die manuelle Einrichtung
<a name="windows-open-source-prerequisites"></a>

Bevor Sie beginnen, müssen Sie die folgenden Anforderungen erfüllen:

**Anmerkung**  
Führen Sie alle Dienste (SiteWise Edge, InfluxDB, Node-RED und Grafana) auf demselben Host aus.
+ Installieren Sie ein MQTT-fähiges V3-Gateway. Weitere Informationen finden Sie unter [MQTT-fähige V3-Gateways für Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).
+ Installieren Sie diese Dienste lokal und führen Sie sie aus:
  + InfluxDB OSS v2. Installationsschritte finden Sie unter InfluxDB [installieren](https://docs.influxdata.com/influxdb/v2/install/).
  + Node-RED. Installationsschritte finden Sie unter [Node-RED lokal installieren](https://nodered.org/docs/getting-started/local).
  + Grafana. Installationsschritte finden [Sie unter Grafana installieren](https://grafana.com/docs/grafana/latest/setup-grafana/installation/).

# Richten Sie lokalen Speicher mit InfluxDB ein
<a name="windows-influxdb-setup"></a>

Mit InfluxDB® können Sie Zeitreihendaten von Ihren Geräten lokal speichern. Der Zweck der lokalen Speicherfähigkeit besteht darin, die betriebliche Transparenz bei Netzwerkunterbrechungen aufrechtzuerhalten und die Latenz für zeitkritische Anwendungen zu reduzieren. Sie können Analysen und Visualisierungen am Netzwerkrand durchführen und haben dennoch die Möglichkeit, Daten selektiv an die Cloud weiterzuleiten.

In diesem Abschnitt erstellen Sie einen Zeitreihen-Bucket für Windgeschwindigkeitdaten von Turbinen und generieren ein API-Token für Grafana® - und Node-RED® -Konnektivität. Der InfluxDB-Bucket dient als dedizierter Speichercontainer für Ihre Zeitreihendaten, ähnlich einer Datenbank in herkömmlichen Systemen. Das API-Token ermöglicht einen sicheren programmatischen Zugriff auf Ihre Daten.

**Um InfluxDB einzurichten**

1. [Nachdem Sie die erforderlichen Schritte abgeschlossen und sichergestellt haben, dass alle Tools auf demselben Host ausgeführt werden, öffnen Sie Ihren Webbrowser und gehen Sie zu http://127.0.0.1:8086.](http://127.0.0.1:8086)

1. (Optional) Aktivieren Sie die TLS-Verschlüsselung für mehr Sicherheit. Weitere Informationen finden Sie unter [Aktivieren der TLS-Verschlüsselung](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/) in der *InfluxData Documentation*.

1. Erstellen Sie einen InfluxDB-Bucket mit Zeitreihen, um Daten von Node-RED zu speichern. Der Bucket dient als dedizierter Container für Ihre Windparkdaten, sodass Sie die für diesen Datensatz spezifischen Aufbewahrungsrichtlinien organisieren und verwalten können. Weitere Informationen finden Sie unter [Buckets verwalten](https://docs.influxdata.com/influxdb/v2/admin/buckets/) in der *InfluxData Documentation*.

1. (Optional) Konfigurieren Sie den Datenaufbewahrungszeitraum für Ihren Edge-Standort. Durch die Festlegung geeigneter Aufbewahrungsfristen können Speicherressourcen effizient verwaltet werden, da ältere Daten, die für den lokalen Betrieb nicht mehr benötigt werden, automatisch entfernt werden.

   Informationen zur Datenspeicherung finden Sie unter [Datenspeicherung in InfluxDB](https://docs.influxdata.com/influxdb/v2/reference/internals/data-retention/) im. *InfluxData Documentation*

1. Generieren Sie ein API-Token für den Bucket. Dieses Token ermöglicht eine sichere Kommunikation zwischen InfluxDB und anderen Komponenten wie Node-RED und Grafana. Auf diese Weise können nur autorisierte Dienste aus Ihrem Datenspeicher lesen oder in ihn schreiben. Weitere Informationen finden Sie unter [Erstellen eines Tokens](https://docs.influxdata.com/influxdb/cloud/admin/tokens/create-token/) in der *InfluxData Documentation*.

Nachdem Sie diese Schritte abgeschlossen haben, können Sie Zeitreihendaten in Ihrer InfluxDB-Instance speichern und so eine Grundlage für die lokale Datenpersistenz und -analyse in Ihrer Edge-Umgebung schaffen.

# Konfigurieren Sie Node-RED-Flows für die Datenintegration AWS IoT SiteWise
<a name="windows-nodered-config"></a>

Mit Node-RED® können Sie zwei Abläufe implementieren, um Daten zwischen Ihren Geräten und zu verwalten. AWS IoT SiteWise Diese Datenflüsse bilden zusammen eine umfassende Datenverwaltungslösung, die sowohl den lokalen als auch den Cloud-Datenfluss berücksichtigt.
+ **Ablauf der Datenveröffentlichung** — Publiziert in der Cloud. Der Datenveröffentlichungsfluss sendet Daten an AWS IoT SiteWise. Dieser Flow simuliert ein Turbinengerät, indem Sensordaten generiert, in ein AWS IoT SiteWise Format übersetzt und im SiteWise Edge-MQTT-Broker veröffentlicht werden. Auf diese Weise können Sie die Cloud-Funktionen für Speicherung, Analyse und Integration mit anderen Diensten nutzen AWS IoT SiteWise. AWS 

  Weitere Informationen finden Sie unter [Konfigurieren Sie den Ablauf der Datenveröffentlichung](windows-nodered-data-publish-flow.md).
+ **Ablauf der Datenspeicherung** — Speichert Daten am Netzwerkrand. Der Datenaufbewahrungsablauf abonniert den SiteWise Edge-MQTT-Broker, um Daten zu empfangen, sie in das InfluxDB® -Format zu übersetzen und sie zur Überwachung lokal zu speichern. Dieser lokale Speicher bietet sofortigen Zugriff auf Betriebsdaten, reduziert die Latenz für zeitkritische Anwendungen und gewährleistet die Kontinuität bei Netzwerkunterbrechungen.

  Weitere Informationen finden Sie unter [Konfigurieren Sie den Datenaufbewahrungsablauf](windows-nodered-data-retention-flow.md).

Diese beiden Datenflüsse arbeiten zusammen, um sicherzustellen, dass Daten sowohl an diese gesendet als auch lokal gespeichert werden, AWS IoT SiteWise sodass sie sofort darauf zugreifen können.

[Um auf Ihre Node-RED-Konsole zuzugreifen, gehen Sie zu http://127.0.0.1:1880.](http://127.0.0.1:1880) Informationen zur Aktivierung von TLS finden Sie unter [TLS-Verschlüsselung aktivieren](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/).

# Konfigurieren Sie den Ablauf der Datenveröffentlichung
<a name="windows-nodered-data-publish-flow"></a>

Der Datenveröffentlichungsablauf verwendet drei Knoten, um eine Pipeline zu erstellen, die Ihre Industriedaten an die Cloud sendet. Dieser Ablauf ist unerlässlich, um cloudbasierte Analysen, Langzeitspeicherung und Integration mit anderen AWS Diensten zu ermöglichen. Zunächst werden simulierte Gerätedaten an den SiteWise Edge MQTT-Broker gesendet. Das Gateway empfängt die Daten vom Broker und ermöglicht so die Übertragung in die AWS IoT SiteWise Cloud, wo Sie leistungsstarke Analyse- und Visualisierungsfunktionen nutzen können.
+ **Dateneingabe** — Empfängt Gerätedaten von Ihren Industrieanlagen oder Simulatoren
+ **Datenübersetzer für AWS IoT SiteWise** — Übersetzt Daten in AWS IoT SiteWise ein Format, um die Kompatibilität mit dem SiteWise Edge-Gateway sicherzustellen
+ **MQTT-Publisher** — Veröffentlicht Daten auf dem SiteWise Edge-MQTT-Broker und stellt sie sowohl lokalen als auch Cloud-Nutzern zur Verfügung

![\[Ein Diagramm, das den Node-RED-Datenveröffentlichungsablauf zeigt. Es sendet simulierte Gerätedaten an den SiteWise Edge-MQTT-Broker zur Abholung durch das SiteWise Edge Gateway und dann in die Cloud. AWS IoT SiteWise\]](http://docs.aws.amazon.com/de_de/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)


## Konfigurieren Sie den Dateneingabeknoten
<a name="windows-nodered-data-input-config"></a>

In diesem Beispiel verwendet der Dateneingabeknoten ein simuliertes Windturbinengerät, das Windgeschwindigkeitdaten generiert. Dieser Knoten dient als Einstiegspunkt für Ihre Industriedaten, unabhängig davon, ob sie aus simulierten Quellen (wie in unserem Beispiel) oder aus tatsächlichen Industrieanlagen in Produktionsumgebungen stammen.

Wir verwenden ein benutzerdefiniertes JSON-Format für die Datennutzdaten, um eine standardisierte Struktur bereitzustellen, die sowohl mit lokalen Verarbeitungstools als auch mit dem AWS IoT SiteWise Cloud-Dienst effizient funktioniert. Dieses Format enthält neben den tatsächlichen Messwerten auch wichtige Metadaten wie Zeitstempel und Qualitätsindikatoren und ermöglicht so ein umfassendes Datenmanagement und eine Qualitätsverfolgung in Ihrer gesamten Pipeline. Importieren Sie den Inject-Node, um simulierte Daten in diesem standardisierten JSON-Format mit Zeitstempeln, Qualitätsindikatoren und Werten zu erhalten.

[https://nodered.org/docs/user-guide/nodes#inject](https://nodered.org/docs/user-guide/nodes#inject)

Der Turbinensimulator generiert jede Sekunde Windgeschwindigkeitdaten in diesem standardisierten JSON-Format:

**Example : Nutzlast der Turbinendaten**  

```
{
    name: string,         // Property name/identifier
    timestamp: number,    // Epoch time in nanoseconds
    quality: "GOOD" | "UNCERTAIN" | "BAD",
    value: number | string | boolean
}
```

Dieses Format bietet mehrere Vorteile:
+ Das `name` Feld identifiziert die spezifische Eigenschaft oder Messung, sodass Sie mehrere Datenpunkte von demselben Gerät aus verfolgen können
+ Die Angabe `timestamp` in Nanosekunden gewährleistet eine präzise Zeiterfassung für eine genaue historische Analyse
+ Der `quality` Indikator hilft Ihnen, Daten auf der Grundlage ihrer Zuverlässigkeit zu filtern und zu verwalten
+ Das flexible `value` Feld unterstützt verschiedene Datentypen, um verschiedene Sensorausgänge zu ermöglichen

**Example : Inject-Knoten eines Turbinensimulators**  

```
[
    {
        "id": "string",
        "type": "inject",
        "z": "string",
        "name": "Turbine Simulator",
        "props": [
            {
                "p": "payload.timestamp",
                "v": "",
                "vt": "date"
            },
            {
                "p": "payload.quality",
                "v": "GOOD",
                "vt": "str"
            },
            {
                "p": "payload.value",
                "v": "$random()",
                "vt": "jsonata"
            },
            {
                "p": "payload.name",
                "v": "/Renton/WindFarm/Turbine/WindSpeed",
                "vt": "str"
            }
        ],
        "repeat": "1",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "",
        "x": 270,
        "y": 200,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

## Konfigurieren Sie einen Knoten für die Datenübersetzung
<a name="windows-nodered-sitewiseise-translator-config"></a>

Das SiteWise Edge-Gateway benötigt Daten in einem bestimmten Format, um die Kompatibilität mit der AWS IoT SiteWise Cloud sicherzustellen. Der Translator-Knoten ist eine wichtige Komponente, die Ihre Eingabedaten in das erforderliche AWS IoT SiteWise Payload-Format konvertiert. Dieser Übersetzungsschritt stellt sicher, dass Ihre Industriedaten ordnungsgemäß verarbeitet, gespeichert und später in der AWS IoT SiteWise Cloud-Umgebung analysiert werden können.

Durch die Standardisierung des Datenformats in dieser Phase ermöglichen Sie die Integration zwischen Ihren Edge-Geräten und dem Cloud-Dienst, sodass Sie Funktionen zur Anlagenmodellierung, Analyse und Visualisierung nutzen können. Verwenden Sie diese Struktur:

**Example : Payload-Struktur für das Analysieren von SiteWise Edge-Daten**  

```
{
  "propertyAlias": "string",  
  "propertyValues": [
    {
      "value": { 
          "booleanValue": boolean, 
          "doubleValue": number, 
          "integerValue": number,
          "stringValue": "string" 
     },
      "timestamp": {
          "timeInSeconds": number,
          "offsetInNanos": number
      },
      "quality": "GOOD" | "UNCERTAIN" | "BAD",
  }]
}
```

**Anmerkung**  
Ordnen Sie `propertyAlias` die Ihrer MQTT-Themenhierarchie zu (zum Beispiel). `/Renton/WindFarm/Turbine/WindSpeed` Dadurch wird sichergestellt, dass Ihre Daten ordnungsgemäß mit der richtigen Asset-Eigenschaft in AWS IoT SiteWise verknüpft sind. Weitere Informationen zum Konzept „Datenstream-Alias“ finden Sie unter[AWS IoT SiteWise Konzepte](concept-overview.md). 

1. Importieren Sie den Beispielfunktionsknoten für die AWS IoT SiteWise Payload-Übersetzung. Diese Funktion übernimmt die Konvertierung von Ihrem standardisierten Eingabeformat in ein AWS IoT SiteWise-kompatibles Format und gewährleistet so die korrekte Formatierung von Zeitstempeln, Qualitätsindikatoren und Werteingabe.

   ```
   [
       {
           "id": "string",
           "type": "function",
           "z": "string",
           "name": "Translate to SiteWise payload",
           "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
           "outputs": 1,
           "timeout": "",
           "noerr": 0,
           "initialize": "",
           "finalize": "",
           "libs": [],
           "x": 530,
           "y": 200,
           "wires": [
               [
                   "string"
               ]
           ]
       }
   ]
   ```

1. Stellen Sie sicher, dass der JavaScript Code die Windgeschwindigkeitdaten korrekt übersetzt. Die Funktion erfüllt mehrere wichtige Aufgaben:
   + Extrahiert den Eigenschaftsnamen aus der Eingabe und legt ihn als propertyAlias fest
   + Konvertiert den Zeitstempel von Millisekunden in das erforderliche Sekunden- und Nanosekundenformat
   + Behält den Qualitätsindikator für die Überwachung der Datenzuverlässigkeit bei
   + Erkennt automatisch den Wertetyp und formatiert ihn entsprechend den Anforderungen AWS IoT SiteWise 

1. Connect den Knoten mit Ihrem Flow und verknüpfen Sie ihn zwischen dem Dateneingabeknoten und dem MQTT-Publisher.

*Eine Anleitung zum Schreiben einer Funktion, die auf Ihre Geschäftsanforderungen zugeschnitten ist, finden Sie in der Node-RED Dokumentation unter [Funktionen schreiben](https://nodered.org/docs/user-guide/writing-functions)*

## Konfigurieren Sie den MQTT-Publisher
<a name="windows-nodered-mqtt-publisher-config"></a>

Nach der Übersetzung sind die Daten bereit für die Veröffentlichung auf dem SiteWise Edge MQTT-Broker.

Konfigurieren Sie den MQTT-Publisher mit diesen Einstellungen, um Daten an den SiteWise Edge MQTT-Broker zu senden:

**Um den MQTT-Ausgangsknoten zu importieren**

1. Importieren Sie einen ausgehenden MQTT-Konfigurationsknoten mit. `"type": "mqtt out"` Mit ausgehenden MQTT-Knoten können Sie die Konfiguration eines Brokers gemeinsam nutzen.

1. Geben Sie Schlüssel-Wert-Paare für Informationen ein, die für die MQTT-Broker-Verbindung und das Nachrichten-Routing relevant sind.

Importieren Sie den Beispielknoten. `mqtt out`

**Example**  

```
[
    {
        "id": "string",
        "type": "mqtt out",
        "z": "string",
        "name": "Publish to MQTT broker",
        "topic": "/Renton/WindFarm/Turbine/WindSpeed",
        "qos": "1",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "string",
        "x": 830,
        "y": 200,
        "wires": []
    },
    {
        "id": "string",
        "type": "mqtt-broker",
        "name": "emqx",
        "broker": "127.0.0.1",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "5",
        "keepalive": 15,
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]
```

Der Beispiel-MQTT-Ausgangsknoten erstellt die MQTT-Verbindung mit den folgenden Informationen:
+ Server: `127.0.0.1`
+ Anschluss: `1883`
+ Protokoll: `MQTT V5`

Anschließend konfiguriert der MQTT-Ausgangsknoten das Nachrichten-Routing mit den folgenden Informationen:
+ Topic: `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS: `1`

## Stellen Sie die Knoten bereit und überprüfen Sie sie
<a name="windows-verify-deployment"></a>

Gehen Sie nach der Konfiguration der drei Knoten für den Datenveröffentlichungsfluss wie folgt vor, um den Flow bereitzustellen und zu überprüfen, ob die Daten korrekt übertragen werden AWS IoT SiteWise

**So stellen Sie Verbindungen bereit und überprüfen sie**

1. Connect die drei Knoten, wie im Datenveröffentlichungsablauf gezeigt.  
![\[Data publish flow diagram showing input from turbine simulator to AWS IoT SiteWise to MQTT broker.\]](http://docs.aws.amazon.com/de_de/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)

1. Wählen Sie **Deploy**, um alle Änderungen an der Knotenverbindung zu übernehmen.

1. Navigieren Sie zur [AWS IoT SiteWise Konsole](https://console.aws.amazon.com/iotsitewise/) und wählen Sie **Datenstreams** aus.

1. Stellen Sie sicher, dass das **Alias-Präfix** im Drop-down-Menü ausgewählt ist. Suchen Sie dann nach dem `/Renton/WindFarm/Turbine/WindSpeed` Alias.

Wenn Sie bei Ihrer Suche den richtigen Alias sehen, haben Sie den Flow bereitgestellt und die Datenübertragung verifiziert.

# Konfigurieren Sie den Datenaufbewahrungsablauf
<a name="windows-nodered-data-retention-flow"></a>

Der Datenaufbewahrungsablauf kann verwendet werden, um die betriebliche Transparenz am Netzwerkrand aufrechtzuerhalten. Dies ist nützlich bei Netzwerkunterbrechungen oder wenn Sie sofortigen Zugriff auf Ihre Daten benötigen. Dieser Flow abonniert den MQTT-Broker für den Empfang von Gerätedaten, konvertiert sie in das InfluxDB® -Format und speichert sie lokal. Durch die Implementierung dieses Flows erstellen Sie einen belastbaren lokalen Datenspeicher, auf den Betreiber ohne Cloud-Abhängigkeiten zugreifen können, was eine Überwachung und Entscheidungsfindung in Echtzeit am Netzwerkrand ermöglicht.

Der Datenfluss besteht aus drei wichtigen Komponenten, die zusammenarbeiten, um sicherzustellen, dass Ihre Daten ordnungsgemäß erfasst und gespeichert werden:
+ **MQTT-Abonnement-Client** — Empfängt Daten vom Broker und stellt so sicher, dass Sie alle relevanten Industriedaten erfassen
+ **InfluxDB-Übersetzer** — Konvertiert AWS IoT SiteWise Nutzdaten in das InfluxDB-Format und bereitet die Daten für eine effiziente Speicherung von Zeitreihen vor
+ **InfluxDB-Writer** — Verwaltet den lokalen Speicher und stellt so die Datenpersistenz und Verfügbarkeit für lokale Anwendungen sicher

![\[Node-RED-Datenaufbewahrungsablauf\]](http://docs.aws.amazon.com/de_de/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)


## Richten Sie den MQTT-Abonnement-Client ein
<a name="windows-nodered-mqtt-subscriber"></a>
+ Konfigurieren Sie den MQTT-Abonnement-Client in Node-RED so, dass er Daten vom MQTT EMQX-Broker empfängt, indem Sie das folgende Beispiel importieren. AWS IoT SiteWise   
**Example : MQTT im Knoten**  

  ```
  [
      {
          "id": "string",
          "type": "mqtt in",
          "z": "string",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "string",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
              [
                  "string"
              ]
          ]
      },
      {
          "id": "string",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "127.0.0.1",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
      }
  ]
  ```

Dieses Abonnement stellt sicher, dass alle relevanten Daten, die auf dem Broker veröffentlicht werden, für die lokale Speicherung erfasst werden, sodass Sie eine vollständige Aufzeichnung Ihrer industriellen Abläufe erhalten. Der Knoten verwendet dieselben MQTT-Verbindungsparameter wie der [Konfigurieren Sie den MQTT-Publisher](windows-nodered-data-publish-flow.md#windows-nodered-mqtt-publisher-config) Abschnitt mit den folgenden Abonnementeinstellungen:
+ Thema — `/Renton/WindFarm/Turbine/WindSpeed`
+ QoS — `1`

Weitere Informationen finden Sie in der *Node-REDDokumentation* unter [Connect zu einem MQTT-Broker](https://cookbook.nodered.org/mqtt/connect-to-broker) herstellen.

## Konfigurieren Sie den InfluxDB-Übersetzer
<a name="windows-nodered-influxdb-translator"></a>

[InfluxDB organisiert Daten mithilfe von [Tags für die Indizierung und Feldern](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#tag) für Werte.](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#field) Diese Organisation optimiert die Abfrageleistung und Speichereffizienz für Zeitreihendaten. Importieren Sie den Beispielfunktionsknoten, der JavaScript Code zur Konvertierung der AWS IoT SiteWise Nutzlast in das InfluxDB-Format enthält. Der Übersetzer teilt die Eigenschaften in zwei Gruppen auf:
+ Tags — Qualitäts- und Namenseigenschaften für eine effiziente Indexierung
+ Felder — Zeitstempel (in Millisekunden seit der Epoche) und Wert

**Example : Funktionsknoten für die Übersetzung in eine InfluxDB-Nutzlast**  

```
[
    {
        "id": "string",
        "type": "function",
        "z": "string",
        "name": "Translate to InfluxDB payload",
        "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 340,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

Zusätzliche Konfigurationsoptionen finden Sie [node-red-contrib-influxdb](https://github.com/mblackstock/node-red-contrib-influxdb)im Node-RED-Repository. GitHub 

## Richten Sie den InfluxDB-Writer ein
<a name="windows-nodered-influxdb-writer"></a>

Der InfluxDB-Writer-Knoten ist die letzte Komponente in Ihrem Datenaufbewahrungsablauf, der für die Speicherung Ihrer Industriedaten in der lokalen InfluxDB-Datenbank verantwortlich ist. Dieser lokale Speicher ist wichtig, um die betriebliche Transparenz bei Netzwerkunterbrechungen aufrechtzuerhalten und den sofortigen Zugriff auf Daten für zeitkritische Anwendungen zu ermöglichen.

1. Installieren Sie das node-red-contrib-influxdb Paket über die Option Palette verwalten. Dieses Paket enthält die notwendigen Knoten für die Verbindung von Node-RED mit InfluxDB.

1. Fügen Sie Ihrem Flow einen InfluxDB-Ausgangsknoten hinzu. Dieser Knoten übernimmt das eigentliche Schreiben von Daten in Ihre InfluxDB-Datenbank.

1. Konfigurieren Sie die Servereigenschaften, um eine sichere Verbindung zu Ihrer InfluxDB-Instanz herzustellen:

   1. Version auf 2.0 setzen — Dies gibt an, dass Sie eine Verbindung zu InfluxDB v2.x herstellen, die eine andere API als frühere Versionen verwendet

   1. URL setzen auf `http://127.0.0.1:8086` — Dies verweist auf Ihre lokale InfluxDB-Instanz

   1. Geben Sie Ihr InfluxDB-Authentifizierungstoken ein. Dieses sichere Token autorisiert die Verbindung zu Ihrer Datenbank. Sie haben das Token während des [Richten Sie lokalen Speicher mit InfluxDB ein](windows-influxdb-setup.md) Verfahrens generiert.

1. Geben Sie die Speicherortparameter an, um zu definieren, wo und wie Ihre Daten gespeichert werden:

   1. Geben Sie den Namen Ihrer InfluxDB-Organisation ein — Die Organisation ist ein Arbeitsbereich für eine Gruppe von Benutzern, zu dem Ihre Buckets und Dashboards gehören. Weitere Informationen finden Sie unter Organisationen [verwalten](https://docs.influxdata.com/influxdb/v2/admin/organizations/) in der. *InfluxData Documentation*

   1. Geben Sie den InfluxDB-Bucket an (zum Beispiel`WindFarmData`) — Der Bucket entspricht einer Datenbank in herkömmlichen Systemen und dient als Container für Ihre Zeitreihendaten

   1. Legen Sie die InfluxDB-Messung fest (zum Beispiel`TurbineData`) — Die Messung ähnelt einer Tabelle in relationalen Datenbanken, in der verwandte Datenpunkte organisiert werden

**Anmerkung**  
Suchen Sie den Namen Ihrer Organisation in der linken Seitenleiste der InfluxDB-Instanz. Die Organisations-, Bucket- und Messkonzepte sind grundlegend für das Datenorganisationsmodell von InfluxDB. Weitere Informationen finden Sie in der [InfluxDB-Dokumentation](https://docs.influxdata.com/influxdb/v2/admin/organizations/).

## Stellen Sie den Aufbewahrungsablauf bereit und überprüfen Sie ihn
<a name="windows-nodered-retention-deploy"></a>

Nachdem Sie alle Komponenten des Datenaufbewahrungsflusses konfiguriert haben, müssen Sie das System bereitstellen und überprüfen, ob es ordnungsgemäß funktioniert. Diese Überprüfung stellt sicher, dass Ihre Industriedaten ordnungsgemäß lokal gespeichert werden, sodass Sie sofort darauf zugreifen und sie analysieren können.

1. Connect die drei Knoten wie im Flussdiagramm zur Datenspeicherung gezeigt. Dadurch entsteht eine vollständige Pipeline vom Datenabonnement bis zum lokalen Speicher.  
![\[Node-RED-Datenaufbewahrungsablauf\]](http://docs.aws.amazon.com/de_de/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)

1. Wählen Sie **Deploy**, um Ihre Änderungen zu übernehmen und den Ablauf zu aktivieren. Dadurch wird der Datenerfassungs- und Speicherprozess gestartet.

1. Verwenden Sie den InfluxDB Data Explorer, um Ihre Daten abzufragen und zu visualisieren. Mit diesem Tool können Sie überprüfen, ob die Daten ordnungsgemäß gespeichert werden, und erste Visualisierungen Ihrer Zeitreihendaten erstellen.

   Im Datenexplorer sollten Sie sehen können, wie Ihre Windgeschwindigkeitsmessungen im Laufe der Zeit aufgezeichnet werden, sodass bestätigt werden kann, dass die gesamte Pipeline von der Datengenerierung bis zur lokalen Speicherung ordnungsgemäß funktioniert. 

   Weitere Informationen finden Sie unter [Abfrage im Daten-Explorer](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/data-explorer/) im *InfluxData Documentation*.

Da sowohl der Datenveröffentlichungsfluss als auch der Datenaufbewahrungsfluss implementiert sind, verfügen Sie jetzt über ein vollständiges System, das Daten an die AWS IoT SiteWise Cloud sendet und gleichzeitig eine lokale Kopie beibehält, um sofortigen Zugriff und Stabilität zu gewährleisten. Dieser Dual-Path-Ansatz stellt sicher, dass Sie die Vorteile cloudbasierter Analysen und Speicher nutzen und gleichzeitig die betriebliche Transparenz am Netzwerkrand wahren.

# Richten Sie Grafana für Edge ein SiteWise
<a name="windows-grafana"></a>

 Mit Grafana® können Sie lokale Echtzeit-Überwachungs-Dashboards für Ihre Industriedaten erstellen. Durch die Visualisierung der in InfluxDB® gespeicherten Daten können Sie den Bedienern sofortige Einblicke in die Geräteleistung, Prozesseffizienz und potenzielle Probleme geben. Diese Transparenz am Netzwerkrand ist wichtig für zeitkritische Abläufe und die Aufrechterhaltung der Kontinuität bei Netzwerkunterbrechungen.

## Konfigurieren Sie die Datenquelle
<a name="windows-grafana-data-source-config"></a>

Durch die Verbindung von Grafana mit Ihrer InfluxDB-Datenbank entsteht eine leistungsstarke Visualisierungsebene für Ihre Industriedaten. Diese Verbindung ermöglicht Dashboards zur Echtzeitüberwachung, mit denen Betreiber fundierte Entscheidungen ohne Cloud-Abhängigkeiten treffen können.

1. Greifen Sie lokal auf Ihre Grafana-Instanz zu, indem Sie in Ihrem [Browser zu http://127.0.0.1:3000](http://127.0.0.1:3000) navigieren. Wenn die Aktivierung von TLS erforderlich ist, finden Sie in der *Grafana LabsDokumentation* Informationen unter [Grafana HTTPS für sicheren Webverkehr einrichten](https://grafana.com/docs/grafana/latest/setup-grafana/set-up-https/).

1. Fügen Sie eine InfluxDB-Datenquelle hinzu, die auf den InfluxDB-Zeitreihen-Bucket verweist, in den Node-RED Daten schreibt. Beispiel, `WindFarmData`. Diese Verbindung stellt die Verbindung zwischen Ihren gespeicherten Daten und der Visualisierungsplattform her.

1. *Detaillierte Anweisungen finden [Sie unter Konfiguration der InfluxDB-Datenquelle](https://grafana.com/docs/grafana/latest/datasources/influxdb/configure-influxdb-data-source/) in der Grafana Labs Dokumentation.*

### Erstellen Sie ein Grafana-Dashboard für SiteWise Edge-Daten
<a name="windows-grafana-create-dashboard"></a>

Die Erstellung eines Dashboards ist der letzte Schritt beim Aufbau Ihrer lokalen Überwachungslösung. Dashboards bieten visuelle Darstellungen Ihrer Industriedaten, sodass Trends, Anomalien und potenzielle Probleme auf einen Blick leichter erkannt werden können.
+ Folgen Sie der Anleitung, um ein Dashboard zu erstellen. Weitere Informationen finden Sie in der *Grafana LabsDokumentation* unter [Erstellen Sie Ihr erstes Dashboard](https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/). Bei dieser Vorlage wird davon ausgegangen, dass Ihr Bucket benannt ist `WindFarmData` und die Messung`TurbineData`.

  Sie können auch die Schnellstartanleitung verwenden, indem Sie die mitgelieferte Beispiel-Dashboard-Vorlage importieren, um schnell ein Dashboard mit einem Zeitreihendiagramm für die Daten zu erstellen, die Node-RED im vorherigen Abschnitt generiert hat. Diese Vorlage bietet einen Ausgangspunkt, den Sie an Ihre spezifischen Überwachungsanforderungen anpassen können.

  ```
  {
    "__inputs": [
      {
        "name": "DS_WINDFARM-DEMO",
        "label": "windfarm-demo",
        "description": "",
        "type": "datasource",
        "pluginId": "influxdb",
        "pluginName": "InfluxDB"
      }
    ],
    "__elements": {},
    "__requires": [
      {
        "type": "grafana",
        "id": "grafana",
        "name": "Grafana",
        "version": "11.6.0-pre"
      },
      {
        "type": "datasource",
        "id": "influxdb",
        "name": "InfluxDB",
        "version": "1.0.0"
      },
      {
        "type": "panel",
        "id": "timeseries",
        "name": "Time series",
        "version": ""
      }
    ],
    "annotations": {
      "list": [
        {
          "builtIn": 1,
          "datasource": {
            "type": "grafana",
            "uid": "-- Grafana --"
          },
          "enable": true,
          "hide": true,
          "iconColor": "rgba(0, 211, 255, 1)",
          "name": "Annotations & Alerts",
          "type": "dashboard"
        }
      ]
    },
    "editable": true,
    "fiscalYearStartMonth": 0,
    "graphTooltip": 0,
    "id": null,
    "links": [],
    "panels": [
      {
        "datasource": {
          "type": "influxdb",
          "uid": "${DS_WINDFARM-DEMO}"
        },
        "fieldConfig": {
          "defaults": {
            "color": {
              "mode": "palette-classic"
            },
            "custom": {
              "axisBorderShow": false,
              "axisCenteredZero": false,
              "axisColorMode": "text",
              "axisLabel": "",
              "axisPlacement": "auto",
              "barAlignment": 0,
              "barWidthFactor": 0.6,
              "drawStyle": "line",
              "fillOpacity": 0,
              "gradientMode": "none",
              "hideFrom": {
                "legend": false,
                "tooltip": false,
                "viz": false
              },
              "insertNulls": false,
              "lineInterpolation": "linear",
              "lineWidth": 1,
              "pointSize": 5,
              "scaleDistribution": {
                "type": "linear"
              },
              "showPoints": "auto",
              "spanNulls": false,
              "stacking": {
                "group": "A",
                "mode": "none"
              },
              "thresholdsStyle": {
                "mode": "off"
              }
            },
            "mappings": [],
            "thresholds": {
              "mode": "absolute",
              "steps": [
                {
                  "color": "green"
                },
                {
                  "color": "red",
                  "value": 80
                }
              ]
            }
          },
          "overrides": []
        },
        "gridPos": {
          "h": 8,
          "w": 12,
          "x": 0,
          "y": 0
        },
        "id": 1,
        "options": {
          "legend": {
            "calcs": [],
            "displayMode": "list",
            "placement": "bottom",
            "showLegend": true
          },
          "tooltip": {
            "hideZeros": false,
            "mode": "single",
            "sort": "none"
          }
        },
        "pluginVersion": "11.6.0-pre",
        "targets": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "${DS_WINDFARM-DEMO}"
            },
            "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
            "refId": "A"
          }
        ],
        "title": "Panel Title",
        "type": "timeseries"
      }
    ],
    "schemaVersion": 41,
    "tags": [],
    "templating": {
      "list": []
    },
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "timepicker": {},
    "timezone": "browser",
    "title": "demo dashboard",
    "uid": "fejc0t08o6d4wb",
    "version": 1,
    "weekStart": ""
  }
  ```

# Richten Sie Open-Source-Integrationen mit Docker (Linux) ein
<a name="linux-docker-setup"></a>

Für einen optimierten Bereitstellungsprozess können Sie Docker verwenden, um Node-RED®, InfluxDB® und Grafana® in einer Linux-Umgebung einzurichten. Diese Methode verwendet vorkonfigurierte Container, was eine schnelle Bereitstellung und eine einfachere Verwaltung der Komponenten ermöglicht.

## Voraussetzungen für das Docker-Setup
<a name="linux-docker-prerequisites"></a>

Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
+ Ein MQTT-fähiges V3-Gateway. Weitere Informationen finden Sie unter [MQTT-fähige V3-Gateways für Edge AWS IoT SiteWise](mqtt-enabled-v3-gateway.md).
+ Das Docker Compose-Plugin. Installationsschritte finden [Sie unter Installieren des Docker Compose Plug-ins in der Dokumentation](https://docs.docker.com/compose/install/linux/) zu den *Docker-Handbüchern*.

## Stellen Sie die Dienste bereit
<a name="linux-docker-deployment"></a>

Bei dieser Bereitstellung werden SiteWise Edge, InfluxDB, Node-RED und Grafana auf demselben Host ausgeführt.

### Richten Sie die Umgebung ein
<a name="linux-docker-env-setup"></a>

1. Verschaffen Sie sich Root-Zugriff:

   ```
   sudo -i
   ```

1. Erstellen Sie eine.env-Datei oder exportieren Sie diese Umgebungsvariablen:

   ```
   export INFLUXDB_PASSWORD=your-secure-influxdb-password
   export INFLUXDB_TOKEN=your-secure-influxdb-token
   export GRAFANA_PASSWORD=your-secure-grafana-password
   ```

### Konfigurieren Sie das Docker-Netzwerk
<a name="linux-docker-network-config"></a>
+ Erstellen Sie ein Bridge-Netzwerk mit dem Namen`SiteWiseEdgeNodeRedDemoNetwork`.

  ```
  docker network create --driver=bridge SiteWiseEdgeNodeRedDemoNetwork
  ```

### Bereiten Sie die Docker Compose Datei vor
<a name="linux-docker-compose-file"></a>

Kopieren Sie den Inhalt der folgenden YAML-Datei auf Ihr SiteWise Edge-Gateway-Gerät.

#### Erweitern Sie, um das Beispiel für die Docker Compose YAML-Datei anzuzeigen
<a name="collapsible-section-docker-compose-file"></a>

```
services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "127.0.0.1:8086:8086"
    volumes:
      - influxdb-storage:/.influxdbv2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=iot-sitewise-edge
      - DOCKER_INFLUXDB_INIT_BUCKET=WindFarmData
      - DOCKER_INFLUXDB_INIT_RETENTION=0
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_TOKEN}
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_PATHS_CONFIG=/etc/grafana/grafana.ini
      - GF_LOG_LEVEL=info
    configs:
      - source: grafana_datasource
        target: /etc/grafana/provisioning/datasources/influxdb.yaml
      - source: grafana_preload_dashboard_config
        target: /etc/grafana/provisioning/dashboards/dashboard.yml
      - source: grafana_preload_dashboard
        target: /etc/grafana/provisioning/dashboards/demo_dashboard.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  nodered:
    build:
      context: .
      dockerfile_inline: |
        FROM nodered/node-red:latest
        RUN npm install node-red-contrib-influxdb
    container_name: nodered
    ports:
      - "127.0.0.1:1880:1880"
    volumes:
      - node_red_data:/data
    environment:
      - NODE_RED_ENABLE_SAFE_MODE=false
      - NODE_RED_ENABLE_PALETTE_EDIT=true
      - NODE_RED_AUTO_INSTALL_MODULES=true
    configs:
      - source: nodered_flows
        target: /data/flows.json
      - source: nodered_settings
        target: /data/settings.js
      - source: nodered_flows_cred
        target: /data/flows_cred.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

volumes:
  influxdb-storage:
  grafana-storage:
  node_red_data:

networks:
  SiteWiseEdgeNodeRedDemoNetwork:
    external: true

configs:
  grafana_datasource:
    content: |
      apiVersion: 1
      datasources:
        - name: windfarm-demo
          type: influxdb
          access: proxy
          url: http://influxdb:8086
          jsonData:
            version: Flux
            organization: iot-sitewise-edge
            defaultBucket: WindFarmData
            tlsSkipVerify: true
          secureJsonData:
            token: ${INFLUXDB_TOKEN}
          editable: false

  grafana_preload_dashboard_config:
    content: |
      apiVersion: 1
      providers:
        - name: "Dashboard provider"
          orgId: 1
          type: file
          options: 
            path: /etc/grafana/provisioning/dashboards

  grafana_preload_dashboard:
    content: |
      {
        "annotations": {
          "list": [
            {
              "builtIn": 1,
              "datasource": {
                "type": "grafana",
                "uid": "-- Grafana --"
              },
              "enable": true,
              "hide": true,
              "iconColor": "rgba(0, 211, 255, 1)",
              "name": "Annotations & Alerts",
              "type": "dashboard"
            }
          ]
        },
        "editable": true,
        "fiscalYearStartMonth": 0,
        "graphTooltip": 0,
        "id": 1,
        "links": [],
        "panels": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "PEB0DCBF338B3CEB2"
            },
            "fieldConfig": {
              "defaults": {
                "color": {
                  "mode": "palette-classic"
                },
                "custom": {
                  "axisBorderShow": false,
                  "axisCenteredZero": false,
                  "axisColorMode": "text",
                  "axisLabel": "",
                  "axisPlacement": "auto",
                  "barAlignment": 0,
                  "barWidthFactor": 0.6,
                  "drawStyle": "line",
                  "fillOpacity": 0,
                  "gradientMode": "none",
                  "hideFrom": {
                    "legend": false,
                    "tooltip": false,
                    "viz": false
                  },
                  "insertNulls": false,
                  "lineInterpolation": "linear",
                  "lineWidth": 1,
                  "pointSize": 5,
                  "scaleDistribution": {
                    "type": "linear"
                  },
                  "showPoints": "auto",
                  "spanNulls": false,
                  "stacking": {
                    "group": "A",
                    "mode": "none"
                  },
                  "thresholdsStyle": {
                    "mode": "off"
                  }
                },
                "mappings": [],
                "thresholds": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green"
                    },
                    {
                      "color": "red",
                      "value": 80
                    }
                  ]
                }
              },
              "overrides": []
            },
            "gridPos": {
              "h": 8,
              "w": 12,
              "x": 0,
              "y": 0
            },
            "id": 1,
            "options": {
              "legend": {
                "calcs": [],
                "displayMode": "list",
                "placement": "bottom",
                "showLegend": true
              },
              "tooltip": {
                "hideZeros": false,
                "mode": "single",
                "sort": "none"
              }
            },
            "pluginVersion": "11.6.0",
            "targets": [
              {
                "datasource": {
                  "type": "influxdb",
                  "uid": "PEB0DCBF338B3CEB2"
                },
                "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
                "refId": "A"
              }
            ],
            "title": "Wind Speed",
            "type": "timeseries"
          }
        ],
        "preload": false,
        "schemaVersion": 41,
        "tags": [],
        "templating": {
          "list": []
        },
        "time": {
          "from": "now-6h",
          "to": "now"
        },
        "timepicker": {},
        "timezone": "browser",
        "title": "Demo Dashboard",
        "uid": "eejtureqjo9a8c",
        "version": 2
      }

  nodered_flows:
    content: |
      [
        {
          "id": "95fce448fdd43b47",
          "type": "tab",
          "label": "Demo Flow",
          "disabled": false,
          "info": ""
        },
        {
          "id": "5f63740b66af3386",
          "type": "mqtt out",
          "z": "95fce448fdd43b47",
          "name": "Publish to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "retain": "",
          "respTopic": "",
          "contentType": "",
          "userProps": "",
          "correl": "",
          "expiry": "",
          "broker": "5744207557fa19be",
          "x": 830,
          "y": 200,
          "wires": []
        },
        {
          "id": "8f2eb590d596679b",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to SiteWise payload",
          "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 530,
          "y": 200,
          "wires": [
            [
              "5f63740b66af3386"
            ]
          ]
        },
        {
          "id": "4b78cbdea5e3258c",
          "type": "inject",
          "z": "95fce448fdd43b47",
          "name": "Turbine Simulator",
          "props": [
            {
              "p": "payload.timestamp",
              "v": "",
              "vt": "date"
            },
            {
              "p": "payload.quality",
              "v": "GOOD",
              "vt": "str"
            },
            {
              "p": "payload.value",
              "v": "$$random()",
              "vt": "jsonata"
            },
            {
              "p": "payload.name",
              "v": "/Renton/WindFarm/Turbine/WindSpeed",
              "vt": "str"
            }
          ],
          "repeat": "1",
          "crontab": "",
          "once": false,
          "onceDelay": "",
          "topic": "",
          "x": 270,
          "y": 200,
          "wires": [
            [
              "8f2eb590d596679b"
            ]
          ]
        },
        {
          "id": "b658bf337ea2e316",
          "type": "influxdb out",
          "z": "95fce448fdd43b47",
          "influxdb": "2f1c38495035d2e4",
          "name": "Store data in InfluxDB",
          "measurement": "TurbineData",
          "precision": "",
          "retentionPolicy": "",
          "database": "",
          "retentionPolicyV18Flux": "",
          "org": "iot-sitewise-edge",
          "bucket": "WindFarmData",
          "x": 840,
          "y": 340,
          "wires": []
        },
        {
          "id": "9432d39af35b202f",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to InfluxDB payload",
          "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 560,
          "y": 340,
          "wires": [
            [
              "b658bf337ea2e316"
            ]
          ]
        },
        {
          "id": "b689403d2c80816b",
          "type": "mqtt in",
          "z": "95fce448fdd43b47",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "5744207557fa19be",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
            [
              "9432d39af35b202f"
            ]
          ]
        },
        {
          "id": "4f59bed8e829fc35",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Publish Flow",
          "info": "dfgh",
          "x": 270,
          "y": 160,
          "wires": []
        },
        {
          "id": "b218c7fc58c8b6e7",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Retention flow",
          "info": "",
          "x": 270,
          "y": 300,
          "wires": []
        },
        {
          "id": "5744207557fa19be",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "emqx",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
        },
        {
          "id": "2f1c38495035d2e4",
          "type": "influxdb",
          "hostname": "influxdb",
          "port": 8086,
          "protocol": "http",
          "database": "",
          "name": "InfluxDB",
          "usetls": false,
          "tls": "",
          "influxdbVersion": "2.0",
          "url": "http://influxdb:8086",
          "timeout": "",
          "rejectUnauthorized": false
        }
      ]

  nodered_flows_cred:
    content: |
      {
        "2f1c38495035d2e4": {
          "token": "${INFLUXDB_TOKEN}"
        }
      }

  nodered_settings:
    content: |
      module.exports = {
        flowFile: 'flows.json',
        credentialSecret: false,
        adminAuth: null,
        editorTheme: {
          projects: {
            enabled: false
          }
        }
      }
```

### Aktualisieren Sie die SiteWise Edge-Bereitstellung
<a name="w2aac17c19c19c26c27b7c11"></a>

1. Navigieren Sie zur [AWS IoT Konsole](https://console.aws.amazon.com/iot/)

1. Wählen Sie im linken Navigationsmenü im Bereich **Verwalten** die Option **Greengrass-Geräte** und dann **Core-Geräte** aus.

1. Wählen Sie das mit Ihrem SiteWise Edge-Gateway verbundene Kerngerät aus.

1. Wählen Sie die Registerkarte **Bereitstellungen und** dann den Wert für die **Bereitstellungs-ID** aus.

1. Wählen Sie „**Aktionen**“ und anschließend „**Überarbeiten**“. 

1. Lesen Sie die Popup-Meldung und wählen Sie dann „Bereitstellung **überarbeiten**“.

1. Wählen Sie in **Schritt 2 — Komponenten auswählen** die folgenden Komponenten aus und klicken Sie dann auf **Weiter**.
   + `aws.greengrass.clientdevices.mqtt.EMQX`
   + `aws.iot.SiteWiseEdgePublisher`

1. Wählen Sie in **Schritt 3 — Komponenten konfigurieren** den `aws.greengrass.clientdevices.mqtt.EMQX` Komponentenwert aus und fügen Sie die folgende Netzwerkkonfiguration hinzu:

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 127.0.0.1:1883:1883 --network=SiteWiseEdgeNodeRedDemoNetwork",
       "requiresPrivilege": "true"
   }
   ```

1. Wählen Sie **Weiter** aus.

1. Wählen Sie in **Schritt 4 — Erweiterte Einstellungen konfigurieren** die Option **Weiter**.

1. Wählen Sie **Bereitstellen**

### Starten Sie die Dienste
<a name="linux-docker-launch"></a>

1. Starten Sie die Dienste mit der Docker Compose-Datei. Führen Sie den folgenden Befehl in dem Verzeichnis aus, das die `compose.yaml` Datei enthält.

   ```
   docker compose up -d
   ```

1. Erstellen Sie einen SSH-Tunnel für den Zugriff auf die Dienste:

   ```
   ssh -i path_to_your_ssh_key -L 1880:127.0.0.1:1880 -L 3000:127.0.0.1:3000 -L 8086:127.0.0.1:8086 username@gateway_ip_address
   ```

Diese Bereitstellung erstellt die folgenden Dienste in: `SiteWiseEdgeNodeRedDemoNetwork network`

**InfluxDB v2 (Port 8086)**  
Beinhaltet vorkonfigurierte Organisations- (iot-sitewise-edge), WindFarmData InfluxDB-Bucket und Administratoranmeldedaten

**Node-RED (Port 1880)**  
Beinhaltet InfluxDB-Knoten und vorkonfigurierte Flows für die Integration AWS IoT SiteWise 

**Grafana (Hafen 3000)**  
Beinhaltet einen Admin-Benutzer, eine InfluxDB-Datenquelle und ein Überwachungs-Dashboard

### Greifen Sie auf die Dienste zu
<a name="linux-docker-access-services"></a>

Greifen Sie nach der Bereitstellung mit den folgenden URLs Anmeldeinformationen auf die Dienste zu:

**Anmerkung**  
Sie können von Ihrem Host oder dem Gateway-Computer aus auf jeden Dienst zugreifen.


**Details zum Zugriff auf den Dienst**  

| Service | URL | Anmeldeinformationen | 
| --- | --- | --- | 
| Node-RED | [http://127.0.0.1:1880](http://127.0.0.1:1880) | Keine Anmeldeinformationen erforderlich | 
| InfluxDB | [http://127.0.0.1:8086](http://127.0.0.1:8086) |  Nutzername: admin Passwort: \$1INFLUXDB\$1PASSWORD  | 
| Grafana | [http://127.0.0.1:3000](http://127.0.0.1:3000) |  Nutzername: admin Passwort: \$1GRAFANA\$1PASSWORD  | 

## Überprüfen der Bereitstellung
<a name="linux-docker-verify-deployment"></a>

Um sicherzustellen, dass Ihre Bereitstellung erfolgreich ist, führen Sie die folgenden Prüfungen durch:

1. Stellen Sie für Node-RED sicher, dass zwei vorinstallierte Flows vorhanden sind:
   + Ablauf der Datenveröffentlichung
   + Ablauf der Datenspeicherung

1. Bestätigen Sie in der AWS IoT SiteWise Konsole das Vorhandensein eines Datenstroms mit dem Alias`/Renton/WindFarm/Turbine/WindSpeed`. AWS IoT SiteWise

1. Verwenden Sie für InfluxDB den Data Explorer, um die Datenspeicherung in der `TurbineData` Messung innerhalb des `WindFarmData` Buckets zu überprüfen.

1. Sehen Sie sich für Grafana das Dashboard an, um die Anzeige der von Node-RED generierten Zeitreihendaten zu bestätigen.

# Prozessdaten für Open-Source-Integrationen
<a name="open-source-data-processing-open-source"></a>

Die Daten können in verschiedenen Phasen mithilfe verschiedener Tools verarbeitet werden (z. B. Transformation oder Aggregation), die jeweils unterschiedliche Überwachungsanforderungen erfüllen.

## Verarbeiten Sie Daten mit Node-RED-Knoten
<a name="open-source-nodered-nodes"></a>

Transformieren Sie Ihre Daten in Echtzeit mithilfe der integrierten Node-RED® -Verarbeitungsknoten. Konfigurieren Sie diese Knoten über die Node-RED-Konsole, um Ihre Datenpipeline zu erstellen.

### Knoten für die Datentransformation
<a name="open-source-data-transformation-nodes"></a>

Transformieren Sie einzelne Datenpunkte, ähnlich wie Transforms in AWS IoT SiteWise, mithilfe dieser Knoten:
+ **Knoten ändern** — Führt einfache Wertänderungen an Ihren Daten durch.
+ **Funktionsknoten** — Ermöglicht benutzerdefinierte JavaScript Transformationen für die komplexe Datenverarbeitung.

### Knoten zur Berechnung von Metriken
<a name="open-source-metrics-calculation-nodes"></a>

Kombinieren Sie mehrere Datenpunkte zu einer einzigen Ausgabe, ähnlich wie bei Metrics in AWS IoT SiteWise, und verwenden Sie dabei die folgenden Knoten:
+ **Batch-Knoten** — Gruppiert mehrere Nachrichten für die Batch-Verarbeitung.
+ **Join Node** — Kombiniert mehrere Datenströme zu einer einzigen Ausgabe.
+ **Aggregatorknoten** — Berechnet aggregierte Metriken aus mehreren Datenpunkten.

Weitere Knotenoptionen finden Sie in der [Node-RED-Bibliothek](https://flows.nodered.org/).

## Erstellen Sie InfluxDB-Aufgaben
<a name="open-source-influxdb-tasks"></a>

Während Node-RED sich durch grundlegende Datenverarbeitung mit schneller Einrichtung auszeichnet, können komplexe metrische Berechnungen bei der flussbasierten Programmierung zu einer Herausforderung werden. InfluxDB® Tasks bieten eine Alternative in Form von geplanten Flux-Skripten für fortgeschrittene Verarbeitungsanforderungen.

Verwenden Sie InfluxDB-Aufgaben für:
+ Statistische Aggregationen großer Datensätze
+ Mathematische Operationen an mehreren Eigenschaften
+ Abgeleitete Messungen aus mehreren Quellen

### Funktionen der Aufgabe
<a name="open-source-task-features"></a>
+ **Geplante Ausführung** — Führen Sie Aufgaben auf der Grundlage von Cron-Ausdrücken aus
+ **Stapelverarbeitung** — Optimieren Sie die Abläufe für Zeitreihendaten
+ Fehlerbehebung — **Fehlgeschlagene** Operationen werden automatisch wiederholt
+ **Überwachung** — Verfolgen Sie die Ausführung anhand detaillierter Protokolle

Verwalten Sie Aufgaben über die InfluxDB-Benutzeroberfläche, API oder CLI. Weitere Informationen finden Sie unter [Daten mit InfluxDB-Aufgaben verarbeiten](https://docs.influxdata.com/influxdb/cloud/process-data/).

## Verwenden Sie Grafana-Transformationen
<a name="open-source-grafana-transformations"></a>

Transformieren Sie die Datenvisualisierung in Grafana®, ohne die Quelldaten in InfluxDB zu ändern. Grafana-Transformationen gelten nur für die Visualisierungsebene.
+ **Visual Builder** - Erstellen Sie Transformationen, ohne Code zu schreiben
+ **Live-Vorschau** - Transformationsergebnisse in Echtzeit anzeigen
+ **Multisource** — Verarbeiten Sie Daten aus mehreren Datenbankquellen
+ **Speichereffizient** — Transformieren Sie Daten zum Zeitpunkt der Visualisierung, ohne Zwischenergebnisse zu speichern

Weitere Informationen finden Sie unter [Daten transformieren](https://grafana.com/docs/grafana/latest/panels/transform-data/).

## Fehlerbehebung bei Open-Source-Integrationen
<a name="open-source-troubleshoot"></a>

Weitere Informationen zur Problembehandlung im Zusammenhang mit Open-Source-Integrationen für SiteWise Edge-Gateways finden Sie unter. [Fehlerbehebung bei Open-Source-Integrationen am Edge](troubleshooting-gateway.md#open-source-troubleshooting)