

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.

# Wi-Fi Bibliothek
<a name="freertos-wifi"></a>

**Wichtig**  <a name="deprecation-message-library"></a>
Diese Bibliothek wird im Amazon-FreeRTOS Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein bestehendes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS Repository basiert, finden Sie weitere Informationen unter. [Amazon-FreeRTOS Leitfaden zur Migration zum Github-Repository](github-repo-migration.md)

## -Übersicht
<a name="freertos-wifi-overview"></a>

Die [Wi-Fi](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html)FreeRTOS-Bibliothek abstrahiert portspezifische Wi-Fi Implementierungen in einer gemeinsamen API, die die Anwendungsentwicklung und Portierung für alle Boards mit Funktionen vereinfacht. FreeRTOS-qualified Wi-Fi Mithilfe dieser gemeinsamen API können Anwendungen mit ihrem untergeordneten Wireless-Stack über eine gemeinsame Schnittstelle kommunizieren.

## Abhängigkeiten und Anforderungen
<a name="freertos-wifi-dependencies"></a>

Die Wi-Fi FreeRTOS-Bibliothek benötigt den [FreeRTOS\+TCP-Kern](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html).

## Features
<a name="freertos-wifi-features"></a>

Die Wi-Fi Bibliothek umfasst die folgenden Funktionen:
+ Support für WEP-, WPA-, WPA2- und WPA3-Authentifizierung
+ Zugriffspunkt-Scanning
+ Energiemanagement
+ Netzwerk-Profiling

Weitere Informationen zu den Funktionen der Bibliothek finden Sie weiter unten. Wi-Fi 

### Wi-Fi Modi
<a name="freertos-wifi-setup"></a>

Wi-Fi Geräte können sich in einem von drei Modi befinden: Station, Access Point oder P2P. Sie können den aktuellen Modus eines Wi-Fi Geräts abrufen, indem Sie anrufen`WIFI_GetMode`. Sie können den WLAN-Modus eines Geräts festlegen, indem Sie `WIFI_SetMode` aufrufen. Das Umschalten des Modus durch Aufruf von `WIFI_SetMode` trennt das Gerät (wenn es bereits mit einem Netzwerk verbunden ist).

**Stationsmodus**  
Stellen Sie Ihr Gerät auf Stationsmodus ein, um die Karte mit einem vorhandenen Zugriffspunkt zu verbinden.

**Access Point (AP)-Modus**  
Stellen Sie Ihr Gerät auf AP-Modus ein, um das Gerät zu einem Zugriffspunkt zu machen, über das andere Geräte eine Verbindung herstellen können. Wenn sich Ihr Gerät im AP-Modus befindet, können Sie ein anderes Gerät mit Ihrem FreeRTOS-Gerät verbinden und die neuen Wi-Fi Anmeldeinformationen konfigurieren. Rufen Sie `WIFI_ConfigureAP` auf, um den AP-Modus zu konfigurieren. Rufen Sie `WIFI_StartAP` auf, um Ihr Gerät in den AP-Modus zu versetzen. Rufen Sie `WIFI_StopAP` auf, um den AP-Modus zu deaktivieren.  
FreeRTOS-Bibliotheken bieten keine Wi-Fi Bereitstellung im AP-Modus. Sie müssen die zusätzliche Funktionalität, einschließlich der DHCP- und HTTP-Serverfunktionen, bereitstellen, um eine vollständige Unterstützung des AP-Modus zu erreichen.

**P2P-Modus**  
Stellen Sie Ihr Gerät auf P2P-Modus ein, um mehreren Geräten zu erlauben, sich miteinander ohne Zugriffspunkt zu verbinden.

### Sicherheit
<a name="freertos-wifi-security"></a>

Die Wi-Fi API unterstützt die Sicherheitstypen WEP, WPA, WPA2 und WPA3. Wenn sich ein Gerät im Stationsmodus befindet, müssen Sie beim Aufruf der Funktion `WIFI_ConnectAP` den Netzwerksicherheitstyp angeben. Wenn sich ein Gerät im AP-Modus befindet, kann das Gerät so konfiguriert werden, dass es einen der unterstützten Sicherheitstypen verwendet:
+ `eWiFiSecurityOpen`
+ `eWiFiSecurityWEP`
+ `eWiFiSecurityWPA`
+ `eWiFiSecurityWPA2`
+ `eWiFiSecurityWPA3`

### Scannen und Verbinden
<a name="freertos-wifi-connection"></a>

Um nach nahegelegenen Zugriffspunkten zu suchen, stellen Sie Ihr Gerät auf Stationsmodus und rufen Sie die Funktion `WIFI_Scan` auf. Wenn Sie über den Scan ein gewünschtes Netzwerk finden, können Sie sich mit dem Netzwerk verbinden, indem Sie `WIFI_ConnectAP` aufrufen und die Anmeldeinformationen für das Netzwerk angeben. Sie können ein Wi-Fi Gerät telefonisch vom Netzwerk trennen. `WIFI_Disconnect` Weitere Informationen zum Scannen und Verbinden finden Sie unter [Beispielverwendung](#freertos-wifi-example) und [API-Referenz](#freertos-wifi-api).

### Energiemanagement
<a name="freertos-wifi-power-management"></a>

Verschiedene Wi-Fi Geräte haben je nach Anwendung und verfügbaren Stromquellen unterschiedliche Leistungsanforderungen. Ein Gerät ist möglicherweise immer eingeschaltet, um die Latenz zu reduzieren, oder es ist zeitweise angeschlossen und wechselt in einen Stromsparmodus, wenn dies nicht erforderlich Wi-Fi ist. Die Schnittstellen-API unterstützt verschiedene Energiesparmodi wie Always On, Low Power und Normal Mode. Sie legen den Energiesparmodus für ein Gerät mit der Funktion `WIFI_SetPMMode` fest. Den aktuellen Energiesparmodus eines Gerätes erhalten Sie durch Aufruf der Funktion `WIFI_GetPMMode`.

### Netzwerkprofile
<a name="freertos-wifi-profiles"></a>

Mit der Wi-Fi Bibliothek können Sie Netzwerkprofile im nichtflüchtigen Speicher Ihrer Geräte speichern. Auf diese Weise können Sie Netzwerkeinstellungen speichern, sodass sie abgerufen werden können, wenn ein Gerät wieder eine Verbindung zu einem Wi-Fi Netzwerk herstellt, sodass Geräte nicht erneut bereitgestellt werden müssen, nachdem sie mit einem Netzwerk verbunden wurden. `WIFI_NetworkAdd`fügt ein Netzwerkprofil hinzu. `WIFI_NetworkGet`ruft ein Netzwerkprofil ab. `WIFI_NetworkDel`löscht ein Netzwerkprofil. Die Anzahl der speicherbaren Profile hängt von der Plattform ab.

## Konfiguration
<a name="freertos-wifi-config"></a>

Um die Wi-Fi Bibliothek verwenden zu können, müssen Sie mehrere Identifikatoren in einer Konfigurationsdatei definieren. Weitere Informationen zu diesen IDs finden Sie unter [API-Referenz](#freertos-wifi-api).

**Anmerkung**  
Die Bibliothek enthält nicht die erforderliche Konfigurationsdatei. Sie müssen eine erstellen. Achten Sie bei der Erstellung Ihrer Konfigurationsdatei darauf, dass Sie alle Board-spezifischen Konfigurationskennungen angeben, die Ihr Board benötigt.

## Initialisierung
<a name="freertos-wifi-init"></a>

Bevor Sie die Wi-Fi Bibliothek verwenden, müssen Sie zusätzlich zu den FreeRTOS-Komponenten einige platinenspezifische Komponenten initialisieren. Gehen Sie unter Verwendung der Datei `vendors/{{vendor}}/boards/{{board}}/aws_demos/application_code/main.c` als Vorlage für die Initialisierung wie folgt vor:

1. Entfernen Sie die Wi-Fi Beispiel-Verbindungslogik in `main.c` Falls Ihre Anwendung Verbindungen verarbeitet. Wi-Fi Ersetzen Sie den folgenden `DEMO_RUNNER_RunDemos()`-Funktionsaufruf:

   ```
   if( SYSTEM_Init() == pdPASS )
       {
       ...
           DEMO_RUNNER_RunDemos();
       ...
           }
   ```

   Mit einem Aufruf Ihrer eigenen Anwendung:

   ```
   if( SYSTEM_Init() == pdPASS )
       {
       ...
           // This function should create any tasks
           // that your application requires to run.
           YOUR_APP_FUNCTION();
       ...
           }
   ```

1. Rufen Sie `WIFI_On()` an, um Ihren Wi-Fi Chip zu initialisieren und einzuschalten.
**Anmerkung**  
Einige Boards erfordern möglicherweise zusätzliche Hardware-Initialisierung.

1. Übergeben Sie eine konfigurierte `WIFINetworkParams_t` Struktur an`WIFI_ConnectAP()`, um Ihr Board mit einem verfügbaren Wi-Fi Netzwerk zu verbinden. Weitere Informationen zu der `WIFINetworkParams_t`-Struktur finden Sie unter [Beispielverwendung](#freertos-wifi-example) und [API-Referenz](#freertos-wifi-api).

## API-Referenz
<a name="freertos-wifi-api"></a>

Eine vollständige API-Referenz finden Sie unter [Wi-Fi API-Referenz](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html).

## Beispielverwendung
<a name="freertos-wifi-example"></a>

### Herstellen einer Verbindung zu einem bekannten AP
<a name="w2aac31b9c13c53c21b3"></a>

```
#define clientcredentialWIFI_SSID    "MyNetwork"
#define clientcredentialWIFI_PASSWORD   "hunter2"

WIFINetworkParams_t xNetworkParams;
WIFIReturnCode_t xWifiStatus;

xWifiStatus = WIFI_On(); // Turn on Wi-Fi module

// Check that Wi-Fi initialization was successful
if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ( "WiFi library initialized.\n") );
}
else
{
    configPRINT( ( "WiFi library failed to initialize.\n" ) );
    // Handle module init failure
}

/* Setup parameters. */
xNetworkParams.pcSSID = clientcredentialWIFI_SSID;
xNetworkParams.ucSSIDLength = sizeof( clientcredentialWIFI_SSID );
xNetworkParams.pcPassword = clientcredentialWIFI_PASSWORD;
xNetworkParams.ucPasswordLength = sizeof( clientcredentialWIFI_PASSWORD );
xNetworkParams.xSecurity = eWiFiSecurityWPA2;

// Connect!
xWifiStatus = WIFI_ConnectAP( &( xNetworkParams ) );

if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ( "WiFi Connected to AP.\n" ) );
    // IP Stack will receive a network-up event on success
}
else
{
    configPRINT( ( "WiFi failed to connect to AP.\n" ) );
    // Handle connection failure
}
```

### Scannen nach APs in der Nähe
<a name="w2aac31b9c13c53c21b5"></a>

```
WIFINetworkParams_t xNetworkParams;
WIFIReturnCode_t xWifiStatus;

configPRINT( ("Turning on wifi...\n") );
xWifiStatus = WIFI_On();

configPRINT( ("Checking status...\n") );
if( xWifiStatus == eWiFiSuccess )
{
    configPRINT( ("WiFi module initialized.\n") );
}
else
{
    configPRINTF( ("WiFi module failed to initialize.\n" ) );
    // Handle module init failure
}

WIFI_SetMode(eWiFiModeStation);

/* Some boards might require additional initialization steps to use the Wi-Fi library. */

while (1)
{
    configPRINT( ("Starting scan\n") );
    const uint8_t ucNumNetworks = 12; //Get 12 scan results
    WIFIScanResult_t xScanResults[ ucNumNetworks ];
    xWifiStatus = WIFI_Scan( xScanResults, ucNumNetworks ); // Initiate scan

    configPRINT( ("Scan started\n") );

    // For each scan result, print out the SSID and RSSI
    if ( xWifiStatus == eWiFiSuccess )
    {
        configPRINT( ("Scan success\n") );
        for ( uint8_t i=0; i<ucNumNetworks; i++ ) 
        {
            configPRINTF( ("%s : %d \n", xScanResults[i].cSSID, xScanResults[i].cRSSI) );
        }
    } else {
        configPRINTF( ("Scan failed, status code: %d\n", (int)xWifiStatus) );
    }
    
    vTaskDelay(200);
}
```

## Portierung
<a name="freertos-wifi-porting"></a>

Die Implementierung von `iot_wifi.c` muss die in `iot_wifi.h` definierten Funktionen implementieren. Zumindest muss die Implementierung `eWiFiNotSupported` für alle nicht wesentlichen oder nicht unterstützten Funktionen zurückgeben.

Weitere Informationen zur Portierung der Wi-Fi Bibliothek finden Sie unter [Portierung der Wi-Fi Bibliothek](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-wifi.html) im FreeRTOS Porting Guide.