# IoT Wireless

Source: /aws/services/iotwireless/

## Introduction

AWS IoT Wireless is a managed service that enables customers to connect and manage wireless devices.
The service provides a set of APIs to manage wireless devices, gateways, and destinations.

LocalStack allows you to use the IoT Wireless APIs in your local environment from creating wireless devices and gateways.
The supported APIs are available on our [API Coverage section](#api-coverage), which provides information on the extent of IoT Wireless's integration with LocalStack.

## Getting started

This guide is designed for users new to IoT Wireless and assumes basic knowledge of the AWS CLI and our [`lstk aws`](/aws/developer-tools/running-localstack/lstk/cloud-and-iac-commands/#aws) command.

Start your LocalStack container using your preferred method.
We will demonstrate how to use IoT Wireless to create wireless devices and gateways with the AWS CLI.

### Create a Wireless Device

You can create a wireless device using the [`CreateWirelessDevice`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_CreateWirelessDevice.html) API.
Run the following command to create a wireless device:

```bash
lstk aws iotwireless create-device-profile
```

The following output would be retrieved:

```bash title="Output"
{
    "Id": "b8a8e3a8"
}
```

You can list the device profiles using the [`ListDeviceProfiles`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_ListDeviceProfiles.html) API.
Run the following command to list the device profiles:

```bash
lstk aws iotwireless list-device-profiles
```

The following output would be retrieved:

```bash title="Output"
{
    "DeviceProfileList": [
        {
            "Id": "b8a8e3a8"
        }
    ]
}
```

### Create a Wireless device

You can create a wireless device using the [`CreateWirelessDevice`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_CreateWirelessDevice.html) API.
Run the following command to create a wireless device:

```bash
lstk aws iotwireless create-wireless-device \
    --cli-input-json file://input.json
```

The `input.json` file contains the following content:

```json title="input.json" showshowLineNumbers
{
    "Description": "My LoRaWAN wireless device",
    "DestinationName": "IoTWirelessDestination",
    "LoRaWAN": {
        "DeviceProfileId": "ab0c23d3-b001-45ef-6a01-2bc3de4f5333",
        "ServiceProfileId": "fe98dc76-cd12-001e-2d34-5550432da100",
        "OtaaV1_1": {
            "AppKey": "3f4ca100e2fc675ea123f4eb12c4a012",
            "JoinEui": "b4c231a359bc2e3d",
            "NwkKey": "01c3f004a2d6efffe32c4eda14bcd2b4"
        },
        "DevEui": "ac12efc654d23fc2"
    },
    "Name": "SampleIoTWirelessThing",
    "Type": "LoRaWAN"
}
```

You can list the wireless devices using the [`ListWirelessDevices`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_ListWirelessDevices.html) API.
Run the following command to list the wireless devices:

```bash
lstk aws iotwireless list-wireless-devices
```

The following output would be retrieved:

```bash title="Output"
{
    "WirelessDeviceList": [
        {
            "Id": "0bca2fe2",
            "Type": "LoRaWAN",
            "Name": "SampleIoTWirelessThing",
            "DestinationName": "IoTWirelessDestination",
            "LoRaWAN": {
                "DevEui": "ac12efc654d23fc2"
            }
        }
    ]
}
```

### Create a Wireless Gateway

You can create a wireless gateway using the [`CreateWirelessGateway`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_CreateWirelessGateway.html) API.
Run the following command to create a wireless gateway:

```bash
lstk aws iotwireless create-wireless-gateway \
    --lorawan GatewayEui="a1b2c3d4567890ab",RfRegion="US915" \
    --name "myFirstLoRaWANGateway" \
    --description "Using my first LoRaWAN gateway"
```

The following output would be retrieved:

```bash title="Output"
{
    "Id": "e519dc4e"
}
```

You can list the wireless gateways using the [`ListWirelessGateways`](https://docs.aws.amazon.com/iot-wireless/2020-11-22/API_ListWirelessGateways.html) API.
Run the following command to list the wireless gateways:

```bash
lstk aws iotwireless list-wireless-gateways
```

The following output would be retrieved:

```bash title="Output"
{
    "WirelessGatewayList": [
        {
            "Id": "e519dc4e",
            "Name": "myFirstLoRaWANGateway",
            "Description": "Using my first LoRaWAN gateway",
            "LoRaWAN": {
                "GatewayEui": "a1b2c3d4567890ab",
                "RfRegion": "US915"
            }
        }
    ]
}
```

## API Coverage


### IoT Wireless API coverage

Source service: `iotwireless`. 22 of 112 tracked operations are implemented.

Service documentation: /aws/services/iotwireless/
License availability: available starting with the Ultimate plan. See /aws/licensing/ for current plan details.

| Operation | Status |
| --- | --- |
| AssociateAwsAccountWithPartnerAccount | Not implemented |
| AssociateMulticastGroupWithFuotaTask | Not implemented |
| AssociateWirelessDeviceWithFuotaTask | Not implemented |
| AssociateWirelessDeviceWithMulticastGroup | Not implemented |
| AssociateWirelessDeviceWithThing | Not implemented |
| AssociateWirelessGatewayWithCertificate | Not implemented |
| AssociateWirelessGatewayWithThing | Not implemented |
| CancelMulticastGroupSession | Not implemented |
| CreateDestination | Implemented |
| CreateDeviceProfile | Implemented |
| CreateFuotaTask | Not implemented |
| CreateMulticastGroup | Not implemented |
| CreateNetworkAnalyzerConfiguration | Not implemented |
| CreateServiceProfile | Implemented |
| CreateWirelessDevice | Implemented |
| CreateWirelessGateway | Implemented |
| CreateWirelessGatewayTask | Not implemented |
| CreateWirelessGatewayTaskDefinition | Not implemented |
| DeleteDestination | Implemented |
| DeleteDeviceProfile | Implemented |
| DeleteFuotaTask | Not implemented |
| DeleteMulticastGroup | Not implemented |
| DeleteNetworkAnalyzerConfiguration | Not implemented |
| DeleteQueuedMessages | Not implemented |
| DeleteServiceProfile | Implemented |
| DeleteWirelessDevice | Implemented |
| DeleteWirelessDeviceImportTask | Not implemented |
| DeleteWirelessGateway | Implemented |
| DeleteWirelessGatewayTask | Not implemented |
| DeleteWirelessGatewayTaskDefinition | Not implemented |
| DeregisterWirelessDevice | Not implemented |
| DisassociateAwsAccountFromPartnerAccount | Not implemented |
| DisassociateMulticastGroupFromFuotaTask | Not implemented |
| DisassociateWirelessDeviceFromFuotaTask | Not implemented |
| DisassociateWirelessDeviceFromMulticastGroup | Not implemented |
| DisassociateWirelessDeviceFromThing | Not implemented |
| DisassociateWirelessGatewayFromCertificate | Not implemented |
| DisassociateWirelessGatewayFromThing | Not implemented |
| GetDestination | Implemented |
| GetDeviceProfile | Implemented |
| GetEventConfigurationByResourceTypes | Not implemented |
| GetFuotaTask | Not implemented |
| GetLogLevelsByResourceTypes | Not implemented |
| GetMetricConfiguration | Not implemented |
| GetMetrics | Not implemented |
| GetMulticastGroup | Not implemented |
| GetMulticastGroupSession | Not implemented |
| GetNetworkAnalyzerConfiguration | Not implemented |
| GetPartnerAccount | Not implemented |
| GetPosition | Not implemented |
| GetPositionConfiguration | Not implemented |
| GetPositionEstimate | Not implemented |
| GetResourceEventConfiguration | Not implemented |
| GetResourceLogLevel | Not implemented |
| GetResourcePosition | Not implemented |
| GetServiceEndpoint | Not implemented |
| GetServiceProfile | Implemented |
| GetWirelessDevice | Implemented |
| GetWirelessDeviceImportTask | Not implemented |
| GetWirelessDeviceStatistics | Not implemented |
| GetWirelessGateway | Implemented |
| GetWirelessGatewayCertificate | Not implemented |
| GetWirelessGatewayFirmwareInformation | Not implemented |
| GetWirelessGatewayStatistics | Not implemented |
| GetWirelessGatewayTask | Not implemented |
| GetWirelessGatewayTaskDefinition | Not implemented |
| ListDestinations | Implemented |
| ListDeviceProfiles | Implemented |
| ListDevicesForWirelessDeviceImportTask | Not implemented |
| ListEventConfigurations | Not implemented |
| ListFuotaTasks | Not implemented |
| ListMulticastGroups | Not implemented |
| ListMulticastGroupsByFuotaTask | Not implemented |
| ListNetworkAnalyzerConfigurations | Not implemented |
| ListPartnerAccounts | Not implemented |
| ListPositionConfigurations | Not implemented |
| ListQueuedMessages | Not implemented |
| ListServiceProfiles | Implemented |
| ListTagsForResource | Not implemented |
| ListWirelessDeviceImportTasks | Not implemented |
| ListWirelessDevices | Implemented |
| ListWirelessGatewayTaskDefinitions | Not implemented |
| ListWirelessGateways | Implemented |
| PutPositionConfiguration | Not implemented |
| PutResourceLogLevel | Not implemented |
| ResetAllResourceLogLevels | Not implemented |
| ResetResourceLogLevel | Not implemented |
| SendDataToMulticastGroup | Not implemented |
| SendDataToWirelessDevice | Not implemented |
| StartBulkAssociateWirelessDeviceWithMulticastGroup | Not implemented |
| StartBulkDisassociateWirelessDeviceFromMulticastGroup | Not implemented |
| StartFuotaTask | Not implemented |
| StartMulticastGroupSession | Not implemented |
| StartSingleWirelessDeviceImportTask | Not implemented |
| StartWirelessDeviceImportTask | Not implemented |
| TagResource | Not implemented |
| TestWirelessDevice | Not implemented |
| UntagResource | Not implemented |
| UpdateDestination | Not implemented |
| UpdateEventConfigurationByResourceTypes | Not implemented |
| UpdateFuotaTask | Not implemented |
| UpdateLogLevelsByResourceTypes | Not implemented |
| UpdateMetricConfiguration | Not implemented |
| UpdateMulticastGroup | Not implemented |
| UpdateNetworkAnalyzerConfiguration | Not implemented |
| UpdatePartnerAccount | Not implemented |
| UpdatePosition | Not implemented |
| UpdateResourceEventConfiguration | Not implemented |
| UpdateResourcePosition | Not implemented |
| UpdateWirelessDevice | Implemented |
| UpdateWirelessDeviceImportTask | Not implemented |
| UpdateWirelessGateway | Implemented |
