diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md index 141e19a2a1..d4ca14d3a3 100644 --- a/.github/ISSUE_TEMPLATE/release.md +++ b/.github/ISSUE_TEMPLATE/release.md @@ -1,7 +1,6 @@ --- name: Release about: Checklist for releases - --- -To use this authentication method, you first need to [register an **OAuth client**]({{}}) . After the registration is complete and accepted, you can **request authorization** by sending the user to the **authorization URL**: +To use this authentication method, you first need to [register an **OAuth client**]({{}}) . After the registration is complete and accepted, you can **request authorization** by sending the user to the **authorization URL**: ``` https:///oauth/authorize?client_id=&redirect_uri=&state=&response_type=code diff --git a/doc/content/api/concepts/errors/_index.md b/doc/content/api/concepts/errors/_index.md index 5b58fee4f6..3f8522d9eb 100644 --- a/doc/content/api/concepts/errors/_index.md +++ b/doc/content/api/concepts/errors/_index.md @@ -53,7 +53,7 @@ Fields of the JSON message are described below. ## Rate limiting -API request may be subject to [rate limits]({{< ref "/reference/rate-limiting" >}}). +API request may be subject to [rate limits]({{< ref "/enterprise/management/rate-limiting" >}}). When the rate limit is reached, the server returns a `429 Too Many Requests` response. diff --git a/doc/content/api/concepts/fieldmasks/_index.md b/doc/content/api/concepts/fieldmasks/_index.md index 613a4dc1ad..cac0abef07 100644 --- a/doc/content/api/concepts/fieldmasks/_index.md +++ b/doc/content/api/concepts/fieldmasks/_index.md @@ -97,7 +97,7 @@ Without the field masks specified, this request would not return the `name`, `de {{< note >}} Keep in mind that application ID (`application_ids.application_id`), end device ID (`device_id`), AppEUI/JoinEUI (`join_eui`), DevEUI (`dev_eui`) and API key IDs cannot be updated after creation. These fields are part of the allowed field mask, but they can only be used at creation, after which they can no longer be changed. -For example, to properly register an end device in {{% tts %}} like described in the [devices]({{< ref "/devices/adding-devices/manual" >}}) section, it is necessary to set the `dev_eui` field to device's DevEUI. However, updating the DevEUI after device is created will not be possible, i.e. will fail with the `forbidden path(s) in field mask` error. {{}} +For example, to properly register an end device in {{% tts %}} like described in the [devices]({{< ref "/hardware/devices/adding-devices/manual" >}}) section, it is necessary to set the `dev_eui` field to device's DevEUI. However, updating the DevEUI after device is created will not be possible, i.e. will fail with the `forbidden path(s) in field mask` error. {{}} To update fields, the field mask must also be specified in the JSON object (query parameters do not work for `PUT` requests). The field mask has the following format: diff --git a/doc/content/api/concepts/lora-gateway/_index.md b/doc/content/api/concepts/lora-gateway/_index.md index a7321a2d78..41cf72756a 100644 --- a/doc/content/api/concepts/lora-gateway/_index.md +++ b/doc/content/api/concepts/lora-gateway/_index.md @@ -9,17 +9,17 @@ aliases: ["/reference/api/gateway_server_mqtt"] -See the [port allocations]({{< ref "/the-things-stack/concepts/networking/#port-allocations" >}}) guide to check which protocol is supported on which port. +See the [port allocations]({{< ref "/concepts/networking/#port-allocations" >}}) guide to check which protocol is supported on which port. ## LoRa Basics™ Station -{{% tts %}} provides {{% lbs %}} [LNS]({{< ref "/gateways/concepts/lora-basics-station/#lorawan-network-server-lns" >}}) and [CUPS]({{< ref "/gateways/concepts/lora-basics-station/#configuration-and-update-server-cups" >}}) end points for gateways to connect. +{{% tts %}} provides {{% lbs %}} [LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/#lorawan-network-server-lns" >}}) and [CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/#configuration-and-update-server-cups" >}}) end points for gateways to connect. These protocols follow the {{% lbs %}} [reference specification](https://lora-developers.semtech.com/build/software/lora-basics/lora-basics-for-gateways/?url=cupsproto.html). {{< note "{{% lbs %}} CUPS API is usually exposed on the HTTP(s) port(s)." />}} -Implementation specific details for clients using the {{% lbs %}} LNS protocol to communicate with {{% tts %}} is documented in the [LoRa Basics Station Implementation Guide]({{< ref "/reference/lbs" >}}). +Implementation specific details for clients using the {{% lbs %}} LNS protocol to communicate with {{% tts %}} is documented in the [LoRa Basics Station Implementation Guide]({{< ref "/hardware/gateways/concepts/lora-basics-station/implementation-guide" >}}). This reference describes the MQTT protocol used by the Gateway Server. Packet forwarders implementing the MQTT protocols are specific for {{% tts %}}. @@ -37,13 +37,13 @@ To communicate with the MQTT protocol, the Gateway Server and the gateway are ex ### MQTT v2 -The MQTT v2 gateway APIs are used by [The Things Kickstarter Gateway]({{< ref "/gateways/models/thethingskickstartergateway">}}) and use the [TTN v2 MQTT](https://github.com/TheThingsNetwork/lorawan-stack/blob/master/pkg/gatewayserver/io/mqtt/format_protobufv2.go) format. +The MQTT v2 gateway APIs are used by [The Things Kickstarter Gateway]({{< ref "/hardware/gateways/models/thethingskickstartergateway">}}) and use the [TTN v2 MQTT](https://github.com/TheThingsNetwork/lorawan-stack/blob/master/pkg/gatewayserver/io/mqtt/format_protobufv2.go) format. ### MQTT v3 The MQTT v3 protocol uses the {{% tts %}} v3 messages definitions. -Gateways can connect using the username `{gateway-id}@{tenant-id}` and an API key as the password. Check how to [register a gateway and create an API key]({{< ref "/gateways/concepts/adding-gateways/">}}). +Gateways can connect using the username `{gateway-id}@{tenant-id}` and an API key as the password. Check how to [register a gateway and create an API key]({{< ref "/hardware/gateways/concepts/adding-gateways/">}}).
@@ -58,9 +58,9 @@ Gateways can connect using the username `{gateway-id}@{tenant-id}` and an API ke #### Connecting to the Gateway Server -See [Networking]({{< ref "/the-things-stack/concepts/networking" >}}) for the default port of the MQTT server. +See [Networking]({{< ref "/concepts/networking" >}}) for the default port of the MQTT server. -The username is `@` (e.g. `gtw1@tenant1`), and the password is a gateway API key with the `RIGHT_GATEWAY_LINK` right enabled. You can generate this API key by following instructions in the [Creating Gateways]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}) section. +The username is `@` (e.g. `gtw1@tenant1`), and the password is a gateway API key with the `RIGHT_GATEWAY_LINK` right enabled. You can generate this API key by following instructions in the [Creating Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}) section. Authenticated clients get **write-only** access to the following topics: diff --git a/doc/content/api/concepts/troubleshooting/_index.md b/doc/content/api/concepts/troubleshooting/_index.md index 162dab776b..c4f803ae49 100644 --- a/doc/content/api/concepts/troubleshooting/_index.md +++ b/doc/content/api/concepts/troubleshooting/_index.md @@ -14,11 +14,11 @@ This error usually occurs when wrong path(s) are specified in the `field_mask` o ###### When adding a device, I get an "invalid end_device: embedded message failed validation" error. -The most common cause for this error is not following the regex pattern in the `device_id` field. See [End Device APIs]({{< ref "/api/reference/grpc/end_device#message:EndDeviceIdentifiers" >}}) section and make sure your `device_id` is in line with the defined regex pattern. See also [ID and EUI constaints]({{< ref "/reference/id-eui-constraints" >}}) documentation. +The most common cause for this error is not following the regex pattern in the `device_id` field. See [End Device APIs]({{< ref "/api/reference/grpc/end_device#message:EndDeviceIdentifiers" >}}) section and make sure your `device_id` is in line with the defined regex pattern. See also [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) documentation. ###### Listing gateways via API call works for the eu1 {{% tts %}} Cloud cluster, but won't work for the nam1 cluster. -Unlike other server components, the Identity Server component of {{% tts %}} is hosted only in the `eu1` cluster for [{{% tts %}} Cloud]({{< ref "/the-things-stack/cloud/addresses#api-endpoints" >}}) and [{{% tts %}} Sandbox]({{< ref "/reference/ttn/addresses#api-endpoints" >}}). This is the reason why Identity Server API request to any cluster other than `eu1` will fail. +Unlike other server components, the Identity Server component of {{% tts %}} is hosted only in the `eu1` cluster for [{{% tts %}} Cloud]({{< ref "/concepts/server-addresses#api-endpoints" >}}) and [{{% tts %}} Sandbox]({{< ref "/concepts/ttn/addresses#api-endpoints" >}}). This is the reason why Identity Server API request to any cluster other than `eu1` will fail. ###### "426 Upgrade Required" error diff --git a/doc/content/api/reference/grpc/end_device.md b/doc/content/api/reference/grpc/end_device.md index a8faba26e1..6c5ba72b74 100644 --- a/doc/content/api/reference/grpc/end_device.md +++ b/doc/content/api/reference/grpc/end_device.md @@ -17,7 +17,7 @@ When registering end devices, we recommend registering them in the following ord - `NsEndDeviceRegistry.Set` (Network Server) - `AsEndDeviceRegistry.Set` (Application Server) -Check out the [devices]({{< ref "/devices/adding-devices/manual" >}}) subsection for an example on how to register a device via API. +Check out the [devices]({{< ref "/hardware/devices/adding-devices/manual" >}}) subsection for an example on how to register a device via API. When deleting end devices, we recommend deleting them in the reverse order. diff --git a/doc/content/api/reference/grpc/tenant.md b/doc/content/api/reference/grpc/tenant.md index 6364ac9d64..8dfba28fdc 100644 --- a/doc/content/api/reference/grpc/tenant.md +++ b/doc/content/api/reference/grpc/tenant.md @@ -11,7 +11,7 @@ List of Tenant APIs. ## Authentication -Unlike the other services, the tenant services do **not** accept API keys or OAuth access tokens. Instead, authentication is done with a "tenant admin key" that is [configured in the Identity Server]({{< relref "/reference/configuration/identity-server#tenant-administration-options" >}}) +Unlike the other services, the tenant services do **not** accept API keys or OAuth access tokens. Instead, authentication is done with a "tenant admin key" that is [configured in the Identity Server]({{< relref "/enterprise/management/configuration/identity-server#tenant-administration-options" >}}) - Usage with HTTP `Authorization` Header: `TenantAdminKey XXXXX` - Usage with gRPC [call credentials](https://grpc.io/docs/guides/auth.html#authentication-api) (in the `authorization` header): `TenantAdminKey XXXXX` diff --git a/doc/content/cloud/_index.md b/doc/content/cloud/_index.md new file mode 100644 index 0000000000..a7b5b0ff5d --- /dev/null +++ b/doc/content/cloud/_index.md @@ -0,0 +1,46 @@ +--- +title: "The Things Stack Cloud" +description: "Concepts specific to The Things Stack Cloud" +menu: + main: + weight: 2 +aliases: + [ + /guides/cloud-hosted/cloud-hosted, + /getting-started/cloud-hosted, + /the-things-stack/cloud, + ] +--- + +{{% tts %}} Cloud is a fully managed software as a service (SaaS) solution offered by The Things Industries. This is an out-of-the-box simple, scalable LoRaWAN network server solution, 100% managed and maintained by us, recommended for most users building LoRaWAN® solutions. + + + +{{% tts %}} Cloud includes a [service level agreement](https://www.thethingsindustries.com/document/sla/) which offers an uptime commitment so that you can be assured of the availability of the service. +We offer multiple plans based on your needs including a [free discovery tier](https://www.thethingsindustries.com/stack/plans/) for users to evaluate the product. Signing up to {{% tts %}} Cloud is very easy and within a few minutes, you can [get started]({{< ref "/getting-started/setup-first-network/" >}}) with a production-grade LoRaWAN network. + +#### Multi-tenancy + +{{% tts %}} Cloud is a **multi-tenant** environment. This means that while each customer has their own isolated network, the underlying infrastructure is shared with other customers. + +#### Clusters + +{{% tts %}} Cloud is a multi-cluster deployment. This means that while your account, login and entity information is stored in a central location, you can connect your gateways to a cluster closer to the physical location of your gateways, and route all your IoT traffic in that cluster. Thi significantly reduces latency and improves the performance of your gateways. + +{{% tts %}} Cloud currently has the following clusters: + +| **Cluster ID** | **Name** | **Location** | +| -------------- | --------------- | ----------------- | +| `au1` | Australia 1 | Sydney, Australia | +| `as1` | Asia 1 | Tokyo, Japan | +| `eu1` | Europe 1 | Dublin, Ireland | +| `eu2` | Europe 2 | London, UK | +| `nam1` | North America 1 | California, USA | + +You can head over to our cluster picker at [console.cloud.thethings.industries](https://console.cloud.thethings.industries) and find out which {{% tts %}} Cloud clusters are recommended for your deployment based on the location of your devices. + +{{< figure src="recommended-locations.png" alt="Recommended clusters" >}} + +#### Status Page + +Visit [The Things Industries services status page](https://status.thethings.industries/) to check the current status of {{% tts %}} Cloud services. Be up do date with the recent {{% tts %}} Cloud upgrades, scheduled maintenances and reported incidents. diff --git a/doc/content/the-things-stack/cloud/addresses/_index.md b/doc/content/cloud/addresses/_index.md similarity index 78% rename from doc/content/the-things-stack/cloud/addresses/_index.md rename to doc/content/cloud/addresses/_index.md index df2decc73c..8cb8b5ea67 100644 --- a/doc/content/the-things-stack/cloud/addresses/_index.md +++ b/doc/content/cloud/addresses/_index.md @@ -1,18 +1,18 @@ --- -title: "Cloud Addresses" +title: "Server Addresses" description: "" -weight: 10 -aliases: [/getting-started/cloud-hosted/addresses, /guides/cloud-hosted/addresses, /the-things-stack/cloud/addresses] -distributions: ["Cloud"] +weight: 2 +aliases: + [/getting-started/cloud-hosted/addresses, /guides/cloud-hosted/addresses] --- -The addresses where you can reach your {{% tts %}} Cloud network consist of the tenant ID, the cluster ID and `cloud.thethings.industries`. +This page provides configuration details and guidance for accessing and managing {{% tts %}} Cloud clusters, including Console, API endpoints, OAuth, CLI setup, and IP address considerations. -You can update the examples below with your tenant ID and cluster ID by filling them here. + -{{< tenant-cluster-selector >}} +Enter your **tenant ID** and choose a **cluster** from the dropdown. This will update the rest of the page with that address so you can get easily copyable links. -## Cluster Address +{{< tenant-cluster-selector >}} Your cluster address is: @@ -22,9 +22,9 @@ Your cluster address is:

-## Console +### Console -To learn how to get started with the Console, see the [Console Getting Started Guide]({{< ref "/the-things-stack/interact/console" >}}). +To learn how to get started with the Console, see the [Console Getting Started Guide]({{< ref "/concepts/features/console" >}}). Each cluster has a Console where you can manage gateways and end devices of that cluster. You can use any cluster with your Cloud account. @@ -36,7 +36,7 @@ https://.<

-## API Endpoints +### API Endpoints The Application Server, Join Server and Network Server APIs are all available in your routing cluster. @@ -46,7 +46,7 @@ The Application Server, Join Server and Network Server APIs are all available in

-However, the Identity Server APIs are only available in the `eu1` cluster: +However, the Identity Server APIs (`/api/is/*`) are only available in the `eu1` cluster. This is because `eu1` is the central cluster where entity registrations are stored.

@@ -56,7 +56,7 @@ However, the Identity Server APIs are only available in the `eu1` cluster: {{< warning >}}End-Device Registry API requests or other Identity Server API requests to any cluster other than `eu1` will fail. {{}} -## Account and OAuth +### Account and OAuth User accounts are stored in the `eu1` cluster. For registering users, logging in, changing your password and for performing OAuth flows, you need to use the following address: @@ -66,7 +66,7 @@ https://.eu1.cloud.thethings.industries/oa

-## Command-line Interface +### Command-line Interface The Command-line Interface (CLI) needs to be configured with the address of the OAuth server and the gRPC addresses of the different servers. The addresses for OAuth and the Identity Server are always those of the `eu1` cluster. The other addresses are typically of the cluster of your choice. @@ -87,9 +87,9 @@ qr-code-generator-grpc-address: '.' -See the [CLI Getting Started Guide]({{< ref "/the-things-stack/interact/cli" >}}) to learn how to get started with the CLI and working with configuration files. +See the [CLI Getting Started Guide]({{< ref "/concepts/features/cli" >}}) to learn how to get started with the CLI and working with configuration files. -## IP Addresses +### IP Addresses {{% tts %}} Cloud runs on AWS. See the [AWS IP address range documentation](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) for IP addresses of Cloud clusters. diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/_index.md b/doc/content/cloud/billing-and-subscription-management/_index.md similarity index 98% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/_index.md rename to doc/content/cloud/billing-and-subscription-management/_index.md index 4de8f78fbe..8e639e5c69 100644 --- a/doc/content/the-things-stack/cloud/billing-and-subscription-management/_index.md +++ b/doc/content/cloud/billing-and-subscription-management/_index.md @@ -1,8 +1,12 @@ --- -title: "Subscription and Billing Management" +title: "Subscription and billing" description: "" weight: 1 -aliases: [/getting-started/billing-and-subscription-management/] +aliases: + [ + /getting-started/billing-and-subscription-management/, + /the-things-stack/cloud/billing-and-subscription-management, + ] --- This section shows how to buy {{% tts %}} subscription, and to perform subscription and billing management for your business accounts with The Things Industries. @@ -167,7 +171,6 @@ Generally, the first two letters of the VAT ID represent the country code, but { For example, if the VAT ID is `AB12312312312`, enter `12312312312` and try subscribing to {{% tts %}} again. - ### What happens if my subscription is past due? If your {{% tts %}} tenant subscription payment is overdue, it enters the flagged state. First, you will first receive the `Stripe subscription past due` warning upon any action in your tenant's Console, and when using API or CLI. You will probably also receive an email notifying you about overdue payment. diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/admin.png b/doc/content/cloud/billing-and-subscription-management/admin.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/admin.png rename to doc/content/cloud/billing-and-subscription-management/admin.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/billing-info.png b/doc/content/cloud/billing-and-subscription-management/billing-info.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/billing-info.png rename to doc/content/cloud/billing-and-subscription-management/billing-info.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/cluster.png b/doc/content/cloud/billing-and-subscription-management/cluster.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/cluster.png rename to doc/content/cloud/billing-and-subscription-management/cluster.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/downgrade-plan.png b/doc/content/cloud/billing-and-subscription-management/downgrade-plan.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/downgrade-plan.png rename to doc/content/cloud/billing-and-subscription-management/downgrade-plan.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/downgrade-support.png b/doc/content/cloud/billing-and-subscription-management/downgrade-support.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/downgrade-support.png rename to doc/content/cloud/billing-and-subscription-management/downgrade-support.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/edit-subscription.png b/doc/content/cloud/billing-and-subscription-management/edit-subscription.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/edit-subscription.png rename to doc/content/cloud/billing-and-subscription-management/edit-subscription.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/faq-and-price-estimation.png b/doc/content/cloud/billing-and-subscription-management/faq-and-price-estimation.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/faq-and-price-estimation.png rename to doc/content/cloud/billing-and-subscription-management/faq-and-price-estimation.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/invoice-history.png b/doc/content/cloud/billing-and-subscription-management/invoice-history.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/invoice-history.png rename to doc/content/cloud/billing-and-subscription-management/invoice-history.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/network-id.png b/doc/content/cloud/billing-and-subscription-management/network-id.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/network-id.png rename to doc/content/cloud/billing-and-subscription-management/network-id.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/network-name.png b/doc/content/cloud/billing-and-subscription-management/network-name.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/network-name.png rename to doc/content/cloud/billing-and-subscription-management/network-name.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/payment-settings.png b/doc/content/cloud/billing-and-subscription-management/payment-settings.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/payment-settings.png rename to doc/content/cloud/billing-and-subscription-management/payment-settings.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/plans-and-billing-period.png b/doc/content/cloud/billing-and-subscription-management/plans-and-billing-period.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/plans-and-billing-period.png rename to doc/content/cloud/billing-and-subscription-management/plans-and-billing-period.png diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/_index.md b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/_index.md similarity index 94% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/_index.md rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/_index.md index 199b4b0489..e839b7fc3c 100644 --- a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/_index.md +++ b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/_index.md @@ -1,7 +1,8 @@ --- title: "Subscription via AWS Marketplace" description: "" -weight: 2 +weight: 3 +aliases: [/the-things-stack/cloud/subscribe-tts-via-aws-marketplace] --- This section shows how to subscribe a tenant in {{% tts %}} Cloud deployment via AWS Marketplace. diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/configure-account.png b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/configure-account.png similarity index 100% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/configure-account.png rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/configure-account.png diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/manage-subscriptions.png b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/manage-subscriptions.png similarity index 100% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/manage-subscriptions.png rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/manage-subscriptions.png diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/purchase-option.png b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/purchase-option.png similarity index 100% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/purchase-option.png rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/purchase-option.png diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/setup-account.png b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/setup-account.png similarity index 100% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/setup-account.png rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/setup-account.png diff --git a/doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/subscribe.png b/doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/subscribe.png similarity index 100% rename from doc/content/the-things-stack/cloud/subscribe-tts-via-aws-marketplace/subscribe.png rename to doc/content/cloud/billing-and-subscription-management/subscribe-tts-via-aws-marketplace/subscribe.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/subscriptions.png b/doc/content/cloud/billing-and-subscription-management/subscriptions.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/subscriptions.png rename to doc/content/cloud/billing-and-subscription-management/subscriptions.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/upgrade-support.png b/doc/content/cloud/billing-and-subscription-management/upgrade-support.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/upgrade-support.png rename to doc/content/cloud/billing-and-subscription-management/upgrade-support.png diff --git a/doc/content/the-things-stack/cloud/billing-and-subscription-management/upgrade.png b/doc/content/cloud/billing-and-subscription-management/upgrade.png similarity index 100% rename from doc/content/the-things-stack/cloud/billing-and-subscription-management/upgrade.png rename to doc/content/cloud/billing-and-subscription-management/upgrade.png diff --git a/doc/content/cloud/branding/_index.md b/doc/content/cloud/branding/_index.md new file mode 100644 index 0000000000..2a6a8bc376 --- /dev/null +++ b/doc/content/cloud/branding/_index.md @@ -0,0 +1,58 @@ +--- +title: "Custom branding" +description: "" +aliases: [/reference/branding, /the-things-stack/management/branding] +--- + +This reference gives details on how to customize the branding of the login pages and the Console. + + + +## Cloud Branding + +[{{% tts %}} Cloud]({{< ref "/cloud" >}}) users can use a custom branding in {{% tts %}} Console. Branding customization is available for each {{% tts %}} Cloud tenant. + +See below for what's available to customize and what files are necessary. Users need to host these files on a CDN (e.g. an S3 bucket) and provide a link to it as shown in the [Tenant Settings guide]({{< ref "/concepts/features/console/tenant-settings#branding" >}}). + +## Title, Subtitle and Description + +The title, subtitle and description of the login pages and the Console can be changed using configuration options. For details, see the [Identity Server configuration reference]({{< ref "/enterprise/management/configuration/identity-server#oauth-ui-options" >}}) and the [Console configuration reference]({{< ref "/enterprise/management/configuration/console" >}}). + +## Logos + +Logos of the web UI can be rebranded by pointing the **Branding base URL** in the Console (as described in [Tenant Settings]({{< ref "/concepts/features/console/tenant-settings#branding" >}})) to a location that contains the following files: + +| **Filename** | **Size** | **Purpose** | +| --------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------- | +| console-favicon.svg | vector | The SVG logo for the console that is shown in browser tabs and bookmarks | +| console-favicon.png | multiple | The fallback favicon logo for the console in `PNG` format; recommended size 32x32 | +| console-favicon.ico | multiple | The fallback favicon logo for the console in `ICO` format; recommended size 32x32 | +| console-og-image.png | 1200x600 | The logo for the console that is shown when sharing links on social media | +| console-touch-icon.png | 400x400 | The logo for the console that is shown mobile devices | +| claim-favicon.svg {{< distributions "Cloud" "Enterprise" >}} | vector | The SVG logo for the device claiming frontend that is shown in browser tabs and bookmarks | +| claim-favicon.png {{< distributions "Cloud" "Enterprise" >}} | multiple | The fallback favicon logo for the device claiming frontend in `PNG` format; recommended size 32x32 | +| claim-favicon.ico {{< distributions "Cloud" "Enterprise" >}} | multiple | The fallback favicon logo for the device claiming frontend in `ICO` format; recommended size 32x32 | +| claim-og-image.png {{< distributions "Cloud" "Enterprise" >}} | 1200x600 | The logo for the device claiming frontend that is shown when sharing links on social media | +| claim-touch-icon.png {{< distributions "Cloud" "Enterprise" >}} | 400x400 | The logo for the device claiming frontend that is shown mobile devices | +| logo.svg | vector | The logo for the console that is shown in the menu bar of the console | +| oauth-favicon.svg | vector | The SVG logo for the login pages that is shown in browser tabs and bookmarks | +| oauth-favicon.png | multiple | The fallback favicon logo for the login pages in `PNG` format; recommended size 32x32 | +| oauth-favicon.ico | multiple | The fallback favicon logo for the login pages in `ICO` format; recommended size 32x32 | +| oauth-og-image.png | 1200x600 | The logo for the login pages that is shown when sharing links on social media | +| oauth-touch-icon.png | 400x400 | The logo for the login pages that is shown mobile devices | + +If the **Branding base URL** option is set, the `logo.svg` is used to display a secondary logo next to the logo of {{% tts %}} for LoRaWAN. It is recommended to use a logo with a wide (e.g. 5:1) or square (1:1) aspect ratio. Tall logos (e.g. 1:5; height larger than width) will be displayed very small, due to the limited height of the header bar. + +If you have your favicon as a PNG, use ImageMagick to convert it to ICO: + +```bash +convert console-favicon.png \ + -define icon:auto-resize=64,48,32,16 \ + console-favicon.ico +``` + +For the additional info about configuration options required to set a custom branding, see the [Identity Server configuration reference]({{< ref "/enterprise/management/configuration/identity-server#oauth-ui-options" >}}) and the [Console configuration reference]({{< ref "/enterprise/management/configuration/console" >}}). + +## Deployment Information and Disclaimers + +It is possible to highlight some deployment information and disclaimers in the header of the web UIs. E.g. you can highlight an SLA that applies or a support tier that is connected with the deployment. Please see the respective sections in the [Identity Server configuration reference]({{< ref "/enterprise/management/configuration/identity-server#oauth-ui-options" >}}) and [Console configuration reference]({{< ref "/enterprise/management/configuration/console#deployment-information-and-disclaimers" >}}). diff --git a/doc/content/reference/data-retention/_index.md b/doc/content/cloud/data-retention/_index.md similarity index 80% rename from doc/content/reference/data-retention/_index.md rename to doc/content/cloud/data-retention/_index.md index 44331b6c13..bd7988ef83 100644 --- a/doc/content/reference/data-retention/_index.md +++ b/doc/content/cloud/data-retention/_index.md @@ -2,6 +2,7 @@ title: "Data Retention and Privacy" description: "" weight: +aliases: [/reference/data-retention] --- This reference contains information about what access administrators and users have to data, and how long {{% tts %}} persists device data. For inquiries about data privacy or data security, read on, or [contact The Things Industries](mailto:cloud@thethingsindustries.com). @@ -16,9 +17,9 @@ To understand how data is secured in {{% tts %}} it is necessary to understand s **Network Administrators**: Users with administrative access in a tenant. **Network Administrators** have access to all entities in a tenant, including device secrets. In multi-tenant environments, tenants are completely isolated, and **Network Administrators** of one tenant have **no access** to other tenants. -**Users and Organizations**: Users without administrative access, and organizations, can access entities which they have [collaborator rights]({{< ref "/the-things-stack/management/user-management" >}}) over. +**Users and Organizations**: Users without administrative access, and organizations, can access entities which they have [collaborator rights]({{< ref "/concepts/advanced/user-management" >}}) over. -**Support Engineers**: The Things Industries support engineers do **not** have infrastructural access to any {{% tts %}} deployments. They must be [granted access]({{< ref "/the-things-stack/management/user-management" >}}) by the customer. +**Support Engineers**: The Things Industries support engineers do **not** have infrastructural access to any {{% tts %}} deployments. They must be [granted access]({{< ref "/concepts/advanced/user-management" >}}) by the customer. ## {{% tts %}} Cloud @@ -42,4 +43,4 @@ The Application Server stores {{% tts %}} uses your NwkSKey (NwkSEncKey in LoRaWAN® 1.1) to decrypt LoRaWAN network-level payload. These session keys are only known to the Network Server and are never exposed downstream (to gateways) or upstream (to applications). -{{% tts %}} uses the LoRaWAN AppSKey to decrypt the application payload, which is available in the [JSON message]({{< ref "the-things-stack/concepts/data-formats" >}}). It is also possible to skip payload decryption in {{% tts %}}, and perform decryption later in your application pipeline. See instructions on how to do it on an [application level]({{< ref "/integrations/adding-applications#payload-encryption-and-decryption" >}}) or on a [device level]({{< ref "/devices/adding-devices#application-layer-settings" >}}). +{{% tts %}} uses the LoRaWAN AppSKey to decrypt the application payload, which is available in the [JSON message]({{< ref "/integrations/data-formats" >}}). It is also possible to skip payload decryption in {{% tts %}}, and perform decryption later in your application pipeline. See instructions on how to do it on an [application level]({{< ref "/integrations/adding-applications#payload-encryption-and-decryption" >}}) or on a [device level]({{< ref "/hardware/devices/adding-devices#application-layer-settings" >}}). diff --git a/doc/content/reference/data-retention/skip-encryption.png b/doc/content/cloud/data-retention/skip-encryption.png similarity index 100% rename from doc/content/reference/data-retention/skip-encryption.png rename to doc/content/cloud/data-retention/skip-encryption.png diff --git a/doc/content/cloud/recommended-locations.png b/doc/content/cloud/recommended-locations.png new file mode 100644 index 0000000000..e951dc378d Binary files /dev/null and b/doc/content/cloud/recommended-locations.png differ diff --git a/doc/content/the-things-stack/concepts/_index.md b/doc/content/concepts/_index.md similarity index 50% rename from doc/content/the-things-stack/concepts/_index.md rename to doc/content/concepts/_index.md index 8ad767d570..e725c851b0 100644 --- a/doc/content/the-things-stack/concepts/_index.md +++ b/doc/content/concepts/_index.md @@ -1,12 +1,19 @@ --- -title: "Basic Concepts" +title: "Concepts" description: "Guides on basic concepts of working with The Things Stack" -weight: 1 -aliases: [/reference/spec-regional-parameters] +menu: + main: + weight: 2 +aliases: + [ + /reference/spec-regional-parameters, + doc/content/the-things-stack/concepts, + /the-things-stack, + ] --- This section introduces basic concepts of working with {{% tts %}}. -We start with a general technical discussion of {{% tts %}} architecture and progress to other more detailed topics that can be found in the **left menu**. +We start with a general technical discussion of {{% tts %}} architecture and progress to other more detailed topics. diff --git a/doc/content/concepts/advanced/_index.md b/doc/content/concepts/advanced/_index.md new file mode 100644 index 0000000000..81d420692c --- /dev/null +++ b/doc/content/concepts/advanced/_index.md @@ -0,0 +1,7 @@ +--- +title: "Advanced Topics" +description: "Guides for advanced users of The Things Stack" +weight: 8 +--- + +This section contains advanced topics for {{% tts %}} diff --git a/doc/content/the-things-stack/interact/adding-oauth-clients/_index.md b/doc/content/concepts/advanced/adding-oauth-clients/_index.md similarity index 93% rename from doc/content/the-things-stack/interact/adding-oauth-clients/_index.md rename to doc/content/concepts/advanced/adding-oauth-clients/_index.md index 8addf12c51..e4bedc34f2 100644 --- a/doc/content/the-things-stack/interact/adding-oauth-clients/_index.md +++ b/doc/content/concepts/advanced/adding-oauth-clients/_index.md @@ -1,9 +1,7 @@ --- title: "Adding OAuth Clients" description: "" -weight: -1 -aliases: - [ /the-things-stack/interact/adding-oauth-clients ] +aliases: [/concepts/featuresadding-oauth-clients] --- This section contains instructions for creating an OAuth Client. @@ -46,7 +44,7 @@ When reviewing the requests of new OAuth clients, administrators always validate A few parameters listed below are usually used to describe an OAuth [client]({{< ref "/api/reference/http/messages/#client" >}}). -- The **client ID** uniquely identifies the OAuth client. Its [restrictions]({{< ref "/reference/id-eui-constraints#requirements-of-an-id-or-eui" >}}) are the same as for any other ID in {{% tts %}}. +- The **client ID** uniquely identifies the OAuth client. Its [restrictions]({{< ref "/concepts/architecture/id-eui-constraints#requirements-of-an-id-or-eui" >}}) are the same as for any other ID in {{% tts %}}. - The **description** is shown to the user when you request authorization. - The **rights** indicates what actions your OAuth client is allowed to perform. This is shown to the user when performing an authorization request. A full list of rights can also be found in the [message reference]({{< ref "/api/reference/http/messages/#right" >}}). - The **redirect URI** is where the user is redirected after authorizing your OAuth client. At least one **redirect URI** must be configured while registering the OAuth client. @@ -106,10 +104,10 @@ ttn-lw-cli clients create \
-| Item | Value | -| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Item | Value | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | | Endpoint | [`/users/{collaborator.user_ids.user_id}/clients`]({{< ref "/api/reference/http/routes/#users{collaborator.user_ids.user_id}clients-post" >}}) | -| Request type | `POST` | +| Request type | `POST` |
@@ -118,15 +116,14 @@ ttn-lw-cli clients create \
-| Item | Value | -| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Item | Value | +| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Endpoint | [`/organizations/{collaborator.organization_ids.organization_id}/clients`]({{< ref "/api/reference/http/routes/#organizations{collaborator.organization_ids.organization_id}clients-post" >}}) | -| Request type | `POST` | +| Request type | `POST` |
- ###### Example To create a client `my-test-client` on `thethings.example.com`, first create a JSON file named `req.json` in the same folder with the following example contents. @@ -149,12 +146,8 @@ To create a client `my-test-client` on `thethings.example.com`, first create a J "user_id": "testuser" } }, - "redirect_uris": [ - "https://thethings.example.com" - ], - "grants": [ - "GRANT_AUTHORIZATION_CODE" - ], + "redirect_uris": ["https://thethings.example.com"], + "grants": ["GRANT_AUTHORIZATION_CODE"], "rights": [ "RIGHT_GATEWAY_ALL", "RIGHT_ORGANIZATION_GATEWAYS_CREATE", @@ -188,7 +181,6 @@ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $API_ {{< /tabs/container >}} - #### Additional information For more details on how obtain access token from an approved OAuth client, consult the [oauth access tokens]({{< ref "/api/concepts/auth/oauth-access-tokens" >}}) section. diff --git a/doc/content/the-things-stack/interact/adding-oauth-clients/create-oauth-client.png b/doc/content/concepts/advanced/adding-oauth-clients/create-oauth-client.png similarity index 100% rename from doc/content/the-things-stack/interact/adding-oauth-clients/create-oauth-client.png rename to doc/content/concepts/advanced/adding-oauth-clients/create-oauth-client.png diff --git a/doc/content/the-things-stack/interact/adding-oauth-clients/grant-rights-for-oauth-client.png b/doc/content/concepts/advanced/adding-oauth-clients/grant-rights-for-oauth-client.png similarity index 100% rename from doc/content/the-things-stack/interact/adding-oauth-clients/grant-rights-for-oauth-client.png rename to doc/content/concepts/advanced/adding-oauth-clients/grant-rights-for-oauth-client.png diff --git a/doc/content/the-things-stack/interact/adding-oauth-clients/oauth-client.png b/doc/content/concepts/advanced/adding-oauth-clients/oauth-client.png similarity index 100% rename from doc/content/the-things-stack/interact/adding-oauth-clients/oauth-client.png rename to doc/content/concepts/advanced/adding-oauth-clients/oauth-client.png diff --git a/doc/content/the-things-stack/management/telemetry/_index.md b/doc/content/concepts/advanced/metrics/_index.md similarity index 98% rename from doc/content/the-things-stack/management/telemetry/_index.md rename to doc/content/concepts/advanced/metrics/_index.md index d114194984..42e084790d 100644 --- a/doc/content/the-things-stack/management/telemetry/_index.md +++ b/doc/content/concepts/advanced/metrics/_index.md @@ -1,7 +1,7 @@ --- -title: 'Telemetry' -description: '' -aliases: [/reference/telemetry] +title: "Metrics" +description: "" +aliases: [/reference/telemetry, /the-things-stack/management/telemetry] --- {{% tts %}} exports [Prometheus](https://prometheus.io/) telemetry on the `/metrics` endpoint. This reference gives an overview of the most important metrics. diff --git a/doc/content/the-things-stack/management/purge/_index.md b/doc/content/concepts/advanced/purge/_index.md similarity index 91% rename from doc/content/the-things-stack/management/purge/_index.md rename to doc/content/concepts/advanced/purge/_index.md index 07eac38f42..b2a6c098bf 100644 --- a/doc/content/the-things-stack/management/purge/_index.md +++ b/doc/content/concepts/advanced/purge/_index.md @@ -2,10 +2,10 @@ title: "Deleting, Restoring and Purging Entities" description: "" weight: -aliases: [/reference/purge] +aliases: [/reference/purge, /the-things-stack/management/purge] --- -When entities are deleted, {{% tts %}} [retains some IDs]({{< ref "reference/id-eui-constraints" >}}) by default to prevent another user re-registering the ID and obtaining historical data. Deleted entities can be restored within a limited time period, but it is also possible for administrators to purge these entities, so that their IDs may be reused. +When entities are deleted, {{% tts %}} [retains some IDs]({{< ref "/concepts/architecture/id-eui-constraints" >}}) by default to prevent another user re-registering the ID and obtaining historical data. Deleted entities can be restored within a limited time period, but it is also possible for administrators to purge these entities, so that their IDs may be reused. This reference contains information about how to do delete, restore and purge entities. @@ -76,11 +76,11 @@ When entities are deleted from {{% tts %}} Cloud, there is a default time period ```bash error:pkg/identityserver:restore_window_expired (this entity can no longer be restored) -``` +``` In this case, entity can only be purged by an administrator and then recreated. -For {{% tts %}} Enterprise deployments, it is possible to configure the restoration period. For more info, check [Identity Server Options]({{< ref "/reference/configuration/identity-server#general-options" >}}). +For {{% tts %}} Enterprise deployments, it is possible to configure the restoration period. For more info, check [Identity Server Options]({{< ref "/enterprise/management/configuration/identity-server#general-options" >}}). Note again that restoring entities is not possible if they have been purged. @@ -129,6 +129,7 @@ Purging entities using the Console or the CLI is usually most convenient, so tho {{< tabs/tab "Console" >}} There are two ways to purge an entity: + - Go to the **General Settings** tab of the entity and click **Delete**. If you are an administrator, you will be presented with the option to purge the entity. Check the **Also release entity IDs** box to also purge the entity. {{< figure src="purge.png" >}} diff --git a/doc/content/the-things-stack/management/purge/delete.png b/doc/content/concepts/advanced/purge/delete.png similarity index 100% rename from doc/content/the-things-stack/management/purge/delete.png rename to doc/content/concepts/advanced/purge/delete.png diff --git a/doc/content/the-things-stack/management/purge/purge.png b/doc/content/concepts/advanced/purge/purge.png similarity index 100% rename from doc/content/the-things-stack/management/purge/purge.png rename to doc/content/concepts/advanced/purge/purge.png diff --git a/doc/content/the-things-stack/management/purge/restore-app.png b/doc/content/concepts/advanced/purge/restore-app.png similarity index 100% rename from doc/content/the-things-stack/management/purge/restore-app.png rename to doc/content/concepts/advanced/purge/restore-app.png diff --git a/doc/content/reference/root-certificates/_index.md b/doc/content/concepts/advanced/root-certificates/_index.md similarity index 98% rename from doc/content/reference/root-certificates/_index.md rename to doc/content/concepts/advanced/root-certificates/_index.md index 1d8ae7717c..00337feee6 100644 --- a/doc/content/reference/root-certificates/_index.md +++ b/doc/content/concepts/advanced/root-certificates/_index.md @@ -1,6 +1,7 @@ --- title: "Root Certificates" description: "" +aliases: [/reference/root-certificates] --- This section contains links to common root SSL certificates used in {{% tts%}}, issued by trusted certificate authorities (CAs). diff --git a/doc/content/reference/root-certificates/ca.pem b/doc/content/concepts/advanced/root-certificates/ca.pem similarity index 100% rename from doc/content/reference/root-certificates/ca.pem rename to doc/content/concepts/advanced/root-certificates/ca.pem diff --git a/doc/content/reference/telemetry/_index.md b/doc/content/concepts/advanced/telemetry/_index.md similarity index 57% rename from doc/content/reference/telemetry/_index.md rename to doc/content/concepts/advanced/telemetry/_index.md index 4c71df931a..329becf9a6 100644 --- a/doc/content/reference/telemetry/_index.md +++ b/doc/content/concepts/advanced/telemetry/_index.md @@ -1,15 +1,15 @@ --- title: "Telemetry" description: "" -aliases: [/telemetry] +aliases: [/telemetry, /reference/telemetry] new_in_version: "3.27.1" --- -This section contains detailed information on telemetry collected by the [CLI]({{}}) and by each of {{% tts %}}\'s [components]({{}}). +This section contains detailed information on telemetry collected by the [CLI]({{}}) and by each of {{% tts %}}\'s [components]({{}}). -{{% tts %}}'s [CLI]({{}}) and [components]({{}}) have the ability to collect and send telemetry data to The Things Industries. We are interested in gaining insights on how users use {{% tts %}} in the field to give us a better idea on things that need improvement. +{{% tts %}}'s [CLI]({{}}) and [components]({{}}) have the ability to collect and send telemetry data to The Things Industries. We are interested in gaining insights on how users use {{% tts %}} in the field to give us a better idea on things that need improvement. {{% tts %}} does **not** collect, store and/or transmit personally identifiable information. All information collected is **anonymised** by {{% tts %}} before transmission. diff --git a/doc/content/reference/telemetry/cli.md b/doc/content/concepts/advanced/telemetry/cli.md similarity index 97% rename from doc/content/reference/telemetry/cli.md rename to doc/content/concepts/advanced/telemetry/cli.md index 512a13848d..a117fdd063 100644 --- a/doc/content/reference/telemetry/cli.md +++ b/doc/content/concepts/advanced/telemetry/cli.md @@ -1,7 +1,7 @@ --- title: "CLI Telemetry" description: "Telemetry data collection by The Things Stack' CLI" -aliases: "/telemetry/cli" +aliases: [/telemetry/cli, /reference/telemetry/cli] --- ## Configuring Telemetry Collection diff --git a/doc/content/reference/telemetry/identity_server.md b/doc/content/concepts/advanced/telemetry/identity_server.md similarity index 90% rename from doc/content/reference/telemetry/identity_server.md rename to doc/content/concepts/advanced/telemetry/identity_server.md index 1bb33a037d..670f2af589 100644 --- a/doc/content/reference/telemetry/identity_server.md +++ b/doc/content/concepts/advanced/telemetry/identity_server.md @@ -1,14 +1,14 @@ --- title: "Identity Server Telemetry" description: "Telemetry data collection by The Things Stack's Identity Server" -aliases: "/telemetry/identity-server" +aliases: [/telemetry/identity-server, /reference/telemetry/identity-server] --- ## Configuring Telemetry Collection Telemetry collection is **enabled** by default for **{{% tts %}} Open Source** distribution. -In order to disable it, set `telemetry.enable` to `false` in the [{{% tts %}} configuration]({{< ref "reference/configuration" >}}): +In order to disable it, set `telemetry.enable` to `false` in the [{{% tts %}} configuration]({{< ref "/enterprise/management/configuration" >}}): ```yaml telemetry: @@ -23,7 +23,7 @@ When the Identity Server starts the background task responsible for collecting a UID is the SHA512 hash of `console.ui[IS,GS,NS,AS,JS].BaseURL` values. {{< note >}} -If you want the telemetry collector to use a different list of elements, there is an option to set your own list of values used in the SHA512 hash creation. Edit [{{% tts %}}'s configuration]({{< ref "reference/configuration" >}}) and set `telemetry.uid-elements` to a list of string values of your choice. +If you want the telemetry collector to use a different list of elements, there is an option to set your own list of values used in the SHA512 hash creation. Edit [{{% tts %}}'s configuration]({{< ref "/enterprise/management/configuration" >}}) and set `telemetry.uid-elements` to a list of string values of your choice. ```yaml # Example diff --git a/doc/content/the-things-stack/management/user-management/_index.md b/doc/content/concepts/advanced/user-management/_index.md similarity index 86% rename from doc/content/the-things-stack/management/user-management/_index.md rename to doc/content/concepts/advanced/user-management/_index.md index 75afafbc7b..5f3cf0dc1f 100644 --- a/doc/content/the-things-stack/management/user-management/_index.md +++ b/doc/content/concepts/advanced/user-management/_index.md @@ -1,7 +1,12 @@ --- -title: "Users and Organizations" +title: "Working with Users and Organizations" description: "" -aliases: [/user-management, /getting-started/user-management] +aliases: + [ + /user-management, + /getting-started/user-management, + /the-things-stack/management/user-management, + ] weight: 13 --- @@ -21,7 +26,7 @@ In addition to the written instructions linked below, a video with instructions - Manage users in the network (or the tenant, for multi-tenant deployments) - Manage the tenant configuration in multi-tenant deployments -- Have all rights on all entities in the tenants (or most rights, depending on [Admin Rights Options]({{< ref "/reference/configuration/identity-server#admin-rights-options" >}})) +- Have all rights on all entities in the tenants (or most rights, depending on [Admin Rights Options]({{< ref "/enterprise/management/configuration/identity-server#admin-rights-options" >}})) - Search for all entities in the network - Perform any actions on all entities in the network - Manage some admin-only fields of OAuth clients and users diff --git a/doc/content/the-things-stack/management/user-management/org/_index.md b/doc/content/concepts/advanced/user-management/org/_index.md similarity index 82% rename from doc/content/the-things-stack/management/user-management/org/_index.md rename to doc/content/concepts/advanced/user-management/org/_index.md index c00906e4c4..91cd86dcf8 100644 --- a/doc/content/the-things-stack/management/user-management/org/_index.md +++ b/doc/content/concepts/advanced/user-management/org/_index.md @@ -1,7 +1,13 @@ --- title: "Organization Management" description: "" -aliases: [/the-things-stack/management/user-management/cli/org, /the-things-stack/management/user-management/console/org, /getting-started/user-management/org/] +aliases: + [ + /concepts/advanced/user-management/cli/org, + /concepts/advanced/user-management/console/org, + /getting-started/user-management/org/, + /the-things-stack/management/user-management/org, + ] --- This section contains instructions for managing organizations. @@ -12,7 +18,7 @@ To make it easier to manage groups of users, it is possible to create organizati When a user is a collaborator of an organization which is a collaborator for an entity, the user's rights are the intersection of the user's rights in the organization and the organization's rights on the entity. -In this section, we explain how to manage organizations and grant them rights using {{% tts %}} [Console]({{< ref "/the-things-stack/interact/console" >}}) and the [CLI]({{< ref "/the-things-stack/interact/cli" >}}). +In this section, we explain how to manage organizations and grant them rights using {{% tts %}} [Console]({{< ref "/concepts/features/console" >}}) and the [CLI]({{< ref "/concepts/features/cli" >}}). {{< tabs/container "Console" "CLI" >}} @@ -90,20 +96,22 @@ ttn-lw-cli organizations list ``` ```json -[{ - "ids": { - "organization_id": "org1" - }, - "created_at": "2020-07-09T12:39:35.129Z", - "updated_at": "2020-07-09T12:39:35.129Z" -} -, { - "ids": { - "organization_id": "org2" +[ + { + "ids": { + "organization_id": "org1" + }, + "created_at": "2020-07-09T12:39:35.129Z", + "updated_at": "2020-07-09T12:39:35.129Z" }, - "created_at": "2020-07-14T09:37:01.938Z", - "updated_at": "2020-07-14T09:37:01.938Z" -}] + { + "ids": { + "organization_id": "org2" + }, + "created_at": "2020-07-14T09:37:01.938Z", + "updated_at": "2020-07-14T09:37:01.938Z" + } +] ``` ### Searching for Organizations @@ -117,18 +125,20 @@ ttn-lw-cli organizations search --id-contains $ORGANIZATION_ID Output: ```json -[{ - "ids": { - "organization_id": "org1" - }, - "created_at": "2020-07-09T12:39:35.129Z", - "updated_at": "2020-07-09T12:39:35.129Z" -}] +[ + { + "ids": { + "organization_id": "org1" + }, + "created_at": "2020-07-09T12:39:35.129Z", + "updated_at": "2020-07-09T12:39:35.129Z" + } +] ``` ### Adding Users to Organizations -To add a user to an organization, use the `organizations collaborators set` command. This will add user `user1` as a collaborator of organization `org1` with all organization rights: +To add a user to an organization, use the `organizations collaborators set` command. This will add user `user1` as a collaborator of organization `org1` with all organization rights: ```bash ttn-lw-cli organizations collaborators set --organization-id $ORGANIZATION_ID --user-id $USER_ID --right-organization-all @@ -138,7 +148,7 @@ You must specify rights when adding a collaborator. Use the `--help` flag to see ### Removing Users from Organizations -To remove a user from an organization, use the `organizations collaborators delete` command: +To remove a user from an organization, use the `organizations collaborators delete` command: ```bash ttn-lw-cli organizations collaborators delete --organization-id $ORGANIZATION_ID --user-id $USER_ID diff --git a/doc/content/the-things-stack/management/user-management/org/add-org.png b/doc/content/concepts/advanced/user-management/org/add-org.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/org/add-org.png rename to doc/content/concepts/advanced/user-management/org/add-org.png diff --git a/doc/content/the-things-stack/management/user-management/org/organization-api-key-creation.png b/doc/content/concepts/advanced/user-management/org/organization-api-key-creation.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/org/organization-api-key-creation.png rename to doc/content/concepts/advanced/user-management/org/organization-api-key-creation.png diff --git a/doc/content/the-things-stack/management/user-management/org/organization-api-keys.png b/doc/content/concepts/advanced/user-management/org/organization-api-keys.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/org/organization-api-keys.png rename to doc/content/concepts/advanced/user-management/org/organization-api-keys.png diff --git a/doc/content/the-things-stack/management/user-management/org/orgs.png b/doc/content/concepts/advanced/user-management/org/orgs.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/org/orgs.png rename to doc/content/concepts/advanced/user-management/org/orgs.png diff --git a/doc/content/the-things-stack/management/user-management/rights/_index.md b/doc/content/concepts/advanced/user-management/rights/_index.md similarity index 91% rename from doc/content/the-things-stack/management/user-management/rights/_index.md rename to doc/content/concepts/advanced/user-management/rights/_index.md index ba1dff4164..34d64c0af2 100644 --- a/doc/content/the-things-stack/management/user-management/rights/_index.md +++ b/doc/content/concepts/advanced/user-management/rights/_index.md @@ -1,7 +1,13 @@ --- title: "Rights Management" description: "" -aliases: [/the-things-stack/management/user-management/cli/rights, /the-things-stack/management/user-management/console/rights, /getting-started/user-management/rights] +aliases: + [ + /concepts/advanced/user-management/cli/rights, + /concepts/advanced/user-management/console/rights, + /getting-started/user-management/rights, + /the-things-stack/management/user-management/rights, + ] --- This section contains instructions for managing rights. diff --git a/doc/content/the-things-stack/management/user-management/rights/collaborators.png b/doc/content/concepts/advanced/user-management/rights/collaborators.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/rights/collaborators.png rename to doc/content/concepts/advanced/user-management/rights/collaborators.png diff --git a/doc/content/the-things-stack/management/user-management/rights/rights.png b/doc/content/concepts/advanced/user-management/rights/rights.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/rights/rights.png rename to doc/content/concepts/advanced/user-management/rights/rights.png diff --git a/doc/content/the-things-stack/management/user-management/troubleshooting/_index.md b/doc/content/concepts/advanced/user-management/troubleshooting/_index.md similarity index 88% rename from doc/content/the-things-stack/management/user-management/troubleshooting/_index.md rename to doc/content/concepts/advanced/user-management/troubleshooting/_index.md index ef290fa77b..b33cef159e 100644 --- a/doc/content/the-things-stack/management/user-management/troubleshooting/_index.md +++ b/doc/content/concepts/advanced/user-management/troubleshooting/_index.md @@ -1,7 +1,11 @@ --- title: "Troubleshooting User Management" description: "" -aliases: [/getting-started/user-management/troubleshooting] +aliases: + [ + /getting-started/user-management/troubleshooting, + /the-things-stack/management/user-management/troubleshooting, + ] --- This section provides help for common issues and frequently asked questions you may have when managing users, organizations and right. diff --git a/doc/content/the-things-stack/management/user-management/user/_index.md b/doc/content/concepts/advanced/user-management/user/_index.md similarity index 83% rename from doc/content/the-things-stack/management/user-management/user/_index.md rename to doc/content/concepts/advanced/user-management/user/_index.md index 8dfe7b1425..fafffb5882 100644 --- a/doc/content/the-things-stack/management/user-management/user/_index.md +++ b/doc/content/concepts/advanced/user-management/user/_index.md @@ -1,7 +1,13 @@ --- title: "User Management" description: "" -aliases: [/the-things-stack/management/user-management/cli/user, /the-things-stack/management/user-management/console/user, /getting-started/user-management/user] +aliases: + [ + /concepts/advanced/user-management/cli/user, + /concepts/advanced/user-management/console/user, + /getting-started/user-management/user, + /the-things-stack/management/user-management/user, + ] --- This section contains instructions for managing users. @@ -111,6 +117,7 @@ Please confirm password:*************** "state": "STATE_APPROVED" } ``` + ### Inviting Users @@ -130,14 +137,17 @@ After you do this, you will be able to list the invitations you've sent:
Output ```json -[{ - "email": "colleague@thethings.network", - "token": "MW7INQWYOE46GLP3AEFQEHR5XIKRYPSRAXFF3CUCLIQPPQ3BNBLQ", - "expires_at": "2019-12-26T11:41:29.485Z", - "created_at": "2019-12-19T11:41:29.486Z", - "updated_at": "2019-12-19T11:41:29.486Z" -}] +[ + { + "email": "colleague@thethings.network", + "token": "MW7INQWYOE46GLP3AEFQEHR5XIKRYPSRAXFF3CUCLIQPPQ3BNBLQ", + "expires_at": "2019-12-26T11:41:29.485Z", + "created_at": "2019-12-19T11:41:29.486Z", + "updated_at": "2019-12-19T11:41:29.486Z" + } +] ``` +
You will also be able to delete an invitation if you want to revoke it: @@ -157,23 +167,27 @@ ttn-lw-cli users list --name --state --admin
Output ```json -[{ - "ids": { - "user_id": "new-user" +[ + { + "ids": { + "user_id": "new-user" + }, + "created_at": "2019-12-19T09:10:31.426Z", + "updated_at": "2019-12-19T09:10:40.527Z", + "name": "New User" }, - "created_at": "2019-12-19T09:10:31.426Z", - "updated_at": "2019-12-19T09:10:40.527Z", - "name": "New User" -}, { - "ids": { - "user_id": "admin" - }, - "created_at": "2019-12-18T14:54:12.723Z", - "updated_at": "2019-12-18T14:54:12.723Z", - "state": "STATE_APPROVED", - "admin": true -}] + { + "ids": { + "user_id": "admin" + }, + "created_at": "2019-12-18T14:54:12.723Z", + "updated_at": "2019-12-18T14:54:12.723Z", + "state": "STATE_APPROVED", + "admin": true + } +] ``` +
Use the pagination flags `--limit` and `--page` when there are many users. @@ -189,15 +203,18 @@ ttn-lw-cli users search --id-contains new --name
Output ```json -[{ - "ids": { - "user_id": "new-user" - }, - "created_at": "2019-12-19T09:10:31.426Z", - "updated_at": "2019-12-19T09:10:40.527Z", - "name": "New User" -}] +[ + { + "ids": { + "user_id": "new-user" + }, + "created_at": "2019-12-19T09:10:31.426Z", + "updated_at": "2019-12-19T09:10:40.527Z", + "name": "New User" + } +] ``` +
Use the pagination flags `--limit` and `--page` when there are many users. @@ -223,6 +240,7 @@ ttn-lw-cli users update new-user --state APPROVED --admin true "admin": true } ``` + ### Deleting Users diff --git a/doc/content/the-things-stack/management/user-management/user/dropdown.png b/doc/content/concepts/advanced/user-management/user/dropdown.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/user/dropdown.png rename to doc/content/concepts/advanced/user-management/user/dropdown.png diff --git a/doc/content/the-things-stack/management/user-management/user/users-delete.png b/doc/content/concepts/advanced/user-management/user/users-delete.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/user/users-delete.png rename to doc/content/concepts/advanced/user-management/user/users-delete.png diff --git a/doc/content/the-things-stack/management/user-management/user/users-edit.png b/doc/content/concepts/advanced/user-management/user/users-edit.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/user/users-edit.png rename to doc/content/concepts/advanced/user-management/user/users-edit.png diff --git a/doc/content/the-things-stack/management/user-management/user/users-list.png b/doc/content/concepts/advanced/user-management/user/users-list.png similarity index 100% rename from doc/content/the-things-stack/management/user-management/user/users-list.png rename to doc/content/concepts/advanced/user-management/user/users-list.png diff --git a/doc/content/concepts/architecture/_index.md b/doc/content/concepts/architecture/_index.md new file mode 100644 index 0000000000..2f8ff284de --- /dev/null +++ b/doc/content/concepts/architecture/_index.md @@ -0,0 +1,49 @@ +--- +title: "Architecture" +description: "This section explains the architecture and components of The Things Stack" +weight: 1 +aliases: [the-things-stack/concepts/architecture] +--- + +{{% tts %}} follows an API driven microservice architecture, well suited for high availability and reliability. + + + +{{< figure src="tts-architecture.jpeg" alt="The Things Stack Architecture" >}} + +{{% tts %}} has the following main components. + +
+ +| Component (Service) | Short | Description | +| ---------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Gateway Server | `GS` | Maintains connections with gateways supporting the Basic Station, UDP, MQTT and gRPC protocols. It forwards uplink traffic to Network Servers directly or indirectly, and schedules downlink traffic on gateways. | +| Network Server | `NS` | Handles the LoRaWAN® network layer, including MAC commands, regional parameters and adaptive data rate (ADR). | +| Application Server | `AS` | Handles the LoRaWAN application layer, including uplink data decryption and decoding, downlink queuing and downlink data encoding and encryption. | +| Identity Server | `IS` | Provides the registries that store entities such as applications with their end devices, gateways, users, organizations, OAuth clients and authentication providers. It also manages access control through memberships and API keys. | +| Join Server | `JS` | Handles the LoRaWAN join flow, including Network and Application Server authentication and session key generation. | +| Device Claiming Server | `DCS` | Allows users to claim devices and gateways in a secure manner. | +| Gateway Configuration Server | `GCS` | Generates configuration files for UDP gateways and manages gateway configuration and firmware updates for Basic Station and The Things Kickstarter gateways. | +| Packet Broker Agent | `PBA` | Connects The Things Stack with Packet Broker for exchanging traffic with other networks. | +| Network Operations Center | `NOC` | Provides aggregated insight in a network operated with The Things Stack. | +| Console | NA | Is the web application used to interact with The Things Stack. | + +
+ +
+{{% tts %}} also has the following additional/supporting components. +
+ +
+ +| Component (Service) | Short | Description | +| ------------------------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Tenant Billing Server | `TBS` | Manages the creation, suspension and billing of tenants using different payment backends (only for {{% tts %}} cloud). | +| QR Generator | `QRG` | Generates QR codes for devices in various formats. These QR codes can be used for various purposes, including identification and device claiming to transfer ownership. | +| Device Template Converter | `DTC` | Converts data to device templates for migrating networks and importing vendor-specific data. | + +
+ +If you want more detailed information on each component, check the [components reference]({{< relref "components" >}}) section. + +Now that the architecture is introduced, let's take a look at the various methods to interact with {{% tts %}}. diff --git a/doc/content/reference/components/_index.md b/doc/content/concepts/architecture/components/_index.md similarity index 72% rename from doc/content/reference/components/_index.md rename to doc/content/concepts/architecture/components/_index.md index 30cc4e51de..e2da8bd1f7 100644 --- a/doc/content/reference/components/_index.md +++ b/doc/content/concepts/architecture/components/_index.md @@ -1,7 +1,7 @@ --- title: "Components" description: "" -aliases: [/components] +aliases: [/components, /reference/components] --- This section contains detailed descriptions of each of {{% tts %}} components. diff --git a/doc/content/reference/components/alert-routing-server.md b/doc/content/concepts/architecture/components/alert-routing-server.md similarity index 82% rename from doc/content/reference/components/alert-routing-server.md rename to doc/content/concepts/architecture/components/alert-routing-server.md index 84abf5e65a..456ad50e41 100644 --- a/doc/content/reference/components/alert-routing-server.md +++ b/doc/content/concepts/architecture/components/alert-routing-server.md @@ -3,6 +3,7 @@ title: "Alert Routing Server" description: "" distributions: ["Enterprise", "Cloud"] new_in_version: "3.30.0" +aliases: [/reference/components/alert-routing-server] --- The Alert Routing Server dispatches alerts about network components in {{% tts %}}. @@ -15,7 +16,7 @@ The Alert Routing Server deals only with the dispatching alert notifications. Th The Alert Routing Server looks up the alert notification profile associated with the entity related to the alert notification. If no profile is associated with the entity, the default alert notification profile is used. If no default alert notification profile is present, the alert notification is dropped. -For every alert notification receiver, a dedicated alert notification is generated and stored in a [FIFO](https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics)) queue. These notifications are will be sent in order to the alert notification receiver. The delivery will be automatically retried, for a fixed number of times. +For every alert notification receiver, a dedicated alert notification is generated and stored in a [FIFO]() queue. These notifications are will be sent in order to the alert notification receiver. The delivery will be automatically retried, for a fixed number of times. ## Alert Generators diff --git a/doc/content/reference/components/application-details-full.png b/doc/content/concepts/architecture/components/application-details-full.png similarity index 100% rename from doc/content/reference/components/application-details-full.png rename to doc/content/concepts/architecture/components/application-details-full.png diff --git a/doc/content/reference/components/application-server.md b/doc/content/concepts/architecture/components/application-server.md similarity index 91% rename from doc/content/reference/components/application-server.md rename to doc/content/concepts/architecture/components/application-server.md index aec10ecb05..ea5e055647 100644 --- a/doc/content/reference/components/application-server.md +++ b/doc/content/concepts/architecture/components/application-server.md @@ -1,6 +1,7 @@ --- title: "Application Server" description: "" +aliases: [/reference/components/application-server] --- The Application Server handles the LoRaWAN® application layer, including uplink data decryption and decoding, downlink queuing and downlink data encoding and encryption. @@ -19,7 +20,7 @@ Applications can connect to an Application Server by exchanging JSON messages ov The upstream messages do not only contain data uplink messages, but also join-accepts and downlink events, on separate topics. -See [Application Server MQTT server]({{< ref "/integrations/mqtt" >}}) for more information. +See [Application Server MQTT server]({{< ref "/integrations/other-integrations/mqtt" >}}) for more information. ### HTTP Webhooks diff --git a/doc/content/reference/components/best-rssi-ed.png b/doc/content/concepts/architecture/components/best-rssi-ed.png similarity index 100% rename from doc/content/reference/components/best-rssi-ed.png rename to doc/content/concepts/architecture/components/best-rssi-ed.png diff --git a/doc/content/reference/components/channel-utilization-ed.png b/doc/content/concepts/architecture/components/channel-utilization-ed.png similarity index 100% rename from doc/content/reference/components/channel-utilization-ed.png rename to doc/content/concepts/architecture/components/channel-utilization-ed.png diff --git a/doc/content/reference/components/console.md b/doc/content/concepts/architecture/components/console.md similarity index 69% rename from doc/content/reference/components/console.md rename to doc/content/concepts/architecture/components/console.md index d6db41d4ec..7bf681d3ea 100644 --- a/doc/content/reference/components/console.md +++ b/doc/content/concepts/architecture/components/console.md @@ -1,7 +1,7 @@ --- title: "Console" description: "" -aliases: [/components/console] +aliases: [/components/console, /reference/components/console] --- The Console is the management application of {{% tts %}} for LoRaWAN. It is a web application which can be used to register applications, end devices or gateways, monitor network traffic, or configure network related options, among other things. The Console uses an OAuth access token to communicate with {{% tts %}}. @@ -10,4 +10,4 @@ The Console is the management application of {{% tts %}} for LoRaWAN. It is a we {{< figure src="../console_overview.png" alt="Console" >}} -See the [Console Getting Started guide]({{< ref "/the-things-stack/interact/console" >}}), for detailed instructions regarding the Console. +See the [Console Getting Started guide]({{< ref "/concepts/features/console" >}}), for detailed instructions regarding the Console. diff --git a/doc/content/reference/components/console_overview.png b/doc/content/concepts/architecture/components/console_overview.png similarity index 100% rename from doc/content/reference/components/console_overview.png rename to doc/content/concepts/architecture/components/console_overview.png diff --git a/doc/content/reference/components/device-claiming-server.md b/doc/content/concepts/architecture/components/device-claiming-server.md similarity index 75% rename from doc/content/reference/components/device-claiming-server.md rename to doc/content/concepts/architecture/components/device-claiming-server.md index 2f34426e59..b9cb58fdbd 100644 --- a/doc/content/reference/components/device-claiming-server.md +++ b/doc/content/concepts/architecture/components/device-claiming-server.md @@ -1,6 +1,7 @@ --- title: "Device Claiming Server" description: "" +aliases: [/reference/components/device-claiming-server] --- The Device Claiming Server allows users to claim devices and gateways in a secure manner. @@ -9,4 +10,4 @@ The Device Claiming Server allows users to claim devices and gateways in a secur The Device Claiming Server takes care of checking verifying ownership and transferring the device or gateway from a source to a target security domain. -For more information about claiming end devices, see [Device Claiming]({{< ref "/devices/concepts/device-claiming" >}}). +For more information about claiming end devices, see [Device Claiming]({{< ref "/hardware/devices/concepts/device-claiming" >}}). diff --git a/doc/content/reference/components/device-statistics.png b/doc/content/concepts/architecture/components/device-statistics.png similarity index 100% rename from doc/content/reference/components/device-statistics.png rename to doc/content/concepts/architecture/components/device-statistics.png diff --git a/doc/content/reference/components/device-template-converter.md b/doc/content/concepts/architecture/components/device-template-converter.md similarity index 58% rename from doc/content/reference/components/device-template-converter.md rename to doc/content/concepts/architecture/components/device-template-converter.md index 0cc8e358f2..dcb3e3ac5f 100644 --- a/doc/content/reference/components/device-template-converter.md +++ b/doc/content/concepts/architecture/components/device-template-converter.md @@ -1,11 +1,15 @@ --- title: "Device Template Converter" description: "" -aliases: [/components/device-template-converter] +aliases: + [ + /components/device-template-converter, + /reference/components/device-template-converter, + ] --- The Device Template Converter converts data to device templates for migrating networks and importing vendor-specific data. -Device Template Converter is typically used when migration devices. [Learn about device migration]({{< ref "/the-things-stack/migrating" >}}). +Device Template Converter is typically used when migration devices. [Learn about device migration]({{< ref "/concepts/migration" >}}). diff --git a/doc/content/reference/components/end-device-details.png b/doc/content/concepts/architecture/components/end-device-details.png similarity index 100% rename from doc/content/reference/components/end-device-details.png rename to doc/content/concepts/architecture/components/end-device-details.png diff --git a/doc/content/reference/components/gateway-channel-utilization.png b/doc/content/concepts/architecture/components/gateway-channel-utilization.png similarity index 100% rename from doc/content/reference/components/gateway-channel-utilization.png rename to doc/content/concepts/architecture/components/gateway-channel-utilization.png diff --git a/doc/content/reference/components/gateway-configuration-server.md b/doc/content/concepts/architecture/components/gateway-configuration-server.md similarity index 93% rename from doc/content/reference/components/gateway-configuration-server.md rename to doc/content/concepts/architecture/components/gateway-configuration-server.md index 19842eef96..d41695cdb4 100644 --- a/doc/content/reference/components/gateway-configuration-server.md +++ b/doc/content/concepts/architecture/components/gateway-configuration-server.md @@ -1,7 +1,11 @@ --- title: "Gateway Configuration Server" description: "" -aliases: [/components/gateway-configuration-server] +aliases: + [ + /components/gateway-configuration-server, + /reference/components/gateway-configuration-server, + ] --- The Gateway Configuration Server (GCS) generates configuration files for UDP gateways and manages gateway configuration and firmware updates for Basic Station and The Things Kickstarter gateways. diff --git a/doc/content/reference/components/gateway-details-dashboard.png b/doc/content/concepts/architecture/components/gateway-details-dashboard.png similarity index 100% rename from doc/content/reference/components/gateway-details-dashboard.png rename to doc/content/concepts/architecture/components/gateway-details-dashboard.png diff --git a/doc/content/reference/components/gateway-packets-per-channel.png b/doc/content/concepts/architecture/components/gateway-packets-per-channel.png similarity index 100% rename from doc/content/reference/components/gateway-packets-per-channel.png rename to doc/content/concepts/architecture/components/gateway-packets-per-channel.png diff --git a/doc/content/reference/components/gateway-packets-per-data-rate.png b/doc/content/concepts/architecture/components/gateway-packets-per-data-rate.png similarity index 100% rename from doc/content/reference/components/gateway-packets-per-data-rate.png rename to doc/content/concepts/architecture/components/gateway-packets-per-data-rate.png diff --git a/doc/content/reference/components/gateway-rssi.png b/doc/content/concepts/architecture/components/gateway-rssi.png similarity index 100% rename from doc/content/reference/components/gateway-rssi.png rename to doc/content/concepts/architecture/components/gateway-rssi.png diff --git a/doc/content/reference/components/gateway-server.md b/doc/content/concepts/architecture/components/gateway-server.md similarity index 97% rename from doc/content/reference/components/gateway-server.md rename to doc/content/concepts/architecture/components/gateway-server.md index 38afe545ff..d5630af159 100644 --- a/doc/content/reference/components/gateway-server.md +++ b/doc/content/concepts/architecture/components/gateway-server.md @@ -1,7 +1,7 @@ --- title: "Gateway Server" description: "" -aliases: [/components/gateway-server] +aliases: [/components/gateway-server, /reference/components/gateway-server] --- The Gateway Server maintains connections with gateways supporting the Basic Station, UDP, MQTT and gRPC protocols. It forwards uplink traffic to Network Servers directly or indirectly, and schedules downlink traffic on gateways. @@ -10,7 +10,7 @@ The Gateway Server maintains connections with gateways supporting the Basic Stat ## Connectivity -Gateways can connect to Gateway Servers over multiple protocols. See [Networking]({{< ref "/the-things-stack/concepts/networking" >}}). +Gateways can connect to Gateway Servers over multiple protocols. See [Networking]({{< ref "/concepts/networking" >}}). ### Basic Station Protocol diff --git a/doc/content/reference/components/gateway-traffic.png b/doc/content/concepts/architecture/components/gateway-traffic.png similarity index 100% rename from doc/content/reference/components/gateway-traffic.png rename to doc/content/concepts/architecture/components/gateway-traffic.png diff --git a/doc/content/reference/components/gateway-uptime.png b/doc/content/concepts/architecture/components/gateway-uptime.png similarity index 100% rename from doc/content/reference/components/gateway-uptime.png rename to doc/content/concepts/architecture/components/gateway-uptime.png diff --git a/doc/content/reference/components/gateways-seen.png b/doc/content/concepts/architecture/components/gateways-seen.png similarity index 100% rename from doc/content/reference/components/gateways-seen.png rename to doc/content/concepts/architecture/components/gateways-seen.png diff --git a/doc/content/reference/components/identity-server.md b/doc/content/concepts/architecture/components/identity-server.md similarity index 98% rename from doc/content/reference/components/identity-server.md rename to doc/content/concepts/architecture/components/identity-server.md index d385149fdb..b3274edb4d 100644 --- a/doc/content/reference/components/identity-server.md +++ b/doc/content/concepts/architecture/components/identity-server.md @@ -1,7 +1,7 @@ --- title: "Identity Server" description: "" -aliases: [/components/identity-server] +aliases: [/components/identity-server, /reference/components/identity-server] --- The Identity Server provides the registries that store entities such as applications with their end devices, gateways, users, organizations, OAuth clients and authentication providers. It also manages access control through memberships and API keys. diff --git a/doc/content/reference/components/join-server.md b/doc/content/concepts/architecture/components/join-server.md similarity index 62% rename from doc/content/reference/components/join-server.md rename to doc/content/concepts/architecture/components/join-server.md index 37fc0e6530..f38776d00f 100644 --- a/doc/content/reference/components/join-server.md +++ b/doc/content/concepts/architecture/components/join-server.md @@ -1,7 +1,7 @@ --- title: "Join Server" description: "" -aliases: [/components/join-server] +aliases: [/components/join-server, /reference/components/join-server] --- The Join Server handles the LoRaWAN® join flow, including Network and Application Server authentication and session key generation. @@ -10,13 +10,13 @@ The Join Server handles the LoRaWAN® join flow, including Network and Applicati ## Join procedure -Join Servers receive join-requests from [Network Servers]({{< ref "/reference/components/network-server.md" >}}) via gRPC and issue join-accepts for registered devices if join-request validation passes. +Join Servers receive join-requests from [Network Servers]({{< ref "/concepts/architecture/components/network-server.md" >}}) via gRPC and issue join-accepts for registered devices if join-request validation passes. -In case a join-request is accepted, the Join Server derives session security context, which contains the session keys and is identified by a session key ID. Join Servers encrypt derived network and application session keys using key encryption keys(KEKs) shared between [Network Servers]({{< ref "/reference/components/network-server.md" >}}) and [Application Servers]({{< ref "/reference/components/application-server.md" >}}) respectively and include the session keys in the join-accepts in encrypted form. +In case a join-request is accepted, the Join Server derives session security context, which contains the session keys and is identified by a session key ID. Join Servers encrypt derived network and application session keys using key encryption keys(KEKs) shared between [Network Servers]({{< ref "/concepts/architecture/components/network-server.md" >}}) and [Application Servers]({{< ref "/concepts/architecture/components/application-server.md" >}}) respectively and include the session keys in the join-accepts in encrypted form. ## Device Management -Join Servers expose [JsEndDeviceRegistry]({{< ref "/api/reference/grpc/end_device#the-jsenddeviceregistry-service" >}}) service for end device management. Typical clients of this service are [Console]({{< ref "/reference/components/console.md" >}}) and [CLI]({{< ref "/reference/components/cli.md" >}}). +Join Servers expose [JsEndDeviceRegistry]({{< ref "/api/reference/grpc/end_device#the-jsenddeviceregistry-service" >}}) service for end device management. Typical clients of this service are [Console]({{< ref "/concepts/architecture/components/console.md" >}}) and [CLI]({{< ref "/concepts/features/cli" >}}). Join Servers store device root and session keys. diff --git a/doc/content/reference/components/last-seen-ed.png b/doc/content/concepts/architecture/components/last-seen-ed.png similarity index 100% rename from doc/content/reference/components/last-seen-ed.png rename to doc/content/concepts/architecture/components/last-seen-ed.png diff --git a/doc/content/reference/components/network-operations-center.md b/doc/content/concepts/architecture/components/network-operations-center.md similarity index 97% rename from doc/content/reference/components/network-operations-center.md rename to doc/content/concepts/architecture/components/network-operations-center.md index 040c6d0bc9..e53942818d 100644 --- a/doc/content/reference/components/network-operations-center.md +++ b/doc/content/concepts/architecture/components/network-operations-center.md @@ -3,6 +3,7 @@ title: "Network Operations Center" description: "" distributions: ["Enterprise", "Cloud"] new_in_version: "3.21.0" +aliases: [/reference/components/network-operations-center] --- The Network Operations Center provides aggregated insight in a network operated with {{% tts %}}. @@ -78,9 +79,10 @@ The following is a brief description of each column in the table: - **Device ID**: displays IDs of all the end devices on the network. - **Application ID**: displays the application ID for each device. - **Last seen**: displays when the device last uplinked. -- **Last packet error rate**: displays the ratio between the number of missing frames and the total number of frames over an hour as a percentage. +- **Last packet error rate**: displays the ratio between the number of missing frames and the total number of frames over an hour as a percentage. ## Gateway Details Dashboard + The Gateway Details dashboard visualizes detailed insight into gateway statistics in the selected time period. {{< figure src="../gateway-details-dashboard.png" alt="gateway details dashboard" >}} @@ -103,7 +105,7 @@ It consists of the following panels: {{< figure src="../gateway-packets-per-channel.png" alt="packets per channel" >}} -**Channel utilization** - a graph that visualizes the percentage of total utilization on each channel over a time interval. For example, if we have sent 60 seconds of uplinks in a time period of 15 minutes, we have 60 / (15 * 60) = ~1.66% utilization. +**Channel utilization** - a graph that visualizes the percentage of total utilization on each channel over a time interval. For example, if we have sent 60 seconds of uplinks in a time period of 15 minutes, we have 60 / (15 \* 60) = ~1.66% utilization. {{< figure src="../gateway-channel-utilization.png" alt="channel utilization" >}} diff --git a/doc/content/reference/components/network-operations-center_overview.png b/doc/content/concepts/architecture/components/network-operations-center_overview.png similarity index 100% rename from doc/content/reference/components/network-operations-center_overview.png rename to doc/content/concepts/architecture/components/network-operations-center_overview.png diff --git a/doc/content/reference/components/network-server.md b/doc/content/concepts/architecture/components/network-server.md similarity index 94% rename from doc/content/reference/components/network-server.md rename to doc/content/concepts/architecture/components/network-server.md index 46bd80ebb1..693f8b26d4 100644 --- a/doc/content/reference/components/network-server.md +++ b/doc/content/concepts/architecture/components/network-server.md @@ -1,7 +1,7 @@ --- title: "Network Server" description: "" -aliases: [/components/network-server] +aliases: [/components/network-server, /reference/components/network-server] --- The Network Server handles the LoRaWAN® network layer, including MAC commands, regional parameters and adaptive data rate (ADR). @@ -10,7 +10,7 @@ The Network Server handles the LoRaWAN® network layer, including MAC commands, ## Device Management -Network Servers expose [NsEndDeviceRegistry]({{< ref "/api/reference/grpc/end_device#the-nsenddeviceregistry-service" >}}) service for end device management. Typical clients of this service are [Console]({{< relref "console.md" >}}) and [CLI]({{< relref "cli.md" >}}). +Network Servers expose [NsEndDeviceRegistry]({{< ref "/api/reference/grpc/end_device#the-nsenddeviceregistry-service" >}}) service for end device management. Typical clients of this service are [Console]({{< relref "console.md" >}}) and [CLI]({{< ref "/concepts/features/cli" >}}). Network Servers store device MAC configuration, MAC state and network session keys. @@ -51,7 +51,7 @@ If join-request is received: 1. Device is matched using the `DevEUI` and `JoinEUI` pair present in the join-request, which uniquely identifies the device. 2. New `DevAddr` is assigned to the device and new MAC state is derived for the device. 3. If [Join Server]({{< relref "join-server.md" >}}) is present in the cluster, Network Server sends a join-request message to the cluster-local [Join Server]({{< relref "join-server.md" >}}). -4. If [Join Server]({{< relref "join-server.md" >}}) is not present in the cluster or the device is not provisioned in the cluster-local [Join Server]({{< relref "join-server.md" >}}), Network Server sends a join-request message to the [Join Server]({{< relref "join-server.md" >}}) discovered via [interoperability configuration]({{< ref "/reference/interop-repository" >}}). +4. If [Join Server]({{< relref "join-server.md" >}}) is not present in the cluster or the device is not provisioned in the cluster-local [Join Server]({{< relref "join-server.md" >}}), Network Server sends a join-request message to the [Join Server]({{< relref "join-server.md" >}}) discovered via [interoperability configuration]({{< ref "/enterprise/join-server/interop-configuration" >}}). 5. If a [Join Server]({{< relref "join-server.md" >}}) accepted the join-request, join-accept message may be enqueued for the device and application-specific uplink messages carrying relevant information about join-accept is sent to linked [Application Server]({{< relref "application-server.md" >}}). ### Data uplink diff --git a/doc/content/reference/components/overview-dashboard.png b/doc/content/concepts/architecture/components/overview-dashboard.png similarity index 100% rename from doc/content/reference/components/overview-dashboard.png rename to doc/content/concepts/architecture/components/overview-dashboard.png diff --git a/doc/content/reference/components/overview.svg b/doc/content/concepts/architecture/components/overview.svg similarity index 100% rename from doc/content/reference/components/overview.svg rename to doc/content/concepts/architecture/components/overview.svg diff --git a/doc/content/reference/components/packet-broker-agent.md b/doc/content/concepts/architecture/components/packet-broker-agent.md similarity index 86% rename from doc/content/reference/components/packet-broker-agent.md rename to doc/content/concepts/architecture/components/packet-broker-agent.md index 01840a577a..20bf598ffc 100644 --- a/doc/content/reference/components/packet-broker-agent.md +++ b/doc/content/concepts/architecture/components/packet-broker-agent.md @@ -1,7 +1,8 @@ --- title: "Packet Broker Agent" description: "" -aliases: [/components/packet-broker-agent] +aliases: + [/components/packet-broker-agent, /reference/components/packet-broker-agent] --- Packet Broker Agent connects {{% tts %}} with Packet Broker for exchanging traffic with other networks. diff --git a/doc/content/reference/components/packet-error-rate-ed.png b/doc/content/concepts/architecture/components/packet-error-rate-ed.png similarity index 100% rename from doc/content/reference/components/packet-error-rate-ed.png rename to doc/content/concepts/architecture/components/packet-error-rate-ed.png diff --git a/doc/content/reference/components/packets-per-channel-app.png b/doc/content/concepts/architecture/components/packets-per-channel-app.png similarity index 100% rename from doc/content/reference/components/packets-per-channel-app.png rename to doc/content/concepts/architecture/components/packets-per-channel-app.png diff --git a/doc/content/reference/components/packets-per-channel-ed.png b/doc/content/concepts/architecture/components/packets-per-channel-ed.png similarity index 100% rename from doc/content/reference/components/packets-per-channel-ed.png rename to doc/content/concepts/architecture/components/packets-per-channel-ed.png diff --git a/doc/content/reference/components/packets-per-data-rate-ed.png b/doc/content/concepts/architecture/components/packets-per-data-rate-ed.png similarity index 100% rename from doc/content/reference/components/packets-per-data-rate-ed.png rename to doc/content/concepts/architecture/components/packets-per-data-rate-ed.png diff --git a/doc/content/reference/components/packets-per-data-rate.png b/doc/content/concepts/architecture/components/packets-per-data-rate.png similarity index 100% rename from doc/content/reference/components/packets-per-data-rate.png rename to doc/content/concepts/architecture/components/packets-per-data-rate.png diff --git a/doc/content/reference/components/session-age-ed.png b/doc/content/concepts/architecture/components/session-age-ed.png similarity index 100% rename from doc/content/reference/components/session-age-ed.png rename to doc/content/concepts/architecture/components/session-age-ed.png diff --git a/doc/content/reference/components/tenant-billing-server.md b/doc/content/concepts/architecture/components/tenant-billing-server.md similarity index 85% rename from doc/content/reference/components/tenant-billing-server.md rename to doc/content/concepts/architecture/components/tenant-billing-server.md index 94d932f32b..5776eda504 100644 --- a/doc/content/reference/components/tenant-billing-server.md +++ b/doc/content/concepts/architecture/components/tenant-billing-server.md @@ -2,6 +2,7 @@ title: "Tenant Billing Server" description: "" distributions: ["Cloud", "Enterprise"] +aliases: [/reference/components/tenant-billing-server] --- The Tenant Billing Server is an enterprise component that manages the creation, suspension and billing of tenants using different payment backends. It requires a license with multi-tenancy support. @@ -10,15 +11,15 @@ The Tenant Billing Server is an enterprise component that manages the creation, ## Backends -The Tenant Billing Server backends allow the Tenant Billing Server to manage multiple payment service providers at the same time. The backends themselves are stateless, and maintain tenant information using the tenant attributes. +The Tenant Billing Server backends allow the Tenant Billing Server to manage multiple payment service providers at the same time. The backends themselves are stateless, and maintain tenant information using the tenant attributes. ### Stripe -The [Stripe](https://stripe.com/) backend provides billing and tenant management support using Stripe's pricing plans using Stripe's webhook functionality. +The [Stripe](https://stripe.com/) backend provides billing and tenant management support using Stripe's pricing plans using Stripe's webhook functionality. -Tenants are created when a customer subscribes to a pricing plan which is enabled in the backend configuration. As long as the customer maintains their subscription and their payments are up to date, the tenant remains active. As soon as the subscription ends, the tenant is suspended until another subscription is created for the same customer. If the customer subscription is changed to a different pricing plan, the tenant will be upgraded automatically as well. +Tenants are created when a customer subscribes to a pricing plan which is enabled in the backend configuration. As long as the customer maintains their subscription and their payments are up to date, the tenant remains active. As soon as the subscription ends, the tenant is suspended until another subscription is created for the same customer. If the customer subscription is changed to a different pricing plan, the tenant will be upgraded automatically as well. -See [Modeling subscriptions](https://stripe.com/docs/billing/subscriptions/modeling) for more information about Stripe products, pricing plans and subscriptions. You can also refer to the [Billing with Stripe]({{< ref "/reference/stripe" >}}) guide which covers the creation of products, pricing plans and subscriptions in Stripe. +See [Modeling subscriptions](https://stripe.com/docs/billing/subscriptions/modeling) for more information about Stripe products, pricing plans and subscriptions. You can also refer to the [Billing with Stripe]({{< ref "/enterprise/management/stripe" >}}) guide which covers the creation of products, pricing plans and subscriptions in Stripe. #### Pricing Plans diff --git a/doc/content/reference/id-eui-constraints/index.md b/doc/content/concepts/architecture/id-eui-constraints/index.md similarity index 98% rename from doc/content/reference/id-eui-constraints/index.md rename to doc/content/concepts/architecture/id-eui-constraints/index.md index 7cb6023322..b7f9b5cf45 100644 --- a/doc/content/reference/id-eui-constraints/index.md +++ b/doc/content/concepts/architecture/id-eui-constraints/index.md @@ -1,6 +1,7 @@ --- title: "ID and EUI Constraints" description: "" +aliases: [/reference/id-eui-constraints] --- This reference explains how {{% tts %}} deals with IDs and EUIs, including regular expression requirements, uniqueness, and how deletion is handled. diff --git a/doc/content/reference/last-activity/_index.md b/doc/content/concepts/architecture/last-activity/_index.md similarity index 98% rename from doc/content/reference/last-activity/_index.md rename to doc/content/concepts/architecture/last-activity/_index.md index d94a1b9dac..232eb2117a 100644 --- a/doc/content/reference/last-activity/_index.md +++ b/doc/content/concepts/architecture/last-activity/_index.md @@ -1,6 +1,7 @@ --- title: "Last Activity" description: "" +aliases: [/reference/last-activity] --- This guide provides some in depth information about how the **Last activity** values in the entity overviews of the Console are calculated. diff --git a/doc/content/the-things-stack/concepts/architecture/tts-architecture.jpeg b/doc/content/concepts/architecture/tts-architecture.jpeg similarity index 100% rename from doc/content/the-things-stack/concepts/architecture/tts-architecture.jpeg rename to doc/content/concepts/architecture/tts-architecture.jpeg diff --git a/doc/content/concepts/features/_index.md b/doc/content/concepts/features/_index.md new file mode 100644 index 0000000000..99335a4c41 --- /dev/null +++ b/doc/content/concepts/features/_index.md @@ -0,0 +1,8 @@ +--- +title: "Features" +description: "" +weight: 2 +aliases: [/the-things-stack/interact] +--- + +This section gives an overview of the key features of The Things Stack. diff --git a/doc/content/the-things-stack/alerting/_index.md b/doc/content/concepts/features/alerting/_index.md similarity index 81% rename from doc/content/the-things-stack/alerting/_index.md rename to doc/content/concepts/features/alerting/_index.md index c11cb1817a..f7f7f0de20 100644 --- a/doc/content/the-things-stack/alerting/_index.md +++ b/doc/content/concepts/features/alerting/_index.md @@ -1,9 +1,8 @@ --- -title: "Alerting in The Things Stack" +title: "Alerting" description: "" -distributions: ["Enterprise", "Cloud"] -new_in_version: "3.30.0" -weight: 8 +distributions: ["Cloud"] +aliases: [/the-things-stack/alerting/gateway-connectivity-outages] --- Alerting in {{% tts %}} refers to notifications which are sent when certain conditions are met, usually signaling anomalous behavior exhibited by end devices or gateways. diff --git a/doc/content/the-things-stack/alerting/gateway-connectivity-outages/_index.md b/doc/content/concepts/features/alerting/gateway-connectivity-outages/_index.md similarity index 93% rename from doc/content/the-things-stack/alerting/gateway-connectivity-outages/_index.md rename to doc/content/concepts/features/alerting/gateway-connectivity-outages/_index.md index 341de2e49d..b990ce92ba 100644 --- a/doc/content/the-things-stack/alerting/gateway-connectivity-outages/_index.md +++ b/doc/content/concepts/features/alerting/gateway-connectivity-outages/_index.md @@ -1,8 +1,9 @@ --- title: "Gateway connectivity outages" description: "" -distributions: ["Enterprise", "Cloud"] +distributions: ["Cloud"] new_in_version: "3.30.0" +aliases: [/the-things-stack/alerting/gateway-connectivity-outages] weight: 3 --- diff --git a/doc/content/the-things-stack/alerting/gateway-connectivity-outages/set-profile.png b/doc/content/concepts/features/alerting/gateway-connectivity-outages/set-profile.png similarity index 100% rename from doc/content/the-things-stack/alerting/gateway-connectivity-outages/set-profile.png rename to doc/content/concepts/features/alerting/gateway-connectivity-outages/set-profile.png diff --git a/doc/content/the-things-stack/alerting/receivers-and-profiles/_index.md b/doc/content/concepts/features/alerting/receivers-and-profiles/_index.md similarity index 95% rename from doc/content/the-things-stack/alerting/receivers-and-profiles/_index.md rename to doc/content/concepts/features/alerting/receivers-and-profiles/_index.md index 14066b40ac..175a7a45f8 100644 --- a/doc/content/the-things-stack/alerting/receivers-and-profiles/_index.md +++ b/doc/content/concepts/features/alerting/receivers-and-profiles/_index.md @@ -1,8 +1,9 @@ --- title: "Receiving alert notifications" description: "" -distributions: ["Enterprise", "Cloud"] +distributions: ["Cloud"] new_in_version: "3.30.0" +aliases: [/the-things-stack/alerting/receivers-and-profiles] weight: 2 --- diff --git a/doc/content/the-things-stack/alerting/receivers-and-profiles/profile.png b/doc/content/concepts/features/alerting/receivers-and-profiles/profile.png similarity index 100% rename from doc/content/the-things-stack/alerting/receivers-and-profiles/profile.png rename to doc/content/concepts/features/alerting/receivers-and-profiles/profile.png diff --git a/doc/content/the-things-stack/alerting/receivers-and-profiles/receiver.png b/doc/content/concepts/features/alerting/receivers-and-profiles/receiver.png similarity index 100% rename from doc/content/the-things-stack/alerting/receivers-and-profiles/receiver.png rename to doc/content/concepts/features/alerting/receivers-and-profiles/receiver.png diff --git a/doc/content/reference/components/cli.md b/doc/content/concepts/features/cli/_index.md similarity index 71% rename from doc/content/reference/components/cli.md rename to doc/content/concepts/features/cli/_index.md index 96562c6dc4..9276ec31b3 100644 --- a/doc/content/reference/components/cli.md +++ b/doc/content/concepts/features/cli/_index.md @@ -1,16 +1,37 @@ --- title: "Command-line Interface" description: "" -aliases: [/components/cli] +aliases: + [ + /guides/concepts/features/cli, + /getting-started/cli, + /the-things-stack/interact/cli, + ] +weight: -2 --- -The Command-line Interface (CLI) provides a cross-platform interface for managing components through the command-line. +Although the web interface of {{% tts %}} (the Console) currently has support for all basic features of {{% tts %}}, for more advanced actions, you may need to use the Command-Line Interface (CLI). +The {{% tts %}} Command-line Interface (CLI) provides a cross-platform tool for managing components through the command-line. +This section contains instructions for installing, configuring, and logging in with the CLI, so you can use it with your {{% tts %}} deployment. + +To use the CLI, you need to complete three steps: + +1. [Install the CLI]({{< relref "installing-cli" >}}) +2. [Configure the CLI]({{< relref "configuring-cli" >}}) +3. [Login with the CLI]({{< relref "login" >}}) + +If you need help with any CLI command, use the `--help` flag to get a list of subcommands, flags and their description and aliases. + +For a complete list of CLI commands, see the [CLI reference]({{< ref "/concepts/features/cli" >}}). + +For troubleshooting common CLI errors, see the [Troubleshooting CLI]({{< relref "troubleshooting" >}}) section. + ## Configuration -See the [Configuration Reference]({{< ref "/reference/configuration" >}}) for details on how the CLI can be configured. The different options are detailed in the [CLI Configuration Reference]({{< ref "/reference/configuration/cli.md" >}}). +See the [Configuration Reference]({{< ref "/enterprise/management/configuration" >}}) for details on how the CLI can be configured. The different options are detailed in the [CLI Configuration Reference]({{< ref "/enterprise/management/configuration/cli.md" >}}). ## Help for Commands @@ -54,7 +75,7 @@ All other flags correspond to the fields of the entity, as can be seen with the ### Getting or Listing Entities -When getting a single entity or listing entities, you need to provide flags for selecting the fields to fetch from the server. For performance reasons, list commands only allow a subset of fields (the fields stored in the [Identity Server]({{< relref "identity-server.md" >}})). +When getting a single entity or listing entities, you need to provide flags for selecting the fields to fetch from the server. For performance reasons, list commands only allow a subset of fields (the fields stored in the [Identity Server]({{< ref "/concepts/architecture/components/identity-server" >}})). ### Updating Entities @@ -78,12 +99,12 @@ API keys can be `create`d, `list`ed, `update`d and `delete`d. Creating an API ke ## Uplink Traffic -The CLI can be used to subscribe to uplink traffic. See the [Getting Started guide]({{< ref "/the-things-stack/interact/cli" >}}) for more details. +The CLI can be used to subscribe to uplink traffic. See the [Getting Started guide]({{< ref "/concepts/features/cli" >}}) for more details. ## Downlink Queue -The CLI can manage the downlink queue of end devices. See the [Downlink Queue Operations guide]({{< ref "/devices/configuring-devices/downlink-queue-ops" >}}) for more details. +The CLI can manage the downlink queue of end devices. See the [Downlink Queue Operations guide]({{< ref "/hardware/devices/configuring-devices/downlink-queue-ops" >}}) for more details. ## Events -The CLI can be used to subscribe to events. See the [Events guide]({{< ref "/the-things-stack/management/events" >}}) for more details. +The CLI can be used to subscribe to events. See the [Events guide]({{< ref "/concepts/features/events" >}}) for more details. diff --git a/doc/content/the-things-stack/interact/cli/configuring-cli/_index.md b/doc/content/concepts/features/cli/configuring-cli/_index.md similarity index 89% rename from doc/content/the-things-stack/interact/cli/configuring-cli/_index.md rename to doc/content/concepts/features/cli/configuring-cli/_index.md index 696572aedc..efe0b5c1f2 100644 --- a/doc/content/the-things-stack/interact/cli/configuring-cli/_index.md +++ b/doc/content/concepts/features/cli/configuring-cli/_index.md @@ -2,7 +2,11 @@ title: "Configuring the CLI" description: "" weight: 2 -aliases: [/getting-started/cli/configuring-cli/] +aliases: + [ + /getting-started/cli/configuring-cli/, + /the-things-stack/interact/cli/configuring-cli, + ] --- {{% tts %}} CLI needs to be configured to connect to your {{% tts %}} deployment. @@ -39,7 +43,7 @@ If you are using {{% tts %}} Cloud use the following command with your `tenant i ttn-lw-cli use ..cloud.thethings.industries ``` -If you are hosting your own deployment, use the following, replacing `thethings.example.com` with your [server address]({{< ref "the-things-stack/concepts/server-addresses" >}}): +If you are hosting your own deployment, use the following, replacing `thethings.example.com` with your [server address]({{< ref "/concepts/server-addresses" >}}): ```bash ttn-lw-cli use thethings.example.com @@ -49,7 +53,7 @@ ttn-lw-cli use thethings.example.com {{< tabs/tab "Enterprise" >}} -If you are hosting your own deployment, use the following, replacing `thethings.example.com` with your [server address]({{< ref "the-things-stack/concepts/server-addresses" >}}): +If you are hosting your own deployment, use the following, replacing `thethings.example.com` with your [server address]({{< ref "/concepts/server-addresses" >}}): ```bash tti-lw-cli use thethings.example.com @@ -87,11 +91,11 @@ If the deployment is using a CA that is not already trusted by your system, use tti-lw-cli use thethings.example.com --fetch-ca ``` -If you are using a [custom certificate authority]({{< ref "/the-things-stack/host/docker/certificates#custom-certificate-authority" >}}), you will have to specify the path to the CA file with `--ca="/path/to/ca.pem"` flag when running the CLI. +If you are using a [custom certificate authority]({{< ref "/enterprise/docker/certificates#custom-certificate-authority" >}}), you will have to specify the path to the CA file with `--ca="/path/to/ca.pem"` flag when running the CLI. If the configuration file already exists and you run the command to generate it again, it will not be overwritten by default and an error will be printed instead. Use `--overwrite` to overwrite the existing configuration file. -You can also use the `--grpc-port` and `--oauth-server-address` flags to override the default values for the gRPC port and the OAuth server address. Note that these are not needed for standard deployments. An example of having to specify the `--oauth-server-address` is if you are using an `https` port other than `443`, for example if you are [running {{% tts %}} on localhost]({{< ref "/the-things-stack/host/docker/configuration#running-the-things-stack-as-localhost" >}}). In case of running {{% tts %}} on localhost, you need to append `--oauth-server-address="https://localhost:8885/oauth` when running the CLI. +You can also use the `--grpc-port` and `--oauth-server-address` flags to override the default values for the gRPC port and the OAuth server address. Note that these are not needed for standard deployments. An example of having to specify the `--oauth-server-address` is if you are using an `https` port other than `443`, for example if you are [running {{% tts %}} on localhost]({{< ref "/enterprise/docker/configuration#running-the-things-stack-as-localhost" >}}). In case of running {{% tts %}} on localhost, you need to append `--oauth-server-address="https://localhost:8885/oauth` when running the CLI. ### Manually create configuration file @@ -99,7 +103,7 @@ It is also possible to manually create a configuration file. For most configurat To manually configure, first create a `.ttn-lw-cli.yml` file. -Copy and paste the following contents in the `.ttn-lw-cli.yml` file, replacing `thethings.example.com` with the [server addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) of each component: +Copy and paste the following contents in the `.ttn-lw-cli.yml` file, replacing `thethings.example.com` with the [server addresses]({{< ref "/concepts/server-addresses" >}}) of each component: ```yaml oauth-server-address: "https://thethings.example.com/oauth" @@ -126,7 +130,7 @@ If your deployment uses a custom certificate authority, you will need to specify ca: /path/to/ca.pem ``` -For advanced options, see the [Configuration Reference]({{< ref "/reference/configuration/cli" >}}). +For advanced options, see the [Configuration Reference]({{< ref "/enterprise/management/configuration/cli" >}}). ## Step 2 - Configure the CLI diff --git a/doc/content/the-things-stack/interact/cli/installing-cli/_index.md b/doc/content/concepts/features/cli/installing-cli/_index.md similarity index 94% rename from doc/content/the-things-stack/interact/cli/installing-cli/_index.md rename to doc/content/concepts/features/cli/installing-cli/_index.md index 40e3db4ace..49d25e467d 100644 --- a/doc/content/the-things-stack/interact/cli/installing-cli/_index.md +++ b/doc/content/concepts/features/cli/installing-cli/_index.md @@ -2,7 +2,11 @@ title: "Installing the CLI" description: "" weight: 1 -aliases: [/getting-started/cli/installing-cli/] +aliases: + [ + /getting-started/cli/installing-cli/, + /the-things-stack/interact/cli/installing-cli, + ] --- This section contains instructions for installing the command-line interface. @@ -111,7 +115,7 @@ Now you can run the CLI using `tti-lw-cli` in your terminal. ### Windows -No package manager is available for Windows. Follow instructions in the [Installing using pre-built binaries]({{< ref "/the-things-stack/interact/cli/installing-cli#installing-using-pre-built-binaries" >}}) section below to download the [pre-built binaries](https://github.com/TheThingsNetwork/lorawan-stack/releases) for Windows based on the processor architecture. +No package manager is available for Windows. Follow instructions in the [Installing using pre-built binaries]({{< ref "/concepts/features/cli/installing-cli#installing-using-pre-built-binaries" >}}) section below to download the [pre-built binaries](https://github.com/TheThingsNetwork/lorawan-stack/releases) for Windows based on the processor architecture. Note that Windows binaries must be run with a `.exe` extension on the end, so if an example uses `ttn-lw-cli`, that will be `ttn-lw-cli.exe` on Windows. diff --git a/doc/content/the-things-stack/interact/cli/installing-cli/binaries.png b/doc/content/concepts/features/cli/installing-cli/binaries.png similarity index 100% rename from doc/content/the-things-stack/interact/cli/installing-cli/binaries.png rename to doc/content/concepts/features/cli/installing-cli/binaries.png diff --git a/doc/content/the-things-stack/interact/cli/login/_index.md b/doc/content/concepts/features/cli/login/_index.md similarity index 94% rename from doc/content/the-things-stack/interact/cli/login/_index.md rename to doc/content/concepts/features/cli/login/_index.md index 8436abb190..4ff361498d 100644 --- a/doc/content/the-things-stack/interact/cli/login/_index.md +++ b/doc/content/concepts/features/cli/login/_index.md @@ -2,7 +2,7 @@ title: "Login with the CLI" description: "" weight: 2 -aliases: [/getting-started/cli/login] +aliases: [/getting-started/cli/login, /the-things-stack/interact/cli/login] --- This section explains how to login to {{% tts %}} using the command-line interface. diff --git a/doc/content/the-things-stack/interact/cli/troubleshooting/_index.md b/doc/content/concepts/features/cli/troubleshooting/_index.md similarity index 69% rename from doc/content/the-things-stack/interact/cli/troubleshooting/_index.md rename to doc/content/concepts/features/cli/troubleshooting/_index.md index 747187bba7..5fcad4070e 100644 --- a/doc/content/the-things-stack/interact/cli/troubleshooting/_index.md +++ b/doc/content/concepts/features/cli/troubleshooting/_index.md @@ -1,7 +1,8 @@ --- title: "Troubleshooting CLI" description: "" -aliases: [/getting-started/cli/troubleshooting] +aliases: + [/getting-started/cli/troubleshooting, /concepts/features/cli/troubleshooting] weight: 3 --- @@ -11,19 +12,19 @@ This section contains help for common errors encountered when using the CLI. ## Unauthenticated -If the [CLI login]({{< ref "/the-things-stack/interact/cli/login" >}}) wasn't successful, the user will face the following error when trying to execute CLI commands: +If the [CLI login]({{< ref "/concepts/features/cli/login" >}}) wasn't successful, the user will face the following error when trying to execute CLI commands: ``` error:cmd/ttn-lw-cli/commands:unauthenticated (not authenticated with either API key or OAuth access token) ``` -If you face this error, make sure you have properly [created a CLI configuration file]({{< ref "/the-things-stack/interact/cli/configuring-cli/#step-1---create-a-configuration-file" >}}) and [configured the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli/#step-2---configure-the-cli" >}}) for your {{% tts %}} instance. +If you face this error, make sure you have properly [created a CLI configuration file]({{< ref "/concepts/features/cli/configuring-cli/#step-1---create-a-configuration-file" >}}) and [configured the CLI]({{< ref "/concepts/features/cli/configuring-cli/#step-2---configure-the-cli" >}}) for your {{% tts %}} instance. -Keep in mind that there are two CLI versions, `ttn-lw-cli` and `tti-lw-cli`, intended for users of different {{% tts %}} distributions, as mentioned in [Installing the CLI guide]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}). You might face this error, for example, if you install `tti-lw-cli` and try to perform some action using `ttn-lw-cli`, or vice versa. +Keep in mind that there are two CLI versions, `ttn-lw-cli` and `tti-lw-cli`, intended for users of different {{% tts %}} distributions, as mentioned in [Installing the CLI guide]({{< ref "/concepts/features/cli/installing-cli" >}}). You might face this error, for example, if you install `tti-lw-cli` and try to perform some action using `ttn-lw-cli`, or vice versa. ## Faulty OAuth Server Address -In the [CLI configuration file]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}), the server address is set to `thethings.example.com` by default. If you do not change this server address to the address of your own deployment, using `ttn-lw-cli login` command will redirect to `https://thethings.example.com/oauth/authorize?client_id=cli&redirect_uri=local-callback&response_type=code` in your web browser, where the CLI needs to be authorized for exchanging an access token. +In the [CLI configuration file]({{< ref "/concepts/features/cli/configuring-cli" >}}), the server address is set to `thethings.example.com` by default. If you do not change this server address to the address of your own deployment, using `ttn-lw-cli login` command will redirect to `https://thethings.example.com/oauth/authorize?client_id=cli&redirect_uri=local-callback&response_type=code` in your web browser, where the CLI needs to be authorized for exchanging an access token. Since your server address is most likely different than `thethings.example.com`, you will see an error about that URL not being found in your browser, the access token will not be obtained and you will not be able to execute any further CLI commands. In your terminal, you will see something like: @@ -39,7 +40,7 @@ You will experience the same issue if you are using an `https` port other than ` ## Certificate Signed by Unknown Authority -If the CA file path is not specified in the [CLI configuration file]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) (or with `--ca` flag when running the CLI), or if you are using self-signed certificates, using `ttn-lw-cli login` might result in the following error: +If the CA file path is not specified in the [CLI configuration file]({{< ref "/concepts/features/cli/configuring-cli" >}}) (or with `--ca` flag when running the CLI), or if you are using self-signed certificates, using `ttn-lw-cli login` might result in the following error: ``` ERROR Could not exchange OAuth access token error=Post "https://thethings.example.com:8885/oauth/token": x509: certificate signed by unknown authority @@ -65,7 +66,7 @@ If a user (specified with the `--user-id` flag) does not have sufficient rights error:pkg/auth/rights:insufficient_application_rights (insufficient rights for application `app1`) ``` -See [Users and Organizations]({{< ref "/the-things-stack/management/user-management" >}}) section for more info on rights management. +See [Users and Organizations]({{< ref "/concepts/advanced/user-management" >}}) section for more info on rights management. ## Invalid Identifiers @@ -78,7 +79,7 @@ name=GatewayIdentifiersValidationError reason=value does not match regex pattern "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" ``` -See [ID and EUI Constraints]({{< ref "reference/id-eui-constraints" >}}) section for more info. +See [ID and EUI Constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) section for more info. ## Setting Multiple Boolean Parameters @@ -105,7 +106,7 @@ ttn-lw-cli gateways set --location-public=false --status-public=fal ## Server Address Mismatch -If you [configure {{% tts %}} CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) to use one cluster server address (for example `eu1`) and try to perform actions on the entities registered in other cluster (for example `au1`), you will probably face the following error: +If you [configure {{% tts %}} CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) to use one cluster server address (for example `eu1`) and try to perform actions on the entities registered in other cluster (for example `au1`), you will probably face the following error: ``` error:cmd/ttn-lw-cli/commands:end_device_server_address_mismatch (Network/Application/Join Server address mismatch) @@ -113,4 +114,4 @@ error:cmd/ttn-lw-cli/commands:end_device_server_address_mismatch (Network/Applic If you want to perform operations on the entities registered in `a certain` cluster, then you need to ensure the CLI `is configured with server addresses for that` cluster. -Keep in mind that Identity Server and OAuth addresses are always in `eu1` cluster, as described [here]({{< ref "/the-things-stack/cloud/addresses#command-line-interface" >}}). +Keep in mind that Identity Server and OAuth addresses are always in `eu1` cluster, as described [here]({{< ref "/concepts/server-addresses#command-line-interface" >}}). diff --git a/doc/content/the-things-stack/interact/console/_index.md b/doc/content/concepts/features/console/_index.md similarity index 59% rename from doc/content/the-things-stack/interact/console/_index.md rename to doc/content/concepts/features/console/_index.md index fc59e4d3a7..28ff3b391a 100644 --- a/doc/content/the-things-stack/interact/console/_index.md +++ b/doc/content/concepts/features/console/_index.md @@ -1,11 +1,16 @@ --- title: "Console" description: "" -aliases: [/guides/the-things-stack/interact/console, /getting-started/console] +aliases: + [ + /guides/concepts/console, + /getting-started/console, + /concepts/featuresconsole, + ] weight: -3 --- -The Console is the management application of {{% tts %}} for LoRaWAN. It is a web application which can be used to register applications, end devices or gateways, monitor network traffic, or configure network related options, among other things. +{{% tts %}} Console is the management application of {{% tts %}} for LoRaWAN. It is a web application which can be used to register applications, end devices or gateways, monitor network traffic, or configure network related options, among other things. @@ -25,18 +30,18 @@ https://.<

-See [Cloud Addresses]({{< ref "/the-things-stack/cloud/addresses" >}}) for more information about cluster addresses. +See [Cloud Addresses]({{< ref "/cloud/addresses" >}}) for more information about cluster addresses. ## {{% ttss %}} If you are using {{% ttss %}}, the Console is available at `cloud.thethings.network`. -Visit the addresses page for [{{% ttss %}}]({{< ref "reference/ttn/addresses" >}}) for more information. +Visit the addresses page for [{{% ttss %}}]({{< ref "/concepts/ttn/addresses" >}}) for more information. ## {{% tts %}} Enterprise and Open Source If you are hosting your own deployment, the Console is available at the address you host {{% tts %}} at. -See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) to learn more. +See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) to learn more. Once you have access to the Console, proceed to [Login]({{< relref "login" >}}). diff --git a/doc/content/the-things-stack/interact/console/console.png b/doc/content/concepts/features/console/console.png similarity index 100% rename from doc/content/the-things-stack/interact/console/console.png rename to doc/content/concepts/features/console/console.png diff --git a/doc/content/the-things-stack/interact/console/login/_index.md b/doc/content/concepts/features/console/login/_index.md similarity index 93% rename from doc/content/the-things-stack/interact/console/login/_index.md rename to doc/content/concepts/features/console/login/_index.md index 79bd08fc81..7551fb2066 100644 --- a/doc/content/the-things-stack/interact/console/login/_index.md +++ b/doc/content/concepts/features/console/login/_index.md @@ -2,7 +2,7 @@ title: "Login" description: "" weight: 1 -aliases: [/getting-started/console/login] +aliases: [/getting-started/console/login, /concepts/console/login] --- The Console needs to be logged in to create gateways, applications, devices and API keys. In this section, learn how to login into the Console. diff --git a/doc/content/the-things-stack/interact/console/login/front.png b/doc/content/concepts/features/console/login/front.png similarity index 100% rename from doc/content/the-things-stack/interact/console/login/front.png rename to doc/content/concepts/features/console/login/front.png diff --git a/doc/content/the-things-stack/interact/console/login/login.png b/doc/content/concepts/features/console/login/login.png similarity index 100% rename from doc/content/the-things-stack/interact/console/login/login.png rename to doc/content/concepts/features/console/login/login.png diff --git a/doc/content/the-things-stack/interact/console/login/overview.png b/doc/content/concepts/features/console/login/overview.png similarity index 100% rename from doc/content/the-things-stack/interact/console/login/overview.png rename to doc/content/concepts/features/console/login/overview.png diff --git a/doc/content/the-things-stack/interact/console/login/register.png b/doc/content/concepts/features/console/login/register.png similarity index 100% rename from doc/content/the-things-stack/interact/console/login/register.png rename to doc/content/concepts/features/console/login/register.png diff --git a/doc/content/the-things-stack/interact/console/personal-settings/_index.md b/doc/content/concepts/features/console/personal-settings/_index.md similarity index 94% rename from doc/content/the-things-stack/interact/console/personal-settings/_index.md rename to doc/content/concepts/features/console/personal-settings/_index.md index a177841c14..c9645b8711 100644 --- a/doc/content/the-things-stack/interact/console/personal-settings/_index.md +++ b/doc/content/concepts/features/console/personal-settings/_index.md @@ -1,7 +1,13 @@ --- title: "Personal Settings" description: "" -aliases: [/getting-started/console/profile-settings,/the-things-stack/interact/console/profile-settings, /getting-started/console/personal-settings] +aliases: + [ + /getting-started/console/profile-settings, + /concepts/console/profile-settings, + /getting-started/console/personal-settings, + /concepts/featuresconsole/personal-settings, + ] weight: 1 --- diff --git a/doc/content/the-things-stack/interact/console/personal-settings/change-password.png b/doc/content/concepts/features/console/personal-settings/change-password.png similarity index 100% rename from doc/content/the-things-stack/interact/console/personal-settings/change-password.png rename to doc/content/concepts/features/console/personal-settings/change-password.png diff --git a/doc/content/the-things-stack/interact/console/personal-settings/general-settings.png b/doc/content/concepts/features/console/personal-settings/general-settings.png similarity index 100% rename from doc/content/the-things-stack/interact/console/personal-settings/general-settings.png rename to doc/content/concepts/features/console/personal-settings/general-settings.png diff --git a/doc/content/the-things-stack/interact/console/personal-settings/personal-api-key-creation.png b/doc/content/concepts/features/console/personal-settings/personal-api-key-creation.png similarity index 100% rename from doc/content/the-things-stack/interact/console/personal-settings/personal-api-key-creation.png rename to doc/content/concepts/features/console/personal-settings/personal-api-key-creation.png diff --git a/doc/content/the-things-stack/interact/console/personal-settings/profile-settings.png b/doc/content/concepts/features/console/personal-settings/profile-settings.png similarity index 100% rename from doc/content/the-things-stack/interact/console/personal-settings/profile-settings.png rename to doc/content/concepts/features/console/personal-settings/profile-settings.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/_index.md b/doc/content/concepts/features/console/tenant-settings/_index.md similarity index 89% rename from doc/content/the-things-stack/interact/console/tenant-settings/_index.md rename to doc/content/concepts/features/console/tenant-settings/_index.md index 7875082eb5..2ea0301a51 100644 --- a/doc/content/the-things-stack/interact/console/tenant-settings/_index.md +++ b/doc/content/concepts/features/console/tenant-settings/_index.md @@ -3,7 +3,11 @@ title: "Tenant Settings" description: "" weight: 1 distributions: ["Cloud", "Enterprise"] -aliases: [/getting-started/console/tenant-settings] +aliases: + [ + /getting-started/console/tenant-settings, + /concepts/featuresconsole/tenant-settings, + ] --- This section explains how to modify tenant settings in {{% tts %}} Console. @@ -74,12 +78,12 @@ The **Cooldown window** sets a time period after the deduplication window during Deduplication and cooldown windows affect the initial delay of uplink forwarding for the sake of collecting metadata and are typically modified to align this trade-off with network requirements. -**Device address prefixes** are used to generate the end device address of an end device when it joins to {{% tts %}} network. These prefixes are used to identify traffic from the associated network. When using [Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}), it may be required to reregister the network if the device address prefixes are changed. +**Device address prefixes** are used to generate the end device address of an end device when it joins to {{% tts %}} network. These prefixes are used to identify traffic from the associated network. When using [Packet Broker]({{< ref "/concepts/packet-broker" >}}), it may be required to reregister the network if the device address prefixes are changed. {{< figure src="network-settings.png" alt="Network settings" >}} ## Branding -If you want to customize the [Web UI Branding]({{< ref "the-things-stack/management/branding" >}}) of your tenant's Console, you need to provide the source of your branding assets. Paste the source URL into the **Branding base URL** field. +If you want to customize the [Web UI Branding]({{< ref "/cloud/branding" >}}) of your tenant's Console, you need to provide the source of your branding assets. Paste the source URL into the **Branding base URL** field. {{< figure src="branding.png" alt="Branding assets source URL" >}} diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/branding.png b/doc/content/concepts/features/console/tenant-settings/branding.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/branding.png rename to doc/content/concepts/features/console/tenant-settings/branding.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/network-settings.png b/doc/content/concepts/features/console/tenant-settings/network-settings.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/network-settings.png rename to doc/content/concepts/features/console/tenant-settings/network-settings.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/password-requirements.png b/doc/content/concepts/features/console/tenant-settings/password-requirements.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/password-requirements.png rename to doc/content/concepts/features/console/tenant-settings/password-requirements.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/tenant-settings.png b/doc/content/concepts/features/console/tenant-settings/tenant-settings.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/tenant-settings.png rename to doc/content/concepts/features/console/tenant-settings/tenant-settings.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/user-registration.png b/doc/content/concepts/features/console/tenant-settings/user-registration.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/user-registration.png rename to doc/content/concepts/features/console/tenant-settings/user-registration.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/user-rights.png b/doc/content/concepts/features/console/tenant-settings/user-rights.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/user-rights.png rename to doc/content/concepts/features/console/tenant-settings/user-rights.png diff --git a/doc/content/the-things-stack/interact/console/tenant-settings/user-uploads.png b/doc/content/concepts/features/console/tenant-settings/user-uploads.png similarity index 100% rename from doc/content/the-things-stack/interact/console/tenant-settings/user-uploads.png rename to doc/content/concepts/features/console/tenant-settings/user-uploads.png diff --git a/doc/content/the-things-stack/interact/console/troubleshooting/_index.md b/doc/content/concepts/features/console/troubleshooting/_index.md similarity index 86% rename from doc/content/the-things-stack/interact/console/troubleshooting/_index.md rename to doc/content/concepts/features/console/troubleshooting/_index.md index 5a6f18f917..2c6bb3dc04 100644 --- a/doc/content/the-things-stack/interact/console/troubleshooting/_index.md +++ b/doc/content/concepts/features/console/troubleshooting/_index.md @@ -1,10 +1,14 @@ --- title: "Troubleshooting Console" description: "" -aliases: [/getting-started/console/troubleshooting] +aliases: + [ + /getting-started/console/troubleshooting, + /concepts/featuresconsole/troubleshooting, + ] --- -This section provides help for common issues in {{% tts %}} Console. +This section provides help for common issues in {{% tts %}} Console. @@ -17,7 +21,7 @@ If these steps do not help you solve the issue, please collect your browser cons ## What does "Last activity/Last seen" mean? -See [Last Activity]({{< ref "reference/last-activity" >}}). +See [Last Activity]({{< ref "/concepts/architecture/last-activity" >}}). ## Common Errors @@ -33,7 +37,7 @@ In rare cases, this may also happen to ABP devices if a device resets its frame ### Entity Already Exists -An entity with this ID already exists. The entity may have been deleted, but {{% tts %}} retains deleted IDs so that they can not be reused, unless they are [purged]({{< ref "/the-things-stack/management/purge" >}}). See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for uniqueness requirements. +An entity with this ID already exists. The entity may have been deleted, but {{% tts %}} retains deleted IDs so that they can not be reused, unless they are [purged]({{< ref "/concepts/advanced/purge" >}}). See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for uniqueness requirements. ### Duplicate Uplink diff --git a/doc/content/the-things-stack/management/events/_index.md b/doc/content/concepts/features/events/_index.md similarity index 98% rename from doc/content/the-things-stack/management/events/_index.md rename to doc/content/concepts/features/events/_index.md index a7ba2bde77..85846dc873 100644 --- a/doc/content/the-things-stack/management/events/_index.md +++ b/doc/content/concepts/features/events/_index.md @@ -1,8 +1,8 @@ --- -title: "Working with Events" +title: "Gaining insights using Events" description: "" -weight: 15 -aliases: [/getting-started/events] +weight: 5 +aliases: [/getting-started/events, /the-things-stack/management/events] --- {{% tts %}} generates lots of events that allow you to get insight in what is going on. You can subscribe to application, gateway, end device events, as well as to user, organization and OAuth client events. @@ -184,13 +184,7 @@ See the events of a typical join flow in the example below: }, "rx_delay": 5, "cf_list": { - "freq": [ - 8671000, - 8673000, - 8675000, - 8677000, - 8679000 - ] + "freq": [8671000, 8673000, 8675000, 8677000, 8679000] }, "correlation_ids": [ "gs:conn:01G76RS17HGZZXV740X0N2XDV8", @@ -359,13 +353,7 @@ See the events of a typical join flow in the example below: }, "rx_delay": 5, "cf_list": { - "freq": [ - 8671000, - 8673000, - 8675000, - 8677000, - 8679000 - ] + "freq": [8671000, 8673000, 8675000, 8677000, 8679000] } } }, @@ -648,4 +636,5 @@ See the events of a typical join flow in the example below: } ] ``` + diff --git a/doc/content/concepts/features/lorawan/_index.md b/doc/content/concepts/features/lorawan/_index.md new file mode 100644 index 0000000000..8c8dbda43a --- /dev/null +++ b/doc/content/concepts/features/lorawan/_index.md @@ -0,0 +1,8 @@ +--- +title: "LoRaWAN" +description: "The Things Stack topics related to LoRaWAN" +weight: 5 +aliases: [/the-things-stack/concepts/spec-regional-parameters] +--- + +This section describes topics {{% tts %}} related to LoRaWAN. diff --git a/doc/content/reference/adr/_index.md b/doc/content/concepts/features/lorawan/adr/_index.md similarity index 95% rename from doc/content/reference/adr/_index.md rename to doc/content/concepts/features/lorawan/adr/_index.md index 6335cc3e78..46e5c559a8 100644 --- a/doc/content/reference/adr/_index.md +++ b/doc/content/concepts/features/lorawan/adr/_index.md @@ -1,6 +1,7 @@ --- title: "Adaptive Data Rate" description: "" +aliases: ["/reference/adr"] --- Adaptive Data Rate (ADR) is a mechanism for optimizing data rates, airtime and energy consumption in the network. @@ -50,7 +51,7 @@ The implementation is based on Semtech's recommended algorithm described in [thi ### Enable and Configure Dynamic Mode -To turn on {{% tts %}} ADR using the [CLI]({{< ref "/the-things-stack/interact/cli" >}}): +To turn on {{% tts %}} ADR using the [CLI]({{< ref "/concepts/features/cli" >}}): ```bash ttn-lw-cli end-devices set --application-id --device-id --mac-settings.adr.mode.dynamic @@ -62,7 +63,7 @@ Values of parameters like data rate index, transmission power index and number o ttn-lw-cli end-devices set --application-id --device-id --mac-settings.adr.mode.dynamic --mac-settings.adr.mode.dynamic.max-data-rate-index --mac-settings.adr.mode.dynamic.max tx-power-index --mac-settings.adr.mode.dynamic.max-nb-trans --mac-settings.adr.mode.dynamic.min-data-rate-index --mac-settings.adr.mode.dynamic.min tx-power-index --mac-settings.adr.mode.dynamic.min-nb-trans ``` -> Please note that `data_rate` in above and following commands is data rate index which can take values from 0-6 (referring to data rate sets DR0-DR6). For example, data rate index 0 implies using SF12 in EU868 freqeuncy plan, as explained [here](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/#eu863-870-data-rates). You can check out detailed info for your frequency plan in the [Regional Parameters specification]({{< ref "/the-things-stack/concepts/spec-regional-parameters" >}}). +> Please note that `data_rate` in above and following commands is data rate index which can take values from 0-6 (referring to data rate sets DR0-DR6). For example, data rate index 0 implies using SF12 in EU868 freqeuncy plan, as explained [here](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/#eu863-870-data-rates). You can check out detailed info for your frequency plan in the [Regional Parameters specification]({{< ref "/concepts/features/lorawan/version-support" >}}). ### Configure ADR Margin @@ -78,7 +79,7 @@ The Network Server uses the ADR margin of 15, but this value can be configured p ttn-lw-cli end-devices set --application-id --device-id --mac-settings.adr.mode.dynamic.margin ``` -Keep in mind that changes to `mac-settings.adr.mode.dynamic.` are persistent and will be present even after a device reset/rejoin. Read the [MAC Settings]({{< ref "/devices/configuring-devices/mac-settings" >}}) section for detailed info. +Keep in mind that changes to `mac-settings.adr.mode.dynamic.` are persistent and will be present even after a device reset/rejoin. Read the [MAC Settings]({{< ref "/hardware/devices/configuring-devices/mac-settings" >}}) section for detailed info. #### Examples @@ -266,17 +267,17 @@ curl -v -H "Content-Type: application/json" -H "Authorization: Bearer $API_KEY" ## Static Mode -Besides {{% tts %}} ADR mechanism described [above]({{< ref "/reference/adr#the-things-stack-adr-algorithm" >}}), {{% tts %}} also supports using a custom ADR, meaning ADR parameters (data rate, Tx power, number of transmissions per uplink frame) can be controlled manually. +Besides {{% tts %}} ADR mechanism described [above]({{< ref "/concepts/features/lorawan/adr#the-things-stack-adr-algorithm" >}}), {{% tts %}} also supports using a custom ADR, meaning ADR parameters (data rate, Tx power, number of transmissions per uplink frame) can be controlled manually. {{< note >}} We recommend to test the process described below on test devices before implementing it in production. {{}} -Before setting ADR parameters to desired values, you first need to turn off the default {{% tts %}} ADR mechanism. To turn off {{% tts %}} ADR using the [CLI]({{< ref "/the-things-stack/interact/cli" >}}): +Before setting ADR parameters to desired values, you first need to turn off the default {{% tts %}} ADR mechanism. To turn off {{% tts %}} ADR using the [CLI]({{< ref "/concepts/features/cli" >}}): ```bash ttn-lw-cli end-devices set --application-id --device-id --mac-settings.adr.mode.disabled ``` -> Please note that `data_rate` in above and following commands is data rate index which can take values from 0-6 (referring to data rate sets DR0-DR6). For example, data rate index 0 implies using SF12 in EU868 freqeuncy plan, as explained [here](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/#eu863-870-data-rates). You can check out detailed info for your frequency plan in the [Regional Parameters specification]({{< ref "/the-things-stack/concepts/spec-regional-parameters" >}}). +> Please note that `data_rate` in above and following commands is data rate index which can take values from 0-6 (referring to data rate sets DR0-DR6). For example, data rate index 0 implies using SF12 in EU868 freqeuncy plan, as explained [here](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/#eu863-870-data-rates). You can check out detailed info for your frequency plan in the [Regional Parameters specification]({{< ref "/concepts/features/lorawan/version-support" >}}). After {{% tts %}} ADR mechanism is disabled, the Network Server will no longer try to optimize ADR parameters. diff --git a/doc/content/reference/frequency-plans/_index.md b/doc/content/concepts/features/lorawan/frequency-plans/_index.md similarity index 94% rename from doc/content/reference/frequency-plans/_index.md rename to doc/content/concepts/features/lorawan/frequency-plans/_index.md index 1559768e36..4134f472b9 100644 --- a/doc/content/reference/frequency-plans/_index.md +++ b/doc/content/concepts/features/lorawan/frequency-plans/_index.md @@ -1,6 +1,7 @@ --- title: "Frequency Plans" description: "Frequency plans" +aliases: [/reference/frequency-plans] --- This reference contains Frequency Plans that are officially supported by {{% tts %}}. This list is populated from the [`lorawan-frequency-plans` Github repository](https://github.com/TheThingsNetwork/lorawan-frequency-plans/). diff --git a/doc/content/reference/frequency-plans/adding-frequency-plans.md b/doc/content/concepts/features/lorawan/frequency-plans/adding-frequency-plans.md similarity index 75% rename from doc/content/reference/frequency-plans/adding-frequency-plans.md rename to doc/content/concepts/features/lorawan/frequency-plans/adding-frequency-plans.md index e5e6b94c7b..12295dec22 100644 --- a/doc/content/reference/frequency-plans/adding-frequency-plans.md +++ b/doc/content/concepts/features/lorawan/frequency-plans/adding-frequency-plans.md @@ -1,6 +1,7 @@ --- title: "Adding Frequency Plans" description: "" +aliases: [reference/frequency-plans/adding-frequency-plans] --- {{% tts %}} uses frequency plans from the [`lorawan-frequency-plans` Github repository](https://github.com/TheThingsNetwork/lorawan-frequency-plans/). @@ -11,4 +12,4 @@ You may also fork the repository and reference your fork, with potentially custo You may also configure a local directory (or cloud storage bucket) where the frequency plans are stored, in case the private network cannot access GitHub or does not want to rely on GitHub. -See [configuration options]({{< ref "/reference/configuration/the-things-stack#frequency-plans-options" >}}) to configure a different repository or directory for frequency plans. +See [configuration options]({{< ref "/enterprise/management/configuration/the-things-stack#frequency-plans-options" >}}) to configure a different repository or directory for frequency plans. diff --git a/doc/content/reference/fuota/_index.md b/doc/content/concepts/features/lorawan/fuota/_index.md similarity index 86% rename from doc/content/reference/fuota/_index.md rename to doc/content/concepts/features/lorawan/fuota/_index.md index 806aa9972d..dbc4e5ed5a 100644 --- a/doc/content/reference/fuota/_index.md +++ b/doc/content/concepts/features/lorawan/fuota/_index.md @@ -1,6 +1,7 @@ --- title: "FUOTA" description: "" +aliases: [/reference/fuota] --- This section contains information on using FUOTA with {{% tts %}}. @@ -21,9 +22,9 @@ See the [FUOTA Process Summary document from LoRa Alliance](https://lora-allianc On a high level, a FUOTA process implies the following steps: -- Server enables [class C]({{< ref "/devices/configuring-devices/class-c" >}}) and joins a [multicast]({{< ref "/devices/configuring-devices/multicast" >}}) group +- Server enables [class C]({{< ref "/hardware/devices/configuring-devices/class-c" >}}) and joins a [multicast]({{< ref "/hardware/devices/configuring-devices/multicast" >}}) group - Server signs the firmware update and splits it in chunks -- Server schedules each update chunk as a [downlink message]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) to the multicast group +- Server schedules each update chunk as a [downlink message]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) to the multicast group - Server verifies that the device has received all chunks, synthesizes them and verifies the update signature - Device applies the firmware update - Device sends a `firmware update complete` uplink message @@ -41,7 +42,7 @@ The preferred fragment size depends on the available data rate, which depends on ### Duty Cycle -Using multiple gateways for updating firmware on the same group of end devices is recommended because of duty cycle restrictions and to avoid packet loss. It is also recommended to use [class B]({{< ref "/devices/configuring-devices/class-b" >}}), which takes longer to update but it is likely better for duty cycle distribution. +Using multiple gateways for updating firmware on the same group of end devices is recommended because of duty cycle restrictions and to avoid packet loss. It is also recommended to use [class B]({{< ref "/hardware/devices/configuring-devices/class-b" >}}), which takes longer to update but it is likely better for duty cycle distribution. ## Useful Links diff --git a/doc/content/the-things-stack/concepts/spec-regional-parameters/index.md b/doc/content/concepts/features/lorawan/version-support/_index.md similarity index 75% rename from doc/content/the-things-stack/concepts/spec-regional-parameters/index.md rename to doc/content/concepts/features/lorawan/version-support/_index.md index 5b28932a8e..f830104d7c 100644 --- a/doc/content/the-things-stack/concepts/spec-regional-parameters/index.md +++ b/doc/content/concepts/features/lorawan/version-support/_index.md @@ -1,7 +1,7 @@ --- -title: "LoRaWAN Specification and Regional Parameters" +title: "LoRaWAN Version Support" description: "" -weight: 2 +aliases: [/the-things-stack/concepts/features/lorawan/spec-regional-parameters] --- {{% tts %}} supports versions 1.0.x and 1.1.x of the LoRaWAN® specifications. @@ -35,4 +35,4 @@ The LoRaWAN specification versions are available from the [LoRa Alliance resourc The LoRaWAN Regional Parameters specification versions are available from the [LoRa Alliance resource hub](https://lora-alliance.org/resource-hub/). More information is also available in [The Things Network LoRaWAN documentation](https://www.thethingsnetwork.org/docs/lorawan/regional-parameters/). -In addition, {{% tts %}} supports Class A, B, C, and multicast group devices. See the [Class B]({{< ref "devices/configuring-devices/class-b" >}}), [Class C]({{< ref "devices/configuring-devices/class-c" >}}), and [Multicast]({{< ref "/devices/configuring-devices/multicast" >}}) references for special instructions when using these device classes. +In addition, {{% tts %}} supports Class A, B, C, and multicast group devices. See the [Class B]({{< ref "/hardware/devices/configuring-devices/class-b" >}}), [Class C]({{< ref "/hardware/devices/configuring-devices/class-c" >}}), and [Multicast]({{< ref "/hardware/devices/configuring-devices/multicast" >}}) references for special instructions when using these device classes. diff --git a/doc/content/concepts/features/multitenancy/_index.md b/doc/content/concepts/features/multitenancy/_index.md new file mode 100644 index 0000000000..8ca7f10d2a --- /dev/null +++ b/doc/content/concepts/features/multitenancy/_index.md @@ -0,0 +1,32 @@ +--- +title: "Multi-tenancy" +description: "" +weight: 3 +--- + +Multi-tenancy is at the core of what make {{% tts %}} a production-grade, enterprise level LoRaWAN Network software. + + + +This means that you can create multiple _tenants_, each of which operates as a separate logically isolated namespace with its own entities (ex: users, organisations, devices, gateways etc) but uses a shared underlying infrastructure. + +## Key Features + +### 1. Tenant Isolation + +- Each tenant has its own namespace which forces data isolation. +- Users/organizations of one tenant cannot access other tenants making the system secure by default. + +### 2. Extensibility + +- Creating multiple tenants makes it easy for users to manage their LoRaWAN Fleet. +- Tenants can be used for logical separation of environments (e.g., development, staging, production) allowing for maximum flexibility. + +### 3. Custom Configurations + +- Tenants flexibility to customize their tenant configurations (ex: custom branding, user rights etc). + +### 4. Centralized Administration + +- Users can easily administer tenants (create/delete/update) using a Tenant Admin Key (which is available for enterprise deployments). +- But tenant-specific admins control their respective environments. diff --git a/doc/content/concepts/features/network-operations-center/_index.md b/doc/content/concepts/features/network-operations-center/_index.md new file mode 100644 index 0000000000..4351c3bfd5 --- /dev/null +++ b/doc/content/concepts/features/network-operations-center/_index.md @@ -0,0 +1,30 @@ +--- +title: "Network Operations Center" +description: "" +--- + +{{% tts %}} Network Operations Center (NOC) makes it easy for network administrators to get detailed insights into Gateways, Applications and Devices. + +Important metrics such as gateway uptime, radio utilization, end device packet rate, channel utilization and much more are easily accessible to keep track of the health of your network. + +The Network Operations Center also has detailed metrics per gateway, per application, per device, which help you identify and prevent specific problems. It comes with a powerful and flexible API which provides raw metrics for the user to build custom dashboards. + +Using the Network Operations Center (NOC) is a straightforward process designed to integrate seamlessly with your current systems, ensuring minimal disruption and maximum efficiency. + +1. Login to a {{% tts %}} Cloud or {{% tts %}} Enterprise Account. + +{{< figure src="login-stack.png" >}} + +2. Connect a device and gateway. + +{{< figure src="register-devices-option.png" >}} + +{{< figure src="gateway-add.png" >}} + +3. Wait for some traffic from the device. + +{{< figure src="live-data.png" >}} + +4. Head over to the Network Operations Center. + +{{< figure src="noc-main-visual.png" >}} diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-add.png b/doc/content/concepts/features/network-operations-center/gateway-add.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-add.png rename to doc/content/concepts/features/network-operations-center/gateway-add.png diff --git a/doc/content/concepts/features/network-operations-center/live-data.png b/doc/content/concepts/features/network-operations-center/live-data.png new file mode 100644 index 0000000000..a92f1bc8ee Binary files /dev/null and b/doc/content/concepts/features/network-operations-center/live-data.png differ diff --git a/doc/content/concepts/features/network-operations-center/login-stack.png b/doc/content/concepts/features/network-operations-center/login-stack.png new file mode 100644 index 0000000000..41d9075ae8 Binary files /dev/null and b/doc/content/concepts/features/network-operations-center/login-stack.png differ diff --git a/doc/content/concepts/features/network-operations-center/noc-main-visual.png b/doc/content/concepts/features/network-operations-center/noc-main-visual.png new file mode 100644 index 0000000000..0a36d8fec8 Binary files /dev/null and b/doc/content/concepts/features/network-operations-center/noc-main-visual.png differ diff --git a/doc/content/devices/adding-devices/register-devices-option.png b/doc/content/concepts/features/network-operations-center/register-devices-option.png similarity index 100% rename from doc/content/devices/adding-devices/register-devices-option.png rename to doc/content/concepts/features/network-operations-center/register-devices-option.png diff --git a/doc/content/concepts/features/sso/_index.md b/doc/content/concepts/features/sso/_index.md new file mode 100644 index 0000000000..14ed21cd77 --- /dev/null +++ b/doc/content/concepts/features/sso/_index.md @@ -0,0 +1,167 @@ +--- +title: "Single Sign-On" +description: "" +distributions: ["Cloud", "Enterprise"] +weight: 12 +aliases: [/getting-started/sso, /the-things-stack/management/sso] +--- + +Single sign-on (also known as Federated Authentication) allows network administrators to use the already existing identity providers in order to authenticate users, instead of manually creating and managing the accounts in {{% tts %}}. {{% tts %}} supports [OpenID Connect](https://openid.net/connect/) for single sign-on. + + + +This section contains instructions for connecting an OpenID provider to your {{% tts %}} deployment to allow users to sign in with their existing credentials. + +### How does it work? + +Federated Authentication delegates the task of authenticating the user to an external Authentication Provider, allowing the user to present an identity token back to the Identity Server after the procedure is done. The Identity Server then checks the validity of the token with the Authentication Provider and if the token is deemed valid, allows the user to login in {{% tts %}}. + +## OpenID Connect + +[OpenID Connect](https://openid.net/connect/) 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows the Identity Server to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner. + +### Requirements + +A new OAuth 2.0 client must be created in the provider and the client ID and client secret must be noted down. While creating the OAuth2 client, you will be asked to provide a redirect URL, which should have the following format: + +``` +https://thethings.example.com/oauth/login//callback +``` + +Replace `` with the ID that you have chosen for this OpenID Connect provider, for example `my-oidc-provider`. + +### Registering an Authentication Provider + +We first define some user parameters used below: + +```bash +OIDC_PROVIDER_ID="my-oidc-provider" +OIDC_PROVIDER_NAME="My OIDC Provider" +OIDC_CLIENT_ID="client123" +OIDC_CLIENT_SECRET="secret123" +OIDC_PROVIDER_URL="https://oidc.example.com" +``` + +Make sure you modify these according to your setup and use the following command to register the provider. + +```bash +$ tti-lw-cli ap create $OIDC_PROVIDER_ID \ + --name $OIDC_PROVIDER_NAME \ + --allow-registrations true \ + --configuration.provider.oidc.client-id $OIDC_CLIENT_ID \ + --configuration.provider.oidc.client-secret $OIDC_CLIENT_SECRET \ + --configuration.provider.oidc.provider-url OIDC_PROVIDER_URL +``` + +### Generating Usernames + +External users are being automatically registered when they login using the OpenID Connect provider. Their username is automatically generated based on the information provided by the provider. The following username variants are used: + +- The preferred username (`preferred_username` in the OIDC claim token). +- The email address local-part. This means that a user whose email is `j.doe@example.com` will receive the username `j-doe`. +- The concatenation of the given and family name. This means that a user called `John Doe` will receive the username `john-doe`. +- The email address local-part concatenated with the provider ID. Following the above example with the address `j.doe@example.com`, the resulting username is `j-doe-my-oidc-provider`. +- The concatenation of the given name, family name and the provider ID. Following the example with the user `John Doe`, the resulting username is `john-doe-my-oidc-provider`. + +Excepting the preferred username, the stack will attempt to concatenate up to 5 random characters at the end of the username in order to obtain a unique username. + +You may have also observed that the `.` used in the email addresses was converted into a `-`. This is intended, and is part of the normalization process of the stack, which ensures that generated usernames are valid. The procedure is as follows: + +- Turn every character into its lowercase variant. This means `John.Doe` becomes `john.doe`. +- Replace all of the non-alphanumeric characters with `-`. This means that `john.doe` becomes `john-doe`. +- Remove all of the duplicate `-`. This means that `john---doe` becomes `john-doe`. +- Remove any leading or trailing `-`. This means that `-john-` becomes `john`. + +## Configuration Steps + +{{< cli-only >}} + +### Requirements + +1. Access to an OpenID Connect provider such as Google or Amazon Cognito +2. Administrator access to your {{% tts %}} deployment +3. [`tti-lw-cli`]({{< ref "/concepts/features/cli" >}}) + +### Configure Your OpenID Connect Provider + +First, you must configure your OpenID Connect Provider to accept login requests from {{% tts %}} and to forward authentication to the callback address of your {{% tts %}} deployment. + +{{% tts %}} requires the following from the OpenID Connect Provider: + +- OpenID Discovery Address +- Client ID +- Client Secret + +And you must enter the following in the OpenID Connect Provider configuration: + +- Callback URL + +See instructions for configuring [Google]({{< relref "google" >}}) and [Amazon Cognito]({{< relref "cognito" >}}) OpenID Connect Providers. + +#### Callback URL + +The callback URL (or Redirect URI in Google terminology) of your {{% tts %}} deployment is the [Server Address]({{< ref "/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: + +`/oauth/login//callback` + +You will actually create the Authentication Provider in {{% tts %}} using this Authentication Provider ID, so remember it. + +For example, with a tenant `tenant1` in the `eu1` cluster and an Authentication Provider ID of `auth-provider`, the OAuth Callback URL is: + +`https://tenant1.eu1.cloud.thethings.industries/oauth/login/auth-provider/callback` + +### Configure {{% tts %}} for SSO + +Once your OpenID Connect provider is configured, you can configure {{% tts %}}. + +Use the following command (note that Authentication Provider commands are only available in `tti-lw-cli`): + +```bash +$ tti-lw-cli authentication-providers create \ +--allow-registrations \ +--configuration.provider.oidc.client-id \ +--configuration.provider.oidc.client-secret \ +--configuration.provider.oidc.provider-url \ +--name +``` + +The `name` is what will appear on {{% tts %}} login screen. For example, to register a Google OpenID Authentication Provider, using the `id` goog and `name` Goog: + +```bash +$ tti-lw-cli authentication-providers create goog \ +--allow-registrations \ +--configuration.provider.oidc.client-id xxxxx-vq3v4e2ha7c1668mr92iiqu0bd1spct2.apps.googleusercontent.com \ +--configuration.provider.oidc.client-secret GOCSPX-Vxxxxxxx \ +--configuration.provider.oidc.provider-url https://accounts.google.com \ +--name Goog +``` + +A list of provider discovery URLs is available from AWS [here](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-oidc-idp.html#cognito-user-pools-oidc-idp-step-1). + +If succesful, `tti-lw-cli` will return a list of Authentication Providers. When you go to login, you will see the login option using the `name` you registered the Authentication Provider with. + +{{< figure src="login-screen.png" >}} + +## Troubleshooting + +### I get the `email not verified` error when logging in using SSO. + +{{% tts %}} checks if the email address included in the JWT token has been verified by the OIDC provider (e.g. The Things ID or SSO DB), so the JWT token that the OIDC provider provides should contain the `email_verified` field. If this field is not present, the user might face the following error upon logging in with SSO: + +``` +{ +"code": 7, +"message": "error:pkg/account/oidc:unverified_email (email not verified)", +"details": [ + { + "@type": "type.googleapis.com/ttn.lorawan.v3.ErrorDetails", + "namespace": "pkg/account/oidc", + "name": "unverified_email", + "message_format": "email not verified", + "correlation_id": "43c2ea63620d4487b64723d03195953e", + "code": 7 + }] +} +``` + +To fix this error, users should ask their OIDC provider to include the `email_verified` field in the JWT token to be used with {{% tts %}} SSO. diff --git a/doc/content/the-things-stack/management/sso/cognito/add-app-client-2.png b/doc/content/concepts/features/sso/cognito/add-app-client-2.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/add-app-client-2.png rename to doc/content/concepts/features/sso/cognito/add-app-client-2.png diff --git a/doc/content/the-things-stack/management/sso/cognito/add-app-client-3.png b/doc/content/concepts/features/sso/cognito/add-app-client-3.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/add-app-client-3.png rename to doc/content/concepts/features/sso/cognito/add-app-client-3.png diff --git a/doc/content/the-things-stack/management/sso/cognito/add-app-client.png b/doc/content/concepts/features/sso/cognito/add-app-client.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/add-app-client.png rename to doc/content/concepts/features/sso/cognito/add-app-client.png diff --git a/doc/content/the-things-stack/management/sso/cognito/app-client-settings.png b/doc/content/concepts/features/sso/cognito/app-client-settings.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/app-client-settings.png rename to doc/content/concepts/features/sso/cognito/app-client-settings.png diff --git a/doc/content/the-things-stack/management/sso/cognito/app-clients.png b/doc/content/concepts/features/sso/cognito/app-clients.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/app-clients.png rename to doc/content/concepts/features/sso/cognito/app-clients.png diff --git a/doc/content/the-things-stack/management/sso/cognito/callback.png b/doc/content/concepts/features/sso/cognito/callback.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/callback.png rename to doc/content/concepts/features/sso/cognito/callback.png diff --git a/doc/content/the-things-stack/management/sso/cognito/create-pool.png b/doc/content/concepts/features/sso/cognito/create-pool.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/create-pool.png rename to doc/content/concepts/features/sso/cognito/create-pool.png diff --git a/doc/content/the-things-stack/management/sso/cognito/create-user-pool.png b/doc/content/concepts/features/sso/cognito/create-user-pool.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/create-user-pool.png rename to doc/content/concepts/features/sso/cognito/create-user-pool.png diff --git a/doc/content/the-things-stack/management/sso/cognito/domain.png b/doc/content/concepts/features/sso/cognito/domain.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/domain.png rename to doc/content/concepts/features/sso/cognito/domain.png diff --git a/doc/content/the-things-stack/management/sso/cognito/index.md b/doc/content/concepts/features/sso/cognito/index.md similarity index 94% rename from doc/content/the-things-stack/management/sso/cognito/index.md rename to doc/content/concepts/features/sso/cognito/index.md index b058231783..85c0ab4f49 100644 --- a/doc/content/the-things-stack/management/sso/cognito/index.md +++ b/doc/content/concepts/features/sso/cognito/index.md @@ -2,7 +2,8 @@ title: "Amazon Cognito" description: "" weight: -aliases: [/getting-started/sso/cognito] +aliases: + [/getting-started/sso/cognito, /the-things-stack/management/sso/cognito] --- This section contains instructions to configure Amazon Cognito to work with {{% tts %}}. @@ -53,7 +54,7 @@ Ensure that **Cognito User Pool** is checked for **Enabled Identity Providers**. {{< figure src="app-client-settings.png" >}} -For the **Callback URL**, enter the **OAuth Callback URL** of your {{% tts %}} deployment. This is the [Server Address]({{< ref "the-things-stack/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: +For the **Callback URL**, enter the **OAuth Callback URL** of your {{% tts %}} deployment. This is the [Server Address]({{< ref "/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: ``` /oauth/login//callback diff --git a/doc/content/the-things-stack/management/sso/cognito/manage-user-pools.png b/doc/content/concepts/features/sso/cognito/manage-user-pools.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/manage-user-pools.png rename to doc/content/concepts/features/sso/cognito/manage-user-pools.png diff --git a/doc/content/the-things-stack/management/sso/cognito/name.png b/doc/content/concepts/features/sso/cognito/name.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/name.png rename to doc/content/concepts/features/sso/cognito/name.png diff --git a/doc/content/the-things-stack/management/sso/cognito/secret.png b/doc/content/concepts/features/sso/cognito/secret.png similarity index 100% rename from doc/content/the-things-stack/management/sso/cognito/secret.png rename to doc/content/concepts/features/sso/cognito/secret.png diff --git a/doc/content/the-things-stack/management/sso/google/callback.png b/doc/content/concepts/features/sso/google/callback.png similarity index 100% rename from doc/content/the-things-stack/management/sso/google/callback.png rename to doc/content/concepts/features/sso/google/callback.png diff --git a/doc/content/the-things-stack/management/sso/google/index.md b/doc/content/concepts/features/sso/google/index.md similarity index 86% rename from doc/content/the-things-stack/management/sso/google/index.md rename to doc/content/concepts/features/sso/google/index.md index 99a8534458..c7c3642fb0 100644 --- a/doc/content/the-things-stack/management/sso/google/index.md +++ b/doc/content/concepts/features/sso/google/index.md @@ -2,7 +2,12 @@ title: "Google OpenID Connect" description: "" weight: -aliases: [/getting-started/sso/google] +aliases: + [ + /getting-started/sso/google, + /the-things-stack/management/sso/google, + /reference/federated-auth/oidc/google, + ] --- This section contains instructions to configure Google OpenID Connect to work with {{% tts %}}. @@ -23,7 +28,7 @@ Choose **Web application** for the **Application type**. {{< figure src="web-app.png" >}} -Give the Application a **Name** of your choosing, and enter the **Redirect URI** of your {{% tts %}} deployment. The URI is the [Server Address]({{< ref "the-things-stack/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: +Give the Application a **Name** of your choosing, and enter the **Redirect URI** of your {{% tts %}} deployment. The URI is the [Server Address]({{< ref "/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: ``` /oauth/login//callback diff --git a/doc/content/the-things-stack/management/sso/google/keys.png b/doc/content/concepts/features/sso/google/keys.png similarity index 100% rename from doc/content/the-things-stack/management/sso/google/keys.png rename to doc/content/concepts/features/sso/google/keys.png diff --git a/doc/content/the-things-stack/management/sso/google/oauth-client-id.png b/doc/content/concepts/features/sso/google/oauth-client-id.png similarity index 100% rename from doc/content/the-things-stack/management/sso/google/oauth-client-id.png rename to doc/content/concepts/features/sso/google/oauth-client-id.png diff --git a/doc/content/the-things-stack/management/sso/google/web-app.png b/doc/content/concepts/features/sso/google/web-app.png similarity index 100% rename from doc/content/the-things-stack/management/sso/google/web-app.png rename to doc/content/concepts/features/sso/google/web-app.png diff --git a/doc/content/the-things-stack/management/sso/login-screen.png b/doc/content/concepts/features/sso/login-screen.png similarity index 100% rename from doc/content/the-things-stack/management/sso/login-screen.png rename to doc/content/concepts/features/sso/login-screen.png diff --git a/doc/content/reference/federated-auth/oidc/microsoft-entra.md b/doc/content/concepts/features/sso/microsoft-entra/_index.md similarity index 97% rename from doc/content/reference/federated-auth/oidc/microsoft-entra.md rename to doc/content/concepts/features/sso/microsoft-entra/_index.md index b7c9d84378..b686c125c1 100644 --- a/doc/content/reference/federated-auth/oidc/microsoft-entra.md +++ b/doc/content/concepts/features/sso/microsoft-entra/_index.md @@ -1,8 +1,8 @@ --- title: "Microsoft Entra" description: "" -distributions: ["Enterprise"] new_in_version: "3.28.0" +aliases: [/reference/federated-auth/oidc/microsoft-entra] --- [Microsoft Entra](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc) supports OpenID 1.0 authorization flow and can be used to log into {{% tts %}}. @@ -99,4 +99,4 @@ Head to the Login page of {{% tts %}} console. A button **Login to \** sh Click on this button. This will redirect you to the Microsoft Sign in page. You will be asked to authorize {{% tts %}} to read some basic user information. Select `Allow`. This is only for the first login attempt. -If all your configuration is correct, you will now be redirected to {{% tts %}} console and you will be logged in. The username is chosen based on the rules explained in the [generating usernames]({{< ref "/reference/federated-auth/oidc#generating-usernames" >}}) section. +If all your configuration is correct, you will now be redirected to {{% tts %}} console and you will be logged in. The username is chosen based on the rules explained in the [generating usernames]({{< ref "/concepts/features/sso#generating-usernames" >}}) section. diff --git a/doc/content/the-things-stack/migrating/_index.md b/doc/content/concepts/migration/_index.md similarity index 65% rename from doc/content/the-things-stack/migrating/_index.md rename to doc/content/concepts/migration/_index.md index 61449482b1..3ff9eec08f 100644 --- a/doc/content/the-things-stack/migrating/_index.md +++ b/doc/content/concepts/migration/_index.md @@ -1,15 +1,14 @@ --- title: "Migrate to The Things Stack" -description: "" -aliases: [/getting-started/migrating-from-networks, /the-things-stack/migrating-from-networks] +description: "Concepts specific to The Things Stack Cloud" weight: 5 -aliases: [/getting-started/migrating] +aliases: [/the-things-stack/migration] --- This guide documents the process of migrating end devices and gateways to {{% tts %}} and between different installations of {{% tts %}}. -End devices can be migrated from one {{% tts %}} deployment to another (e.g. [from {{% ttss %}} to {{% tts %}} Cloud]({{< ref "/the-things-stack/migrating/migrating-between-tts-distributions" >}})) or from any other LoRaWAN® network (like [Chirpstack]({{< relref "export-from-chirpstack" >}})). +End devices can be migrated from one {{% tts %}} deployment to another (e.g. [from {{% ttss %}} to {{% tts %}} Cloud]({{< ref "/concepts/migration/migrating-between-tts-distributions" >}})) or from any other LoRaWAN® network (like [Chirpstack]({{< ref "/concepts/migration/exporting-end-devices/export-from-chirpstack" >}})). Depending on how many devices you are migrating and which network you are migrating from, there are multiple migration methods you can apply. Find your specific use case in subsections below and learn how to migrate your devices to a desired {{% tts %}} deployment. diff --git a/doc/content/the-things-stack/migrating/migration-tool/_index.md b/doc/content/concepts/migration/exporting-end-devices/_index.md similarity index 57% rename from doc/content/the-things-stack/migrating/migration-tool/_index.md rename to doc/content/concepts/migration/exporting-end-devices/_index.md index 32818e7faf..b1b85ba284 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/_index.md +++ b/doc/content/concepts/migration/exporting-end-devices/_index.md @@ -1,17 +1,19 @@ --- -title: "Migration Tool" +title: "Export End Device Data" description: "" weight: 2 -aliases: [/getting-started/migrating/migration-tool] +aliases: [/migration/migration-tool/] --- -[`ttn-lw-migrate`](https://github.com/TheThingsNetwork/lorawan-stack-migrate) is a tool that can be used for migrating end devices and applications from supported LoRaWAN® networks (like [ChirpStack](https://www.chirpstack.io/)) to {{% tts %}}, or between {{% tts %}} distributions. This section provides details on how to install, configure and use this tool. +This section contains instructions on how to use the migration tooling to export end devices from supported LoRaWAN Networks, that can later be imported in {{% tts %}}. -This tool works in a way that it exports descriptions of end devices and applications to a [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}), that can later be [imported in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). +[`ttn-lw-migrate`](https://github.com/TheThingsNetwork/lorawan-stack-migrate) is a tool that can be used for migrating end devices and applications from supported LoRaWAN® networks (like [ChirpStack](https://www.chirpstack.io/)) to {{% tts %}}, or between {{% tts %}} distributions. This section provides details on how to install, configure and use this tool. + +This tool works in a way that it exports descriptions of end devices and applications to a [JSON file]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk/device-json" >}}), that can later be [imported in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). -## Installation +### Installation The migration tool can be installed using package managers or manually from binary files. We highly recommend installing or upgrading to `ttn-lw-migrate` version `0.5.0` or newer, because some features like session migration are not available for prior versions. @@ -61,17 +63,17 @@ After this, you will be notified that you can run `ttn-lw-migrate` from the comm {{}} -## Usage +### Usage To use the `ttn-lw-migrate` tool after successful installation, use your terminal or command prompt to navigate to the folder where it is installed and run the commands from there. Run `ttn-lw-migrate help` to see all available commands and flags. Currently, there are three available sources listed in the table below. For detailed migration instructions using these three sources, check the linked sections. -| Option | Used for | -| :------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- | -| [`tts`]({{< ref "/the-things-stack/migrating/migration-tool/export-from-tts" >}}) | Migrating between {{% tts %}} distributions, tenants, and/or applications | -| [`chirpstack`]({{< ref "/the-things-stack/migrating/migration-tool/export-from-chirpstack" >}}) | Migrating devices from ChirpStack version 4 | -| [`chirpstack` (v3)]({{< ref "/the-things-stack/migrating/migration-tool/export-from-chirpstack-v3" >}}) | Migrating devices from ChirpStack version 3 | -| [`firefly`]({{< ref "/the-things-stack/migrating/migration-tool/export-from-firefly" >}}) | Migrating devices from Digimondo's Firefly | -| [`wanesy`]({{< ref "/the-things-stack/migrating/migration-tool/export-from-wanesy" >}}) | Migrating devices from Kerlink's Firefly | -| `ttnv2` | (Discontinued ) Migrating from legacy {{% ttnv2 %}} deployments | +| Option | Used for | +| :----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| [`tts`]({{< ref "/concepts/migration/exporting-end-devices/export-from-tts" >}}) | Migrating between {{% tts %}} distributions, tenants, and/or applications | +| [`chirpstack`]({{< ref "/concepts/migration/exporting-end-devices/export-from-chirpstack" >}}) | Migrating devices from ChirpStack version 4 | +| [`chirpstack` (v3)]({{< ref "/concepts/migration/exporting-end-devices/export-from-chirpstack-v3" >}}) | Migrating devices from ChirpStack version 3 | +| [`firefly`]({{< ref "/concepts/migration/exporting-end-devices/export-from-firefly" >}}) | Migrating devices from Digimondo's Firefly | +| [`wanesy`]({{< ref "/concepts/migration/exporting-end-devices/export-from-wanesy" >}}) | Migrating devices from Kerlink's Firefly | +| `ttnv2` | (Discontinued ) Migrating from legacy {{% ttnv2 %}} deployments | diff --git a/doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack-v3.md b/doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack-v3.md similarity index 90% rename from doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack-v3.md rename to doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack-v3.md index b8152cd04d..74f522d511 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack-v3.md +++ b/doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack-v3.md @@ -4,8 +4,9 @@ description: "" weight: 2 aliases: [ - /the-things-stack/migrating-from-networks/migrate-from-chirpstack, + /migration-from-networks/migrate-from-chirpstack, /getting-started/migrating/migration-tool/export-from-chirpstack, + /migration/migration-tool/export-from-chirpstack-v3, ] --- @@ -33,7 +34,7 @@ If using Windows OS, replace `export` with `set` and remove the double-quotes in set CHIRPSTACK_API_TOKEN=eyJ0eX... ``` -`JoinEUI` and `FrequencyPlanID` have to be set because ChirpStack does not store these variables. See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) for a full list of frequency plans supported by {{% tts %}} (and their IDs). +`JoinEUI` and `FrequencyPlanID` have to be set because ChirpStack does not store these variables. See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for a full list of frequency plans supported by {{% tts %}} (and their IDs). You can now proceed to exporting devices or applications. @@ -94,4 +95,4 @@ Please note that `MaxEIRP` parameter may not be always set properly, and that th --- -After exporting, devices and applications can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. +After exporting, devices and applications can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. diff --git a/doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack.md b/doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack.md similarity index 89% rename from doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack.md rename to doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack.md index f1a9b9230b..84cde0a613 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/export-from-chirpstack.md +++ b/doc/content/concepts/migration/exporting-end-devices/export-from-chirpstack.md @@ -4,8 +4,9 @@ description: "" weight: 2 aliases: [ - /the-things-stack/migrating-from-networks/migrate-from-chirpstack, + /migration-from-networks/migrate-from-chirpstack, /getting-started/migrating/migration-tool/export-from-chirpstack, + /migration/migration-tool/export-from-chirpstack, ] new_in_version: "v0.12.0" --- @@ -14,7 +15,7 @@ This section contains instructions on how to configure migration tool and use it -This guide covers migration from ChirpStack v4. For ChirpStack v3 , see the [corresponding guide]({{< ref "/the-things-stack/migrating/migration-tool/export-from-chirpstack-v3" >}}). +This guide covers migration from ChirpStack v4. For ChirpStack v3 , see the [corresponding guide]({{< ref "/concepts/migration/exporting-end-devices/export-from-chirpstack-v3" >}}). ## Configuration @@ -34,7 +35,7 @@ If using Windows OS, replace `export` with `set` and remove the double-quotes in set CHIRPSTACK_API_TOKEN=7F0as987e61... ``` -`JoinEUI` and `FrequencyPlanID` have to be set because ChirpStack does not store these variables. See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) for a full list of frequency plans supported by {{% tts %}} (and their IDs). +`JoinEUI` and `FrequencyPlanID` have to be set because ChirpStack does not store these variables. See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for a full list of frequency plans supported by {{% tts %}} (and their IDs). - ABP devices without an active session are successfully exported from ChirpStack, but cannot be imported into The Things Stack. - MaxEIRP may not be always set properly. @@ -101,4 +102,4 @@ Please note that `MaxEIRP` parameter may not be always set properly, and that th --- -After exporting, devices and applications can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. +After exporting, devices and applications can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. diff --git a/doc/content/the-things-stack/migrating/migration-tool/export-from-firefly.md b/doc/content/concepts/migration/exporting-end-devices/export-from-firefly.md similarity index 94% rename from doc/content/the-things-stack/migrating/migration-tool/export-from-firefly.md rename to doc/content/concepts/migration/exporting-end-devices/export-from-firefly.md index cdb14da3f6..38aa291143 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/export-from-firefly.md +++ b/doc/content/concepts/migration/exporting-end-devices/export-from-firefly.md @@ -3,6 +3,7 @@ title: "Export End Devices from Firefly" description: "" weight: 4 new_in_version: "v0.10.0" +aliases: [/migration/migration-tool/export-from-chirpstack] --- This section contains instructions on how to configure migration tool and use it to export end devices from Firefly, that can later be imported in {{% tts %}}. @@ -97,4 +98,4 @@ $ ttn-lw-migrate firefly application --all --invalidate-keys > devices.json {{< /tabs/container >}} -After exporting, devices can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. +After exporting, devices can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. diff --git a/doc/content/the-things-stack/migrating/migration-tool/export-from-tts.md b/doc/content/concepts/migration/exporting-end-devices/export-from-tts.md similarity index 88% rename from doc/content/the-things-stack/migrating/migration-tool/export-from-tts.md rename to doc/content/concepts/migration/exporting-end-devices/export-from-tts.md index 27ffcf39e1..55fdf3f583 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/export-from-tts.md +++ b/doc/content/concepts/migration/exporting-end-devices/export-from-tts.md @@ -2,7 +2,11 @@ title: "Export Devices from The Things Stack" description: "" weight: 1 -aliases: [/getting-started/migrating/migration-tool/export-from-tts] +aliases: + [ + /getting-started/migrating/migration-tool/export-from-tts, + /migration/migration-tool/export-from-tts, + ] --- This section explains how to configure the migration tool and use it to export end devices from {{% tts %}}, that can later be imported in other {{% tts %}} deployments. This is a base for migrating end devices between {{% tts %}} distributions. @@ -108,4 +112,4 @@ export TTS_CA_FILE="/path/to/ca.file" # Path to a CA file (optional) --- -After exporting, devices and applications can be imported in other {{% tts %}} deployments. See [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. See [Migrating End Devices between {{% tts %}} Distributions]({{< ref "/the-things-stack/migrating/migrating-between-tts-distributions" >}}) to wrap up the whole process of migration between {{% tts %}} distributions. +After exporting, devices and applications can be imported in other {{% tts %}} deployments. See [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. See [Migrating End Devices between {{% tts %}} Distributions]({{< ref "/concepts/migration/migrating-between-tts-distributions" >}}) to wrap up the whole process of migration between {{% tts %}} distributions. diff --git a/doc/content/the-things-stack/migrating/migration-tool/export-from-wanesy.md b/doc/content/concepts/migration/exporting-end-devices/export-from-wanesy.md similarity index 93% rename from doc/content/the-things-stack/migrating/migration-tool/export-from-wanesy.md rename to doc/content/concepts/migration/exporting-end-devices/export-from-wanesy.md index 3a65b3d0e8..775dd0cca1 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/export-from-wanesy.md +++ b/doc/content/concepts/migration/exporting-end-devices/export-from-wanesy.md @@ -3,6 +3,7 @@ title: "Export End Devices from Wanesy" description: "" weight: 3 new_in_version: "v0.11.0" +aliases: [/migration/migration-tool/export-from-wanesy] --- This section contains instructions on how to configure migration tool and use it to convert end device information exported from [Kerlink's Wanesy Management Center](https://www.kerlink.com/), into {{% tts %}} end device format. @@ -84,4 +85,4 @@ $ ttn-lw-migrate wanesy application --all {{< /tabs/container >}} -After exporting, devices can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. +After exporting, devices can be imported in {{% tts %}}. See [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) for details about importing devices. diff --git a/doc/content/the-things-stack/migrating/migration-tool/troubleshooting/_index.md b/doc/content/concepts/migration/exporting-end-devices/troubleshooting.md similarity index 95% rename from doc/content/the-things-stack/migrating/migration-tool/troubleshooting/_index.md rename to doc/content/concepts/migration/exporting-end-devices/troubleshooting.md index 39aae05b96..42bfc037f7 100644 --- a/doc/content/the-things-stack/migrating/migration-tool/troubleshooting/_index.md +++ b/doc/content/concepts/migration/exporting-end-devices/troubleshooting.md @@ -2,6 +2,7 @@ title: "Troubleshooting" description: "Troubleshooting the Migration tool" weight: +aliases: [/migration/migration-tool/troubleshooting] --- @@ -24,5 +25,3 @@ We suggest you delete such devices from {{% tts %}} Application and try exportin This error indicates that there might be an issue with your network such as your organization's network firewall blocking the connections on port `8884`. To isolate the issue, try migrating a device by connecting the Laptop/PC to the other networks, i.e., cellular hotspot, etc. Also, you may check any firewall restrictions in your network on port `8884`. - - diff --git a/doc/content/the-things-stack/migrating/faq.md b/doc/content/concepts/migration/faq.md similarity index 74% rename from doc/content/the-things-stack/migrating/faq.md rename to doc/content/concepts/migration/faq.md index f5a0ae95ab..21b2289d96 100644 --- a/doc/content/the-things-stack/migrating/faq.md +++ b/doc/content/concepts/migration/faq.md @@ -1,10 +1,12 @@ --- -title: Migration FAQ -aliases: [/getting-started/migrating/faq] +title: Frequently Asked Questions +aliases: [/getting-started/migrating/faq, /migration/faq] --- This section answers frequently asked questions regarding migration to {{% tts %}}. + + ### Why should I migrate my devices and gateways to {{% tts %}}? {{% tts %}} is more scalable, more secure, and supports more of the LoRaWAN® specification than {{% ttnv2 %}}. The Things Network {{% ttnv2 %}} machines have been completely shut down on **December 8, 2021**. Only private The Things Industries {{% ttnv2 %}} infrastructure is still running, but the associated software will no longer be developed or maintained by The Things Industries. @@ -13,25 +15,23 @@ This section answers frequently asked questions regarding migration to {{% tts % Start migrating your devices and gateways as soon as possible! V2 software is no longer maintained and there is no official support. -Reading the [complete Migrating to {{% tts %}} guide]({{< ref "/the-things-stack/migrating" >}}) can help you with the migration process. +Reading the [complete Migrating to {{% tts %}} guide]({{< ref "/concepts/migration" >}}) can help you with the migration process. ### Am I still able to migrate my devices and gateways from The Things Network {{% ttnv2 %}} to {{% tts %}}? -No, you are not able to migrate your devices and gateways from The Things Network {{% ttnv2 %}} but you can still add them to {{% tts %}} from scratch. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) and [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +No, you are not able to migrate your devices and gateways from The Things Network {{% ttnv2 %}} but you can still add them to {{% tts %}} from scratch. See [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) and [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). ### What is Packet Broker and what does it have to do with migrating to {{% tts %}}? [Packet Broker](https://packetbroker.net) is a neutral and open LoRaWAN packet broker developed by The Things Industries. Packet Broker adopts the Passive Roaming specifications, as defined by the LoRa Alliance, so it can be used to exchange traffic with other LoRaWAN networks to share coverage and improve overall network performance. -See {{% tts %}} [Packet Broker documentation]({{< ref "/the-things-stack/packet-broker" >}}) for detailed info about connecting {{% tts %}} to Packet Broker. - -{{% ttss %}} and {{% tts %}} Cloud are connected to Packet Broker by default. {{% tts %}} Open Source and {{% tts %}} Enterprise can also be [connected]({{< ref "/the-things-stack/packet-broker/connect" >}}) to Packet Broker. The Things Industries {{% ttnv2 %}} can also be connected on a customer request. Traffic is then automatically exchanged between these networks. See [default Packet Broker routing tables]({{< ref "/reference/pb-routing" >}}). +See {{% tts %}} [Packet Broker documentation]({{< ref "/concepts/packet-broker" >}}) for detailed info about connecting {{% tts %}} to Packet Broker. -For example, this means that you can migrate an end device from The Things Industries {{% ttnv2 %}} to {{% ttss %}} without immediately (or previously) having to migrate your gateway, if both of these deployments are connected to Packet Broker. However, there are certain requirements that need to be fulfilled in order for Packet Broker to route traffic from and to these devices properly and timely. [Read more about DevAddr and RX1 Delay requirements]({{< ref "/the-things-stack/migrating/migrating-from-v2/packet-broker-requirements" >}}). +{{% ttss %}} and {{% tts %}} Cloud are connected to Packet Broker by default. {{% tts %}} Open Source and {{% tts %}} Enterprise can also be [connected]({{< ref "/concepts/packet-broker/connect" >}}) to Packet Broker. The Things Industries {{% ttnv2 %}} can also be connected on a customer request. Traffic is then automatically exchanged between these networks. See [default Packet Broker routing tables]({{< ref "/concepts/packet-broker/pb-routing" >}}). ### I tried migrating my The Things Indoor Gateway (TTIG) to {{% tts %}}, but the Console shows status `Disconnected`. Does {{% tts %}} support connecting TTIGs? -Yes, TTIG can be migrated from {{% ttnv2 %}} to {{% tts %}}. Make sure you are not using the regular option of [adding gateways]({{< ref "/gateways/concepts/adding-gateways" >}}) and instead read the full guide on how to [connect TTIG to {{% tts %}}]({{< ref "/gateways/models/thethingsindoorgateway" >}}). This guide also contains a troubleshooting section for common errors. +Yes, TTIG can be migrated from {{% ttnv2 %}} to {{% tts %}}. Make sure you are not using the regular option of [adding gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) and instead read the full guide on how to [connect TTIG to {{% tts %}}]({{< ref "/hardware/gateways/models/thethingsindoorgateway" >}}). This guide also contains a troubleshooting section for common errors. ### Can I delete my TTIG from {{% ttnv2 %}} Console after I have migrated it to {{% tts %}}? @@ -41,8 +41,6 @@ Yes, you can delete your TTIG from {{% ttnv2 %}}, but keep in mind that you are In a special case of migrating devices from The Things Industries {{% ttnv2 %}} environment to {{% tts %}} Cloud, devices can be migrated with their existing session via Packet Broker, i.e. without having to re-program them (ABP) or trigger them to perform a new join (OTAA), and without having to migrate the gateway to {{% tts %}}. For all other migration scenarios, to migrate an active device session you would have to have the gateway migrated to {{% tts %}} as well. -Learn how to [Migrate Active Sessions]({{< ref "/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session" >}}). - {{< note >}} Please keep in mind that migrating active sessions is not recommended. If you cannot access your device to trigger it to perform a new join, you can try contacting your device's manufacturer as the device might have "secret" options to enable remote access. {{}} ### I cannot access my gateway remotely, so I cannot migrate it to {{% tts %}} at this time. Is there anything I can do? @@ -63,7 +61,7 @@ In case of migrating active sessions using the `ttn-lw-migrate` tool, security k To export end device and/or application descriptions from {{% ttnv2 %}} and import them into {{% tts %}}, you cannot use `ttnctl` tool (command line tool for {{% ttnv2 %}}), but you need to use the `ttn-lw-migrate` migration tool. -Learn to work with the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}). +Learn to work with the [migration tool]({{}}). ### Do all integrations from {{% ttnv2 %}} work with {{% tts %}} as well? Can I use integration guides for {{% ttnv2 %}} to implement integrations on {{% tts %}}? diff --git a/doc/content/concepts/migration/gateway-migration.md b/doc/content/concepts/migration/gateway-migration.md new file mode 100644 index 0000000000..ed63ad35cb --- /dev/null +++ b/doc/content/concepts/migration/gateway-migration.md @@ -0,0 +1,33 @@ +--- +title: Migrating Gateways +weight: 7 +aliases: + [ + /migration-from-v2/gateway-migration, + /getting-started/migrating/gateway-migration, + /the-things-stack/migrating/gateway-migration, + ] +--- + +This guide explains how to migrate gateways to {{% tts %}}. + + + +Migrating gateways to {{% tts %}} is a two step process. + +### Step 1 + +Add the Gateway in the {{% tts %}}. + +For detailed instructions on adding gateways to {{% tts %}} using the CLI or Console, see [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). + +### Step 2 + +Update the server address in the gateway configuration settings. + +- When using the Semtech UDP Packet Forwarder, make sure to update the `server_address` in the gateway configuration settings to the address of the Gateway Server. For examples, see [The Things Network Addresses]({{< ref "/concepts/ttn/addresses" >}}) if you are using {{% ttss %}}, or [Cloud Addresses]({{< ref "/cloud/addresses" >}}) if you are using {{% tts %}} Cloud. See [Semtech UDP Packet Forwarder]({{< ref "/hardware/gateways/concepts/udp" >}}) documentation for more info. +- When using the LoRa Basics Station protocol, refer to the [LoRa Basics Station]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) documentation. + +Once your gateways are migrated, the traffic will be routed directly to {{% tts %}}. See [Troubleshooting Gateways]({{< ref "/hardware/gateways/troubleshooting" >}}) for common errors. + +If you migrated your end devices and gateways from The Things Industries {{% ttnv2 %}} (SaaS), their traffic might still end up in {{% ttnv2 %}}. If this occurs, disable the devices in {{% ttnv2 %}} by deleting their session keys, or deleting the application completely. diff --git a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/_index.md b/doc/content/concepts/migration/migrating-between-tts-distributions/_index.md similarity index 73% rename from doc/content/the-things-stack/migrating/migrating-between-tts-distributions/_index.md rename to doc/content/concepts/migration/migrating-between-tts-distributions/_index.md index 4083dabd32..044d8474b4 100644 --- a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/_index.md +++ b/doc/content/concepts/migration/migrating-between-tts-distributions/_index.md @@ -1,16 +1,16 @@ --- -title: "Migrating End Devices between The Things Stack distributions" +title: "Between The Things Stack distributions" description: "" -weight: 1 +aliases: [/the-things-stack/migrating/migrating-between-tts-distributions] --- This section explains how to migrate your devices between {{% tts %}} distributions. -There are multiple methods that you can use to migrate your devices from source {{% tts %}} distribution to target {{% tts %}} distribution, depending on if you want to migrate them with or without their existing session, and how many devices you wish to migrate. These methods include using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}), {{% tts %}} [Console]({{< ref "/the-things-stack/interact/console" >}}) or {{% tts %}} [CLI]({{< ref "/the-things-stack/interact/cli" >}}). +There are multiple methods that you can use to migrate your devices from source {{% tts %}} distribution to target {{% tts %}} distribution, depending on if you want to migrate them with or without their existing session, and how many devices you wish to migrate. These methods include using the [migration tool]({{}}), {{% tts %}} [Console]({{< ref "/concepts/features/console" >}}) or {{% tts %}} [CLI]({{< ref "/concepts/features/cli" >}}). -{{< note >}} We highly recommend using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) and [migrating devices without persisting their active session]({{< ref "/the-things-stack/migrating/migrating-between-tts-distributions/establish-new-session" >}}). {{}} +{{< note >}} We highly recommend using the [migration tool]({{}}) and [migrating devices without persisting their active session]({{< ref "/concepts/migration/migrating-between-tts-distributions/establish-new-session" >}}). {{}} Keep reading to learn how to migrate your devices using all of the above mentioned methods. As an example, we demonstrate migrating from {{% ttss %}} to {{% tts %}} Cloud. @@ -37,4 +37,4 @@ See [Payload Formatters]({{< ref "/integrations/payload-formatters" >}}) and [In Instructions for migrating your devices will differ depending on if you are using OTAA or ABP devices, and if you want to preserve their active session or not. Migrating your gateway will be needed in some cases. Choose your scenario and find the instructions in the following subsections. -If you experience issues with devices or gateways that you've migrated, check out the [Troubleshooting Devices]({{< ref "/devices/troubleshooting" >}}) and [Troubleshooting Gateways]({{< ref "/gateways/troubleshooting" >}}) sections. +If you experience issues with devices or gateways that you've migrated, check out the [Troubleshooting Devices]({{< ref "/hardware/devices/troubleshooting" >}}) and [Troubleshooting Gateways]({{< ref "/hardware/gateways/troubleshooting" >}}) sections. diff --git a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/establish-new-session/_index.md b/doc/content/concepts/migration/migrating-between-tts-distributions/establish-new-session/_index.md similarity index 72% rename from doc/content/the-things-stack/migrating/migrating-between-tts-distributions/establish-new-session/_index.md rename to doc/content/concepts/migration/migrating-between-tts-distributions/establish-new-session/_index.md index 6995c88220..f7fb32bcd1 100644 --- a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/establish-new-session/_index.md +++ b/doc/content/concepts/migration/migrating-between-tts-distributions/establish-new-session/_index.md @@ -5,6 +5,7 @@ weight: 2 aliases: [ /getting-started/migrating/migrating-between-tts-distributions/establish-new-session, + /the-things-stack/migrating/gateway-migration/establish-new-session, ] --- @@ -18,7 +19,7 @@ This section explains how to migrate end devices from {{% ttss %}} to {{% tts %} In this section, we consider migrating your devices in cases when you don't want to migrate your gateway from {{% ttss %}} to {{% tts %}} Cloud, or when your gateway is inaccessible for this migration. In those cases, devices are migrated from {{% ttss %}} to {{% tts %}} Cloud without persisting their active session, i.e. devices need to establish a new session with {{% tts %}} Cloud in order for a gateway (that wasn't migrated from {{% ttss %}}) to be able to route traffic from those devices to {{% tts %}} Cloud. More information about this is available in subsections below. -For a new session to be established between device (that's currently connected to {{% ttss %}}) and {{% tts %}} Cloud, device has to perform a [join procedure]({{< ref "/reference/components/join-server#join-procedure" >}}) to register on {{% tts %}} Cloud. In order not to lose any uplink traffic during this join procedure, we suggest to disable scheduling downlink messages on {{% ttss %}} Network Server using the following [CLI]({{< ref "/the-things-stack/interact/cli" >}}) command: +For a new session to be established between device (that's currently connected to {{% ttss %}}) and {{% tts %}} Cloud, device has to perform a [join procedure]({{< ref "/concepts/architecture/components/join-server#join-procedure" >}}) to register on {{% tts %}} Cloud. In order not to lose any uplink traffic during this join procedure, we suggest to disable scheduling downlink messages on {{% ttss %}} Network Server using the following [CLI]({{< ref "/concepts/features/cli" >}}) command: ```bash ttn-lw-cli dev set --application-id --device-id \ @@ -27,7 +28,7 @@ ttn-lw-cli dev set --application-id --device-id \ When the end device gets triggered to perform a new join on {{% tts %}} Cloud, the uplink traffic will still reach {{% ttss %}} until device is actually registered on Cloud. Using the command above, we make sure that we disable {{% ttss %}} Network Server to send Join Accept messages, data downlinks or MAC commands to device, i.e. we make sure that device doesn't get re-registered on {{% ttss %}}, but registered on {{% tts %}} Cloud. -{{< note >}} The [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) does this automatically when migrating devices so you don't need to worry about disabling the downlinks of exported devices. {{}} +{{< note >}} The [migration tool]({{}}) does this automatically when migrating devices so you don't need to worry about disabling the downlinks of exported devices. {{}} Now, you can proceed with migrating your device. Read the instructions below to migrate your OTAA or ABP devices. @@ -37,7 +38,7 @@ When your device is finally migrated, it will be assigned with a DevAddr issued Migrating an OTAA device without persisting its active session means the device will establish a new session with {{% tts %}} Cloud, i.e. it will have to perform a new join on {{% tts %}} Cloud network after migration. The device will negotiate about network parameters with {{% tts %}} Cloud Network Server, and during that negotiation, the device will be assigned with a new DevAddr from {{% tts %}} Cloud DevAddr block. -Since {{% ttss %}} and {{% tts %}} Cloud are both connected to Packet Broker, Packet Broker will be able to route your device's traffic to {{% tts %}} Cloud even if your gateway stays connected to {{% ttss %}}, i.e. you don't have to migrate your gateway to {{% tts %}} Cloud, only your device. However, if you want to migrate your gateway to {{% tts %}} Cloud too, see [Migrating Gateways]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) for instructions. +Since {{% ttss %}} and {{% tts %}} Cloud are both connected to Packet Broker, Packet Broker will be able to route your device's traffic to {{% tts %}} Cloud even if your gateway stays connected to {{% ttss %}}, i.e. you don't have to migrate your gateway to {{% tts %}} Cloud, only your device. However, if you want to migrate your gateway to {{% tts %}} Cloud too, see [Migrating Gateways]({{< ref "/concepts/migration/gateway-migration" >}}) for instructions. To migrate your OTAA device from {{% ttss %}} to {{% tts %}} Cloud without an active session, choose your preferred method and follow the steps described below. @@ -45,15 +46,15 @@ To migrate your OTAA device from {{% ttss %}} to {{% tts %}} Cloud without an ac {{< tabs/tab "Migration tool" >}} -For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following command for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/the-things-stack/migrating/migration-tool/export-from-tts" >}}). +For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following command for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/concepts/migration/exporting-end-devices/export-from-tts" >}}). -To export device using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) without persisting active session, use the `--tts.no-session` flag: +To export device using the [migration tool]({{}}) without persisting active session, use the `--tts.no-session` flag: ```bash ttn-lw-migrate device --source tts 'my-device' --tts.no-session > devices.json ``` -Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. The process of migrating OTAA devices using the migration tool ends here and you can ignore the info below the line. @@ -61,17 +62,17 @@ The process of migrating OTAA devices using the migration tool ends here and you {{< tabs/tab "Console" >}} -Using the Console is convenient only when you have a few devices to migrate. For larger groups of devices, we highly recommend using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) or CLI. +Using the Console is convenient only when you have a few devices to migrate. For larger groups of devices, we highly recommend using the [migration tool]({{}}) or CLI. -First step is to recreate your device on {{% tts %}} Cloud through the Console. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) for instructions on creating a device. You can reuse the DevEUI, AppEUI/JoinEUI and AppKey values from {{% ttss %}}. You can also generate new values for these parameters on {{% tts %}} Cloud, but then you will need to re-program your OTAA device using those values. +First step is to recreate your device on {{% tts %}} Cloud through the Console. See [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) for instructions on creating a device. You can reuse the DevEUI, AppEUI/JoinEUI and AppKey values from {{% ttss %}}. You can also generate new values for these parameters on {{% tts %}} Cloud, but then you will need to re-program your OTAA device using those values. {{< /tabs/tab >}} {{< tabs/tab "CLI" >}} -First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/the-things-stack/interact/cli/login" >}}) to {{% ttss %}}. +First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/concepts/features/cli/login" >}}) to {{% ttss %}}. -{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}) guide. {{}} +{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/concepts/features/cli/installing-cli" >}}) guide. {{}} Now, use the CLI to export your device's description from {{% ttss %}}: @@ -89,7 +90,7 @@ ttn-lw-cli end-devices get --application-id --device-id \ The command above will export your device's description to the `device-description.json` file in the current folder. Open the file with a text editor and remove the following fields: `join_server_address`, `network_server_address` and `application_server_address`. -Next, you need to import the `device-description.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to re-configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `device-description.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to re-configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. {{< /tabs/tab >}} @@ -111,11 +112,11 @@ Migrating an ABP device without persisting its active session means its session Let's first assume that you are able to re-program your ABP device with new DevAddr, NwkSKey and AppSKey issued by {{% tts %}} Cloud. -Since {{% ttss %}} and {{% tts %}} Cloud are both connected to Packet Broker, and your ABP device will be re-programmed with a new DevAddr from {{% tts %}} Cloud DevAddr block, Packet Broker will be able to route your device's traffic to {{% tts %}} Cloud even if your gateway stays connected to {{% ttss %}}, i.e. you don't have to migrate your gateway to {{% tts %}} Cloud, only your device. However, if you want to migrate your gateway to {{% tts %}} Cloud too, see [Migrating Gateways]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) for instructions. +Since {{% ttss %}} and {{% tts %}} Cloud are both connected to Packet Broker, and your ABP device will be re-programmed with a new DevAddr from {{% tts %}} Cloud DevAddr block, Packet Broker will be able to route your device's traffic to {{% tts %}} Cloud even if your gateway stays connected to {{% ttss %}}, i.e. you don't have to migrate your gateway to {{% tts %}} Cloud, only your device. However, if you want to migrate your gateway to {{% tts %}} Cloud too, see [Migrating Gateways]({{< ref "/concepts/migration/gateway-migration" >}}) for instructions. The process of migrating your ABP device from {{% ttss %}} to {{% tts %}} Cloud without its active session by re-programming it is the most straightforward if you use the {{% tts %}} Console. -First create a new ABP device on {{% tts %}} Cloud. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) for instructions on creating a device. Generate new DevAddr, AppSKey and NwkSKey values while creating the device. +First create a new ABP device on {{% tts %}} Cloud. See [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) for instructions on creating a device. Generate new DevAddr, AppSKey and NwkSKey values while creating the device. Now re-program your ABP device with newly created DevAddr, AppSKey and NwkSKey values from {{% tts %}} Cloud. You should immediately see uplinks arriving from your device to {{% tts %}} Cloud. @@ -125,7 +126,7 @@ However, if you don't want to re-program your device, i.e. you want to keep the Now let's assume that you want to migrate your ABP device to {{% tts %}} Cloud in such manner that it keeps its DevAddr, NwkSKey and AppSKey it was programmed with upon its registration on {{% ttss %}} network. -Note that {{% ttss %}} and {{% tts %}} Cloud use different DevAddr blocks. Since Packet Broker routes traffic according to the DevAddr blocks, in this case it won't be able to route your device's traffic properly, because of the {{% ttss %}}-related DevAddr. To successfully migrate your ABP device while keeping these parameters, you also need to migrate your gateway to {{% tts %}} Cloud. See instructions for [Migrating Gateways]({{< ref "/the-things-stack/migrating/gateway-migration" >}}). The ideal scenario would be to migrate your gateway and your device simultaneously. +Note that {{% ttss %}} and {{% tts %}} Cloud use different DevAddr blocks. Since Packet Broker routes traffic according to the DevAddr blocks, in this case it won't be able to route your device's traffic properly, because of the {{% ttss %}}-related DevAddr. To successfully migrate your ABP device while keeping these parameters, you also need to migrate your gateway to {{% tts %}} Cloud. See instructions for [Migrating Gateways]({{< ref "/concepts/migration/gateway-migration" >}}). The ideal scenario would be to migrate your gateway and your device simultaneously. To migrate your ABP device with preserving its DevAddr, NwkSKey and AppSKey, from {{% ttss %}} to {{% tts %}} Cloud, follow the steps described below. Keep in mind that the existing session will be violated because you will need to reset frame counters for your device, hence we refer to this as migrating without an active session. @@ -133,16 +134,16 @@ To migrate your ABP device with preserving its DevAddr, NwkSKey and AppSKey, fro {{< tabs/tab "Migration tool" >}} -For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following commands for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/the-things-stack/migrating/migration-tool/export-from-tts" >}}). +For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following commands for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/concepts/migration/exporting-end-devices/export-from-tts" >}}). -To export devices using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) without persisting active session, use the `--tts.no-session` flag: +To export devices using the [migration tool]({{}}) without persisting active session, use the `--tts.no-session` flag: ```bash ttn-lw-migrate device --source tts 'my-device' \ --tts.no-session > devices.json ``` -Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. You will also need to reset your ABP device. @@ -159,7 +160,7 @@ ttn-lw-migrate device --source tts 'my-device' \ Using the Console is covenient only when you have a few devices to migrate. For larger groups of devices, we highly recommend using the migration tool or the CLI. -First, recreate your device on {{% tts %}} Cloud. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) for instructions on creating a device. Reuse the DevEUI, DevAddr, AppSKey and NwkSKey values from {{% ttss %}}. +First, recreate your device on {{% tts %}} Cloud. See [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) for instructions on creating a device. Reuse the DevEUI, DevAddr, AppSKey and NwkSKey values from {{% ttss %}}. Navigate to **General settings → Network Layer → Advanced MAC settings** and enable the **Resets frame counters** option. @@ -169,9 +170,9 @@ When your device is registered in {{% tts %}} Cloud, you need to completely dele {{< tabs/tab "CLI" >}} -First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/the-things-stack/interact/cli/login" >}}) to {{% ttss %}}. +First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/concepts/features/cli/login" >}}) to {{% ttss %}}. -{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}) guide. {{}} +{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/concepts/features/cli/installing-cli" >}}) guide. {{}} Now, use the CLI to export your device's description from {{% ttss %}}: @@ -191,7 +192,7 @@ ttn-lw-cli end-devices get --application-id --device-id \ The command above will export your device's description to the `device-description.json` file in the current folder. Open the file with a text editor and remove the following fields: `join_server_address`, `network_server_address` and `application_server_address`. Also, set the `mac-settings.resets-f-cnt` field value to `true`. -Next, you need to import the `device-description.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to re-configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `device-description.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to re-configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. When your device is registered in {{% tts %}} Cloud, you need to completely delete it from {{% ttss %}} network to prevent conflicts. You will also need to reset your ABP device. diff --git a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/migrate-active-session/_index.md b/doc/content/concepts/migration/migrating-between-tts-distributions/migrate-active-session/_index.md similarity index 69% rename from doc/content/the-things-stack/migrating/migrating-between-tts-distributions/migrate-active-session/_index.md rename to doc/content/concepts/migration/migrating-between-tts-distributions/migrate-active-session/_index.md index 812ba3634a..1084ab7a86 100644 --- a/doc/content/the-things-stack/migrating/migrating-between-tts-distributions/migrate-active-session/_index.md +++ b/doc/content/concepts/migration/migrating-between-tts-distributions/migrate-active-session/_index.md @@ -4,6 +4,7 @@ description: "" aliases: [ /getting-started/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session, + /the-things-stack/migrating/gateway-migration/migrate-active-session, ] --- @@ -11,29 +12,29 @@ This section explains how to migrate end devices from {{% ttss %}} to {{% tts %} -{{< note >}} Keep in mind that [migrating devices without persisting active sessions]({{< ref "/the-things-stack/migrating/migrating-between-tts-distributions/establish-new-session" >}}) is highly recommended. {{}} +{{< note >}} Keep in mind that [migrating devices without persisting active sessions]({{< ref "/concepts/migration/migrating-between-tts-distributions/establish-new-session" >}}) is highly recommended. {{}} Read the instructions below to migrate your OTAA or ABP devices. ### Note on Gateway Migration -Even though they are both connected to [Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}), {{% ttss %}} and {{% tts %}} Cloud use different DevAddr blocks. +Even though they are both connected to [Packet Broker]({{< ref "/concepts/packet-broker" >}}), {{% ttss %}} and {{% tts %}} Cloud use different DevAddr blocks. When an active device session is migrated from {{% ttss %}} to {{% tts %}} Cloud, the DevAddr that the device was assigned with (OTAA) or programmed with (ABP) when it joined {{% ttss %}} will be preserved. Since Packet Broker routes traffic according to the DevAddr blocks, in case of migrating an active session to {{% tts %}} Cloud it won't be able to route your device's traffic properly, because your device still has its {{% ttss %}}-related DevAddr. -Hence, to successfully migrate an active device session from {{% ttss %}} to {{% tts %}} Cloud, you also need to migrate your gateway to {{% tts %}} Cloud. See instructions for [Migrating Gateways]({{< ref "/the-things-stack/migrating/gateway-migration" >}}). The ideal scenario would be to migrate your gateway and your device simultaneously, in order to not loose any traffic. +Hence, to successfully migrate an active device session from {{% ttss %}} to {{% tts %}} Cloud, you also need to migrate your gateway to {{% tts %}} Cloud. See instructions for [Migrating Gateways]({{< ref "/concepts/migration/gateway-migration" >}}). The ideal scenario would be to migrate your gateway and your device simultaneously, in order to not loose any traffic. ## Migrate OTAA and ABP Devices -Since migrating an active session implies migrating a large number of parameters that cannot be configured manually, it is possible to do it only using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool">}}) or the [CLI]({{< ref "/the-things-stack/interact/cli" >}}). +Since migrating an active session implies migrating a large number of parameters that cannot be configured manually, it is possible to do it only using the [migration tool]({{}}) or the [CLI]({{< ref "/concepts/features/cli" >}}). {{< tabs/container "Migration tool" "CLI">}} {{< tabs/tab "Migration tool" >}} -For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following command for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/the-things-stack/migrating/migration-tool/export-from-tts" >}}). +For detailed instructions on how to configure the migration tool before exporting your device and how to adjust the following command for migrating multiple devices or whole applications, head over to [Export Devices from {{% tts %}}]({{< ref "/concepts/migration/exporting-end-devices/export-from-tts" >}}). -To export device using the [migration tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) with its active session, use the following command: +To export device using the [migration tool]({{}}) with its active session, use the following command: ```bash ttn-lw-migrate device --source tts 'my-device' > devices.json @@ -48,7 +49,7 @@ ttn-lw-migrate device --source tts 'my-device' \ --tts.delete-source-device ``` -Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. {{}} @@ -56,9 +57,9 @@ Next, you need to import the `devices.json` file in your {{% tts %}} Cloud appli Migrating an active OTAA or ABP device session means the existing session that was established between the device and {{% ttss %}} will just be transferred to {{% tts %}} Cloud. To migrate active device sessions from {{% ttss %}} to {{% tts %}} Cloud using the CLI, follow the steps described below. -First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/the-things-stack/interact/cli/login" >}}) to {{% ttss %}}. +First, configure your CLI to connect to {{% ttss %}}. See [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. Make sure you also perform a [Login with the CLI]({{< ref "/concepts/features/cli/login" >}}) to {{% ttss %}}. -{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}) guide. {{}} +{{< note >}} We recommend to use the latest version of the CLI. Instructions for upgrading the CLI if you already have it installed are available in the [Installing the CLI]({{< ref "/concepts/features/cli/installing-cli" >}}) guide. {{}} To export your OTAA device's session from {{% ttss %}}: @@ -95,7 +96,7 @@ The command above will export your device's session to the `device-session.json` Before your device's session is imported in {{% tts %}} Cloud, you need to completely delete your device from {{% ttss %}} to prevent conflicts. -Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) guide for instructions. +Next, you need to import the `devices.json` file in your {{% tts %}} Cloud application. See instructions on how to [add end devices in bulk in {{% tts %}}]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). Keep in mind that if you are using the CLI to import devices, you first have to configure it to connect to {{% tts %}} Cloud. Again, see [Configuring the CLI]({{< ref "/concepts/features/cli/configuring-cli" >}}) guide for instructions. {{}} diff --git a/doc/content/the-things-stack/concepts/networking/_index.md b/doc/content/concepts/networking/_index.md similarity index 98% rename from doc/content/the-things-stack/concepts/networking/_index.md rename to doc/content/concepts/networking/_index.md index de09e4c10a..579131274f 100644 --- a/doc/content/the-things-stack/concepts/networking/_index.md +++ b/doc/content/concepts/networking/_index.md @@ -2,7 +2,7 @@ title: "Networking" description: "" weight: 4 -aliases: [/reference/networking] +aliases: [/reference/networking, /the-things-stack/concepts/networking/] --- {{% tts %}} uses a port per protocol, with a TLS counterpart when applicable. Ports can be shared by multiple services using the same protocol, i.e. gRPC services sharing management, data and events services. diff --git a/doc/content/the-things-stack/packet-broker/_index.md b/doc/content/concepts/packet-broker/_index.md similarity index 98% rename from doc/content/the-things-stack/packet-broker/_index.md rename to doc/content/concepts/packet-broker/_index.md index 1724eed994..0f8babab77 100644 --- a/doc/content/the-things-stack/packet-broker/_index.md +++ b/doc/content/concepts/packet-broker/_index.md @@ -3,10 +3,13 @@ title: Packet Broker description: "" summary: Exchange traffic with other LoRaWAN networks via peering to share coverage and improve the overall network performance. aliases: - - "/integrations/peering" - - "/reference/peering" - - "/reference/packet-broker" - - "getting-started/packet-broker" + [ + /integrations/peering, + /reference/peering, + /reference/packet-broker, + getting-started/packet-broker, + /the-things-stack/packet-broker, + ] weight: 6 --- diff --git a/doc/content/the-things-stack/packet-broker/api.md b/doc/content/concepts/packet-broker/api.md similarity index 100% rename from doc/content/the-things-stack/packet-broker/api.md rename to doc/content/concepts/packet-broker/api.md diff --git a/doc/content/the-things-stack/packet-broker/configure/_index.md b/doc/content/concepts/packet-broker/configure/_index.md similarity index 87% rename from doc/content/the-things-stack/packet-broker/configure/_index.md rename to doc/content/concepts/packet-broker/configure/_index.md index bb1dfe7eed..23f7b9e9be 100644 --- a/doc/content/the-things-stack/packet-broker/configure/_index.md +++ b/doc/content/concepts/packet-broker/configure/_index.md @@ -7,12 +7,15 @@ distributions: - Enterprise - Open Source aliases: - - "/reference/packet-broker/configure" - - "/getting-started/packet-broker/configure/registration" - - "/getting-started/packet-broker/configure/routing-policies" - - "/the-things-stack/packet-broker/configure/registration" - - "/the-things-stack/packet-broker/configure/routing-policies" - - "/getting-started/packet-broker/configure" + [ + /reference/packet-broker/configure, + /getting-started/packet-broker/configure/registration, + /getting-started/packet-broker/configure/routing-policies, + /concepts/packet-broker/configure/registration, + /concepts/packet-broker/configure/routing-policies, + /getting-started/packet-broker/configure, + /the-things-stack/packet-broker/configure, + ] --- This section shows you how to configure Packet Broker. You can manage your registration, list other networks, configure routing policies with other networks, and see which networks are forwarding traffic to your network. @@ -25,8 +28,10 @@ To see which routing policies are configured by default for all deployments, see 1. Understand how Packet Broker works and what routing policies are. [Learn about Packet Broker]({{< relref "../" >}}). 2. {{% tts %}} connected to Packet Broker. - - {{< distributions "Cloud" >}} **{{% tts %}} Cloud** is already connected to Packet Broker. - - {{< distributions "Enterprise" "Open Source" >}} **{{% tts %}} Enterprise** and **Open Source**: see [Connect]({{< relref "connect" >}}). + +- {{< distributions "Cloud" >}} **{{% tts %}} Cloud** is already connected to Packet Broker. +- {{< distributions "Enterprise" "Open Source" >}} **{{% tts %}} Enterprise** and **Open Source**: see [Connect]({{< relref "connect" >}}). + 3. An admin account for the {{% tts %}} deployment. All Packet Broker configuration requires administrative access. Packet Broker can be configured using either the Console or the CLI. diff --git a/doc/content/the-things-stack/packet-broker/configure/default-policy.png b/doc/content/concepts/packet-broker/configure/default-policy.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/default-policy.png rename to doc/content/concepts/packet-broker/configure/default-policy.png diff --git a/doc/content/the-things-stack/packet-broker/configure/gateway-visibilities.md b/doc/content/concepts/packet-broker/configure/gateway-visibilities.md similarity index 64% rename from doc/content/the-things-stack/packet-broker/configure/gateway-visibilities.md rename to doc/content/concepts/packet-broker/configure/gateway-visibilities.md index ef875d7485..164e396aac 100644 --- a/doc/content/the-things-stack/packet-broker/configure/gateway-visibilities.md +++ b/doc/content/concepts/packet-broker/configure/gateway-visibilities.md @@ -7,10 +7,14 @@ distributions: - Enterprise - Open Source new_in_version: 3.15.1 -aliases: [/getting-started/packet-broker/configure/gateway-visibilities] +aliases: + [ + /getting-started/packet-broker/configure/gateway-visibilities, + /the-things-stack/packet-broker/gateway-visibilities, + ] --- -Gateway visibility configuration allows network administrators to configure who sees which gateway-related information. Having gateways listed publicly on the map can help discovering partner networks, but it may also lead to privacy concerns. Therefore, Packet Broker allows configuring gateway visibility with fine-grained settings. [Learn more about gateway visibility]({{< ref "/the-things-stack/packet-broker#gateway-visibility-settings" >}}). +Gateway visibility configuration allows network administrators to configure who sees which gateway-related information. Having gateways listed publicly on the map can help discovering partner networks, but it may also lead to privacy concerns. Therefore, Packet Broker allows configuring gateway visibility with fine-grained settings. [Learn more about gateway visibility]({{< ref "/concepts/packet-broker#gateway-visibility-settings" >}}). @@ -86,17 +90,17 @@ ttn-lw-cli packetbroker home-networks gateway-visibilities delete default When setting gateway visibility, you can specify a combination of the following flags: -Flag | Meaning ---- | --- -`--all` | Enable all fields -`--location` | Enable gateway coordinates -`--antenna-placement` | Enable indoor/outdoor antenna placement -`--antenna-count` | Enable number of antennas -`--fine-timestamps` | Enable whether the gateway produces fine timestamps -`--contact-information` | Enable administrative and technical contact information of the gateway -`--status` | Enable online/offline status -`--frequency-plan` | Enable region and channel plan with frequencies that the gateway uses -`--packet-rates` | Enable receive and transmission packet rates +| Flag | Meaning | +| ----------------------- | ---------------------------------------------------------------------- | +| `--all` | Enable all fields | +| `--location` | Enable gateway coordinates | +| `--antenna-placement` | Enable indoor/outdoor antenna placement | +| `--antenna-count` | Enable number of antennas | +| `--fine-timestamps` | Enable whether the gateway produces fine timestamps | +| `--contact-information` | Enable administrative and technical contact information of the gateway | +| `--status` | Enable online/offline status | +| `--frequency-plan` | Enable region and channel plan with frequencies that the gateway uses | +| `--packet-rates` | Enable receive and transmission packet rates | {{< /tabs/tab >}} diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-custom.png b/doc/content/concepts/packet-broker/configure/pb-custom.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-custom.png rename to doc/content/concepts/packet-broker/configure/pb-custom.png diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-gw-visibility.png b/doc/content/concepts/packet-broker/configure/pb-gw-visibility.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-gw-visibility.png rename to doc/content/concepts/packet-broker/configure/pb-gw-visibility.png diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-menu.png b/doc/content/concepts/packet-broker/configure/pb-menu.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-menu.png rename to doc/content/concepts/packet-broker/configure/pb-menu.png diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-networks.png b/doc/content/concepts/packet-broker/configure/pb-networks.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-networks.png rename to doc/content/concepts/packet-broker/configure/pb-networks.png diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-public.png b/doc/content/concepts/packet-broker/configure/pb-public.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-public.png rename to doc/content/concepts/packet-broker/configure/pb-public.png diff --git a/doc/content/the-things-stack/packet-broker/configure/pb-register.png b/doc/content/concepts/packet-broker/configure/pb-register.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/configure/pb-register.png rename to doc/content/concepts/packet-broker/configure/pb-register.png diff --git a/doc/content/the-things-stack/packet-broker/configure/routing-policies.md b/doc/content/concepts/packet-broker/configure/routing-policies.md similarity index 98% rename from doc/content/the-things-stack/packet-broker/configure/routing-policies.md rename to doc/content/concepts/packet-broker/configure/routing-policies.md index 4d2a5631d4..aee965e50b 100644 --- a/doc/content/the-things-stack/packet-broker/configure/routing-policies.md +++ b/doc/content/concepts/packet-broker/configure/routing-policies.md @@ -6,7 +6,11 @@ distributions: - Cloud - Enterprise - Open Source -aliases: [/getting-started/packet-broker/configure/routing-policies] +aliases: + [ + /getting-started/packet-broker/configure/routing-policies, + /the-things-stack/packet-broker/routing-policies, + ] --- Routing policies define the rules that Forwarders configure for routing messages to Home Networks. diff --git a/doc/content/the-things-stack/packet-broker/connect.md b/doc/content/concepts/packet-broker/connect.md similarity index 86% rename from doc/content/the-things-stack/packet-broker/connect.md rename to doc/content/concepts/packet-broker/connect.md index 5533bc406e..788dba18f4 100644 --- a/doc/content/the-things-stack/packet-broker/connect.md +++ b/doc/content/concepts/packet-broker/connect.md @@ -4,11 +4,14 @@ description: "" weight: 1 distributions: ["Enterprise", "Open Source"] aliases: - - "/integrations/peering/enable" - - "/reference/peering/enable" - - "/reference/packet-broker/enable" - - "/reference/packet-broker/connect" - - "/getting-started/packet-broker/connect" + [ + /integrations/peering/enable, + /reference/peering/enable, + /reference/packet-broker/enable, + /reference/packet-broker/connect, + /getting-started/packet-broker/connect, + /the-things-stack/packet-broker/connect, + ] --- This section explains how to connect {{% tts %}} to Packet Broker. @@ -67,7 +70,7 @@ pba: enable: true ``` -See [Packet Broker Agent configuration]({{< ref "/reference/configuration/packet-broker-agent" >}}) for all configuration options. +See [Packet Broker Agent configuration]({{< ref "/enterprise/management/configuration/packet-broker-agent" >}}) for all configuration options. ## Configure Gateway Server @@ -85,7 +88,7 @@ gs: - "packetbroker=00000000/0" ``` -See [Gateway Server configuration]({{< ref "/reference/configuration/gateway-server" >}}) for all configuration options. +See [Gateway Server configuration]({{< ref "/enterprise/management/configuration/gateway-server" >}}) for all configuration options. ## Configure Network Server @@ -112,7 +115,7 @@ ns: By default, the Network Server uses NetID `000000` which is intended for experimentation purposes. Only devices that are activated with a DevAddr that refers to a NetID will have their traffic routed by Packet Broker to your network. -See [Network Server configuration]({{< ref "/reference/configuration/network-server" >}}) for all configuration options. +See [Network Server configuration]({{< ref "/enterprise/management/configuration/network-server" >}}) for all configuration options. ## Configure Packet Broker diff --git a/doc/content/the-things-stack/packet-broker/overview.png b/doc/content/concepts/packet-broker/overview.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/overview.png rename to doc/content/concepts/packet-broker/overview.png diff --git a/doc/content/reference/pb-routing/_index.md b/doc/content/concepts/packet-broker/pb-routing/_index.md similarity index 78% rename from doc/content/reference/pb-routing/_index.md rename to doc/content/concepts/packet-broker/pb-routing/_index.md index 6c7b3b92ae..83d29f8474 100644 --- a/doc/content/reference/pb-routing/_index.md +++ b/doc/content/concepts/packet-broker/pb-routing/_index.md @@ -1,5 +1,6 @@ --- -title: "Packet Broker Routing" +title: "Default Packet Broker Routing" +aliases: [/reference/pb-routing] --- This reference contains default Packet Broker routing tables. @@ -8,7 +9,7 @@ This reference contains default Packet Broker routing tables. The following table explains which Forwarder Networks and Home Networks are configured by default in {{% tts %}}. -To configure custom routing policies for your deployment, see the [Configure Packet Broker]({{< ref "the-things-stack/packet-broker/configure" >}}) section. +To configure custom routing policies for your deployment, see the [Configure Packet Broker]({{< ref "/concepts/packet-broker/configure" >}}) section. | Forwarder Network | Home Network | Status | | -------------------- | -------------------- | ----------- | diff --git a/doc/content/the-things-stack/packet-broker/status-location-public.png b/doc/content/concepts/packet-broker/status-location-public.png similarity index 100% rename from doc/content/the-things-stack/packet-broker/status-location-public.png rename to doc/content/concepts/packet-broker/status-location-public.png diff --git a/doc/content/the-things-stack/packet-broker/troubleshooting.md b/doc/content/concepts/packet-broker/troubleshooting.md similarity index 58% rename from doc/content/the-things-stack/packet-broker/troubleshooting.md rename to doc/content/concepts/packet-broker/troubleshooting.md index 2357d4ea52..8229c370c8 100644 --- a/doc/content/the-things-stack/packet-broker/troubleshooting.md +++ b/doc/content/concepts/packet-broker/troubleshooting.md @@ -1,11 +1,14 @@ --- title: Troubleshooting description: "" -aliases: [/getting-started/packet-broker/troubleshooting] +aliases: + [ + /getting-started/packet-broker/troubleshooting, + /the-things-stack/packet-broker/troubleshooting, + ] --- - -This section provides help for common issues and frequently asked questions you may have when using Packet Broker. +This section provides help for common issues and frequently asked questions you may have when using Packet Broker. @@ -13,16 +16,16 @@ This section provides help for common issues and frequently asked questions you We recommend the following: -- Check if there are any incidents on the Packet Broker end. See [Packet Broker Status Page]({{< ref "/the-things-stack/packet-broker#status-page" >}}). -- Make sure your tenant is registered in Packet Broker. See [Configure Packet Broker section]({{< ref "/the-things-stack/packet-broker/configure" >}}). -- Double check if routing policies are properly configured. See [Routing Policies]({{< ref "/the-things-stack/packet-broker/configure/routing-policies" >}}). +- Check if there are any incidents on the Packet Broker end. See [Packet Broker Status Page]({{< ref "/concepts/packet-broker#status-page" >}}). +- Make sure your tenant is registered in Packet Broker. See [Configure Packet Broker section]({{< ref "/concepts/packet-broker/configure" >}}). +- Double check if routing policies are properly configured. See [Routing Policies]({{< ref "/concepts/packet-broker/configure/routing-policies" >}}). - If you're sure that all previous points are checked, contact our [support](mailto:support@thethingsindustries.com). ## My gateway is not visible in the Packet Broker Mapper API. -For self-hosted deployments ({{% tts %}} Enterprise and Open Source), users need to configure the Packet Broker Mapper address in the [Packet Broker Agent]({{< ref "/the-things-stack/packet-broker/connect#configure-packet-broker-agent" >}}). Also, the Gateway Server needs to be configured to forward traffic to upstream hosts (see [Gateway Server Forwarding Options]({{< ref "/reference/configuration/gateway-server#forwarding-options" >}})). +For self-hosted deployments ({{% tts %}} Enterprise and Open Source), users need to configure the Packet Broker Mapper address in the [Packet Broker Agent]({{< ref "/concepts/packet-broker/connect#configure-packet-broker-agent" >}}). Also, the Gateway Server needs to be configured to forward traffic to upstream hosts (see [Gateway Server Forwarding Options]({{< ref "/enterprise/management/configuration/gateway-server#forwarding-options" >}})). -Double check that your [Gateway Visibility Settings]({{< ref "/the-things-stack/packet-broker/configure/gateway-visibilities" >}}) are properly configured. +Double check that your [Gateway Visibility Settings]({{< ref "/concepts/packet-broker/configure/gateway-visibilities" >}}) are properly configured. Your gateway's status and location have to be publicly available. To configure this in {{% tts %}} Console, navigate to the **General settings** tab in your gateway's overview page, and check the **Make status public** and **Make location public** boxes. @@ -36,4 +39,4 @@ ttn-lw-cli gateways set $GTW_ID --status-public --location-public ## I am unable to toggle the **Register network** button. What should I do? -The reason you cannot toggle the **Register network** button +The reason you cannot toggle the **Register network** button diff --git a/doc/content/the-things-stack/concepts/server-addresses/_index.md b/doc/content/concepts/server-addresses/_index.md similarity index 76% rename from doc/content/the-things-stack/concepts/server-addresses/_index.md rename to doc/content/concepts/server-addresses/_index.md index b7219b9b46..1f897c6aef 100644 --- a/doc/content/the-things-stack/concepts/server-addresses/_index.md +++ b/doc/content/concepts/server-addresses/_index.md @@ -1,18 +1,16 @@ --- title: "Server Addresses" description: "" -weight: 5 -aliases: - [ - /getting-started/server-addresses, - /the-things-stack/concepts/server-addresses, - ] +aliases: [/getting-started/server-addresses] +weight: 6 --- -To access the [Console]({{< ref "/the-things-stack/interact/console" >}}), register a [command line client]({{< ref "the-things-stack/interact/cli" >}}), [connect gateways]({{< ref "/gateways/concepts/adding-gateways" >}}), or schedule uplinks via [webhooks]({{< ref "integrations/webhooks" >}}), it is necessary to know the server address of your {{% tts %}} instance. This section contains information about addresses for different {{% tts %}} deployments. +This section contains information about addresses for different {{% tts %}} deployments. +To access the [Console]({{< ref "/concepts/features/console" >}}), register a [command line client]({{< ref "/concepts/features/cli" >}}), [connect gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}), or schedule uplinks via [webhooks]({{< ref "integrations/webhooks" >}}), it is necessary to know the server address of your {{% tts %}} instance. + Deployments of {{% tts %}} in a single cluster use the same server address for all components. Distributed deployments, like {{% tts %}} Cloud and {{% ttss %}}, use different addresses per region for routing components, while the address of global components (like Identity Server) is always the same. Enterprise and Open Source deployments may be in a single cluster, or distributed over multiple clusters with multiple addresses. @@ -20,19 +18,19 @@ The server addresses for the different {{% tts %}} deployments are listed below. You can update the examples below with your tenant ID and cluster ID by filling them here. The `` will be replaced with the provided tenant ID. -{{< tenant-cluster-selector >}} - -## Deployments - -**Cloud**: See [Cloud Addresses]({{< ref "/the-things-stack/cloud/addresses" >}}). +## Your The Things Stack Addresses -**AWS Launcher**: This is the domain you specify in your [CloudFormation configuration]({{< ref "the-things-stack/host/aws/ami/deployment-guide#step-2-configure-the-deployment" >}}). +{{< enterprise-cluster-selector >}} -**{{% ttss %}}**: See [{{% ttss %}} Addresses]({{< ref "reference/ttn/addresses" >}}) +Your cluster address is: -**Enterprise and Open Source**: This is the domain you configure when installing {{% tts %}}. If you followed the [Getting Started guide]({{< ref "/the-things-stack/host/docker" >}}), this is what you use instead of `thethings.example.com`. +

+ +.. + +

-## Console +### Console To access the Console, simply enter the [server address of your deployment](#deployments) in a browser. @@ -42,7 +40,7 @@ To access the Console, simply enter the [server address of your deployment](#dep **Example 3**: If you installed {{% tts %}} Enterprise or Open Source, access the Console at the domain you used in place of `https://thethings.example.com`. -## LNS +### LNS The LNS gateway address is a combination of the **protocol** (wss), the **server address**, and the **port** (8887). @@ -52,7 +50,7 @@ The LNS gateway address is a combination of the **protocol** (wss), the **server **Example 3**: If you installed {{% tts %}} Enterprise or Open Source, the LNS address is the domain you used in configuration, for example `wss://thethings.example.com:8887`. -## CUPS +### CUPS The CUPS gateway address is a combination of the **protocol** (https), the **server address**, and the **port** (443). @@ -62,7 +60,7 @@ The CUPS gateway address is a combination of the **protocol** (https), the **ser **Example 3**: If you installed {{% tts %}} Enterprise or Open Source, the CUPS address is the domain you used in configuration, for example `https://thethings.example.com:443`. -## The Things Kickstarter Gateway Account Server +### The Things Kickstarter Gateway Account Server The The Things Kickstarter Gateway Account Server address is a combination of the **scheme** (https) and the **server address**. The port is inferred from the scheme. diff --git a/doc/content/the-things-stack/troubleshooting/_index.md b/doc/content/concepts/troubleshooting/_index.md similarity index 61% rename from doc/content/the-things-stack/troubleshooting/_index.md rename to doc/content/concepts/troubleshooting/_index.md index 26a322e60d..81a406d8cb 100644 --- a/doc/content/the-things-stack/troubleshooting/_index.md +++ b/doc/content/concepts/troubleshooting/_index.md @@ -2,7 +2,7 @@ title: "Troubleshooting" description: "" weight: 8 -aliases: [/getting-started/troubleshooting] +aliases: [/getting-started/troubleshooting, /the-things-stack/troubleshooting] --- This section provides help for common issues and frequently asked questions you may have when getting started with {{% tts %}}. @@ -17,27 +17,27 @@ See the [authentication reference]({{< ref "/api/concepts/auth" >}}). ## How do I create and authorize new users? -See [user and organization management]({{< ref "/the-things-stack/management/user-management" >}}). +See [user and organization management]({{< ref "/concepts/advanced/user-management" >}}). ## Troubleshooting common errors in the Console -See [Troubleshooting Console]({{< ref "the-things-stack/interact/console/troubleshooting" >}}). +See [Troubleshooting Console]({{< ref "/concepts/features/console/troubleshooting" >}}). ## Troubleshooting common CLI errors -See [Troubleshooting CLI]({{< ref "the-things-stack/interact/cli/troubleshooting" >}}). +See [Troubleshooting CLI]({{< ref "/concepts/features/cli/troubleshooting" >}}). ## Troubleshooting common device errors -See [Troubleshooting Devices]({{< ref "/devices/troubleshooting" >}}). +See [Troubleshooting Devices]({{< ref "/hardware/devices/troubleshooting" >}}). ## Troubleshooting common gateway errors -See [Troubleshooting Gateways]({{< ref "/gateways/troubleshooting" >}}). +See [Troubleshooting Gateways]({{< ref "/hardware/gateways/troubleshooting" >}}). ## Tenant is not active -For [{{% tts %}} Cloud]({{< ref "/the-things-stack/cloud" >}}) customers, this error indicates that the payment is probably overdue. If you are experiencing payment issues, please contact your Account Manager directly for further assistance. +For [{{% tts %}} Cloud]({{< ref "/cloud" >}}) customers, this error indicates that the payment is probably overdue. If you are experiencing payment issues, please contact your Account Manager directly for further assistance. ## How do I change the tenant ID of an existing tenant in {{% tts %}}? diff --git a/doc/content/reference/ttn/_index.md b/doc/content/concepts/ttn/_index.md similarity index 72% rename from doc/content/reference/ttn/_index.md rename to doc/content/concepts/ttn/_index.md index bbd7bee5f7..cc03dce66e 100644 --- a/doc/content/reference/ttn/_index.md +++ b/doc/content/concepts/ttn/_index.md @@ -1,30 +1,12 @@ --- -title: "The Things Network" -description: "" -distributions: "Sandbox" -aliases: [/getting-started/ttn] +title: "The Things Stack Sandbox" +aliases: [/getting-started/ttn, /reference/ttn] --- -{{< figure src="logo_TTN.svg" class="float plain" width="150px" >}} - -[The Things Network](https://www.thethingsnetwork.org/) is a global collaborative Internet of Things ecosystem that creates networks, devices and solutions using LoRaWAN. - -The Things Network runs {{% ttss %}}, which is a crowdsourced, open and decentralized LoRaWAN® network. This network is a great way to get started testing devices, applications, and integrations, and get familiar with LoRaWAN. +{{% ttss %}} (run by The Things Industries) is a free and limited version of The Things Stack _without any guarantees or SLA_ available to The Things Network community for non-commercial, small scale testing and experimentation. -[Login or create an account](https://console.cloud.thethings.network/) to get started with The Things Network and start using {{% tts %}} Console. - -Once you have an account, get started by following instructions for adding [Devices]({{< ref "/devices" >}}), [Gateways]({{< ref "/gateways" >}}), and [Integrations]({{< ref "/integrations" >}}). - -For more information about The Things Network and LoRaWAN, see [The Things Network Documentation](https://thethingsnetwork.org/docs) - -For commercial solutions, we strongly recommend using an SLA-backed network provided by The Things Industries. Learn more about the [enterprise offerings](https://thethingsindustries.com/deployment/) of [The Things Industries](https://thethingsindustries.com/). - -## Clusters - -{{% ttss %}} (run by The Things Industries) is a multi-cluster deployment. This means that while your account information is stored in a central location, you can connect your gateways to a closer cluster, and route all your IoT traffic in that cluster. This can significantly reduce latency because your traffic would not have to cross half the planet. - {{% ttss %}} currently has the following clusters: | **Cluster ID** | **Name** | **Location** | @@ -37,4 +19,20 @@ If you navigate to [this link](https://console.cloud.thethings.network), you can {{< figure src="cluster-location.png" alt="Recommended clusters" >}} -See the [Addresses]({{< ref "/reference/ttn/addresses" >}}) for details about cluster, Console, API endpoints and other {{% ttss %}} addresses. +See the [Addresses]({{< ref "/concepts/ttn/addresses" >}}) for details about cluster, Console, API endpoints and other {{% ttss %}} addresses. + +{{< figure src="logo_TTN.svg" class="float plain" width="150px" >}} + +[The Things Network](https://www.thethingsnetwork.org/) is a global collaborative Internet of Things ecosystem that creates networks, devices and solutions using LoRaWAN. + +The Things Network runs {{% ttss %}}, which is a crowdsourced, open and decentralized LoRaWAN® network. This network is a great way to get started testing devices, applications, and integrations, and get familiar with LoRaWAN. + + + +[Login or create an account](https://console.cloud.thethings.network/) to get started with The Things Network and start using {{% tts %}} Console. + +Once you have an account, get started by following instructions for adding [Devices]({{< ref "/devices" >}}), [Gateways]({{< ref "/hardware/gateways" >}}), and [Integrations]({{< ref "/integrations" >}}). + +For more information about The Things Network and LoRaWAN, see [The Things Network Documentation](https://thethingsnetwork.org/docs) + +For commercial solutions, we strongly recommend using an SLA-backed network provided by The Things Industries. Learn more about the [enterprise offerings](https://thethingsindustries.com/deployment/) of [The Things Industries](https://thethingsindustries.com/). diff --git a/doc/content/reference/ttn/addresses.md b/doc/content/concepts/ttn/addresses.md similarity index 90% rename from doc/content/reference/ttn/addresses.md rename to doc/content/concepts/ttn/addresses.md index 93ffcab75b..3757b36977 100644 --- a/doc/content/reference/ttn/addresses.md +++ b/doc/content/concepts/ttn/addresses.md @@ -1,7 +1,7 @@ --- title: "Addresses" description: "" -aliases: [/getting-started/ttn/addresses] +aliases: [/getting-started/ttn/addresses, /reference/ttn/addresses] --- The addresses where you can reach {{% ttss %}} consist of the cluster ID and `cloud.thethings.network`. @@ -12,7 +12,7 @@ You can update the examples below with your cluster ID by filling it here. ## Console -To learn how to get started with the Console, see the [Console Getting Started Guide]({{< ref "/the-things-stack/interact/console" >}}). +To learn how to get started with the Console, see the [Console Getting Started Guide]({{< ref "/concepts/features/console" >}}). Each cluster has a Console where you can manage gateways and end devices of that cluster. You can use any cluster with your Cloud account. @@ -73,4 +73,4 @@ device-template-converter-grpc-address: ' qr-code-generator-grpc-address: '.cloud.thethings.network:8884' -See the [CLI Getting Started Guide]({{< ref "/the-things-stack/interact/cli" >}}) to learn how to get started with the CLI and working with configuration files. +See the [CLI Getting Started Guide]({{< ref "/concepts/features/cli" >}}) to learn how to get started with the CLI and working with configuration files. diff --git a/doc/content/reference/ttn/cluster-location.png b/doc/content/concepts/ttn/cluster-location.png similarity index 100% rename from doc/content/reference/ttn/cluster-location.png rename to doc/content/concepts/ttn/cluster-location.png diff --git a/doc/content/reference/ttn/logo_TTN.svg b/doc/content/concepts/ttn/logo_TTN.svg similarity index 100% rename from doc/content/reference/ttn/logo_TTN.svg rename to doc/content/concepts/ttn/logo_TTN.svg diff --git a/doc/content/devices/_index.md b/doc/content/devices/_index.md index 36d7467ec4..5caefdc40d 100644 --- a/doc/content/devices/_index.md +++ b/doc/content/devices/_index.md @@ -1,10 +1,4 @@ --- title: "Devices" description: "" -weight: 3 -menu: - main: - weight: 3 --- - -This section contains guides to add, configure and troubleshoot LoRaWAN® end devices in {{% tts %}}. There are also guides on core concepts to learn more and detailed information on popular end devices. diff --git a/doc/content/the-things-stack/host/_index.md b/doc/content/enterprise/_index.md similarity index 81% rename from doc/content/the-things-stack/host/_index.md rename to doc/content/enterprise/_index.md index b7578b7492..14b213192c 100644 --- a/doc/content/the-things-stack/host/_index.md +++ b/doc/content/enterprise/_index.md @@ -1,7 +1,11 @@ --- -title: "Host The Things Stack" -description: "" -weight: 2 +title: "The Things Stack Enterprise" +description: "Concepts specific to The Things Stack Cloud" +weight: 4 +menu: + main: + weight: 4 +aliases: [/the-things-stack/host] --- {{% tts %}} is a highly flexible software product that is available in a variety of deployment models and caters to various user requirements. Check which model applies to your use case. @@ -23,7 +27,7 @@ For users who want to install {{% tts %}} on their local machines for testing or ## Special Deployments -[The Things Join Server]({{< relref "join-server" >}}) is a stand-alone LoRaWAN Join Server. The Things Join Server can be used by device makers to provision end devices to be used by all distributions of The Things Stack as well as any other standards compliant LoRaWAN Network Servers. +[The Things Join Server]({{< relref "/enterprise/join-server" >}}) is a stand-alone LoRaWAN Join Server. The Things Join Server can be used by device makers to provision end devices to be used by all distributions of The Things Stack as well as any other standards compliant LoRaWAN Network Servers. ## Version Update Support diff --git a/doc/content/the-things-stack/host/aws/_index.md b/doc/content/enterprise/aws/_index.md similarity index 71% rename from doc/content/the-things-stack/host/aws/_index.md rename to doc/content/enterprise/aws/_index.md index e79eae9f34..f3490b13de 100644 --- a/doc/content/the-things-stack/host/aws/_index.md +++ b/doc/content/enterprise/aws/_index.md @@ -2,15 +2,20 @@ title: "AWS" description: "" weight: 2 -aliases: [/getting-started/aws] +aliases: [/getting-started/aws, /the-things-stack/host/aws] --- {{% tts %}} is currently available as two flavours for self-hosting on Amazon Web Services (AWS). + + 1. AWS Marketplace AMI - - An AWS CloudFormation stack that can be purchased at the AWS Marketplace. + +- An AWS CloudFormation stack that can be purchased at the AWS Marketplace. + 2. AWS ECS - - A set of CloudFormation templates that can be deployed to build a highly available cluster for large-scale deployments. + +- A set of CloudFormation templates that can be deployed to build a highly available cluster for large-scale deployments. In addition, {{% tts %}} natively supports interaction with AWS IoT. Check the [AWS IoT]({{< ref "/integrations/cloud-integrations/aws-iot" >}}) guide to learn to integrate {{% tts %}} with the AWS IoT services. @@ -18,7 +23,6 @@ In addition, {{% tts %}} natively supports interaction with AWS IoT. Check the [ - {{< figure src="available-at-amazon-badge.png" alt="available-at-amazon-badge.png" class="plain" >}} > Amazon's trademark is used under license from Amazon.com, Inc. or its affiliates. diff --git a/doc/content/the-things-stack/host/aws/ami/_index.md b/doc/content/enterprise/aws/ami/_index.md similarity index 71% rename from doc/content/the-things-stack/host/aws/ami/_index.md rename to doc/content/enterprise/aws/ami/_index.md index afb23aa745..cd7d8479a3 100644 --- a/doc/content/the-things-stack/host/aws/ami/_index.md +++ b/doc/content/enterprise/aws/ami/_index.md @@ -3,7 +3,12 @@ title: "AWS Marketplace AMI" description: "" distributions: "AWS Launcher" weight: 1 -aliases: [/getting-started/aws/ami, /getting-started/aws/ami/deployment-guide/] +aliases: + [ + /getting-started/aws/ami, + /getting-started/aws/ami/deployment-guide/, + /the-things-stack/host/aws/ami, + ] --- {{% tts %}} is available as an AWS CloudFormation stack that can be purchased at the AWS Marketplace via the [AWS Marketplace listing](https://aws.amazon.com/marketplace/pp/B081HZKDJ4?qid=1593444260869&sr=0-1&ref_=srh_res_product_title). diff --git a/doc/content/the-things-stack/host/aws/ami/application-server-telemetry/_index.md b/doc/content/enterprise/aws/ami/application-server-telemetry/_index.md similarity index 76% rename from doc/content/the-things-stack/host/aws/ami/application-server-telemetry/_index.md rename to doc/content/enterprise/aws/ami/application-server-telemetry/_index.md index 536b5d7109..801db8f805 100644 --- a/doc/content/the-things-stack/host/aws/ami/application-server-telemetry/_index.md +++ b/doc/content/enterprise/aws/ami/application-server-telemetry/_index.md @@ -4,10 +4,13 @@ description: "" weight: 5 deprecated_in_version: "3.11.1" aliases: - - /integrations/aws-iot/application-server-telemetry - - /integrations/cloud-integrations/aws-iot/application-server-telemetry/ - - /getting-started/aws/application-server-telemetry - - /getting-started/aws/ami/application-server-telemetry + [ + /integrations/aws-iot/application-server-telemetry, + /integrations/cloud-integrations/aws-iot/application-server-telemetry/, + /getting-started/aws/application-server-telemetry, + /getting-started/aws/ami/application-server-telemetry, + /the-things-stack/host/aws/ami/application-server-telemetry, + ] --- {{% tts %}} supports publishing of uplink messages directly to the AWS IoT suite. @@ -16,17 +19,18 @@ aliases: AWS IoT suite can be used to subscribe to detailed uplink messages as well as get insights into aggregated metrics of your uplink data. -{{< note >}} This only works if {{% tts %}} runs in your AWS account, i.e. in a Enterprise or AWS Launcher deployment. When using the [AWS Marketplace AMI listing]({{< ref "/the-things-stack/host/aws/ami" >}}), the **AWS IoT Telemetry** option in the CloudFormation template must be set to **true** during the deployment phase. {{}} +{{< note >}} This only works if {{% tts %}} runs in your AWS account, i.e. in a Enterprise or AWS Launcher deployment. When using the [AWS Marketplace AMI listing]({{< ref "/enterprise/aws/ami" >}}), the **AWS IoT Telemetry** option in the CloudFormation template must be set to **true** during the deployment phase. {{}} ## Setup -1. Login to the AWS Console in the *same region* as where the CloudFormation template is deployed. +1. Login to the AWS Console in the _same region_ as where the CloudFormation template is deployed. 2. Search for **IoT Core** service and click to enter the IoT Core window. 3. On the left-hand panel, select the **Test** option. In the central panel, choose **Subscribe to a topic**. 4. In the **Subscription topic** field enter `lorawan///things//up` to subscribe to the uplinks for a particular device. -For example, if your CloudFormation stack name is `my-lorawan-server`, the application ID is `my-motion-sensors` and the device ID is `my-motion-sensor-1`, then the topic would be `lorawan/my-lorawan-server/my-motion-sensors/things/my-motion-sensor-1/up`. -When the device sends an uplink message, it will be displayed in this window in the preferred format. -The following is an example payload in JSON format: + For example, if your CloudFormation stack name is `my-lorawan-server`, the application ID is `my-motion-sensors` and the device ID is `my-motion-sensor-1`, then the topic would be `lorawan/my-lorawan-server/my-motion-sensors/things/my-motion-sensor-1/up`. + When the device sends an uplink message, it will be displayed in this window in the preferred format. + The following is an example payload in JSON format: + ``` { "format": "json", diff --git a/doc/content/the-things-stack/host/aws/ami/application-server-telemetry/aws-iot-monitor.png b/doc/content/enterprise/aws/ami/application-server-telemetry/aws-iot-monitor.png similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/application-server-telemetry/aws-iot-monitor.png rename to doc/content/enterprise/aws/ami/application-server-telemetry/aws-iot-monitor.png diff --git a/doc/content/the-things-stack/host/aws/ami/best-practices/_index.md b/doc/content/enterprise/aws/ami/best-practices/_index.md similarity index 87% rename from doc/content/the-things-stack/host/aws/ami/best-practices/_index.md rename to doc/content/enterprise/aws/ami/best-practices/_index.md index e3d172b5e7..ee8d85b5f0 100644 --- a/doc/content/the-things-stack/host/aws/ami/best-practices/_index.md +++ b/doc/content/enterprise/aws/ami/best-practices/_index.md @@ -2,7 +2,11 @@ title: "Best Practices" description: "" weight: 4 -aliases: [/getting-started/aws/ami/best-practices] +aliases: + [ + /getting-started/aws/ami/best-practices, + /the-things-stack/host/aws/ami/best-practices, + ] --- This page describes best practices of a {{% tts %}} deployment on AWS AMI. @@ -31,4 +35,4 @@ EC2 machine included in CloudFormation template can be accessed via SSH. It is s ## Alerting -It is advised to set up an alerting system for basic values like CPU/Memory usage or number of uplinks. Currently the single-AMI template does not offer an alerting solution out of the box, but you can refer to the [AWS ECS deployment]({{< ref "/the-things-stack/host/aws/ecs/monitoring" >}}) for an example setup. +It is advised to set up an alerting system for basic values like CPU/Memory usage or number of uplinks. Currently the single-AMI template does not offer an alerting solution out of the box, but you can refer to the [AWS ECS deployment]({{< ref "/enterprise/aws/ecs/monitoring" >}}) for an example setup. diff --git a/doc/content/enterprise/aws/ami/deployment-guide/_index.md b/doc/content/enterprise/aws/ami/deployment-guide/_index.md new file mode 100644 index 0000000000..80337f8e72 --- /dev/null +++ b/doc/content/enterprise/aws/ami/deployment-guide/_index.md @@ -0,0 +1,171 @@ +--- +title: "Deployment Guide" +description: "" +weight: 1 +aliases: + [ + /getting-started/aws/deployment-guide, + /the-things-stack/host/aws/ami/deployment-guide, + ] +--- + +This section contains detailed information to help you setup {{% tts %}} on the AWS Marketplace. + + + +{{< figure src="ami-architecture.jpg" alt="AMI Architecture" class="plain" >}} + +### AWS Deployment Architecture + +The following image describes the architecture of the components that are deployed while using the **default parameters**. + +{{< figure src="ami-deployment-architecture.svg" alt="AMI deployment Architecture" class="plain" >}} + +{{< note >}} The public subnet is not fixed in to an Availability Zone (AZ) and hence is part of the default AZ of the VPC. {{}} + +## Preparation + +This section lists the preparatory steps necessary to successfully complete this guide. + +### Specialized Knowledge + +In order to follow this guide to deploy {{% tts %}}, it is recommended to be familiar with the following concepts: + +- AWS EC2, AWS CloudFormation +- Shell and command line usage +- Basics of LoRaWAN® devices and gateways + +### Prerequisites + +The following are necessary to complete this guide: + +1. An account with AWS with access to the AWS Marketplace. If you don't have one, create it by using the [Create an AWS account](https://portal.aws.amazon.com/billing/signup#/start) page. +2. An RSA Public-Private Key pair +3. Sufficient rights on your account to create IAM roles +4. A LoRaWAN® compliant Gateway +5. A LoRaWAN compliant End Device +6. Access to a name server for DNS mapping +7. (Optional) An AWS Secret containing TLS certificate data, if a custom TLS certificate is needed + +## Deployment using AWS Cloud Formation + +### Step 1: Prepare the Deployment + +1. Login to your AWS Marketplace and navigate to the [product page for {{% tts %}} for LoRaWAN](https://aws.amazon.com/marketplace/pp/B081HZKDJ4). +2. Choose the correct AWS Region in which to deploy your stack. Also choose the **Software Pricing Tier** that suits your needs. +3. Make sure to read the terms of usage and other information available. +4. If applicable, [request a service limit increase](https://console.aws.amazon.com/support/cases#/create?issueType=service-limit-increase&limitType=service-code-) for additional VPCs and/or Elastic IPs. +5. Click **Continue to Subscribe** and accept the terms and conditions once they are found satisfactory. +6. Now click **Continue to Configuration** to configure your deployment. + +### Step 2: Configure the Deployment + +The **Continue to Configuration** button will redirect you to the AWS CloudFormation page where the CloudFormation template is pre-loaded. +This template allows the user to customize the deployment. The following is a list of the supported parameters that are available to the user. + +#### Basic Configuration + +| Parameter | Description | Default | +| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| EC2 Instance Name | Name of the EC2 instance. | `the-things-enterprise-stack` | +| Domain | Domain name. You should be able to configure DNS for the domain. TLS certificates from Let's Encrypt will automatically be requested. | - | +| Network Title\* | The title of your deployment. | `The Things Stack Enterprise for LoRaWAN` | +| CIDR block | CIDR block used by the VPC. | 10.0.0.0/16 | + +> \* Optional field + +#### Security Configuration + +| **Parameter** | **Description** | **Default** | +| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------- | +| Admin Username | Name of the admin user. | `admin` | +| Admin Email | Email address of the admin user. | `admin@mycompany.com` | +| Initial Admin Password | Initial admin password. Please choose a strong password. It is recommended to change this password upon first login. | - | +| Amazon RDS Database Username | Username of the relational database. | `postgres` | +| Amazon RDS Database Password | Password for the relational database. This password is used to access the Amazon RDS database. | - | +| SSH Key | Name of an existing EC2 KeyPair to enable SSH access to your instance. | - | +| SendGrid API Key\* | API key for [SendGrid](https://sendgrid.com/) to send emails. | - | +| Amazon ElastiCache KMS Key ID\* | Key used for Redis at-rest encryption. Leave empty to disable encryption. (Warning) A change to this field requires manual migration of the database. | - | +| Amazon ElastiCache Password\* | Password used to access Redis. Leave empty to disable TLS connection. (Warning) A change to this field requires manual migration of the database. | - | +| TLS Certificate\* | TLS certificate to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested. | - | +| TLS Certificate Key\* | TLS certificate key to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested. | - | +| TLS Certificate CA\* | TLS certificate CA to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested. | - | +| ARN of an AWS Secret containing the TLS certificate data\* | TLS certificate data specified as an AWS secret. If this secret is specified, TLSCertificate, TLSCertificateCA and TLSCertificateKey values will be ignored. The AWS secret must have 3 key/value pairs with the key names: cert, key, ca. | - | + +> \* Optional field + +#### External Connectivity + +| **Parameter** | **Description** | +| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| Restrict SSH Access to IP Range | The source IP address range that can be used to connect via SSH to the EC2 instances. Use 0.0.0.0/0 for global SSH access. | +| Restrict Service Access to IP Range | The source IP address range that can be used to connect to the deployed services. Use 0.0.0.0/0 for global access. | + +#### User Registration + +{{< note >}} All of the fields below are optional. {{}} + +| **Parameter** | **Description** | **Default** | +| ------------------------------------ | -------------------------------------------------------------------------------------- | ----------- | +| Require Admin Approval | If set to true, administrator approval is needed for creating new accounts. | false | +| Require Email Validation | If set to true, validation of contact information is necessary to create new accounts. | false | +| Require User Invites | If set to true, email invites are necessary to create new accounts. | false | +| Minimum Length | Minimum length for user passwords. | 8 | +| Minimum Number of Digits | Minimum number of digits for user passwords. | 1 | +| Minimum Number of Special Characters | Minimum number of special characters for user passwords. | 0 | +| Minimum Number of Uppercase Letters | Minimum number of uppercase letters for user passwords. | 1 | + +#### Resource Settings + +{{< note >}} The fields in this section are for advanced users. A change to some of these parameters might incur additional costs. {{}} +{{< note >}} In order to provide failover, we recommend enabling Multi-AZ for Amazon RDS and Redis. {{}} + +| **Parameter** | **Description** | **Default** | +| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | +| EC2 Instance Type | EC2 Instance Type. | t3.small | +| Redis Backup Retention Period\* | The retention period for daily Redis backups (days). | 7 | +| Redis Instance Type | The size of machine for the Redis instance. | cache.t2.small | +| Enable Multi-AZ for Redis | If true, replicas of Redis are created. If true, RedisNumCacheClusters property must be greater than 1. | false | +| Number of Redis Multi-AZ Instances | The number of replicas for this replication group. If RedisMultiAZSupport is true, this value must be greater than 1. Note that this multiplies the Amazon ElastiCache Redis instance costs. | 1 | +| Amazon RDS Database Name | Name of the relational database. (Warning) A change to this field requires manual migration of the database. | ttn_lorawan | +| Amazon RDS Instance Type | The instance type for the Amazon RDS database. | db.t3.small | +| Amazon RDS Backup Retention Period | The retention period for daily Amazon RDS backups (days). (Warning) A change to this field requires manual migration of the database. | 7 | +| Amazon RDS Postgres Version | PostgreSQL version for the Amazon RDS database. | 11.4 | +| Enable Multi-AZ for Amazon RDS | If true, a failover instance is created in case the primary instance fails. Note that this doubles the Amazon RDS instance costs. | false | + +#### LoRaWAN Network Server Settings + +{{< note >}} All of following parameters are optional. {{}} + +| **Parameter** | **Description** | **Default** | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | +| LoRaWAN JoinEUI Prefix | Prefix for the LoRaWAN JoinEUIs that are handled by this network. | 0000000000000000/0 | +| LoRaWAN DevAddr Prefix | Prefix for the LoRaWAN DevAddrs that are handled by this network. | 00000000/7 | +| LoRaWAN NetID | The LoRaWAN NetID that is assigned through [LoRa Alliance membership](https://lora-alliance.org/become-a-member). This is required if your network needs interoperability (e.g. roaming, peering, join flow) with other networks. If you do not have a NetID, please use 000000 or 000001. | 000000 | + +#### AWS IoT settings + +| **Parameter** | **Description** | **Default** | +| ----------------- | --------------------------------------------------------- | ----------- | +| AWS IoT Telemetry | If set to true, publish all upstream messages to AWS IoT. | true | + +#### Update From Existing Deployment + +{{< note >}} The following parameters are exclusively meant for updating an existing deployment. {{}} + +| **Parameter** | **Description** | +| ---------------------------------- | --------------------------------------------------------------------------------------- | +| Amazon RDS Snapshot | The ARN (Amazon Resource Name) of the Amazon RDS snapshot to restore the database from. | +| Amazon ElastiCache Redis Snapshot | The name of the Redis snapshot to restore the database from. | +| S3 Profile Pictures Bucket Name | The name of the S3 bucket for profile pictures. | +| S3 End Device Pictures Bucket Name | The name of the S3 bucket for end device pictures. | + +### Step 3: Start the Deployment + +1. Once the parameters of {{% tts %}} are configured, click **Next** to configure options for the CloudFormation Stack. You may use the defaults in this page. +2. Click **Next** review the deployment. Select the **I acknowledge that AWS CloudFormation might create IAM resources.** checkbox and click **Create Stack** option. +3. If all the parameters were entered correctly, AWS CloudFormation triggers the creation of your CloudFormation stack. The stack is now in the `CREATE_IN_PROGRESS` state. On average, this process takes about 40 minutes. +4. You can monitor the status of your deployment by navigating to **CloudFormation** > **\** > **Events**. +5. Once the required resources are successfully deployed, the state of the CloudFormation stack is updated to `CREATE_COMPLETE`. + +Upon completion of these steps, please head over to the [Post Deployment Configuration guide]({{< relref "../post-deployment" >}}) to configure your deployment. diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-architecture.jpg b/doc/content/enterprise/aws/ami/deployment-guide/ami-architecture.jpg similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-architecture.jpg rename to doc/content/enterprise/aws/ami/deployment-guide/ami-architecture.jpg diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-deployment-architecture.drawio b/doc/content/enterprise/aws/ami/deployment-guide/ami-deployment-architecture.drawio similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-deployment-architecture.drawio rename to doc/content/enterprise/aws/ami/deployment-guide/ami-deployment-architecture.drawio diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-deployment-architecture.svg b/doc/content/enterprise/aws/ami/deployment-guide/ami-deployment-architecture.svg similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/deployment-guide/ami-deployment-architecture.svg rename to doc/content/enterprise/aws/ami/deployment-guide/ami-deployment-architecture.svg diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/aws-quick-start-creds.png b/doc/content/enterprise/aws/ami/deployment-guide/aws-quick-start-creds.png similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/deployment-guide/aws-quick-start-creds.png rename to doc/content/enterprise/aws/ami/deployment-guide/aws-quick-start-creds.png diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/aws-quick-start-login.png b/doc/content/enterprise/aws/ami/deployment-guide/aws-quick-start-login.png similarity index 100% rename from doc/content/the-things-stack/host/aws/ami/deployment-guide/aws-quick-start-login.png rename to doc/content/enterprise/aws/ami/deployment-guide/aws-quick-start-login.png diff --git a/doc/content/the-things-stack/host/aws/ami/post-deployment/_index.md b/doc/content/enterprise/aws/ami/post-deployment/_index.md similarity index 82% rename from doc/content/the-things-stack/host/aws/ami/post-deployment/_index.md rename to doc/content/enterprise/aws/ami/post-deployment/_index.md index 17a5e5c546..0dbe4948f2 100644 --- a/doc/content/the-things-stack/host/aws/ami/post-deployment/_index.md +++ b/doc/content/enterprise/aws/ami/post-deployment/_index.md @@ -2,7 +2,12 @@ title: "Post Deployment Configuration" description: "" weight: 2 -aliases: [/guides/aws/ami/after-deploy, /getting-started/aws/ami/post-deployment] +aliases: + [ + /guides/aws/ami/after-deploy, + /getting-started/aws/ami/post-deployment, + /the-things-stack/host/aws/ami/post-deployment, + ] --- This section provides the information necessary to get started with {{% tts %}} after it is deployed via [AWS Marketplace](https://aws.amazon.com/marketplace/pp/The-Things-Industries-The-Things-Enterprise-Stack/B081HZKDJ4) using AWS CloudFormation. @@ -18,21 +23,21 @@ In order to access the Console/API of the {{% tts %}}, the domain name chosen du Now, login to the Domain Name Management window of the Domain Name Registrar to which your preferred Domain is registered. Create a DNS **A** record with the parameters shown below. -|**Name**|**Record Type**|**Value**| -|---|---|---| -|`@`|`A`|**PublicIP**| +| **Name** | **Record Type** | **Value** | +| -------- | --------------- | ------------ | +| `@` | `A` | **PublicIP** | If you are using a sub-domain: -|**Name**|**Record Type**|**Value**| -|---|---|---| -|`sub-domain`|`A`|**PublicIP**| +| **Name** | **Record Type** | **Value** | +| ------------ | --------------- | ------------ | +| `sub-domain` | `A` | **PublicIP** | For example, if your **PublicIP** value is `3.12.14.15` and your sub-domain is `lorawan.mycompany.com`, then navigate to the management tab for the domain `mycompany.com` and perform the following mapping: -|**Name**|**Record Type**|**Value**| -|---|---|---| -|`lorawan`|`A`|3.12.14.15| +| **Name** | **Record Type** | **Value** | +| --------- | --------------- | ---------- | +| `lorawan` | `A` | 3.12.14.15 | There will be an initial propagation delay for this value to be updated. You can check the status via a DNS lookup using either an [online tool](https://network-tools.webwiz.net/nslookup.htm) or using a command line tool (ex: `nslookup`). @@ -46,11 +51,11 @@ Apart from the DNS mapping above, no additional steps are necessary for this. ## Getting Started using the Console -Please check the [Console]({{< ref "/the-things-stack/interact/console" >}}) guide to get quickly started with {{% tts %}} Console. +Please check the [Console]({{< ref "/concepts/features/console" >}}) guide to get quickly started with {{% tts %}} Console. ## Getting Started using the Command Line Interface (CLI) -Please check the [CLI]({{< ref "/the-things-stack/interact/cli" >}}) guide to get quickly started with {{% tts %}} CLI. +Please check the [CLI]({{< ref "/concepts/features/cli" >}}) guide to get quickly started with {{% tts %}} CLI. ## SSH Access @@ -99,7 +104,7 @@ Please check [Gateways]({{< relref "gateways" >}}) section to find an extensive ### Registering a Device -Please check the [Adding Devices]({{< relref "devices/adding-devices" >}}) guide. +Please check the [Adding Devices]({{< relref "/hardware/devices/adding-devices" >}}) guide. ## AWS IoT diff --git a/doc/content/the-things-stack/host/aws/ami/troubleshooting/_index.md b/doc/content/enterprise/aws/ami/troubleshooting/_index.md similarity index 92% rename from doc/content/the-things-stack/host/aws/ami/troubleshooting/_index.md rename to doc/content/enterprise/aws/ami/troubleshooting/_index.md index 8fcaf96632..6c325e8603 100644 --- a/doc/content/the-things-stack/host/aws/ami/troubleshooting/_index.md +++ b/doc/content/enterprise/aws/ami/troubleshooting/_index.md @@ -2,7 +2,11 @@ title: "Troubleshooting AWS AMI Deployment" description: "" weight: 6 -aliases: [/getting-started/aws/ami/troubleshooting] +aliases: + [ + /getting-started/aws/ami/troubleshooting, + /the-things-stack/host/aws/ami/troubleshooting, + ] --- -In this guide, we request a free, trusted certificate from [Let's Encrypt](https://letsencrypt.org/getting-started/), using the built in ACME support, but if you already have a certificate (`cert.pem`) and a corresponding key (`key.pem`), you can also use those. +In this guide, we request a free, trusted certificate from [Let's Encrypt](https://letsencrypt.org/getting-started/), using the built in ACME support, but if you already have a certificate (`cert.pem`) and a corresponding key (`key.pem`), you can also use those. If you are deploying using ACME, move to the [Automatic Certificate Management](#automatic-certificate-management) section. @@ -38,11 +42,11 @@ config/     └── ttn-lw-stack-docker.yml # configuration file for {{% tts %}} ``` -If you are using Let's Encrypt in a multi-tenant {{% tts %}} environment, make sure you specify all tenant addresses in the TLS configuration of `ttn-lw-stack-docker.yml`. Read more in the [TLS section]({{< ref "/the-things-stack/host/docker/configuration#tls" >}}). +If you are using Let's Encrypt in a multi-tenant {{% tts %}} environment, make sure you specify all tenant addresses in the TLS configuration of `ttn-lw-stack-docker.yml`. Read more in the [TLS section]({{< ref "/enterprise/docker/configuration#tls" >}}). Certificates will automatically be requested the first time you access {{% tts %}}. You will notice that the page takes some time to load while certificates are obtained in the background. -Once you have created the `acme` folder and given it appropriate permissions, move on to [run {{% tts %}}]({{< ref "/the-things-stack/host/docker/running-the-stack" >}})! +Once you have created the `acme` folder and given it appropriate permissions, move on to [run {{% tts %}}]({{< ref "/enterprise/docker/running-the-stack" >}})! ## Custom Certificate Authority @@ -114,19 +118,19 @@ Be sure to configure `docker-compose.yml` and `ttn-lw-stack-docker.yml` for your To use CA certificates you already have or [self-signed certificates](#custom-certificate-authority), you will need to uncomment the custom certificates section of `docker-compose.yml`: {{< highlight yaml "linenos=table,linenostart=66" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-custom-certificates.yml" from=66 to=79 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-custom-certificates.yml" from=66 to=79 >}} {{< /highlight >}} You will also need to comment out the Let's Encrypt section of `ttn-lw-stack-docker.yml`: {{< highlight yaml "linenos=table,linenostart=48" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml" from=48 to=55 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml" from=48 to=55 >}} {{< /highlight >}} And uncomment the custom certificates section: {{< highlight yaml "linenos=table,linenostart=41" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml" from=41 to=46 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml" from=41 to=46 >}} {{< /highlight >}} In order to use the certificate (`cert.pem`) and key (`key.pem`), you also need to set these permissions: @@ -150,4 +154,4 @@ config/ Make sure you have configured `docker-compose.yml` and `ttn-lw-stack-docker.yml` for your custom certificates, as shown in [using custom certificates](#using-custom-certificates). -Now that the permissions have been set you can move on to [run {{% tts %}}]({{< ref "/the-things-stack/host/docker/running-the-stack" >}})! \ No newline at end of file +Now that the permissions have been set you can move on to [run {{% tts %}}]({{< ref "/enterprise/docker/running-the-stack" >}})! diff --git a/doc/content/the-things-stack/host/docker/configuration/docker-compose-custom-certificates.yml b/doc/content/enterprise/docker/configuration/docker-compose-custom-certificates.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/docker-compose-custom-certificates.yml rename to doc/content/enterprise/docker/configuration/docker-compose-custom-certificates.yml diff --git a/doc/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml b/doc/content/enterprise/docker/configuration/docker-compose-enterprise.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml rename to doc/content/enterprise/docker/configuration/docker-compose-enterprise.yml diff --git a/doc/content/the-things-stack/host/docker/configuration/docker-compose-open-source.yml b/doc/content/enterprise/docker/configuration/docker-compose-open-source.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/docker-compose-open-source.yml rename to doc/content/enterprise/docker/configuration/docker-compose-open-source.yml diff --git a/doc/content/the-things-stack/host/docker/configuration/index.md b/doc/content/enterprise/docker/configuration/index.md similarity index 82% rename from doc/content/the-things-stack/host/docker/configuration/index.md rename to doc/content/enterprise/docker/configuration/index.md index 8f6fb9ba46..415c31ae69 100644 --- a/doc/content/the-things-stack/host/docker/configuration/index.md +++ b/doc/content/enterprise/docker/configuration/index.md @@ -2,7 +2,11 @@ title: "Configuration" description: "" weight: 1 -aliases: [/getting-started/installation/configuration] +aliases: + [ + /getting-started/installation/configuration, + /the-things-stack/host/docker/configuration, + ] --- This guide shows an example of configuring {{% tts %}} using configuration files, with an example domain `thethings.example.com` and TLS certificates from Let's Encrypt. @@ -16,6 +20,7 @@ In addition to the written instructions below, video instructions for installing ## Configuration Files + {{% tts %}} requires two configuration files when installing with Docker: `docker-compose.yml` and `ttn-lw-stack-docker.yml`. The files are provided below: {{< tabs/container "Enterprise" "Open Source" >}} @@ -58,7 +63,7 @@ Next, proceed to the instructions below on how to change additional settings for `ttn-lw-stack-docker.yml` contains the configuration specific to {{% tts %}} deployment and is used to configure {{% tts %}}. When {{% tts %}} starts, it searches through `ttn-lw-stack-docker.yml` for component server addresses, a TLS certificate source, client authentication credentials, and other configuration parameters. -The configuration options in `ttn-lw-stack-docker` can also be specified using command-line flags or environment variables. All configuration options have a corresponding environment variable and command-line flag. See the [Configuration Reference]({{< ref "reference/configuration" >}}) for more information about the configuration options. +The configuration options in `ttn-lw-stack-docker` can also be specified using command-line flags or environment variables. All configuration options have a corresponding environment variable and command-line flag. See the [Configuration Reference]({{< ref "/enterprise/management/configuration" >}}) for more information about the configuration options. Settings in `docker-compose.yml` and `ttn-lw-stack-docker.yml` files are explained in detail in [Understanding Docker Configuration](#understanding-docker-configuration) and [Understanding The Things Stack Configuration](#understanding-the-things-stack-configuration) sections below. Further, we provide tips for running {{% tts %}} in production. @@ -88,11 +93,11 @@ In production, replace the `image` with a working, stable tag from [Docker Hub - The simplest configuration for PostgreSQL looks like this (excerpted from the example `docker-compose.yml`): {{< highlight yaml "linenos=table,linenostart=4" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=4 to=17 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=4 to=17 >}} {{< /highlight >}} {{< note >}} -Alternatively, you can use a managed TimescaleDB database, like [Timescale Cloud](https://www.timescale.com/cloud). In that case, make sure to configure the [Identity Server]({{< ref "/reference/configuration/identity-server#database-options" >}}), [Application Server]({{< ref "/reference/configuration/application-server#storage-integration-options" >}}) and [Network Operations Center]({{< ref "/reference/configuration/network-operations-center#database-options" >}}) databases. +Alternatively, you can use a managed TimescaleDB database, like [Timescale Cloud](https://www.timescale.com/cloud). In that case, make sure to configure the [Identity Server]({{< ref "/enterprise/management/configuration/identity-server#database-options" >}}), [Application Server]({{< ref "/enterprise/management/configuration/application-server#storage-integration-options" >}}) and [Network Operations Center]({{< ref "/enterprise/management/configuration/network-operations-center#database-options" >}}) databases. {{< /note >}} {{< /tabs/tab >}} @@ -103,11 +108,11 @@ In production, replace the `image` with a working, stable tag from [Docker Hub - The simplest configuration for PostgreSQL looks like this (excerpted from the example `docker-compose.yml`): {{< highlight yaml "linenos=table,linenostart=4" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-open-source.yml" from=4 to=15 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-open-source.yml" from=4 to=15 >}} {{< /highlight >}} {{< note >}} -Alternatively, you can use a managed PostgreSQL database. In that case, make sure to configure the [Identity Server]({{< ref "/reference/configuration/identity-server#database-options" >}}) database. +Alternatively, you can use a managed PostgreSQL database. In that case, make sure to configure the [Identity Server]({{< ref "/enterprise/management/configuration/identity-server#database-options" >}}) database. {{< /note >}} {{< /tabs/tab >}} @@ -121,12 +126,12 @@ The configuration in this guide uses a single instance of [Redis](https://redis. In production, replace the `image` with a working, stable tag from [Docker Hub - Redis](https://hub.docker.com/_/redis?tab=tags). -It is also possible (and even preferred) to use a managed Redis database. In this case, you will need to configure the managed database address with the `redis-address` [configuration option]({{< ref "reference/configuration/the-things-stack#redis-options" >}}) or `TTN_LW_REDIS_ADDRESS` environment variable. +It is also possible (and even preferred) to use a managed Redis database. In this case, you will need to configure the managed database address with the `redis-address` [configuration option]({{< ref "/enterprise/management/configuration/the-things-stack#redis-options" >}}) or `TTN_LW_REDIS_ADDRESS` environment variable. The simplest configuration for Redis looks like this (excerpted from the example `docker-compose.yml`): {{< highlight yaml "linenos=table,linenostart=19" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=19 to=27 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=19 to=27 >}} {{< /highlight >}} ### {{% tts %}} @@ -142,13 +147,13 @@ In production, replace the `image` with a working, stable tag from [Docker Hub - The default command is `start`, which starts {{% tts %}}. {{< highlight yaml "linenos=table,linenostart=56" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=56 to=61 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=56 to=61 >}} {{< /highlight >}} The `depends_on` field tells Docker Compose that {{% tts %}} depends on PostgreSQL and Redis. With this, Docker Compose will wait for PostgreSQL and Redis to come online before starting {{% tts %}}. {{< highlight yaml "linenos=table,linenostart=62" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=62 to=64 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=62 to=64 >}} {{< /highlight >}} {{< note >}} If using a managed SQL or Redis database, these can be removed from `depends_on` and the services do not need to be started in Docker. {{}} @@ -158,7 +163,7 @@ The `depends_on` field tells Docker Compose that {{% tts %}} depends on PostgreS Under the `volumes` section, volumes for the files that need to be persisted on the disk are defined. There are stored blob files (such as profile pictures) and certificate files retrieved with ACME (if required). Also, local `./config/stack/` directory is mounted on the container under `/config`, so that {{% tts %}} can find the configuration file at `/config/ttn-lw-stack-docker.yml`. {{< highlight yaml "linenos=table,linenostart=65" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=65 to=69 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=65 to=69 >}} {{< /highlight >}} {{< note >}} If your `ttn-lw-stack-docker.yml` is in a directory other than `./config/stack`, you will need to change this volume accordingly. {{}} @@ -172,7 +177,7 @@ The databases used by {{% tts %}} are configured in the `environment` section. I The `ports` section exposes {{% tts %}}'s ports outside the Docker container. Port `80` and `443` are mapped to the internal HTTP and HTTPS ports. The other ports have a direct mapping. If you don't need support for gateways and applications that don't use TLS, you can remove ports starting with `188`: {{< highlight yaml "linenos=table,linenostart=78" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/docker-compose-enterprise.yml" from=78 to=98 >}} +{{< readfile path="/content/enterprise/docker/configuration/docker-compose-enterprise.yml" from=78 to=98 >}} {{< /highlight >}} {{< note >}} Be sure to provide network access to these ports on the machine you are running {{% tts %}}. {{}} @@ -181,18 +186,18 @@ The `ports` section exposes {{% tts %}}'s ports outside the Docker container. Po Configuration options for running {{% tts %}} are specified in the `ttn-lw-stack-docker.yml` file. This section points out the required configuration options. -The example `ttn-lw-stack-docker.yml` file for {{% tts %}} Enterprise shown below contains details which help you follow this section. The example `ttn-lw-stack-docker.yml` file is also available for download in the [Example Configuration Files]({{< ref "/the-things-stack/host/docker/configuration#example-configuration-files" >}}) section. +The example `ttn-lw-stack-docker.yml` file for {{% tts %}} Enterprise shown below contains details which help you follow this section. The example `ttn-lw-stack-docker.yml` file is also available for download in the [Example Configuration Files]({{< ref "/enterprise/docker/configuration#example-configuration-files" >}}) section.
Example ttn-lw-stack-docker.yml file{{< highlight yaml "linenos=table" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" >}} {{< /highlight >}}
### License -{{< distributions "Enterprise" >}} {{% tts %}} Enterprise requires a license, which can be purchased at the [products page](https://thethingsindustries.com/technology/pricing). This is specified in the `license` field, and can be either a `key` string, or a `file`path. See the [License configuration reference]({{< ref "/reference/configuration/the-things-stack#license" >}}) for more information. +{{< distributions "Enterprise" >}} {{% tts %}} Enterprise requires a license, which can be purchased at the [products page](https://thethingsindustries.com/technology/pricing). This is specified in the `license` field, and can be either a `key` string, or a `file`path. See the [License configuration reference]({{< ref "/enterprise/management/configuration/the-things-stack#license" >}}) for more information. {{< highlight yaml "linenos=table,linenostart=2" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=2 to=6 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=2 to=6 >}} {{< /highlight >}} ### Email @@ -202,7 +207,7 @@ You can use Sendgrid or an SMTP server. For development purposes, you can use th If you skip setting up an email provider, {{% tts %}} will print emails to the stack logs. {{< highlight yaml "linenos=table,linenostart=11" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=11 to=29 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=11 to=29 >}} {{< /highlight >}} ### HTTP @@ -211,7 +216,7 @@ In the `http` section, HTTP server keys for encrypting and verifying cookies are as passwords for endpoints that you may want to keep for the internal use. {{< highlight yaml "linenos=table,linenostart=43" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=43 to=50 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=43 to=50 >}} {{< /highlight >}} ### TLS @@ -222,20 +227,20 @@ host, and also to use it as the default host. If using Let's Encrypt, certificates will automatically be requested the first time you access {{% tts %}}. You will notice that the page takes some time to load while certificates are obtained in the background. -See the [TLS Options configuration reference]({{< ref "/reference/configuration/the-things-stack#tls-options" >}}) for more information. +See the [TLS Options configuration reference]({{< ref "/enterprise/management/configuration/the-things-stack#tls-options" >}}) for more information. Make sure that you use the correct `tls` configuration depending on whether you are using Let's Encrypt or your own certificate files. If you are using your own certificate files, make sure to uncomment the lines that define `source` type, `root-ca`, `certificate` and `key`. The paths assigned to these do not need to be altered, because they point to the location of these files inside the Docker container, and not on your machine. {{< highlight yaml "linenos=table,linenostart=53" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=53 to=59 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=53 to=59 >}} {{< /highlight >}} If you are using Let's Encrypt in a multi-tenant {{% tts %}} environment, all tenant addresses have to be specified in the `ttn-lw-stack-docker.yml` file using `tls.acme.hosts` configuration option with `*.thethings.example.com` wildcard. {{< highlight yaml "linenos=table,linenostart=61" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=61 to=70 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=61 to=70 >}} {{< /highlight >}} ### Console Component URLs @@ -243,7 +248,7 @@ If you are using Let's Encrypt in a multi-tenant {{% tts %}} environment, all te The `console` section configures the URLs for the Web UI and the secret used by the console client. These tell {{% tts %}} where all its components are accessible. Be sure to replace these, and all the other server addresses, with yours. {{< highlight yaml "linenos=table,linenostart=89" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=89 to=115 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=89 to=115 >}} {{< /highlight >}} {{< warning >}} Failure to correctly configure component URLs is a common problem that will prevent the stack from starting. Be sure to replace all instances of `thethings.example.com` with your domain name! {{}} @@ -251,7 +256,7 @@ The `console` section configures the URLs for the Web UI and the secret used by The `client-secret` will be needed later when authorizing the Console. Be sure to set and remember it! {{< highlight yaml "linenos=table,linenostart=116" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=116 to=121 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=116 to=121 >}} {{< /highlight >}} ### NOC @@ -263,27 +268,27 @@ Besides `ui` and `oauth` settings, storage settings need to be configured in the To authorize the NOC, be sure to set and remember the client secret. {{< highlight yaml "linenos=table,linenostart=161" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=161 to=170 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=161 to=170 >}} {{< /highlight >}} To visualize data, configure the `grafana` section. {{< highlight yaml "linenos=table,linenostart=179" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=179 to=184 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=179 to=184 >}} {{< /highlight >}} ### Multi-tenancy -{{< distributions "Enterprise" >}} If running a multi-tenant environment, we need to configure the default tenant ID, and the base domain from which tenant IDs are inferred. See the [`tenancy` configuration reference]({{< ref "/reference/configuration/the-things-stack#multi-tenancy" >}}). +{{< distributions "Enterprise" >}} If running a multi-tenant environment, we need to configure the default tenant ID, and the base domain from which tenant IDs are inferred. See the [`tenancy` configuration reference]({{< ref "/enterprise/management/configuration/the-things-stack#multi-tenancy" >}}). {{< highlight yaml "linenos=table,linenostart=188" >}} -{{< readfile path="/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=188 to=191 >}} +{{< readfile path="/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=188 to=191 >}} {{< /highlight >}} For multi-tenant environments you'll also need to configure tenant admin keys: {{< highlight yaml "linenos=table,linenostart=40" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=40 to=42 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=40 to=42 >}} {{< /highlight >}} ## Next Step - Certificates @@ -318,7 +323,7 @@ ACME will not work on `localhost`, so you must either generate custom certificat This will still allow you to see {{% tts %}} Console by entering `localhost` or your local IP address in your browser. It will also allow you to connect to {{% tts %}} from any machine inside your local network. -You will also need to [configure the CLI]({{< ref "the-things-stack/interact/cli/installing-cli#generate-configuration-file" >}}), to use the static IP of your machine as the address of {{% tts %}}. +You will also need to [configure the CLI]({{< ref "/concepts/features/cli/installing-cli#generate-configuration-file" >}}), to use the static IP of your machine as the address of {{% tts %}}. ### Solution 2: Specify the internal ports that {{% tts %}} listens on in your configuration files @@ -332,9 +337,9 @@ For example, is: oauth: ui: - canonical-url: 'https://thethings.example.com/oauth' + canonical-url: "https://thethings.example.com/oauth" is: - base-url: 'https://thethings.example.com/api/v3' + base-url: "https://thethings.example.com/api/v3" ``` becomes @@ -343,9 +348,9 @@ becomes is: oauth: ui: - canonical-url: 'https://localhost:8885/oauth' + canonical-url: "https://localhost:8885/oauth" is: - base-url: 'https://localhost:8885/api/v3' + base-url: "https://localhost:8885/api/v3" ``` and in `docker-compose.yml`, add the following port forwarding configuration (if it does not already exist), while removing ports 80 and 443: diff --git a/doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml b/doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml rename to doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-custom-certificates.yml diff --git a/doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml b/doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml rename to doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml diff --git a/doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-open-source.yml b/doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-open-source.yml similarity index 100% rename from doc/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-open-source.yml rename to doc/content/enterprise/docker/configuration/ttn-lw-stack-docker-open-source.yml diff --git a/doc/content/the-things-stack/host/docker/proxy.md b/doc/content/enterprise/docker/proxy.md similarity index 83% rename from doc/content/the-things-stack/host/docker/proxy.md rename to doc/content/enterprise/docker/proxy.md index 3514f6fa82..6d1a2ef361 100644 --- a/doc/content/the-things-stack/host/docker/proxy.md +++ b/doc/content/enterprise/docker/proxy.md @@ -2,6 +2,7 @@ title: "Proxy" description: "" weight: 4 +aliases: [/the-things-stack/host/docker/proxy] --- {{% tts %}} can work with an external proxy that can terminate TLS connections. @@ -14,7 +15,7 @@ weight: 4 In order for an external proxy to terminate TLS connections, {{% tts %}} TLS listeners have to be disabled. -The [Networking]({{< ref "/the-things-stack/concepts/networking#port-allocations" >}}) section lists the ports that {{% tts %}} listens on and their TLS variants. +The [Networking]({{< ref "/concepts/networking#port-allocations" >}}) section lists the ports that {{% tts %}} listens on and their TLS variants. In order to prevent {{% tts %}} listening to a TLS port, set the corresponding `listen-tls` option in the configuration to an empty string `""`. @@ -45,7 +46,7 @@ interop: With the above setting, you can now map these TLS ports onto {{% tts %}} services. -Following the table in our [Networking]({{< ref "/the-things-stack/concepts/networking#port-allocations" >}}) section, for each port that you want to enable in {{% tts %}}, configure your proxy to listen to the TLS variant of that port. +Following the table in our [Networking]({{< ref "/concepts/networking#port-allocations" >}}) section, for each port that you want to enable in {{% tts %}}, configure your proxy to listen to the TLS variant of that port. For example, map the HTTPS port of the proxy to the HTTP port of {{% tts %}}, the gRPCS port of the proxy to the gRPC port of {{% tts %}} and so on. Each proxy has a different method of port mapping/traffic forwarding. Check the documentation of your proxy of choice. diff --git a/doc/content/the-things-stack/host/docker/running-the-stack.md b/doc/content/enterprise/docker/running-the-stack.md similarity index 75% rename from doc/content/the-things-stack/host/docker/running-the-stack.md rename to doc/content/enterprise/docker/running-the-stack.md index cb00a41d25..f5e1f2061a 100644 --- a/doc/content/the-things-stack/host/docker/running-the-stack.md +++ b/doc/content/enterprise/docker/running-the-stack.md @@ -2,7 +2,11 @@ title: "Running The Things Stack" description: "" weight: 3 -aliases: [/getting-started/installation/running-the-stack] +aliases: + [ + /getting-started/installation/running-the-stack, + /the-things-stack/host/docker/running-the-stack, + ] --- Now that all configuration is done, you are ready to initialize {{% tts %}} and start it! @@ -123,15 +127,15 @@ The variables for the Console and NOC OAuth clients are repeated here: Set the variables as follows: -Key | Console | Network Operations Center ---- | --- | --- -`ID` | `console` | `noc` -`NAME` | `Console` | `Network Operations Center` -`CLIENT_SECRET` | Config: `console.oauth.client-secret` | Config: `noc.oauth.client-secret` -`REDIRECT_URI` | `${SERVER_ADDRESS}/console/oauth/callback` | `${SERVER_ADDRESS}/noc/oauth/callback` -`REDIRECT_PATH` | `/console/oauth/callback` | `/noc/oauth/callback` -`LOGOUT_REDIRECT_URI` | `${SERVER_ADDRESS}/console` | `${SERVER_ADDRESS}/noc` -`LOGOUT_REDIRECT_PATH` | `/console` | `/noc` +| Key | Console | Network Operations Center | +| ---------------------- | ------------------------------------------ | -------------------------------------- | +| `ID` | `console` | `noc` | +| `NAME` | `Console` | `Network Operations Center` | +| `CLIENT_SECRET` | Config: `console.oauth.client-secret` | Config: `noc.oauth.client-secret` | +| `REDIRECT_URI` | `${SERVER_ADDRESS}/console/oauth/callback` | `${SERVER_ADDRESS}/noc/oauth/callback` | +| `REDIRECT_PATH` | `/console/oauth/callback` | `/noc/oauth/callback` | +| `LOGOUT_REDIRECT_URI` | `${SERVER_ADDRESS}/console` | `${SERVER_ADDRESS}/noc` | +| `LOGOUT_REDIRECT_PATH` | `/console` | `/noc` | @@ -145,4 +149,4 @@ docker compose up This starts the stack, so you will see the stack logs being printed to your terminal. You can also start the stack in detached mode by adding `-d` to the command above. In that case you can get logs with [`docker compose logs`](https://docs.docker.com/compose/reference/logs/). -With {{% tts %}} up and running, follow [Console]({{< ref "/the-things-stack/interact/console" >}}) or [Command-line Interface]({{< ref "the-things-stack/interact/cli" >}}) to proceed with the login, then continue with connecting gateways, creating devices and working with streaming data. +With {{% tts %}} up and running, follow [Console]({{< ref "/concepts/features/console" >}}) or [Command-line Interface]({{< ref "/concepts/features/cli" >}}) to proceed with the login, then continue with connecting gateways, creating devices and working with streaming data. diff --git a/doc/content/the-things-stack/host/docker/troubleshooting.md b/doc/content/enterprise/docker/troubleshooting.md similarity index 88% rename from doc/content/the-things-stack/host/docker/troubleshooting.md rename to doc/content/enterprise/docker/troubleshooting.md index b5de959bb5..fe5b8807b3 100644 --- a/doc/content/the-things-stack/host/docker/troubleshooting.md +++ b/doc/content/enterprise/docker/troubleshooting.md @@ -2,14 +2,18 @@ title: "Troubleshooting Installation" description: "" weight: 4 -aliases: [/getting-started/installation/troubleshooting] +aliases: + [ + /getting-started/installation/troubleshooting, + /the-things-stack/host/docker/troubleshooting, + ] --- This section contains help for common issues you may encounter while installing {{% tts %}}. ## Component address is not included in this license -Ensure that you configure the `is.oauth.ui.canonical-url` with a domain that matches the domain in your license. See the [Configuration Reference]({{< ref "reference/configuration" >}}) for more information about the configuration options. +Ensure that you configure the `is.oauth.ui.canonical-url` with a domain that matches the domain in your license. See the [Configuration Reference]({{< ref "/enterprise/management/configuration" >}}) for more information about the configuration options. ## Version in "docker-compose.yml" is unsupported @@ -18,11 +22,11 @@ Our `docker-compose.yml` file uses [Compose file version 3.7](https://docs.docke ## Token Exchange Refused 1. Double check that you used the correct `client-secret` when you authorized the client in [Running {{% tts %}}]({{< relref "running-the-stack" >}}). -2. If running on `localhost`, see the [Localhost]({{< ref "the-things-stack/host/docker/configuration#localhost" >}}) section for additional info. +2. If running on `localhost`, see the [Localhost]({{< ref "/enterprise/docker/configuration#localhost" >}}) section for additional info. 3. You may have invalid certificates. Verify using `openssl verify -CAfile ca.pem cert.pem`. 4. If you configure {{% tts %}} without TLS and attempt to connect using `https` you will receive this error. Configure TLS or use `http`. -5. If you are running an offline {{% tts %}} deployment, generating [Let's Encrypt certificates]({{< ref "/the-things-stack/host/docker/certificates#automatic-certificate-management" >}}) for your domain name might fail because of lack of the Internet connection. Try using certificates from a [Custom Certificate Authority]({{< ref "/the-things-stack/host/docker/certificates#custom-certificate-authority" >}}). -6. Double-check all [ports]({{< ref "/the-things-stack/host/docker/configuration#environment-and-ports" >}}) listed in the `docker-compose.yml` file for any firewall restrictions. +5. If you are running an offline {{% tts %}} deployment, generating [Let's Encrypt certificates]({{< ref "/enterprise/docker/certificates#automatic-certificate-management" >}}) for your domain name might fail because of lack of the Internet connection. Try using certificates from a [Custom Certificate Authority]({{< ref "/enterprise/docker/certificates#custom-certificate-authority" >}}). +6. Double-check all [ports]({{< ref "/enterprise/docker/configuration#environment-and-ports" >}}) listed in the `docker-compose.yml` file for any firewall restrictions. ## Can't access the server @@ -31,6 +35,7 @@ Ensure you have a DNS record pointing to your server's public IP address. See yo ## Key Permission Denied If you run into `/run/secrets/key.pem: permission denied`, you have probably forgotten to set permissions. To set permissions: + ```bash sudo chown 886:886 ./cert.pem ./key.pem ``` @@ -43,7 +48,7 @@ If you see an error reading: Invalid redirect URI ``` -check that you entered the correct server address when [registering the Console as an OAuth client]({{< ref "the-things-stack/host/docker/running-the-stack#initialization" >}}). +check that you entered the correct server address when [registering the Console as an OAuth client]({{< ref "/enterprise/docker/running-the-stack#initialization" >}}). If you encounter the following error while trying to long into the Console: @@ -101,7 +106,7 @@ stack_1 | licensed=[XXXXXXXX/24] (redacted) ## Database error -This error has been observed when the Identity Server hasn't been initialized during {{% tts %}} installation. {{% tts %}} components are inherently stateless and depend on the underlying Postgres and Redis databases to store the data, so before running {{% tts %}}, make sure that the Identity Server database is initialized as explained in the [Initialization section]({{< ref "/the-things-stack/host/docker/running-the-stack#initialization" >}}). +This error has been observed when the Identity Server hasn't been initialized during {{% tts %}} installation. {{% tts %}} components are inherently stateless and depend on the underlying Postgres and Redis databases to store the data, so before running {{% tts %}}, make sure that the Identity Server database is initialized as explained in the [Initialization section]({{< ref "/enterprise/docker/running-the-stack#initialization" >}}). ## Error while parsing {{% tts %}} configuration file @@ -119,7 +124,7 @@ If you are facing the `missing_tenant_id` error, that means you are trying to ac ## Grafana container fails to start due to permissions issues -If you are running {{% tts %}} Docker deployment on a Linux machine, you might encounter the following error: +If you are running {{% tts %}} Docker deployment on a Linux machine, you might encounter the following error: ``` failed to connect to database: failed to create SQLite database file "/var/lib/grafana/db/grafana.db": open /var/lib/grafana/db/grafana.db: permission denied @@ -149,10 +154,10 @@ In a containerized environment, the Grafana container connects to the {{% tts %} In order to avoid having to manually restart the Grafana container, ensure that your Grafana container has the correct `depends_on` dependencies set: ```yaml - depends_on: - - postgres - - stack -`````` +depends_on: + - postgres + - stack +``` Older versions of {{% tts %}} may not have the above dependencies set, so you may consider adding them manually. diff --git a/doc/content/the-things-stack/host/docker/upgrading/_index.md b/doc/content/enterprise/docker/upgrading/_index.md similarity index 95% rename from doc/content/the-things-stack/host/docker/upgrading/_index.md rename to doc/content/enterprise/docker/upgrading/_index.md index 2d8d90119d..18ca6572df 100644 --- a/doc/content/the-things-stack/host/docker/upgrading/_index.md +++ b/doc/content/enterprise/docker/upgrading/_index.md @@ -3,7 +3,7 @@ title: "Upgrading The Things Stack" description: "" distributions: ["Enterprise", "Open Source"] weight: 4 -aliases: [/getting-started/upgrading] +aliases: [/getting-started/upgrading, /the-things-stack/host/docker/upgrading] --- This section contains instructions to upgrade a {{% tts %}} Enterprise or Open Source deployment. @@ -24,9 +24,10 @@ Replace the tag in your `docker-compose.yml` file with the newer version of {{% services: # ... stack: - image: 'thethingsindustries/lorawan-stack:' + image: "thethingsindustries/lorawan-stack:" # ... ``` + {{< /tabs/tab >}} {{< tabs/tab "Open Source" >}} @@ -35,7 +36,7 @@ services: services: # ... stack: - image: 'thethingsnetwork/lorawan-stack:' + image: "thethingsnetwork/lorawan-stack:" # ... ``` @@ -197,10 +198,10 @@ Migrate the Network Server Database. ```bash docker compose run --rm stack ns-db migrate ``` + {{< /tabs/tab >}} {{< /tabs/container >}} - ## Running the new version Once the above steps are successfully completed, start {{< tts >}}. @@ -211,4 +212,4 @@ docker compose up -d stack ## Troubleshooting -For common issues that might show up during the upgrade process, see the [Troubleshooting Installation section]({{< ref "/the-things-stack/host/docker/troubleshooting" >}}). +For common issues that might show up during the upgrade process, see the [Troubleshooting Installation section]({{< ref "/enterprise/docker/troubleshooting" >}}). diff --git a/doc/content/the-things-stack/host/join-server/_index.md b/doc/content/enterprise/join-server/_index.md similarity index 76% rename from doc/content/the-things-stack/host/join-server/_index.md rename to doc/content/enterprise/join-server/_index.md index 35e07890ac..1ddbc18bbe 100644 --- a/doc/content/the-things-stack/host/join-server/_index.md +++ b/doc/content/enterprise/join-server/_index.md @@ -3,11 +3,14 @@ title: "The Things Join Server" description: "" weight: 8 aliases: - - /guides/cloud-hosted/tti-join-server - - /the-things-stack/cloud/tti-join-server - - /the-things-stack/cloud/tti-join-server/activate-devices-cloud-hosted - - /the-things-stack/cloud/tti-join-server/register-devices - - /getting-started/join-server + [ + /guides/cloud-hosted/tti-join-server, + /cloud/tti-join-server, + /cloud/tti-join-server/activate-devices-cloud-hosted, + /cloud/tti-join-server/register-devices, + /getting-started/join-server, + /the-things-stack/host/join-server, + ] --- The Things Join Server is a stand-alone LoRaWAN® Join Server. The Things Join Server can be used by device makers to provision end devices to be used by all distributions of {{% tts %}} as well as any other standards compliant LoRaWAN Network Servers. @@ -18,7 +21,7 @@ The Things Join Server is a stand-alone LoRaWAN® Join Server. The Things Join S The Things Join Server comes as a managed service by The Things Industries. Device makers and distributors can also deploy their own The Things Join Server. If you are interested in provisioning devices on the managed service or if you are interested in deploying The Things Join Server, please contact [The Things Industries sales](mailto:sales@thethingsindustries.com). -The Things Join Server operated by The Things Industries is configured in {{% tts %}} Cloud and {{% ttss %}}. If you operate {{% tts %}} Enterprise or Open Source, configure the [LoRaWAN Join Server configuration]({{< ref "/reference/interop-repository" >}}) and the [Device Claiming configuration]({{< ref "/reference/device-claiming-repository" >}}) accordingly. +The Things Join Server operated by The Things Industries is configured in {{% tts %}} Cloud and {{% ttss %}}. If you operate {{% tts %}} Enterprise or Open Source, configure the [LoRaWAN Join Server configuration]({{< ref "/enterprise/join-server/interop-configuration" >}}) and the [Device Claiming configuration]({{< ref "/enterprise/join-server/device-claiming-configuration" >}}) accordingly. ## Device Provisioning @@ -31,8 +34,8 @@ When it comes to using JoinEUIs for provisioning devices on The Things Join Serv ## Device Claiming -The Things Join Server supports LoRaWAN Backend Interfaces 1.0 and 1.1 as well as device claiming. [Learn more about device claiming]({{< ref "/devices/concepts/device-claiming" >}}). +The Things Join Server supports LoRaWAN Backend Interfaces 1.0 and 1.1 as well as device claiming. [Learn more about device claiming]({{< ref "/hardware/devices/concepts/device-claiming" >}}). ## Security Features -The Things Join Server operated by The Things Industries supports pre-provisioned Microchip ATECC608 secure elements which provide enhanced hardware security protection for LoRaWAN devices. [Learn more about ATECC608 secure elements]({{< ref "/devices/adding-devices/atecc608a" >}}). +The Things Join Server operated by The Things Industries supports pre-provisioned Microchip ATECC608 secure elements which provide enhanced hardware security protection for LoRaWAN devices. [Learn more about ATECC608 secure elements]({{< ref "/hardware/devices/adding-devices/atecc608a" >}}). diff --git a/doc/content/reference/device-claiming-repository/_index.md b/doc/content/enterprise/join-server/device-claiming-configuration/_index.md similarity index 52% rename from doc/content/reference/device-claiming-repository/_index.md rename to doc/content/enterprise/join-server/device-claiming-configuration/_index.md index 2195614120..afdad6eca3 100644 --- a/doc/content/reference/device-claiming-repository/_index.md +++ b/doc/content/enterprise/join-server/device-claiming-configuration/_index.md @@ -1,13 +1,14 @@ --- title: "Device Claiming Configuration" description: "" +aliases: [/reference/device-claiming-repository] --- {{% tts %}} Device Claiming Server can claim devices on LoRaWAN® Join Servers. -Device Claiming Server uses this configuration to contact LoRaWAN Join Servers. Learn how to configure [Device Claiming Server]({{< ref "/reference/configuration/device-claiming-server#end-device-claiming-options" >}}) to use the configuration files. +Device Claiming Server uses this configuration to contact LoRaWAN Join Servers. Learn how to configure [Device Claiming Server]({{< ref "/enterprise/management/configuration/device-claiming-server#end-device-claiming-options" >}}) to use the configuration files. ## Configuration Files @@ -15,10 +16,10 @@ Device Claiming Server uses this configuration to contact LoRaWAN Join Servers. ```yml join-servers: - - file: './path/js.yml' # relative path to a file containing Join Server configuration - join-euis: # list of Join EUI prefixes the Join Server should handle - - '11AA000000000000/16' # in this example, the first 16 bits, so all JoinEUIs starting with 11AA - type: 'ttjsv2' # type of the Join Server + - file: "./path/js.yml" # relative path to a file containing Join Server configuration + join-euis: # list of Join EUI prefixes the Join Server should handle + - "11AA000000000000/16" # in this example, the first 16 bits, so all JoinEUIs starting with 11AA + type: "ttjsv2" # type of the Join Server ``` All paths are relative to the `config.yml` file they are defined in. @@ -43,14 +44,14 @@ The `type` of The Things Join Server is `ttjsv2`. The configuration supports the ```yml # tti/js.yml -url: 'https://js.cloud.thethings.industries' # URL of The Things Join Server -tls: # TLS configuration to use (optional) - source: 'file' # TLS client certificate source (file or key-vault) - root-ca: 'path/to/clientca.pem' # path to CA file to verify TLS server certificate (optional) - certificate: 'path/to/clientcert.pem' # path to TLS client certificate - key: 'path/to/clientkey.pem' # path to TLS client key +url: "https://js.cloud.thethings.industries" # URL of The Things Join Server +tls: # TLS configuration to use (optional) + source: "file" # TLS client certificate source (file or key-vault) + root-ca: "path/to/clientca.pem" # path to CA file to verify TLS server certificate (optional) + certificate: "path/to/clientcert.pem" # path to TLS client certificate + key: "path/to/clientkey.pem" # path to TLS client key ``` -If `tls.source` is set to `key-vault`, {{% tts %}} uses its [Key Vault]({{< ref "/reference/configuration/the-things-stack#key-vault" >}}) configuration to load the TLS client certificate. +If `tls.source` is set to `key-vault`, {{% tts %}} uses its [Key Vault]({{< ref "/enterprise/management/configuration/the-things-stack#key-vault" >}}) configuration to load the TLS client certificate. Please contact [The Things Industries support](mailto:support@thethingsindustries.com) to gain access to The Things Join Server. diff --git a/doc/content/enterprise/join-server/interop-configuration/_index.md b/doc/content/enterprise/join-server/interop-configuration/_index.md new file mode 100644 index 0000000000..0b765f0e32 --- /dev/null +++ b/doc/content/enterprise/join-server/interop-configuration/_index.md @@ -0,0 +1,120 @@ +--- +title: "Interoperability Configuration" +description: "" +aliases: [/reference/interop-repository] +--- + +{{% tts %}} Network Server and Application Server can use LoRaWAN® Backend Interfaces 1.0 and 1.1 with LoRaWAN Join Servers. + + + +Network Server and Application Server use this configuration to contact LoRaWAN Join Servers. Learn how to configure [Network Server]({{< ref "/enterprise/management/configuration/network-server#interoperability-options" >}}) and [Application Server]({{< ref "/enterprise/management/configuration/application-server#interoperability-options" >}}) to use the interoperability client configuration. + +## Configuration Files + +{{% tts %}} reads configuration from a file system. The root should contain `config.yml`, which contains Join Servers. + +```yml +join-servers: + - file: "./path/js.yml" # relative path to a file containing Join Server configuration + components: ["as", "ns"] # optional selector for components (new in 3.21.0) + join-euis: # list of Join EUI prefixes the Join Server should handle + - "11AA000000000000/16" # in this example, the first 16 bits, so all JoinEUIs starting with 11AA +``` + +All paths are relative to the `config.yml` file they are defined in. + +{{% tts %}} Network Server always first tries the cluster-local Join Server. If the cluster-local Join Server does not accept the join-request, a Join Server is contacted via the LoRaWAN Backend Interfaces interoperability. + +In case `JoinEUI` prefixes overlap, the most specific prefix takes precedence. `0000000000000000/0` prefix matches all `JoinEUI`s. Use this prefix if you wish to define a Join Server interoperability configuration for all other join-requests. For example: + +```yml +join-servers: + - file: "./fallback/js.yml" + join-euis: + - "0000000000000000/0" +``` + +The Join Server configuration provides means to configure how the components interact with the Join Server. The configuration supports multiple options: + +```yml +scheme: "https" # URL scheme. Defaults to https +fqdn: "thethings.example" # FQDN of the Join Server +port: 443 # port to connect at. Defaults to 443 +protocol: "BI1.0" # Backend Interfaces protocol to use (BI1.0 or BI1.1) +paths: # custom URI paths to use for various requests. Defaults to / + join: "some/path" # the URI path to use for JoinReq + rejoin: "some/other/path" # the URI path to use for RejoinReq + app-s-key: "other/path" # the URI path to use for AppSKeyReq + home-ns: "somepath" # the URI path to use for HomeNSReq +sender-ns-id: "1122334455667788" # Backend Interfaces 1.1 NSID (overrides ns.interop.id) +basic-auth: # HTTP Basic Authentication (optional) + username: "user" # HTTP Basic username + password: "secret" # HTTP Basic password +tls: # TLS configuration to use (optional) + source: "file" # TLS client certificate source (file or key-vault) + root-ca: "path/to/clientca.pem" # path to CA file to verify TLS server certificate (optional) + certificate: "path/to/clientcert.pem" # path to TLS client certificate + key: "path/to/clientkey.pem" # path to TLS client key +headers: # HTTP headers to send, defined as key-value map + Some-Header: "SomeValue" +``` + +If `tls.source` is set to `key-vault`, {{% tts %}} uses its [Key Vault]({{< ref "/enterprise/management/configuration/the-things-stack#key-vault" >}}) configuration to load the TLS client certificate. + +## Interoperability with The Things Join Server + +The Things Join Server is a stand-alone LoRaWAN Join Server that can be deployed by device makers, distributors and integrators. + +The Things Join Server operated by The Things Industries should be configured as follows: + +```yml +# config.yml +join-servers: + ... + - file: './tti/js.yml' + join-euis: + - '70B3D57ED0000000/64' + - 'EC656E0000000000/56' + ... +``` + +```yml +# tti/js.yml +fqdn: "js.cloud.thethings.industries" +protocol: "BI1.1" +tls: + source: "key-vault" +``` + +Please contact [The Things Industries support](mailto:support@thethingsindustries.com) to gain access to The Things Join Server. + +## Interoperability with Semtech Join Server + +Semtech Join Server is a hosted LoRaWAN Join Server by Semtech for use with pre-provisioned LoRa Edge modems. + +Semtech Join Server should be configured as follows: + +```yml +# config.yml +join-servers: + ... + - file: './semtech/js.yml' + join-euis: + - '0016C00000000000/24' + ... +``` + +```yml +# semtech/js.yml +fqdn: "js.loracloud.com" +port: 7009 +protocol: "BI1.0" +paths: + join: "api/v1/rens/rens-1::2/lbi_joinreq" # replace 'rens-1::1' by the RENS issued by Semtech +tls: + source: "file" + root-ca: "./ca.pem" # path to the CA issued by Semtech + certificate: "./cert.pem" # path to the TLS client certificate issued by Semtech + key: "./key.pem" # path to the TLS client key issued by Semtech +``` diff --git a/doc/content/the-things-stack/host/kubernetes/_index.md b/doc/content/enterprise/kubernetes/_index.md similarity index 90% rename from doc/content/the-things-stack/host/kubernetes/_index.md rename to doc/content/enterprise/kubernetes/_index.md index 6a75d2b15b..0546ffb55b 100644 --- a/doc/content/the-things-stack/host/kubernetes/_index.md +++ b/doc/content/enterprise/kubernetes/_index.md @@ -2,6 +2,7 @@ title: "Kubernetes" description: "" weight: 3 +aliases: ["/the-things-stack/host/kubernetes"] --- This guide is meant for users who want to deploy {{% tts %}} on Kubernetes. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/_index.md b/doc/content/enterprise/kubernetes/azure/_index.md similarity index 94% rename from doc/content/the-things-stack/host/kubernetes/azure/_index.md rename to doc/content/enterprise/kubernetes/azure/_index.md index f6ff6d9718..aed6f716fb 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/_index.md +++ b/doc/content/enterprise/kubernetes/azure/_index.md @@ -3,6 +3,7 @@ title: "Azure" description: "" distributions: "Enterprise" weight: 2 +aliases: ["/the-things-stack/host/kubernetes/azure"] --- {{% tts %}} can be deployed to [Azure](https://portal.azure.com/) as a set of highly available services on Azure Kubernetes Service using Terraform and Helm. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/architecture/_index.md b/doc/content/enterprise/kubernetes/azure/architecture/_index.md similarity index 77% rename from doc/content/the-things-stack/host/kubernetes/azure/architecture/_index.md rename to doc/content/enterprise/kubernetes/azure/architecture/_index.md index afe2abda37..879994e09f 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/architecture/_index.md +++ b/doc/content/enterprise/kubernetes/azure/architecture/_index.md @@ -2,6 +2,7 @@ title: "Architecture" description: "" weight: 1 +aliases: [/the-things-stack/host/kubernetes/azure/architecture] --- This page describes the architecture of a {{% tts %}} deployment on Azure. @@ -12,7 +13,7 @@ This page describes the architecture of a {{% tts %}} deployment on Azure. ## Networking -The [compute infrastructure]({{< ref "the-things-stack/host/kubernetes/azure/deployment#azure-infrastructure" >}}) is contained inside a Virtual Network, grouped into separate Private Subnets. Communication with the Internet is via a Network Address Translation Gateway (NAT GW). Internal load balancer (LB) is used to handle incoming traffic. +The [compute infrastructure]({{< ref "enterprise/kubernetes/azure/deployment#azure-infrastructure" >}}) is contained inside a Virtual Network, grouped into separate Private Subnets. Communication with the Internet is via a Network Address Translation Gateway (NAT GW). Internal load balancer (LB) is used to handle incoming traffic. The NAT GW is assigned a Public IP Address Prefix while the LB is assigned a static Public IP Address. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/architecture/azure-infrastructure.svg b/doc/content/enterprise/kubernetes/azure/architecture/azure-infrastructure.svg similarity index 100% rename from doc/content/the-things-stack/host/kubernetes/azure/architecture/azure-infrastructure.svg rename to doc/content/enterprise/kubernetes/azure/architecture/azure-infrastructure.svg diff --git a/doc/content/the-things-stack/host/kubernetes/azure/configuration/_index.md b/doc/content/enterprise/kubernetes/azure/configuration/_index.md similarity index 95% rename from doc/content/the-things-stack/host/kubernetes/azure/configuration/_index.md rename to doc/content/enterprise/kubernetes/azure/configuration/_index.md index 91c13116de..2499ba2572 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/configuration/_index.md +++ b/doc/content/enterprise/kubernetes/azure/configuration/_index.md @@ -2,7 +2,11 @@ title: "Configuration" description: "" weight: 2 -aliases: [/getting-started/kubernetes/azure/configuration] +aliases: + [ + /getting-started/kubernetes/azure/configuration, + /the-things-stack/host/kubernetes/azure/configuration, + ] --- {{% tts %}} requires a few configuration files to be prepared. In this section, we show how to create them and store them for further use. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/deployment/_index.md b/doc/content/enterprise/kubernetes/azure/deployment/_index.md similarity index 87% rename from doc/content/the-things-stack/host/kubernetes/azure/deployment/_index.md rename to doc/content/enterprise/kubernetes/azure/deployment/_index.md index 6b62512781..bc5a14c86c 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/deployment/_index.md +++ b/doc/content/enterprise/kubernetes/azure/deployment/_index.md @@ -2,6 +2,7 @@ title: "Deployment" description: "" weight: 3 +aliases: [/the-things-stack/host/kubernetes/azure/deployment] --- This page describes the steps for deploying {{% tts %}} on Azure Kubernetes Service. @@ -12,7 +13,7 @@ This page describes the steps for deploying {{% tts %}} on Azure Kubernetes Serv Start with the `1-infrastructure` templates that create the foundation for your deployment. -If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in the [Configuration]({{< ref "/the-things-stack/host/kubernetes/azure/configuration#terraform-backend" >}}) section. +If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in the [Configuration]({{< ref "/enterprise/kubernetes/azure/configuration#terraform-backend" >}}) section. Initialize the Terraform state. @@ -26,7 +27,7 @@ Plan the deployment and verify everything is going to be set up correctly. $ make plan ``` -This template will deploy the Azure Kubernetes Service cluster, Azure Storage containers and Azure Database Flexible Server for Postgres, with their supporting infrastructure. You can apply it after validating the deployment plan. The deployment should take about 10 to 15 minutes. If you encounter any issues, please refer to [Troubleshooting]({{< ref "the-things-stack/host/kubernetes/azure/troubleshooting" >}}). +This template will deploy the Azure Kubernetes Service cluster, Azure Storage containers and Azure Database Flexible Server for Postgres, with their supporting infrastructure. You can apply it after validating the deployment plan. The deployment should take about 10 to 15 minutes. If you encounter any issues, please refer to [Troubleshooting]({{< ref "enterprise/kubernetes/azure/troubleshooting" >}}). ```bash $ make apply @@ -57,7 +58,7 @@ $ kubectl get pods To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code xxxxxx to authenticate. ``` -Export the DNS values used for [DNS Infrastructure]({{< relref "#dns-infrastructure" >}}). Use the provider chosen during the [Configuration]({{< ref "/the-things-stack/host/kubernetes/azure/configuration#acme-configuration" >}}). +Export the DNS values used for [DNS Infrastructure]({{< relref "#dns-infrastructure" >}}). Use the provider chosen during the [Configuration]({{< ref "/enterprise/kubernetes/azure/configuration#acme-configuration" >}}). ```bash $ DNS_PROVIDER='' @@ -74,7 +75,7 @@ $ make infra.values | jq > '../2-kubernetes/infra.auto.tfvars.json' Now we need to set up the DNS infrastructure. Head over to the directory of the provider you chose during the last steps of the [Azure Infrastructure]({{< relref "#azure-infrastructure" >}}) section. -If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in [Terraform Backend Configuration]({{< relref "/the-things-stack/host/kubernetes/azure/configuration#terraform-backend" >}}). +If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in [Terraform Backend Configuration]({{< relref "/enterprise/kubernetes/azure/configuration#terraform-backend" >}}). Initialize the Terraform state. @@ -116,7 +117,7 @@ In case the certificate won't reach a ready state head over to [Troubleshooting Head over to the `2-kubernetes` directory next. -If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in [Terraform Backend Configuration]({{< relref "/the-things-stack/host/kubernetes/azure/configuration#terraform-backend" >}}). +If you haven't done this before create a Terraform backend configuration file `config.azurerm.tfbackend`. You can read more about it in [Terraform Backend Configuration]({{< relref "/enterprise/kubernetes/azure/configuration#terraform-backend" >}}). Initialize the Terraform state. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/prerequisites/_index.md b/doc/content/enterprise/kubernetes/azure/prerequisites/_index.md similarity index 92% rename from doc/content/the-things-stack/host/kubernetes/azure/prerequisites/_index.md rename to doc/content/enterprise/kubernetes/azure/prerequisites/_index.md index ae70123545..0537df40f5 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/prerequisites/_index.md +++ b/doc/content/enterprise/kubernetes/azure/prerequisites/_index.md @@ -2,7 +2,11 @@ title: "Prerequisites" description: "" weight: 1 -aliases: [/getting-started/kubernetes/azure/prerequisites] +aliases: + [ + /getting-started/kubernetes/azure/prerequisites, + /the-things-stack/host/kubernetes/azure/prerequisites, + ] --- This section contains prerequisites for deploying {{% tts %}} on Azure Kubernetes Service. @@ -23,7 +27,7 @@ This section contains prerequisites for deploying {{% tts %}} on Azure Kubernete {{% tts %}} contains the Packet Broker Agent component that can communicate with [Packet Broker](https://packetbroker.net/). -Packet Broker is disabled by default in the Helm charts. When enabled, it can operate either only a Forwarder or as both a Forwarder and a Home Network. Check the [Packet Broker section]({{< ref "/the-things-stack/packet-broker" >}}) for more details. +Packet Broker is disabled by default in the Helm charts. When enabled, it can operate either only a Forwarder or as both a Forwarder and a Home Network. Check the [Packet Broker section]({{< ref "/concepts/packet-broker" >}}) for more details. - If the cluster acts simply as a Forwarder that forwards traffic to Packet Broker, then all that is needed are access credentials. - If the cluster also needs to work as a Packer Broker Home Network, in addition to the access credentials, the cluster either needs a NetID from the LoRa Alliance or The Things Industries can lease a DevAddr Block. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/troubleshooting/_index.md b/doc/content/enterprise/kubernetes/azure/troubleshooting/_index.md similarity index 83% rename from doc/content/the-things-stack/host/kubernetes/azure/troubleshooting/_index.md rename to doc/content/enterprise/kubernetes/azure/troubleshooting/_index.md index 647f97ae7e..e31684f878 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/troubleshooting/_index.md +++ b/doc/content/enterprise/kubernetes/azure/troubleshooting/_index.md @@ -2,7 +2,11 @@ title: "Troubleshooting" description: "" weight: 9 -aliases: [/getting-started/kubernetes/azure/troubleshooting] +aliases: + [ + /getting-started/kubernetes/azure/troubleshooting, + /the-things-stack/host/kubernetes/azure/troubleshooting, + ] --- This guide contains general troubleshooting information. diff --git a/doc/content/the-things-stack/host/kubernetes/azure/upgrading/_index.md b/doc/content/enterprise/kubernetes/azure/upgrading/_index.md similarity index 95% rename from doc/content/the-things-stack/host/kubernetes/azure/upgrading/_index.md rename to doc/content/enterprise/kubernetes/azure/upgrading/_index.md index 4442bba771..c0f8b6c332 100644 --- a/doc/content/the-things-stack/host/kubernetes/azure/upgrading/_index.md +++ b/doc/content/enterprise/kubernetes/azure/upgrading/_index.md @@ -2,6 +2,7 @@ title: "Upgrading" description: "" weight: 4 +aliases: [/the-things-stack/host/kubernetes/azure/upgrading] --- This page describes the steps for upgrading {{% tts %}} on Azure Kubernetes Service. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/_index.md b/doc/content/enterprise/kubernetes/generic/_index.md similarity index 97% rename from doc/content/the-things-stack/host/kubernetes/generic/_index.md rename to doc/content/enterprise/kubernetes/generic/_index.md index 3b9c3cc554..41665925f0 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/_index.md +++ b/doc/content/enterprise/kubernetes/generic/_index.md @@ -3,6 +3,7 @@ title: "Generic" description: "" distributions: "Enterprise" weight: 1 +aliases: [/the-things-stack/host/kubernetes/generic] --- {{% tts %}} is packaged as a [Helm Chart](https://helm.sh/) to be run on Kubernetes Clusters. {{% tts %}} Helm charts are packaged and distributed as [OCI packages](https://helm.sh/docs/topics/registries/) and are published to [Docker Hub](https://hub.docker.com/r/thethingsindustries/lorawan-stack-helm-chart). diff --git a/doc/content/the-things-stack/host/kubernetes/generic/configuration/_index.md b/doc/content/enterprise/kubernetes/generic/configuration/_index.md similarity index 96% rename from doc/content/the-things-stack/host/kubernetes/generic/configuration/_index.md rename to doc/content/enterprise/kubernetes/generic/configuration/_index.md index 75b63623d6..2eed8e66f2 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/configuration/_index.md +++ b/doc/content/enterprise/kubernetes/generic/configuration/_index.md @@ -2,7 +2,11 @@ title: "Configuration" description: "" weight: 3 -aliases: [/getting-started/kubernetes/configuration] +aliases: + [ + /getting-started/kubernetes/configuration, + /the-things-stack/host/kubernetes/generic/configuration, + ] --- {{% tts %}} Helm chart is configured using `yaml` files. This guide assumes that these fields are saved in a `.values.yaml` file and used for deployment/updates. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/database-migrations/_index.md b/doc/content/enterprise/kubernetes/generic/database-migrations/_index.md similarity index 96% rename from doc/content/the-things-stack/host/kubernetes/generic/database-migrations/_index.md rename to doc/content/enterprise/kubernetes/generic/database-migrations/_index.md index 6a8973e422..01808efdd9 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/database-migrations/_index.md +++ b/doc/content/enterprise/kubernetes/generic/database-migrations/_index.md @@ -2,6 +2,7 @@ title: "Database Migrations" description: "" weight: 7 +aliases: [/the-things-stack/host/kubernetes/generic/database-migrations] --- {{% tts %}} database schema is managed between minor versions using database migrations. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/install-charts/_index.md b/doc/content/enterprise/kubernetes/generic/install-charts/_index.md similarity index 96% rename from doc/content/the-things-stack/host/kubernetes/generic/install-charts/_index.md rename to doc/content/enterprise/kubernetes/generic/install-charts/_index.md index 189c0fc81f..a247d7e10d 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/install-charts/_index.md +++ b/doc/content/enterprise/kubernetes/generic/install-charts/_index.md @@ -2,7 +2,11 @@ title: "Install Charts" description: "" weight: 4 -aliases: [/getting-started/kubernetes/install-charts] +aliases: + [ + /getting-started/kubernetes/install-charts, + /the-things-stack/host/kubernetes/generic/install-charts, + ] --- {{% tts %}} Helm charts are packaged and distributed as [OCI packages](https://helm.sh/docs/topics/registries/) and are published to [Docker Hub](https://hub.docker.com/r/thethingsindustries/lorawan-stack-helm-chart). diff --git a/doc/content/the-things-stack/host/kubernetes/generic/monitoring/_index.md b/doc/content/enterprise/kubernetes/generic/monitoring/_index.md similarity index 91% rename from doc/content/the-things-stack/host/kubernetes/generic/monitoring/_index.md rename to doc/content/enterprise/kubernetes/generic/monitoring/_index.md index 9135c10680..b07c9deb7c 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/monitoring/_index.md +++ b/doc/content/enterprise/kubernetes/generic/monitoring/_index.md @@ -2,7 +2,11 @@ title: "Monitoring" description: "" weight: 5 -aliases: [/getting-started/kubernetes/monitoring] +aliases: + [ + /getting-started/kubernetes/monitoring, + /the-things-stack/host/kubernetes/generic/monitoring, + ] --- {{% tts %}} exposes Prometheus metrics at the `/metrics` endpoint. This route is protected by Basic Auth with username `metrics` and password `global.http.metrics.password`. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/preparation/_index.md b/doc/content/enterprise/kubernetes/generic/preparation/_index.md similarity index 94% rename from doc/content/the-things-stack/host/kubernetes/generic/preparation/_index.md rename to doc/content/enterprise/kubernetes/generic/preparation/_index.md index 88549fea6d..43c04d6d48 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/preparation/_index.md +++ b/doc/content/enterprise/kubernetes/generic/preparation/_index.md @@ -2,7 +2,11 @@ title: "Preparation" description: "" weight: 2 -aliases: [/getting-started/kubernetes/self-managed/preparation] +aliases: + [ + /getting-started/kubernetes/self-managed/preparation, + /the-things-stack/host/kubernetes/generic/preparation, + ] --- {{% tts %}} requires a few secret values to be configured. In this section, we show how to generate them and store them for further use. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/prerequisites/_index.md b/doc/content/enterprise/kubernetes/generic/prerequisites/_index.md similarity index 94% rename from doc/content/the-things-stack/host/kubernetes/generic/prerequisites/_index.md rename to doc/content/enterprise/kubernetes/generic/prerequisites/_index.md index 9757fa8cdc..baf1c1012c 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/prerequisites/_index.md +++ b/doc/content/enterprise/kubernetes/generic/prerequisites/_index.md @@ -2,7 +2,11 @@ title: "Prerequisites" description: "" weight: 1 -aliases: [/getting-started/kubernetes/self-managed/prerequisites] +aliases: + [ + /getting-started/kubernetes/self-managed/prerequisites, + /the-things-stack/host/kubernetes/generic/prerequisites, + ] --- The following are required for {{% tts %}} on Kubernetes. @@ -22,7 +26,7 @@ The Things Stack requires a license key to run. Please [contact our sales team]( The Things Stack contains the Packet Broker Agent component that can communicate with [Packet Broker](https://packetbroker.net/). -Packet Broker is disabled by default in the Helm charts. When enabled, it can operate either only a Forwarder or as both a Forwarder and a Home Network. Check the [The Things Stack Documentation](https://www.thethingsindustries.com/docs/the-things-stack/packet-broker/) for more details. +Packet Broker is disabled by default in the Helm charts. When enabled, it can operate either only a Forwarder or as both a Forwarder and a Home Network. Check the [The Things Stack Documentation](https://www.thethingsindustries.com/docs/concepts/packet-broker/) for more details. - If the cluster acts simply as a forwarder that forwards traffic to Packet Broker, then all that is needed are access credentials. - If the cluster also needs to work as a Packer Broker Home Network, in addition to the access credentials, the cluster either needs a NetID from the LoRa Alliance or The Things Industries can lease a DevAddr Block. @@ -118,7 +122,7 @@ To use a custom proxy/load balancer, set `global.ingress.traefik.enabled` to `fa When Traefik is disabled, the ports and routes necessary for The Things Stack should be mapped manually by the operator. Check the `ingress-routes.yaml` files for each component and adapt it to your proxy. Setting up and maintaining a custom proxy is out of the scope of this document. -If Traefik is not used, skip ahead to [setup TLS certificates]({{< ref "the-things-stack/host/kubernetes/generic/prerequisites#6-tls-certificates" >}}). +If Traefik is not used, skip ahead to [setup TLS certificates]({{< ref "enterprise/kubernetes/generic/prerequisites#6-tls-certificates" >}}). The simplest way to install Traefik in the kubernetes cluster is use the [official Helm charts](https://artifacthub.io/packages/helm/traefik/traefik). @@ -235,7 +239,7 @@ The process of provisioning and maintenance of the certificate secret is left to #### 7. (Optional) TimescaleDB -Both {{% tts %}} [Storage Integration](https://www.thethingsindustries.com/docs/integrations/storage/) and {{% tts %}} [Network Operations Center](https://www.thethingsindustries.com/docs/reference/components/network-operations-center/#accessing-network-operations-center) require a TimescaleDB instance. +Both {{% tts %}} [Storage Integration](https://www.thethingsindustries.com/docs/integrations/storage/) and {{% tts %}} [Network Operations Center](https://www.thethingsindustries.com/docs/concepts/architecture/components/network-operations-center/#accessing-network-operations-center) require a TimescaleDB instance. There can either be two separate TimeScaleDB instances or a single instance but different Databases. diff --git a/doc/content/the-things-stack/host/kubernetes/generic/troubleshooting/_index.md b/doc/content/enterprise/kubernetes/generic/troubleshooting/_index.md similarity index 92% rename from doc/content/the-things-stack/host/kubernetes/generic/troubleshooting/_index.md rename to doc/content/enterprise/kubernetes/generic/troubleshooting/_index.md index 220b622b94..9a8075e7c6 100644 --- a/doc/content/the-things-stack/host/kubernetes/generic/troubleshooting/_index.md +++ b/doc/content/enterprise/kubernetes/generic/troubleshooting/_index.md @@ -2,7 +2,11 @@ title: "Troubleshooting" description: "" weight: 6 -aliases: [/getting-started/kubernetes/generic/troubleshooting] +aliases: + [ + /getting-started/kubernetes/generic/troubleshooting, + /the-things-stack/host/kubernetes/generic/troubleshooting, + ] --- This guide contains general troubleshooting information. diff --git a/doc/content/the-things-stack/management/_index.md b/doc/content/enterprise/management/_index.md similarity index 81% rename from doc/content/the-things-stack/management/_index.md rename to doc/content/enterprise/management/_index.md index 932e46bd33..cd2fad192c 100644 --- a/doc/content/the-things-stack/management/_index.md +++ b/doc/content/enterprise/management/_index.md @@ -1,7 +1,7 @@ --- title: "Manage The Things Stack" description: "" -weight: 4 +aliases: [/the-things-stack/host] --- This section provides guides on managing and customizing various aspects of {{% tts %}}. diff --git a/doc/content/reference/configuration/_index.md b/doc/content/enterprise/management/configuration/_index.md similarity index 90% rename from doc/content/reference/configuration/_index.md rename to doc/content/enterprise/management/configuration/_index.md index 22919d3562..b3cd4ec0cc 100644 --- a/doc/content/reference/configuration/_index.md +++ b/doc/content/enterprise/management/configuration/_index.md @@ -9,7 +9,7 @@ aliases: [/guides/getting-started/configuration] {{< note >}} -These configuration methods only apply to {{% tts %}} Open Source and Enterprise deployments that follow the [Installation]({{< ref "the-things-stack/host/docker" >}}) guide. AWS Launcher deployments can be configured using the [CloudFormation template settings]({{< ref "/the-things-stack/host/aws/ami/deployment-guide#deployment-using-aws-cloud-formation" >}}). Managed deployments such as Cloud and {{% ttss %}} are configured for you by The Things Industries. +These configuration methods only apply to {{% tts %}} Open Source and Enterprise deployments that follow the [Installation]({{< ref "/enterprise/docker" >}}) guide. AWS Launcher deployments can be configured using the [CloudFormation template settings]({{< ref "/enterprise/aws/ami/deployment-guide#deployment-using-aws-cloud-formation" >}}). Managed deployments such as Cloud and {{% ttss %}} are configured for you by The Things Industries. {{}} ## Configuration Sources diff --git a/doc/content/reference/configuration/application-server.md b/doc/content/enterprise/management/configuration/application-server.md similarity index 98% rename from doc/content/reference/configuration/application-server.md rename to doc/content/enterprise/management/configuration/application-server.md index 9d8ce2c7b3..e790eeaebc 100644 --- a/doc/content/reference/configuration/application-server.md +++ b/doc/content/enterprise/management/configuration/application-server.md @@ -18,7 +18,7 @@ The `as.interop` options configure how Application Server performs interoperabil - `as.interop.directory`: OS filesystem directory, which contains interoperability client configuration - `as.interop.url`: URL, which contains interoperability client configuration -See [LoRaWAN Join Server Configuration]({{< ref "/reference/interop-repository" >}}) to learn how to configure the client configuration. +See [LoRaWAN Join Server Configuration]({{< ref "/enterprise/join-server/interop-configuration" >}}) to learn how to configure the client configuration. ## MQTT Options diff --git a/doc/content/reference/configuration/cli.md b/doc/content/enterprise/management/configuration/cli.md similarity index 94% rename from doc/content/reference/configuration/cli.md rename to doc/content/enterprise/management/configuration/cli.md index a152c69497..32e8740653 100644 --- a/doc/content/reference/configuration/cli.md +++ b/doc/content/enterprise/management/configuration/cli.md @@ -25,6 +25,7 @@ By default the CLI uses JSON as the input and output format. It is also possible - `output-format`: Output format The CLI is capable of retrying requests that were rejected by the rate limiter: errors of type `ResourceExausthed` and `Unavailable`. By default, this behavior is disabled but can be set through the following configurations: + - `retry-config.max`: Maximum amount of times that a request can be reattempted. - `retry-config.default-timeout`: Default timeout between retry attempts. - `retry-config.enable-metadata`: Enables use of the request response metadata to dynamically calculate a timeout for the retry attempts. @@ -32,7 +33,7 @@ The CLI is capable of retrying requests that were rejected by the rate limiter: ## API Options -The CLI needs to be configured with the addresses of the OAuth server. The [Getting Started guide]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}) gives a good example configuration for a typical deployment. +The CLI needs to be configured with the addresses of the OAuth server. The [Getting Started guide]({{< ref "/concepts/features/cli/installing-cli" >}}) gives a good example configuration for a typical deployment. - `oauth-server-address`: OAuth Server address - `identity-server-grpc-address`: Identity Server address diff --git a/doc/content/reference/configuration/console.md b/doc/content/enterprise/management/configuration/console.md similarity index 95% rename from doc/content/reference/configuration/console.md rename to doc/content/enterprise/management/configuration/console.md index 1533cf3543..559362b929 100644 --- a/doc/content/reference/configuration/console.md +++ b/doc/content/enterprise/management/configuration/console.md @@ -48,19 +48,19 @@ The Console needs to know how the individual {{% tts %}} components are configur ### File Includes -You can control which CSS and JavaScript files are included into the rendered HTML of the Console. Note that these files must be present in the `/public` folder during runtime. +You can control which CSS and JavaScript files are included into the rendered HTML of the Console. Note that these files must be present in the `/public` folder during runtime. - `console.ui.js-file`: The names of the JavaScript file - `console.ui.css-file`: The names of the CSS files ### Assets and Custom Branding -You can control the url of the assets folder that the Console frontend will use, e.g. if you plan on using a CDN to serve your assets. The branding base url will enable custom branding for logos, favicons and OpenGraph images. See the [custom branding guide]({{< ref "the-things-stack/management/branding" >}}) for detailed descriptions on this subject. +You can control the url of the assets folder that the Console frontend will use, e.g. if you plan on using a CDN to serve your assets. The branding base url will enable custom branding for logos, favicons and OpenGraph images. See the [custom branding guide]({{< ref "/cloud/branding" >}}) for detailed descriptions on this subject. - `console.ui.assets-base-url`: The base URL to the page assets - `console.ui.branding-base-url`: The base URL to the branding assets -- `console.ui.branding-cluster-id` {{< distributions "Cloud" "Enterprise" >}}: The cluster ID to show below the logo -- `console.ui.branding-text` {{< distributions "Cloud" "Enterprise" >}}: The branding text to show below the logo +- `console.ui.branding-cluster-id` {{< distributions "Cloud" "Enterprise" >}}: The cluster ID to show below the logo +- `console.ui.branding-text` {{< distributions "Cloud" "Enterprise" >}}: The branding text to show below the logo - `console.ui.icon-prefix`: The prefix to put before the page icons (favicon.ico, touch-icon.png, og-image.png) - `console.ui.canonical-url`: The page canonical URL - `console.ui.descriptions`: The page description diff --git a/doc/content/reference/configuration/device-claiming-server.md b/doc/content/enterprise/management/configuration/device-claiming-server.md similarity index 83% rename from doc/content/reference/configuration/device-claiming-server.md rename to doc/content/enterprise/management/configuration/device-claiming-server.md index 16cf356cfd..e85545f1c2 100644 --- a/doc/content/reference/configuration/device-claiming-server.md +++ b/doc/content/enterprise/management/configuration/device-claiming-server.md @@ -14,4 +14,4 @@ description: "" - `dcs.edcs.blob.bucket`: Blob bucket to use for the Join Server client configuration - `dcs.edcs.blob.path`: Blob path to use for the Join Server client configuration -See [Device Claiming Repository]({{< ref "/reference/device-claiming-repository" >}}) to learn how to configure the client configuration. +See [Device Claiming Repository]({{< ref "/enterprise/join-server/device-claiming-configuration" >}}) to learn how to configure the client configuration. diff --git a/doc/content/reference/configuration/gateway-configuration-server.md b/doc/content/enterprise/management/configuration/gateway-configuration-server.md similarity index 100% rename from doc/content/reference/configuration/gateway-configuration-server.md rename to doc/content/enterprise/management/configuration/gateway-configuration-server.md diff --git a/doc/content/reference/configuration/gateway-server.md b/doc/content/enterprise/management/configuration/gateway-server.md similarity index 100% rename from doc/content/reference/configuration/gateway-server.md rename to doc/content/enterprise/management/configuration/gateway-server.md diff --git a/doc/content/reference/configuration/identity-server.md b/doc/content/enterprise/management/configuration/identity-server.md similarity index 94% rename from doc/content/reference/configuration/identity-server.md rename to doc/content/enterprise/management/configuration/identity-server.md index d0f3ede1c5..98a31df9e8 100644 --- a/doc/content/reference/configuration/identity-server.md +++ b/doc/content/enterprise/management/configuration/identity-server.md @@ -1,6 +1,6 @@ --- -title: 'Identity Server Options' -description: '' +title: "Identity Server Options" +description: "" --- ## General Options @@ -49,8 +49,6 @@ Most emails contain the name of the network and links to the Identity Server or - `is.email.network.identity-server-url`: The URL of the Identity Server - `is.email.network.console-url`: The URL of the Console -Although {{% tts %}} comes with a number of builtin email templates, it is possible to override those with custom templates. You can specify the source where to load templates from, and options for that source. For more information on email templates, see the [email templates reference]({{< ref "/reference/email-templates" >}}). {{< removed-in-version "3.19" >}} - - `is.email.templates.source`: Source of the email template files (directory, url, blob) {{< deprecated-in-version "3.19" >}} - `is.email.templates.directory`: Directory on the filesystem where email templates are located {{< deprecated-in-version "3.19" >}} - `is.email.templates.url`: URL where email templates are located {{< deprecated-in-version "3.19" >}} @@ -74,12 +72,12 @@ If you do not want to serve the OAuth user interface on `/oauth`, you may custom - `is.oauth.mount`: Path on the server where the OAuth server will be served -If page assets for the OAuth UI are served from a CDN or on a different path on the server, the base URL needs to be customized as well. If you want to [customize the branding]({{< ref "the-things-stack/management/branding" >}}) of the OAuth UI, you can set the base URL for where your branding assets are located. +If page assets for the OAuth UI are served from a CDN or on a different path on the server, the base URL needs to be customized as well. If you want to [customize the branding]({{< ref "/cloud/branding" >}}) of the OAuth UI, you can set the base URL for where your branding assets are located. - `is.oauth.ui.assets-base-url`: The base URL to the page assets - `is.oauth.ui.branding-base-url`: The base URL to the branding assets -- `is.oauth.ui.branding-cluster-id` {{< distributions "Cloud" "Enterprise" >}}: The cluster ID to show below the logo -- `is.oauth.ui.branding-text` {{< distributions "Cloud" "Enterprise" >}}: The branding text to show below the logo +- `is.oauth.ui.branding-cluster-id` {{< distributions "Cloud" "Enterprise" >}}: The cluster ID to show below the logo +- `is.oauth.ui.branding-text` {{< distributions "Cloud" "Enterprise" >}}: The branding text to show below the logo - `is.oauth.ui.cluster-picker-url`: A URL to the a cluster picker to enable users to pick the correct cluster of the deployment The appearance of {{% tts %}} can optionally be customized. @@ -139,7 +137,7 @@ It is also possible to disable uploads: By default, users can register their own user accounts. User accounts can also be registered by admin users in the network. The user registration process can be customized by requiring approval by admin users, requiring email validation or by requiring new users to be invited by existing users. -- `is.user-registration.enabled`: Enable user registration. If user registration is disabled, admin users can still create users. +- `is.user-registration.enabled`: Enable user registration. If user registration is disabled, admin users can still create users. - `is.user-registration.admin-approval.required`: Require admin approval for new users - `is.user-registration.contact-info-validation.required`: Require contact info validation for new users - `is.user-registration.contact-info-validation.token-ttl`: TTL of contact info validation tokens @@ -192,7 +190,7 @@ By default admins are granted _almost_ all rights on all entities in the network - `is.gateways.encryption-key-id`: ID of the key used to encrypt gateway secrets at rest. -## Tenant Administration Options +## Tenant Administration Options {{< distributions "Cloud" "Enterprise" >}} In multi-tenant deployments, tenants are managed with "tenant admin keys". These keys need to be configured in the Identity Server. diff --git a/doc/content/reference/configuration/join-server.md b/doc/content/enterprise/management/configuration/join-server.md similarity index 100% rename from doc/content/reference/configuration/join-server.md rename to doc/content/enterprise/management/configuration/join-server.md diff --git a/doc/content/reference/configuration/network-operations-center.md b/doc/content/enterprise/management/configuration/network-operations-center.md similarity index 100% rename from doc/content/reference/configuration/network-operations-center.md rename to doc/content/enterprise/management/configuration/network-operations-center.md diff --git a/doc/content/reference/configuration/network-server.md b/doc/content/enterprise/management/configuration/network-server.md similarity index 95% rename from doc/content/reference/configuration/network-server.md rename to doc/content/enterprise/management/configuration/network-server.md index 3a7fcb8aa3..a57a2a903c 100644 --- a/doc/content/reference/configuration/network-server.md +++ b/doc/content/enterprise/management/configuration/network-server.md @@ -25,7 +25,7 @@ The `ns.downlink-priorities` options configure priorities Network Server assigns - `ns.downlink-priorities.mac-commands`: Priority for messages carrying MAC commands (lowest, low, below_normal, normal, above_normal, high, highest) - `ns.downlink-priorities.max-application-downlink`: Maximum priority for application downlink messages (lowest, low, below_normal, normal, above_normal, high, highest) -Network Server downlink queue capacity is configurable. +Network Server downlink queue capacity is configurable. - `ns.downlink-queue-capacity`: Maximum downlink queue size per session (default 10000) @@ -58,7 +58,7 @@ The `ns.interop` options configure how Network Server performs interoperability - `ns.interop.directory`: OS filesystem directory, which contains interoperability client configuration - `ns.interop.url`: URL, which contains interoperability client configuration -See [LoRaWAN Join Server Configuration]({{< ref "/reference/interop-repository" >}}) to learn how to configure the client configuration. +See [LoRaWAN Join Server Configuration]({{< ref "/enterprise/join-server/interop-configuration" >}}) to learn how to configure the client configuration. ## Peering diff --git a/doc/content/reference/configuration/packet-broker-agent.md b/doc/content/enterprise/management/configuration/packet-broker-agent.md similarity index 100% rename from doc/content/reference/configuration/packet-broker-agent.md rename to doc/content/enterprise/management/configuration/packet-broker-agent.md diff --git a/doc/content/reference/configuration/tenant-billing-server.md b/doc/content/enterprise/management/configuration/tenant-billing-server.md similarity index 100% rename from doc/content/reference/configuration/tenant-billing-server.md rename to doc/content/enterprise/management/configuration/tenant-billing-server.md diff --git a/doc/content/reference/configuration/the-things-stack.md b/doc/content/enterprise/management/configuration/the-things-stack.md similarity index 96% rename from doc/content/reference/configuration/the-things-stack.md rename to doc/content/enterprise/management/configuration/the-things-stack.md index c4d22de9fd..a7447969ad 100644 --- a/doc/content/reference/configuration/the-things-stack.md +++ b/doc/content/enterprise/management/configuration/the-things-stack.md @@ -182,9 +182,9 @@ Or you can enable failover using [Redis Sentinel](https://redis.io/topics/sentin Further, you can reduce the load on the Redis master by specifying read-only configuration: -- `redis.readonly.address` {{< distributions "Cloud" "Enterprise" >}}: Address of the Redis server -- `redis.readonly.password` {{< distributions "Cloud" "Enterprise" >}}: Password of the Redis server -- `redis.readonly.database` {{< distributions "Cloud" "Enterprise" >}}: Redis database to use +- `redis.readonly.address` {{< distributions "Cloud" "Enterprise" >}}: Address of the Redis server +- `redis.readonly.password` {{< distributions "Cloud" "Enterprise" >}}: Password of the Redis server +- `redis.readonly.database` {{< distributions "Cloud" "Enterprise" >}}: Redis database to use - `redis.readonly.pool-size` {{< distributions "Cloud" "Enterprise" >}}: The maximum size of the connection pool If your Redis server uses TLS, use the following options: @@ -241,12 +241,12 @@ Similar to the global Redis configuration, you can reduce the load on the Redis - `events.redis.readonly.address` {{< distributions "Cloud" "Enterprise" >}}: Address of the Redis server - `events.redis.readonly.password` {{< distributions "Cloud" "Enterprise" >}}: Password of the Redis server -- `events.redis.readonly.database` {{< distributions "Cloud" "Enterprise" >}}: Redis database to use +- `events.redis.readonly.database` {{< distributions "Cloud" "Enterprise" >}}: Redis database to use - `events.redis.readonly.pool-size` {{< distributions "Cloud" "Enterprise" >}}: The maximum size of the connection pool Redis events backend also provides event storage where retention can be configured. -- `events.redis.store.enable`: Enable events store +- `events.redis.store.enable`: Enable events store - `events.redis.store.correlation-id-count`: Defines how many events are indexed for a correlation ID - `events.redis.store.entity-count`: Defines how many events are indexed for an entity ID - `events.redis.store.entity-ttl`: Defines how long events are indexed for an entity ID @@ -344,12 +344,12 @@ When using the `redis` backend, the global [Redis configuration]({{< ref "#redis See [Redis configuration]({{< ref "#redis-options" >}}) for more options. -## Multi-Tenancy +## Multi-Tenancy {{< distributions "Cloud" "Enterprise" >}} In multi-tenant deployments, some additional configuration is required. -- `tenancy.base-domains` {{< distributions "Cloud" "Enterprise" >}}: Base domains for tenant ID inference. Setting this to `thethings.example.com` would extract the tenant ID from `.thethings.example.com`. -- `tenancy.default-id` {{< distributions "Cloud" "Enterprise" >}}: Default tenant ID. Users visiting `thethings.example.com` (from `tenancy.base-domains`) will be redirected to `default.thethings.example.com`. +- `tenancy.base-domains` {{< distributions "Cloud" "Enterprise" >}}: Base domains for tenant ID inference. Setting this to `thethings.example.com` would extract the tenant ID from `.thethings.example.com`. +- `tenancy.default-id` {{< distributions "Cloud" "Enterprise" >}}: Default tenant ID. Users visiting `thethings.example.com` (from `tenancy.base-domains`) will be redirected to `default.thethings.example.com`. Tenants can have custom configuration, such as custom branding or custom user registration options. This information is typically cached locally, especially in multi-region deployments to reduce the load on the Identity Server and to be more resilient against outages of the Identity Server. @@ -357,7 +357,7 @@ Tenants can have custom configuration, such as custom branding or custom user re ## Rate Limiting -{{% tts %}} supports rate limiting external endpoints. See [Rate Limiting]({{< ref "/reference/rate-limiting" >}}) for more details. +{{% tts %}} supports rate limiting external endpoints. See [Rate Limiting]({{< ref "/enterprise/management/rate-limiting" >}}) for more details. - `rate-limiting.blob.bucket`: Bucket to use - `rate-limiting.blob.path`: Path to use @@ -368,7 +368,7 @@ Tenants can have custom configuration, such as custom branding or custom user re ## Resource Limiting -{{< distributions "Enterprise" "AWS Launcher" >}} {{% tts %}} supports configuring maximum limits for active resources (e.g. number of active application data-plane MQTT connections). Resource limiting configuration can only be set from the configuration file. See [Resource Limiting]({{< ref "/reference/resource-limiting" >}}) for more details. +{{< distributions "Enterprise" "AWS Launcher" >}} {{% tts %}} supports configuring maximum limits for active resources (e.g. number of active application data-plane MQTT connections). Resource limiting configuration can only be set from the configuration file. See [Resource Limiting]({{< ref "/enterprise/management/resource-limiting" >}}) for more details. ## Version Check diff --git a/doc/content/reference/rate-limiting/_index.md b/doc/content/enterprise/management/rate-limiting/_index.md similarity index 96% rename from doc/content/reference/rate-limiting/_index.md rename to doc/content/enterprise/management/rate-limiting/_index.md index d57fbc0d49..54de07c263 100644 --- a/doc/content/reference/rate-limiting/_index.md +++ b/doc/content/enterprise/management/rate-limiting/_index.md @@ -1,6 +1,7 @@ --- title: "Rate Limiting" description: "" +aliases: [/reference/rate-limiting] --- {{% tts %}} supports rate limiting for all outward facing services. Access to each resource is limited by a unique identifier key, and it is possible to define rate limiting classes for fine-grained control. @@ -69,7 +70,7 @@ This section lists resources of {{% tts %}} on which a maximum rate limit can be {{< note >}} Both gRPC methods and HTTP endpoints support multiple classes. This enables overriding the generic rate limits for specific methods and endpoints. {{}} -{{< warning >}} When {{% tts %}} HTTP and gRPC endpoints are served behind a reverse proxy, the `X-Forwarded-For` header is respected for the remote IP. The IP address of the reverse proxy must be trusted by {{% tts %}} for this to work, see [HTTP options]({{< ref "/reference/configuration/the-things-stack#http-options" >}}) and [gRPC Options]({{< ref "/reference/configuration/the-things-stack#grpc-options" >}}). {{}} +{{< warning >}} When {{% tts %}} HTTP and gRPC endpoints are served behind a reverse proxy, the `X-Forwarded-For` header is respected for the remote IP. The IP address of the reverse proxy must be trusted by {{% tts %}} for this to work, see [HTTP options]({{< ref "/enterprise/management/configuration/the-things-stack#http-options" >}}) and [gRPC Options]({{< ref "/enterprise/management/configuration/the-things-stack#grpc-options" >}}). {{}} {{< warning >}} When {{% tts %}} MQTT and UDP endpoints are served by a reverse proxy, the remote IP address seen by {{% tts %}} may not be correct. In this case, rate limiting for new MQTT connections (and UDP traffic) should be handled by the reverse proxy and disabled in {{% tts %}}. {{}} diff --git a/doc/content/reference/resource-limiting/_index.md b/doc/content/enterprise/management/resource-limiting/_index.md similarity index 98% rename from doc/content/reference/resource-limiting/_index.md rename to doc/content/enterprise/management/resource-limiting/_index.md index 0db3510a46..12298f3b89 100644 --- a/doc/content/reference/resource-limiting/_index.md +++ b/doc/content/enterprise/management/resource-limiting/_index.md @@ -2,7 +2,7 @@ title: "Resource Limiting" description: "" new_in_version: "3.14.2" -distributions: ["Enterprise", "AWS Launcher"] +aliases: [/reference/resource-limiting] --- {{% tts %}} supports setting maximum limits for active resources. Access to each resource is limited by a unique identifier key, and it is possible to define resource limiting classes for fine-grained control. diff --git a/doc/content/reference/stripe/_index.md b/doc/content/enterprise/management/stripe/_index.md similarity index 54% rename from doc/content/reference/stripe/_index.md rename to doc/content/enterprise/management/stripe/_index.md index cdde5e49c5..2657d72b70 100644 --- a/doc/content/reference/stripe/_index.md +++ b/doc/content/enterprise/management/stripe/_index.md @@ -1,9 +1,9 @@ --- -title: "Billing with Stripe" +title: "Setting up billing with Stripe" description: "" -distributions: ["Cloud", "Enterprise"] +aliases: [/reference/stripe] --- -This is a reference for the Stripe backend of the [Tenant Billing Server]({{< ref "/reference/components/tenant-billing-server" >}}). +This is a reference for the Stripe backend of the [Tenant Billing Server]({{< ref "/concepts/architecture/components/tenant-billing-server" >}}). It covers the creation of a product, the pricing plans and adding customer subscriptions. diff --git a/doc/content/reference/stripe/customers/_index.md b/doc/content/enterprise/management/stripe/customers/_index.md similarity index 54% rename from doc/content/reference/stripe/customers/_index.md rename to doc/content/enterprise/management/stripe/customers/_index.md index 6de17c0d1b..fe2e718687 100644 --- a/doc/content/reference/stripe/customers/_index.md +++ b/doc/content/enterprise/management/stripe/customers/_index.md @@ -2,7 +2,7 @@ title: "Customers" description: "" weight: 20 -distributions: ["Cloud", "Enterprise"] +aliases: [/reference/stripe/customers] --- ## Creating a Customer @@ -43,17 +43,17 @@ You should now specify the tenant ID that the customer will use. In order to ach Click on the **Edit** button in the **Metadata** section. The following fields are supported: -| Field name | Description | -|------|-------------| -| `tenant-id`| The ID of the tenant. Required. | -| `tenant-name`| The name of the tenant. Optional, defaults to the `name` if not provided. | -| `tenant-description`| The description of the tenant. Optional, defaults to the customer description if not provided. | -| `admin-user` | The username of the initial administrator. Optional, defaults to the `tenant-id` if not provided. | -| `admin-email`| The email of the initial administrator. Optional, defaults to the customer email if not provided. | -| `admin-full-name` | The name of the initial administrator. Optional, defaults to empty if not provided. | -| `admin-password` | The password of the initial administrator. Optional, defaults to a randomly generated password if not provided. | -| `name` | _Deprecated - use `tenant-name`_. The name of the tenant. Optional, defaults to the `company` if not provided. | -| `company` | _Deprecated - use `tenant-name`_. The company of the tenant. Optional, defaults to the customer name if not provided. | +| Field name | Description | +| -------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `tenant-id` | The ID of the tenant. Required. | +| `tenant-name` | The name of the tenant. Optional, defaults to the `name` if not provided. | +| `tenant-description` | The description of the tenant. Optional, defaults to the customer description if not provided. | +| `admin-user` | The username of the initial administrator. Optional, defaults to the `tenant-id` if not provided. | +| `admin-email` | The email of the initial administrator. Optional, defaults to the customer email if not provided. | +| `admin-full-name` | The name of the initial administrator. Optional, defaults to empty if not provided. | +| `admin-password` | The password of the initial administrator. Optional, defaults to a randomly generated password if not provided. | +| `name` | _Deprecated - use `tenant-name`_. The name of the tenant. Optional, defaults to the `company` if not provided. | +| `company` | _Deprecated - use `tenant-name`_. The company of the tenant. Optional, defaults to the customer name if not provided. | {{< figure src="subscription-metadata.png" alt="Subscription metadata" >}} diff --git a/doc/content/reference/stripe/customers/customer-create.png b/doc/content/enterprise/management/stripe/customers/customer-create.png similarity index 100% rename from doc/content/reference/stripe/customers/customer-create.png rename to doc/content/enterprise/management/stripe/customers/customer-create.png diff --git a/doc/content/reference/stripe/customers/customer-created.png b/doc/content/enterprise/management/stripe/customers/customer-created.png similarity index 100% rename from doc/content/reference/stripe/customers/customer-created.png rename to doc/content/enterprise/management/stripe/customers/customer-created.png diff --git a/doc/content/reference/stripe/customers/customer-information.png b/doc/content/enterprise/management/stripe/customers/customer-information.png similarity index 100% rename from doc/content/reference/stripe/customers/customer-information.png rename to doc/content/enterprise/management/stripe/customers/customer-information.png diff --git a/doc/content/reference/stripe/customers/customer-list.png b/doc/content/enterprise/management/stripe/customers/customer-list.png similarity index 100% rename from doc/content/reference/stripe/customers/customer-list.png rename to doc/content/enterprise/management/stripe/customers/customer-list.png diff --git a/doc/content/reference/stripe/customers/subscription-create.png b/doc/content/enterprise/management/stripe/customers/subscription-create.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-create.png rename to doc/content/enterprise/management/stripe/customers/subscription-create.png diff --git a/doc/content/reference/stripe/customers/subscription-created.png b/doc/content/enterprise/management/stripe/customers/subscription-created.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-created.png rename to doc/content/enterprise/management/stripe/customers/subscription-created.png diff --git a/doc/content/reference/stripe/customers/subscription-information.png b/doc/content/enterprise/management/stripe/customers/subscription-information.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-information.png rename to doc/content/enterprise/management/stripe/customers/subscription-information.png diff --git a/doc/content/reference/stripe/customers/subscription-metadata.png b/doc/content/enterprise/management/stripe/customers/subscription-metadata.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-metadata.png rename to doc/content/enterprise/management/stripe/customers/subscription-metadata.png diff --git a/doc/content/reference/stripe/customers/subscription-plan.png b/doc/content/enterprise/management/stripe/customers/subscription-plan.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-plan.png rename to doc/content/enterprise/management/stripe/customers/subscription-plan.png diff --git a/doc/content/reference/stripe/customers/subscription-updated.png b/doc/content/enterprise/management/stripe/customers/subscription-updated.png similarity index 100% rename from doc/content/reference/stripe/customers/subscription-updated.png rename to doc/content/enterprise/management/stripe/customers/subscription-updated.png diff --git a/doc/content/reference/stripe/products/_index.md b/doc/content/enterprise/management/stripe/products/_index.md similarity index 66% rename from doc/content/reference/stripe/products/_index.md rename to doc/content/enterprise/management/stripe/products/_index.md index 6699fb63c3..388a085b82 100644 --- a/doc/content/reference/stripe/products/_index.md +++ b/doc/content/enterprise/management/stripe/products/_index.md @@ -2,7 +2,7 @@ title: "Products and Pricing Plans" description: "" weight: 10 -distributions: ["Cloud", "Enterprise"] +aliases: [/reference/stripe/products] --- ## Creating a Product and the Initial Pricing Plan @@ -19,7 +19,7 @@ After specifying the name and the unit label, you can add a new pricing plan by {{< figure src="plan-create.png" alt="Pricing plan creation" >}} -After setting up the plan, scroll down and click **Add pricing plan**. Your product will be created with the given pricing plan and you can now provide the pricing plan ID in the [configuration]({{< ref "/reference/configuration/tenant-billing-server" >}}). +After setting up the plan, scroll down and click **Add pricing plan**. Your product will be created with the given pricing plan and you can now provide the pricing plan ID in the [configuration]({{< ref "/enterprise/management/configuration/tenant-billing-server" >}}). {{< figure src="product-created.png" alt="Created product" >}} @@ -31,14 +31,14 @@ It is possible to limit the number of entities a customer can create when subscr Entity limits can be specified using metadata fields. The following fields are supported: -| Field name | Description | -|------------|-------------| -| `max-applications` | The maximum number of registered applications a tenant can have concurrently. Optional. | -| `max-clients` | The maximum number of registered clients a tenant can have concurrently. Optional. | -| `max-end-devices` | The maximum number of registered end devices a tenant can have concurrently. Optional. | -| `max-gateways` | The maximum number of registered gateways a tenant can have concurrently. Optional. | +| Field name | Description | +| ------------------- | ---------------------------------------------------------------------------------------- | +| `max-applications` | The maximum number of registered applications a tenant can have concurrently. Optional. | +| `max-clients` | The maximum number of registered clients a tenant can have concurrently. Optional. | +| `max-end-devices` | The maximum number of registered end devices a tenant can have concurrently. Optional. | +| `max-gateways` | The maximum number of registered gateways a tenant can have concurrently. Optional. | | `max-organizations` | The maximum number of registered organizations a tenant can have concurrently. Optional. | -| `max-users` | The maximum number of registered users a tenant can have concurrently. Optional. | +| `max-users` | The maximum number of registered users a tenant can have concurrently. Optional. | In order to add one (or more) of these limits, click on the **Edit** button of the **Metadata** section and fill in the limits. diff --git a/doc/content/reference/stripe/products/plan-create.png b/doc/content/enterprise/management/stripe/products/plan-create.png similarity index 100% rename from doc/content/reference/stripe/products/plan-create.png rename to doc/content/enterprise/management/stripe/products/plan-create.png diff --git a/doc/content/reference/stripe/products/plan-information.png b/doc/content/enterprise/management/stripe/products/plan-information.png similarity index 100% rename from doc/content/reference/stripe/products/plan-information.png rename to doc/content/enterprise/management/stripe/products/plan-information.png diff --git a/doc/content/reference/stripe/products/plan-metadata-edit.png b/doc/content/enterprise/management/stripe/products/plan-metadata-edit.png similarity index 100% rename from doc/content/reference/stripe/products/plan-metadata-edit.png rename to doc/content/enterprise/management/stripe/products/plan-metadata-edit.png diff --git a/doc/content/reference/stripe/products/plan-metadata.png b/doc/content/enterprise/management/stripe/products/plan-metadata.png similarity index 100% rename from doc/content/reference/stripe/products/plan-metadata.png rename to doc/content/enterprise/management/stripe/products/plan-metadata.png diff --git a/doc/content/reference/stripe/products/product-create.png b/doc/content/enterprise/management/stripe/products/product-create.png similarity index 100% rename from doc/content/reference/stripe/products/product-create.png rename to doc/content/enterprise/management/stripe/products/product-create.png diff --git a/doc/content/reference/stripe/products/product-created.png b/doc/content/enterprise/management/stripe/products/product-created.png similarity index 100% rename from doc/content/reference/stripe/products/product-created.png rename to doc/content/enterprise/management/stripe/products/product-created.png diff --git a/doc/content/reference/stripe/products/product-list.png b/doc/content/enterprise/management/stripe/products/product-list.png similarity index 100% rename from doc/content/reference/stripe/products/product-list.png rename to doc/content/enterprise/management/stripe/products/product-list.png diff --git a/doc/content/the-things-stack/management/tenant-management/_index.md b/doc/content/enterprise/management/tenant-management/_index.md similarity index 93% rename from doc/content/the-things-stack/management/tenant-management/_index.md rename to doc/content/enterprise/management/tenant-management/_index.md index 7915bbda00..69aed06d75 100644 --- a/doc/content/the-things-stack/management/tenant-management/_index.md +++ b/doc/content/enterprise/management/tenant-management/_index.md @@ -1,8 +1,8 @@ --- -title: 'Tenant Management' -description: '' -distributions: ['Enterprise'] -aliases: [/reference/tenant-management] +title: "Tenant Management" +description: "" +aliases: + [/reference/tenant-management, /the-things-stack/management/tenant-management] --- This guide contains detailed information on how to perform common tenant management operations for {{% tts %}} Enterprise. @@ -15,7 +15,7 @@ This guide contains detailed information on how to perform common tenant managem Instead of using API keys and OAuth access tokens as for other {{% tts %}} services, the tenant services require using **tenant admin keys** for authentication. -Tenant admin keys are configured in the Identity Server as described [here]({{< ref "/reference/configuration/identity-server#tenant-administration-options" >}}). +Tenant admin keys are configured in the Identity Server as described [here]({{< ref "/enterprise/management/configuration/identity-server#tenant-administration-options" >}}). This means all tenant management CLI commands will need to have the `--tenant-admin-key` flag appended, followed by a tenant admin key that you configured in the Identity Server. See the section below for examples. diff --git a/doc/content/gateways/_index.md b/doc/content/gateways/_index.md deleted file mode 100644 index a88d27d3d2..0000000000 --- a/doc/content/gateways/_index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Gateways" -description: "" -weight: 3 -menu: - main: - weight: 3 -aliases: [/guides/connecting-gateways] ---- - -This section contains information to help you work with gateways in {{% tts %}}. Here, you'll find guides for connecting gateways using {{% lbs %}} or the {{% udp-pf %}}, and instructions for connecting many popular LoRaWAN® gateways. - -If your {{% tts %}} deployment is connected to [Packet Broker]({{< ref "the-things-stack/packet-broker" >}}), you can take advantage of coverage from The Things Network without adding any gateways of your own. See [Adding Gateways]({{< relref "concepts/adding-gateways" >}}) for instructions to add gateways and to find out if your location has nearby gateways. diff --git a/doc/content/getting-started/_index.md b/doc/content/getting-started/_index.md index 351ceb9ef8..86b559f840 100644 --- a/doc/content/getting-started/_index.md +++ b/doc/content/getting-started/_index.md @@ -1,11 +1,16 @@ --- title: "Getting Started" -description: "" -weight: -2 +description: "Learn how to quickly get started with The Things Stack" menu: main: - weight: 2 -aliases: [/guides/getting-started, /guides/getting-started/running-the-stack, /guides/getting-started/quick-start, /getting-started/quick-start/] + weight: 1 +aliases: + [ + /guides/getting-started, + /guides/getting-started/running-the-stack, + /guides/getting-started/quick-start, + /getting-started/quick-start/, + ] --- {{% tts %}} is an enterprise-grade LoRaWAN® Network Server that provides services and tools to securely install and manage millions of LoRaWAN devices in production. @@ -19,7 +24,3 @@ We then introduce [{{% tts %}}]({{< relref "the-things-stack-basics" >}}) and it With these basics covered, we can now [setup your first LoRaWAN network]({{< relref "setup-first-network" >}}). Finally, since LoRaWAN and {{% tts %}} are deep topics, we provide suggestions on the [next steps]({{< relref "next-steps" >}}). - - - - diff --git a/doc/content/getting-started/faq/_index.md b/doc/content/getting-started/faq/_index.md index b778da67ca..c7b6769c55 100644 --- a/doc/content/getting-started/faq/_index.md +++ b/doc/content/getting-started/faq/_index.md @@ -16,7 +16,7 @@ Check out [this article](https://www.thethingsindustries.com/news/why-you-should ## How does {{% tts %}} work? -Check out [{{% tts %}} Architecture]({{< ref "/the-things-stack/concepts/architecture" >}}) guide for a detailed overview of the platform components and their functionality. +Check out [{{% tts %}} Architecture]({{< ref "/concepts/architecture" >}}) guide for a detailed overview of the platform components and their functionality. ## How to choose a LoRaWAN device? @@ -24,37 +24,37 @@ Check out the [Device Repository](https://www.thethingsnetwork.org/device-reposi ## How to easily provision devices in {{% tts %}}? -The easiest way of provisioning devices is using [Device Repository](https://www.thethingsnetwork.org/device-repository/) because that way you don't have to worry too much about [LoRaWAN and Regional Parameters]({{< ref "/the-things-stack/concepts/spec-regional-parameters" >}}) versions as they are automatically provided by {{% tts %}}. +The easiest way of provisioning devices is using [Device Repository](https://www.thethingsnetwork.org/device-repository/) because that way you don't have to worry too much about [LoRaWAN and Regional Parameters]({{< ref "/concepts/features/lorawan/version-support" >}}) versions as they are automatically provided by {{% tts %}}. -Check the [Adding Devices]({{< ref "/devices/adding-devices" >}}) guide for detailed instructions on how to provision devices using Device Repository or manually, as well as in bulk. Check [here]({{< ref "/devices/models/" >}}) for simple guides on connecting various device models to {{% tts %}}. +Check the [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) guide for detailed instructions on how to provision devices using Device Repository or manually, as well as in bulk. Check [here]({{< ref "/hardware/devices/models/" >}}) for simple guides on connecting various device models to {{% tts %}}. -Keep in mind that we highly recommend to use OTAA activation method, rather than ABP. Check [here]({{< ref "/devices/concepts/abp-vs-otaa/" >}}) why. +Keep in mind that we highly recommend to use OTAA activation method, rather than ABP. Check [here]({{< ref "/hardware/devices/concepts/abp-vs-otaa/" >}}) why. ## How to choose a LoRaWAN gateway? -Gateways that use the legacy [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp/" >}}) have many security drawbacks, so gateways that use the [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}) are strongly recommended. +Gateways that use the legacy [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp/" >}}) have many security drawbacks, so gateways that use the [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) are strongly recommended. -[Adding gateways]({{< ref "/gateways/concepts/adding-gateways/" >}}) guides you through simple process of gateway onboarding. Check [here]({{< ref "/gateways/models/" >}}) for simple guides on connecting various gateway models to {{% tts %}}. +[Adding gateways]({{< ref "/hardware/gateways/concepts/adding-gateways/" >}}) guides you through simple process of gateway onboarding. Check [here]({{< ref "/hardware/gateways/models/" >}}) for simple guides on connecting various gateway models to {{% tts %}}. ## How to easily interact with {{% tts %}}? -You can [interact with {{% tts %}}]({{< ref "/the-things-stack/interact/" >}}) via Console, CLI and API. For newly onboarded users, the easiest way is probably using the Console Web UI. Advanced users who are familiar with the CLI or API can even build scripts on top of them to automate certain processes. +You can [interact with {{% tts %}}]({{< ref "/concepts/features" >}}) via Console, CLI and API. For newly onboarded users, the easiest way is probably using the Console Web UI. Advanced users who are familiar with the CLI or API can even build scripts on top of them to automate certain processes. ## Can I host {{% tts %}} on my own hardware? -Yes, {{% tts %}} can be installed on your own hardware - check out a detailed guide on [hosting {{% tts %}}]({{< ref "/the-things-stack/host" >}}), whether on you're installing it for DIY projects or for production purposes. +Yes, {{% tts %}} can be installed on your own hardware - check out a detailed guide on [hosting {{% tts %}}]({{< ref "/enterprise/" >}}), whether on you're installing it for DIY projects or for production purposes. ## How could you benefit from {{% tts %}} multi-cluster and multi-tenant deployments? {{% tts %}} Cloud is a multi-tenant and multi-cluster deployment. Being multi-tenant makes it possible for each customer to has their own isolated network, while sharing the underlying infrastructure, and being multi-cluster makes it possible to store account information in a central location, while routing all your IoT traffic to the closest cluster, therefore reducing latency significantly. -Check [{{% tts %}} Cloud documentation]({{< ref "/the-things-stack/cloud" >}}) for more details and a list of available clusters. +Check [{{% tts %}} Cloud documentation]({{< ref "/cloud" >}}) for more details and a list of available clusters. ## How to improve LoRaWAN coverage and network performance? -Improving the network coverage can be done by utilizing [Packet Broker]({{< ref "/the-things-stack/packet-broker/" >}}) which exchanges traffic between {{% tts %}} and other LoRaWAN networks. {{% ttss %}} and {{% tts %}} Cloud are connected to Packet Broker by default. +Improving the network coverage can be done by utilizing [Packet Broker]({{< ref "/concepts/packet-broker/" >}}) which exchanges traffic between {{% tts %}} and other LoRaWAN networks. {{% ttss %}} and {{% tts %}} Cloud are connected to Packet Broker by default. -You can choose to contribute to the community by defining [policies]({{< ref "/the-things-stack/packet-broker/configure/" >}}) to route traffic from your gateways to {{% ttss %}} devices. +You can choose to contribute to the community by defining [policies]({{< ref "/concepts/packet-broker/configure/" >}}) to route traffic from your gateways to {{% ttss %}} devices. ## Does {{% tts %}} store data? @@ -62,4 +62,4 @@ For certain {{% tts %}} deployments it is possible to enable [Storage Integratio ## How to get the most out of the data acquired from devices? -{{% tts %}} features a large number of third party platform [integrations]({{< ref "/integrations/" >}}). They can help you turn your sensor data from {{% tts %}} into a completely functional end-to-end IoT solution. \ No newline at end of file +{{% tts %}} features a large number of third party platform [integrations]({{< ref "/integrations/" >}}). They can help you turn your sensor data from {{% tts %}} into a completely functional end-to-end IoT solution. diff --git a/doc/content/reference/glossary/_index.md b/doc/content/getting-started/glossary/_index.md similarity index 89% rename from doc/content/reference/glossary/_index.md rename to doc/content/getting-started/glossary/_index.md index bc76c24e11..bf1831323b 100644 --- a/doc/content/reference/glossary/_index.md +++ b/doc/content/getting-started/glossary/_index.md @@ -1,6 +1,7 @@ --- title: "Glossary" description: "Common terms and definitions" +aliases: [/reference/glossary] --- This reference contains common terms and definitions to help you find your way around {{% tts %}}. diff --git a/doc/content/getting-started/next-steps/_index.md b/doc/content/getting-started/next-steps/_index.md index 7299dba36a..d8d57256fb 100644 --- a/doc/content/getting-started/next-steps/_index.md +++ b/doc/content/getting-started/next-steps/_index.md @@ -9,11 +9,11 @@ Once you have your first LoRaWAN® Network setup, here are the next steps. 1. Get {{% ttigpro %}} or any other LoRa® gateway -2. [Connect the gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) to your netowrk. -3. [Add LoRaWAN end devices]({{< ref "devices/adding-devices" >}}) to send LoRaWAN traffic to your network. +2. [Connect the gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) to your netowrk. +3. [Add LoRaWAN end devices]({{< ref "/hardware/devices/adding-devices" >}}) to send LoRaWAN traffic to your network. 4. [Create an integration]({{< ref "integrations" >}}) to send your LoRaWAN sensor data to external integrations or to your own private server. -5. Learn how to get the most out of [{{% tts %}}]({{< ref "/the-things-stack/" >}}). -6. Check out the [Glossary]({{< ref "/reference/glossary" >}}) for a disambiguation of some of these terms and [FAQ]({{< ref "/getting-started/faq" >}}). +5. Learn how to get the most out of [{{% tts %}}]({{< ref "/enterprise/" >}}). +6. Check out the [Glossary]({{< ref "/getting-started/glossary" >}}) for a disambiguation of some of these terms and [FAQ]({{< ref "/getting-started/faq" >}}). ## Learn more diff --git a/doc/content/getting-started/the-things-stack-basics/_index.md b/doc/content/getting-started/the-things-stack-basics/_index.md index b418e97b70..a5cebd5e20 100644 --- a/doc/content/getting-started/the-things-stack-basics/_index.md +++ b/doc/content/getting-started/the-things-stack-basics/_index.md @@ -16,7 +16,7 @@ aliases: [/getting-started/what-is-tts/] - {{< distributions "Cloud" >}} [{{% tts %}} Cloud]({{< relref "cloud" >}}): Our flagship, fully-managed, SLA-backed cloud subscription helping hundreds of companies around the world. By using {{% tts %}} Cloud, you can focus on providing value to your customers, while leaving the complexity of managing a production LoRaWAN Network Server to us. You can start evaluating {{% tts %}} Cloud by [signing up for the free discovery tier]({{< relref "setup-first-network" >}}) to get started. -- {{< distributions "Enterprise" >}}[{{% tts %}} Enterprise]({{< relref "host" >}}): Alternatively, if you prefer to take on the responsibility of installing and maintaining {{% tts %}} in addition to managing your LoRaWAN device fleet, {{% tts %}} is available to be installed on your own hardware or cloud infrastructure. +- {{< distributions "Enterprise" >}}[{{% tts %}} Enterprise]({{< relref "enterprise" >}}): Alternatively, if you prefer to take on the responsibility of installing and maintaining {{% tts %}} in addition to managing your LoRaWAN device fleet, {{% tts %}} is available to be installed on your own hardware or cloud infrastructure. For simple non-commercial projects and local testing, there are a few options. diff --git a/doc/content/hardware/_index.md b/doc/content/hardware/_index.md new file mode 100644 index 0000000000..d70dbd2dee --- /dev/null +++ b/doc/content/hardware/_index.md @@ -0,0 +1,7 @@ +--- +title: "Hardware" +description: "Guides related to LoRaWAN hardware" +menu: + main: + weight: 9 +--- diff --git a/doc/content/hardware/devices/_index.md b/doc/content/hardware/devices/_index.md new file mode 100644 index 0000000000..0a22c657ab --- /dev/null +++ b/doc/content/hardware/devices/_index.md @@ -0,0 +1,8 @@ +--- +title: "Devices" +description: "" +weight: 1 +aliases: [/devices] +--- + +This section contains guides to add, configure and troubleshoot LoRaWAN® end devices in {{% tts %}}. There are also guides on core concepts to learn more and detailed information on popular end devices. diff --git a/doc/content/devices/adding-devices/_index.md b/doc/content/hardware/devices/adding-devices/_index.md similarity index 86% rename from doc/content/devices/adding-devices/_index.md rename to doc/content/hardware/devices/adding-devices/_index.md index d20825e9d6..6e4d169ae7 100644 --- a/doc/content/devices/adding-devices/_index.md +++ b/doc/content/hardware/devices/adding-devices/_index.md @@ -2,11 +2,14 @@ title: "Adding Devices" description: "" aliases: - - /getting-started/cli/create-end-device - - /getting-started/console/create-end-device - - /the-things-stack/interact/cli/create-end-device - - /the-things-stack/interact/console/create-end-device - - /getting-started/device-claiming/claim-devices + [ + /getting-started/cli/create-end-device, + /getting-started/console/create-end-device, + /concepts/features/cli/create-end-device, + /concepts/console/create-end-device, + /getting-started/device-claiming/claim-devices, + /devices/adding-devices, + ] weight: 1 --- @@ -17,7 +20,7 @@ This section contains instructions for adding LoRaWAN® devices in {{% tts %}}. End devices in {{% tts %}} are managed under **Applications**. An application is a logical collection of devices that can be used to collect devices by function or geographical area. Before proceeding with this guide, [create an application]({{< ref "/integrations/adding-applications/" >}}) first. -This guide assumes that your device is in the [LoRaWAN® Device Repository](https://github.com/TheThingsNetwork/lorawan-devices/) and that you're using the Console. If your device is not in the LoRaWAN® Device Repository or if you want to use {{% tts %}} CLI, see [Manually adding devices ]({{< ref "/devices/adding-devices/manual/" >}}). +This guide assumes that your device is in the [LoRaWAN® Device Repository](https://github.com/TheThingsNetwork/lorawan-devices/) and that you're using the Console. If your device is not in the LoRaWAN® Device Repository or if you want to use {{% tts %}} CLI, see [Manually adding devices ]({{< ref "/hardware/devices/adding-devices/manual/" >}}). To create a device, first open the application you wish to add the device in. Go to **End devices** in the left menu and click on **+Register end device** to reach the end device registration page. @@ -49,7 +52,7 @@ Choose the **Select the end device in the LoRaWAN Device Repository** input meth {{< figure src="device-repo.png" alt="Creating a new device with the Device Repository" >}} -Choose a **Frequency plan** appropriate for your region. Your device and gateway must use the same [frequency plan]({{< ref "/reference/frequency-plans/" >}}) to communicate. +Choose a **Frequency plan** appropriate for your region. Your device and gateway must use the same [frequency plan]({{< ref "/concepts/features/lorawan/frequency-plans/" >}}) to communicate. {{< figure src="fp.png" alt="Choosing a frequency plan" >}} @@ -65,7 +68,7 @@ First choose the **Select the end device in the LoRaWAN Device Repository** inpu {{< figure src="select-dr-non-qr.png" alt="Creating a new device with the Device Repository" >}} -Choose a **Frequency plan** appropriate for your region. Your device and gateway must use the same [frequency plan]({{< ref "/reference/frequency-plans/" >}}) to communicate. This example uses `Europe 863-870 MHz (SF9 for RX2 - recommended)`. +Choose a **Frequency plan** appropriate for your region. Your device and gateway must use the same [frequency plan]({{< ref "/concepts/features/lorawan/frequency-plans/" >}}) to communicate. This example uses `Europe 863-870 MHz (SF9 for RX2 - recommended)`. {{< figure src="fp-non-qr.png" alt="Choosing a frequency plan" >}} @@ -83,7 +86,7 @@ For LoRaWAN version 1.0.x devices, you will see an **AppKey** field, and for LoR {{< /tabs/container >}} -Finally, enter an **End device ID**. Advisable is doing it in the format `eui-{Device EUI}`. You can edit this field and give the device a unique identifier. See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for guidelines about choosing a unique ID. +Finally, enter an **End device ID**. Advisable is doing it in the format `eui-{Device EUI}`. You can edit this field and give the device a unique identifier. See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for guidelines about choosing a unique ID. Now verify that all the fields are filled and click the **Register end device** button to create the end device. diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/_index.md b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/_index.md similarity index 78% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/_index.md rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/_index.md index c906198221..10a491ecf5 100644 --- a/doc/content/devices/adding-devices/adding-devices-in-bulk/_index.md +++ b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/_index.md @@ -6,11 +6,12 @@ aliases: [ /getting-started/migrating-from-v2/import-devices, /getting-started/migrating-from-networks/import-devices, - /the-things-stack/migrating/import-devices, - /the-things-stack/migrating-from-v2/import-devices, - /the-things-stack/migrating-from-networks/import-devices, + /migration/import-devices, + /migration-from-v2/import-devices, + /migration-from-networks/import-devices, /getting-started/migrating, /getting-started/migrating/import-devices, + /hardware/devices/adding-devices/adding-devices-in-bulk, /devices/adding-devices/adding-devices-in-bulk, ] --- @@ -19,12 +20,12 @@ Instead of adding devices one by one, {{% tts %}} supports multiple methods of a -There are two ways to import devices in {{% tts %}} - using [Console]({{< ref "/the-things-stack/interact/console" >}}) or [CLI]({{< ref "/the-things-stack/interact/cli" >}}). +There are two ways to import devices in {{% tts %}} - using [Console]({{< ref "/concepts/features/console" >}}) or [CLI]({{< ref "/concepts/features/cli" >}}). {{% tts %}} supports importing end devices in JSON and CSV format: -- To import devices that are in a JSON file (for example, the one you created by following [Migrating End Devices from {{% ttnv2 %}}]({{< ref "/the-things-stack/migrating/migrating-from-v2" >}}) or [Exporting Devices from ChirpStack]({{< ref "/the-things-stack/migrating/migration-tool/export-from-chirpstack" >}})), use **{{% tts %}} JSON** format (identified by `the-things-stack`). The JSON format data format is documented in the [JSON File Reference]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}). -- To import devices that are in a CSV file, use the **{{% tts %}} CSV** (identified by `the-things-stack-csv`). The CSV data format is documented in the [CSV File Reference]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-csv" >}}), including a handy Excel template. +- To import devices that are in a JSON file (for example, the one you created by following [Exporting Devices from ChirpStack]({{< ref "/concepts/migration/exporting-end-devices/export-from-chirpstack" >}})), use **{{% tts %}} JSON** format (identified by `the-things-stack`). The JSON format data format is documented in the [JSON File Reference]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk/device-json" >}}). +- To import devices that are in a CSV file, use the **{{% tts %}} CSV** (identified by `the-things-stack-csv`). The CSV data format is documented in the [CSV File Reference]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk/device-csv" >}}), including a handy Excel template. {{< tabs/container "Console" "CLI" >}} @@ -126,7 +127,7 @@ ttn-lw-cli create \ {{< /tabs/tab >}} -To claim multiple devices, you need to create a [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}) containing devices info with defined `claim_authentication_code`. An example of an end device object: +To claim multiple devices, you need to create a [JSON file]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk/device-json" >}}) containing devices info with defined `claim_authentication_code`. An example of an end device object: ```json { @@ -149,15 +150,15 @@ To claim multiple devices, you need to create a [JSON file]({{< ref "/devices/ad {{< tabs/tab "Console" >}} -Then, you only need to import the JSON file as explained above in [Import devices via the Console]({{< ref "/devices/adding-devices/adding-devices-in-bulk#import-devices-via-the-console" >}}). +Then, you only need to import the JSON file as explained above in [Import devices via the Console]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk#import-devices-via-the-console" >}}). {{< /tabs/tab >}} {{< tabs/tab "CLI">}} -Then, issue the CLI command to import the JSON file as explained above in [Import devices via the CLI]({{< ref "/devices/adding-devices/adding-devices-in-bulk#import-devices-via-the-cli" >}}). +Then, issue the CLI command to import the JSON file as explained above in [Import devices via the CLI]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk#import-devices-via-the-cli" >}}). -{{< note >}} The `join-server-enabled` option in the [CLI configuration]({{< ref "/the-things-stack/interact/cli/configuring-cli" >}}) has to be set to `false` when claiming devices using the CLI. {{}} +{{< note >}} The `join-server-enabled` option in the [CLI configuration]({{< ref "/concepts/features/cli/configuring-cli" >}}) has to be set to `false` when claiming devices using the CLI. {{}} {{< /tabs/tab >}} diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/device-csv.md b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-csv.md similarity index 91% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/device-csv.md rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-csv.md index 1fedbf674e..1f715c1861 100644 --- a/doc/content/devices/adding-devices/adding-devices-in-bulk/device-csv.md +++ b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-csv.md @@ -2,7 +2,12 @@ title: "CSV File Reference" description: "" weight: 9 -aliases: [/getting-started/device-csv, /getting-started/migrating/device-csv] +aliases: + [ + /getting-started/device-csv, + /getting-started/migrating/device-csv, + /devices/adding-devices/adding-devices-in-bulk/device-csv, + ] --- {{% tts %}} has support for importing end devices from CSV (comma-separated values) files. @@ -22,34 +27,34 @@ The CSV import in {{% tts %}} uses the following settings: The following columns are recognized: -| Column | Required | Alias | Format | Meaning | -| ----------------------- | ------------------------ | --------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dev_eui` | **Yes** | | Hexadecimal string | LoRaWAN® DevEUI | -| `join_eui` | **Yes** | `app_eui` | Hexadecimal string | LoRaWAN JoinEUI (or AppEUI) | -| `id` | No | | Alphanumeric string, lowercase with hyphens | Device ID (falls back to DevEUI if not set) | -| `name` | No | | Free form | Name | -| `description` | No | | string | Optional, description of the device | -| `lorawan_version` | No \* | | See [`MACVersion`]({{< ref "/api/reference/grpc/end_device#enum:MACVersion" >}}) | LoRaWAN version | -| `lorawan_phy_version` | No \* | | See [`PHYVersion`]({{< ref "/api/reference/grpc/end_device#enum:PHYVersion" >}}) | LoRaWAN Regional Parameters version | -| `frequency_plan_id` | No \* | | See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) | Frequency plan ID | -| `brand_id` | No | | Vendor ID string from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Device brand ID | -| `model_id` | No | | Model ID from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Device model ID | -| `firmware_version` | No | | Firmware version from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Firmware version | -| `hardware_version` | No | | Hardware version from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Hardware version | -| `band_id` | No | | See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) | LoRaWAN Band ID | -| `supports_class_c` | No | | boolean | `true` for Class C devices, `false` otherwise. | -| `app_key` | **Yes** | | Hexadecimal string | LoRaWAN AppKey | -| `nwk_key` | No | | Hexadecimal string | LoRaWAN NwkKey | -| `rx1_delay` | No | | string | Delay for the first Class A receive window (Rx1). Typical values are `"RX_DELAY_1"` (1 second) and `"RX_DELAY_5"` (5 seconds). See [MACSettings]({{< ref "/api/reference/grpc/end_device#message:MACSettings" >}}) for more information. | -| `supports_32_bit_f_cnt` | No | | boolean | `true` if device supports 32-bit frame counters, `false` if device only supports 16-bit frame counters. | -| `dev_addr` | **For existing session** | | Hexadecimal string | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Device Address]({{< ref "/reference/glossary#device-address" >}}) for more information. | -| `app_s_key` | **For existing session** | | string | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Application Session Key]({{< ref "reference/glossary#application-session-key" >}}) for more information. | -| `f_nwk_s_int_key` | **For existing session** | | string | Forwarding Network Session Integrity Key, also referred to as **Network Session Key** in LoRaWAN v1.0.x compatibility mode. See [SessionKeys]({{< ref "/api/reference/grpc/end_device#message:SessionKeys" >}}) and [Forwarding Network Session Integrity Key]({{< ref "/reference/glossary#forwarding-network-session-integrity-key" >}}) for more information. | -| `last_f_cnt_up` | **For existing session** | | uint | Last uplink frame counter used. | -| `last_n_f_cnt_down` | **For existing session** | | uint | Last network downlink frame counter used. | -| `last_a_f_cnt_down` | **For existing session** | | uint | Last application downlink frame counter used. | - -\* If you don't set this, you must set the fallback value when importing the CSV file. See [Importing devices]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). +| Column | Required | Alias | Format | Meaning | +| ----------------------- | ------------------------ | --------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dev_eui` | **Yes** | | Hexadecimal string | LoRaWAN® DevEUI | +| `join_eui` | **Yes** | `app_eui` | Hexadecimal string | LoRaWAN JoinEUI (or AppEUI) | +| `id` | No | | Alphanumeric string, lowercase with hyphens | Device ID (falls back to DevEUI if not set) | +| `name` | No | | Free form | Name | +| `description` | No | | string | Optional, description of the device | +| `lorawan_version` | No \* | | See [`MACVersion`]({{< ref "/api/reference/grpc/end_device#enum:MACVersion" >}}) | LoRaWAN version | +| `lorawan_phy_version` | No \* | | See [`PHYVersion`]({{< ref "/api/reference/grpc/end_device#enum:PHYVersion" >}}) | LoRaWAN Regional Parameters version | +| `frequency_plan_id` | No \* | | See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) | Frequency plan ID | +| `brand_id` | No | | Vendor ID string from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Device brand ID | +| `model_id` | No | | Model ID from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Device model ID | +| `firmware_version` | No | | Firmware version from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Firmware version | +| `hardware_version` | No | | Hardware version from [Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}) | Hardware version | +| `band_id` | No | | See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) | LoRaWAN Band ID | +| `supports_class_c` | No | | boolean | `true` for Class C devices, `false` otherwise. | +| `app_key` | **Yes** | | Hexadecimal string | LoRaWAN AppKey | +| `nwk_key` | No | | Hexadecimal string | LoRaWAN NwkKey | +| `rx1_delay` | No | | string | Delay for the first Class A receive window (Rx1). Typical values are `"RX_DELAY_1"` (1 second) and `"RX_DELAY_5"` (5 seconds). See [MACSettings]({{< ref "/api/reference/grpc/end_device#message:MACSettings" >}}) for more information. | +| `supports_32_bit_f_cnt` | No | | boolean | `true` if device supports 32-bit frame counters, `false` if device only supports 16-bit frame counters. | +| `dev_addr` | **For existing session** | | Hexadecimal string | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Device Address]({{< ref "/getting-started/glossary#device-address" >}}) for more information. | +| `app_s_key` | **For existing session** | | string | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Application Session Key]({{< ref "/getting-started/glossary#application-session-key" >}}) for more information. | +| `f_nwk_s_int_key` | **For existing session** | | string | Forwarding Network Session Integrity Key, also referred to as **Network Session Key** in LoRaWAN v1.0.x compatibility mode. See [SessionKeys]({{< ref "/api/reference/grpc/end_device#message:SessionKeys" >}}) and [Forwarding Network Session Integrity Key]({{< ref "/getting-started/glossary#forwarding-network-session-integrity-key" >}}) for more information. | +| `last_f_cnt_up` | **For existing session** | | uint | Last uplink frame counter used. | +| `last_n_f_cnt_down` | **For existing session** | | uint | Last network downlink frame counter used. | +| `last_a_f_cnt_down` | **For existing session** | | uint | Last application downlink frame counter used. | + +\* If you don't set this, you must set the fallback value when importing the CSV file. See [Importing devices]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). ## Example diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/device-json.md b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-json.md similarity index 81% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/device-json.md rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-json.md index 4df984b8ef..ebb58fab18 100644 --- a/doc/content/devices/adding-devices/adding-devices-in-bulk/device-json.md +++ b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/device-json.md @@ -4,8 +4,9 @@ description: "" weight: 8 aliases: [ - /the-things-stack/migrating-from-networks/device-json, + /migration-from-networks/device-json, /getting-started/migrating/device-json, + /devices/adding-devices/adding-devices-in-bulk/device-json, ] --- @@ -52,7 +53,7 @@ Multiple end devices can also be contained in a single `devices.json` file like ``` The format above is considered by the Console and CLI as a JSON stream, processing one object at a time. -For more details in how to use the file, please refer to [Adding End Devices in Bulk]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}). +For more details in how to use the file, please refer to [Adding End Devices in Bulk]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}). ## JSON End Device Format @@ -62,28 +63,28 @@ The linked specification is quite extensive, and contains a lot of fields that a
-| Field | Required | Type | Example | Description | -| ---------------------------------------- | ------------------------ | ------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **`ids.device_id`** | **Always** | string | `"sensor-1"` | [More info]({{< ref "reference/glossary#device-id" >}}) | -| **`ids.dev_eui`** | **Always** | string | `"0102030405060708"` | [More info]({{< ref "reference/glossary#deveui" >}}) | -| **`ids.join_eui`** | **Always** | string | `"0102030405060708"` | Also referred to as **AppEUI**. [More info]({{< ref "reference/glossary#joineui" >}}) | -| **`name`** | No | string | `"My Sensor"` | Optional, a name for the device | -| **`description`** | No | string | `"Situated in living room"` | Optional, description of the device | -| **`lorawan_version`** | **Always** | string | `"MAC_V1_0_2"` | See [MACVersion]({{< ref "/api/reference/grpc/end_device#enum:MACVersion" >}}) for supported versions. See [LoRaWAN Version]({{< ref "reference/glossary#lorawan-version" >}}) for more information. | -| **`lorawan_phy_version`** | **Always** | string | `"PHY_V1_0_2_REV_B"` | See [PHYVersion]({{< ref "/api/reference/grpc/end_device#enum:PHYVersion" >}}) for supported versions. See [LoRaWAN Version]({{< ref "reference/glossary#regional-parameters" >}}) for more information. | -| **`frequency_plan_id`** | **Always** | string | `"EU_863_870_TTN"` | See [Frequency Plans]({{< ref "reference/frequency-plans" >}}) for a list of supported frequency plans (The frequency plan `ID` is needed). See [Frequency Plan]({{< ref "reference/glossary#frequency-plan" >}}) for more information. | -| **`supports_join`** | **Always** | boolean | `true` | `true` for OTAA devices, `false` for ABP. | -| **`supports_class_c`** | No | boolean | `true` | `true` for Class C devices, `false` otherwise. | -| **`root_keys.app_key.key`** | **For OTAA devices** | string | `"01020304050607080102030405060708"` | See [Application Key]({{< ref "reference/glossary#application-key" >}}) for more information. | -| **`root_keys.nwk_key.key`** | **For OTAA devices** | string | `"01020304050607080102030405060708"` | For LoRaWAN version 1.1 and later only. See [Network Key]({{< ref "reference/glossary#network-key" >}}) for more information. | -| **`mac_settings.rx1_delay`** | No | string | `"RX_DELAY_5"` | Delay for the first Class A receive window (Rx1). Typical values are `"RX_DELAY_1"` (1 second) and `"RX_DELAY_5"` (5 seconds). See [MACSettings]({{< ref "/api/reference/grpc/end_device#message:MACSettings" >}}) for more information. | -| **`mac_settings.supports_32_bit_f_cnt`** | No | boolean | `false` | `true` if device supports 32-bit frame counters, `false` if device only supports 16-bit frame counters. | -| **`session.dev_addr`** | **For existing session** | string | `"01020304"` | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Device Address]({{< ref "/reference/glossary#device-address" >}}) for more information. | -| **`session.keys.app_s_key.key`** | **For existing session** | string | `"01020304050607080102030405060708"` | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Application Session Key]({{< ref "reference/glossary#application-session-key" >}}) for more information. | -| **`session.keys.f_nwk_s_int_key.key`** | **For existing session** | string | `"01020304050607080102030405060708"` | Forwarding Network Session Integrity Key, also referred to as **Network Session Key** in LoRaWAN v1.0.x compatibility mode. See [SessionKeys]({{< ref "/api/reference/grpc/end_device#message:SessionKeys" >}}) and [Forwarding Network Session Integrity Key]({{< ref "/reference/glossary#forwarding-network-session-integrity-key" >}}) for more information. | -| **`session.last_f_cnt_up`** | **For existing session** | uint | `12` | Last uplink frame counter used. | -| **`session.last_n_f_cnt_down`** | **For existing session** | uint | `12` | Last network downlink frame counter used. | -| **`session.last_a_f_cnt_down`** | **For existing session** | uint | `12` | Last application downlink frame counter used. | +| Field | Required | Type | Example | Description | +| ---------------------------------------- | ------------------------ | ------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **`ids.device_id`** | **Always** | string | `"sensor-1"` | [More info]({{< ref "/getting-started/glossary#device-id" >}}) | +| **`ids.dev_eui`** | **Always** | string | `"0102030405060708"` | [More info]({{< ref "/getting-started/glossary#deveui" >}}) | +| **`ids.join_eui`** | **Always** | string | `"0102030405060708"` | Also referred to as **AppEUI**. [More info]({{< ref "/getting-started/glossary#joineui" >}}) | +| **`name`** | No | string | `"My Sensor"` | Optional, a name for the device | +| **`description`** | No | string | `"Situated in living room"` | Optional, description of the device | +| **`lorawan_version`** | **Always** | string | `"MAC_V1_0_2"` | See [MACVersion]({{< ref "/api/reference/grpc/end_device#enum:MACVersion" >}}) for supported versions. See [LoRaWAN Version]({{< ref "/getting-started/glossary#lorawan-version" >}}) for more information. | +| **`lorawan_phy_version`** | **Always** | string | `"PHY_V1_0_2_REV_B"` | See [PHYVersion]({{< ref "/api/reference/grpc/end_device#enum:PHYVersion" >}}) for supported versions. See [LoRaWAN Version]({{< ref "/getting-started/glossary#regional-parameters" >}}) for more information. | +| **`frequency_plan_id`** | **Always** | string | `"EU_863_870_TTN"` | See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for a list of supported frequency plans (The frequency plan `ID` is needed). See [Frequency Plan]({{< ref "/getting-started/glossary#frequency-plan" >}}) for more information. | +| **`supports_join`** | **Always** | boolean | `true` | `true` for OTAA devices, `false` for ABP. | +| **`supports_class_c`** | No | boolean | `true` | `true` for Class C devices, `false` otherwise. | +| **`root_keys.app_key.key`** | **For OTAA devices** | string | `"01020304050607080102030405060708"` | See [Application Key]({{< ref "/getting-started/glossary#application-key" >}}) for more information. | +| **`root_keys.nwk_key.key`** | **For OTAA devices** | string | `"01020304050607080102030405060708"` | For LoRaWAN version 1.1 and later only. See [Network Key]({{< ref "/getting-started/glossary#network-key" >}}) for more information. | +| **`mac_settings.rx1_delay`** | No | string | `"RX_DELAY_5"` | Delay for the first Class A receive window (Rx1). Typical values are `"RX_DELAY_1"` (1 second) and `"RX_DELAY_5"` (5 seconds). See [MACSettings]({{< ref "/api/reference/grpc/end_device#message:MACSettings" >}}) for more information. | +| **`mac_settings.supports_32_bit_f_cnt`** | No | boolean | `false` | `true` if device supports 32-bit frame counters, `false` if device only supports 16-bit frame counters. | +| **`session.dev_addr`** | **For existing session** | string | `"01020304"` | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Device Address]({{< ref "/getting-started/glossary#device-address" >}}) for more information. | +| **`session.keys.app_s_key.key`** | **For existing session** | string | `"01020304050607080102030405060708"` | **Needed for ABP devices or when migrating OTAA devices with an existing session**. See [Application Session Key]({{< ref "/getting-started/glossary#application-session-key" >}}) for more information. | +| **`session.keys.f_nwk_s_int_key.key`** | **For existing session** | string | `"01020304050607080102030405060708"` | Forwarding Network Session Integrity Key, also referred to as **Network Session Key** in LoRaWAN v1.0.x compatibility mode. See [SessionKeys]({{< ref "/api/reference/grpc/end_device#message:SessionKeys" >}}) and [Forwarding Network Session Integrity Key]({{< ref "/getting-started/glossary#forwarding-network-session-integrity-key" >}}) for more information. | +| **`session.last_f_cnt_up`** | **For existing session** | uint | `12` | Last uplink frame counter used. | +| **`session.last_n_f_cnt_down`** | **For existing session** | uint | `12` | Last network downlink frame counter used. | +| **`session.last_a_f_cnt_down`** | **For existing session** | uint | `12` | Last application downlink frame counter used. |

diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/import-end-devices.png b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/import-end-devices.png similarity index 100% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/import-end-devices.png rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/import-end-devices.png diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/operation-finished.png b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/operation-finished.png similarity index 100% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/operation-finished.png rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/operation-finished.png diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/successful-import.png b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/successful-import.png similarity index 100% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/successful-import.png rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/successful-import.png diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/tts-end-devices-csv-template.xlsx b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/tts-end-devices-csv-template.xlsx similarity index 100% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/tts-end-devices-csv-template.xlsx rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/tts-end-devices-csv-template.xlsx diff --git a/doc/content/devices/adding-devices/adding-devices-in-bulk/upload-file.png b/doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/upload-file.png similarity index 100% rename from doc/content/devices/adding-devices/adding-devices-in-bulk/upload-file.png rename to doc/content/hardware/devices/adding-devices/adding-devices-in-bulk/upload-file.png diff --git a/doc/content/devices/adding-devices/application-end-devices.png b/doc/content/hardware/devices/adding-devices/application-end-devices.png similarity index 100% rename from doc/content/devices/adding-devices/application-end-devices.png rename to doc/content/hardware/devices/adding-devices/application-end-devices.png diff --git a/doc/content/devices/adding-devices/atecc608a/_index.md b/doc/content/hardware/devices/adding-devices/atecc608a/_index.md similarity index 92% rename from doc/content/devices/adding-devices/atecc608a/_index.md rename to doc/content/hardware/devices/adding-devices/atecc608a/_index.md index 9c8e3fa2c3..b11b483d46 100644 --- a/doc/content/devices/adding-devices/atecc608a/_index.md +++ b/doc/content/hardware/devices/adding-devices/atecc608a/_index.md @@ -1,7 +1,7 @@ --- title: "Adding devices with ATECC608 Secure Elements" description: "" -aliases: ["/devices/atecc608a"] +aliases: [/devices/atecc608a, /devices/adding-devices/atecc608a] --- The Things Industries and Microchip developed a security solution for LoRaWAN® that enables secure key provisioning and secure cryptographic operations using secure elements. diff --git a/doc/content/devices/adding-devices/atecc608a/claim.md b/doc/content/hardware/devices/adding-devices/atecc608a/claim.md similarity index 94% rename from doc/content/devices/adding-devices/atecc608a/claim.md rename to doc/content/hardware/devices/adding-devices/atecc608a/claim.md index 12222f917f..742e09dd8e 100644 --- a/doc/content/devices/adding-devices/atecc608a/claim.md +++ b/doc/content/hardware/devices/adding-devices/atecc608a/claim.md @@ -2,8 +2,7 @@ title: "Claim" description: "" weight: 1 -aliases: - - /devices/claim-atecc608a +aliases: [/devices/claim-atecc608a, /devices/adding-devices/claim-atecc608a] --- This guide helps device makers to claim Microchip ATECC608 secure elements on The Things Join Server. @@ -63,7 +62,7 @@ This provisions the secure elements in The Things Join Server and returns the ge ]; ``` -The owner token is called claim authentication code in {{% tts %}}. This is the proof of ownership for claiming devices. See [Device Claiming]({{< ref "/devices/concepts/device-claiming" >}}) for more information. +The owner token is called claim authentication code in {{% tts %}}. This is the proof of ownership for claiming devices. See [Device Claiming]({{< ref "/hardware/devices/concepts/device-claiming" >}}) for more information. ## Export root keys diff --git a/doc/content/devices/adding-devices/device-repo.png b/doc/content/hardware/devices/adding-devices/device-repo.png similarity index 100% rename from doc/content/devices/adding-devices/device-repo.png rename to doc/content/hardware/devices/adding-devices/device-repo.png diff --git a/doc/content/devices/adding-devices/fp-non-qr.png b/doc/content/hardware/devices/adding-devices/fp-non-qr.png similarity index 100% rename from doc/content/devices/adding-devices/fp-non-qr.png rename to doc/content/hardware/devices/adding-devices/fp-non-qr.png diff --git a/doc/content/devices/adding-devices/fp.png b/doc/content/hardware/devices/adding-devices/fp.png similarity index 100% rename from doc/content/devices/adding-devices/fp.png rename to doc/content/hardware/devices/adding-devices/fp.png diff --git a/doc/content/devices/adding-devices/manual/_index.md b/doc/content/hardware/devices/adding-devices/manual/_index.md similarity index 85% rename from doc/content/devices/adding-devices/manual/_index.md rename to doc/content/hardware/devices/adding-devices/manual/_index.md index 1678066356..a853d3fb80 100644 --- a/doc/content/devices/adding-devices/manual/_index.md +++ b/doc/content/hardware/devices/adding-devices/manual/_index.md @@ -2,7 +2,7 @@ title: "Manually adding devices" description: "" weight: 1 -aliases: +aliases: [/devices/adding-devices/manual] --- If your devices are not yet part of the [LoRaWAN® Device Repository](https://github.com/TheThingsNetwork/lorawan-devices/) or you want to set advanced fields, you can add devices manually in {{% tts %}}. @@ -15,13 +15,13 @@ Choose the **Enter end device specifics manually** input method. Please refer to Choose the **Enter end device specifics manually** option of the input method. -Choose an appropriate **Frequency Plan**. Your device and gateway must use the same [frequency plan]({{< ref "/reference/frequency-plans/" >}}) to communicate. +Choose an appropriate **Frequency Plan**. Your device and gateway must use the same [frequency plan]({{< ref "/concepts/features/lorawan/frequency-plans/" >}}) to communicate. Select **LoRaWAN Version** and **Regional Parameters version** fields for your specific device. These values are usually found in the end device documentation either on the vendor/manufacturer's website or on the data sheet. If this data is not available, check with the device vendor/manufacturer. {{< warning >}} -Choosing the incorrect LoRaWAN version can lead to complex errors. Activation may work, but the device will not be able to communicate consistently. If you are unsure about the LoRaWAN version you have selected, watch the [event log]({{< ref "the-things-stack/management/events" >}}) for errors! +Choosing the incorrect LoRaWAN version can lead to complex errors. Activation may work, but the device will not be able to communicate consistently. If you are unsure about the LoRaWAN version you have selected, watch the [event log]({{< ref "/concepts/features/events" >}}) for errors! {{}} {{< figure src="device-input-method.png" alt="ABP input method" >}} diff --git a/doc/content/devices/adding-devices/manual/abp/_index.md b/doc/content/hardware/devices/adding-devices/manual/abp/_index.md similarity index 98% rename from doc/content/devices/adding-devices/manual/abp/_index.md rename to doc/content/hardware/devices/adding-devices/manual/abp/_index.md index 6d66668f00..a2b674945f 100644 --- a/doc/content/devices/adding-devices/manual/abp/_index.md +++ b/doc/content/hardware/devices/adding-devices/manual/abp/_index.md @@ -2,6 +2,7 @@ title: "Activation by Personalization (ABP)" description: "" weight: 2 +aliases: [/devices/adding-devices/manual/abp] --- If your device cannot be activated using the more secure OTAA, you may manually activate it by programming security keys it, i.e. using ABP. This guide explains how to add ABP devices manually. @@ -28,7 +29,7 @@ For LoRaWAN versions 1.0.x, generate an **AppSKey** and **NwkSKey** and program For LoRaWAN versions 1.1.x, generate an **AppSKey**, **FNwkSIntKey**, **SNwkSIntKey**, and **NwkSEncKey**, and program them in your device. -Finally, give your device a unique **End device ID**. See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for guidelines about choosing a unique ID. +Finally, give your device a unique **End device ID**. See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for guidelines about choosing a unique ID. {{< figure src="abp-fields-set.png" alt="ABP fields set" >}} diff --git a/doc/content/devices/adding-devices/manual/abp/abp-fields-set.png b/doc/content/hardware/devices/adding-devices/manual/abp/abp-fields-set.png similarity index 100% rename from doc/content/devices/adding-devices/manual/abp/abp-fields-set.png rename to doc/content/hardware/devices/adding-devices/manual/abp/abp-fields-set.png diff --git a/doc/content/devices/adding-devices/manual/abp/abp-network-defaults.png b/doc/content/hardware/devices/adding-devices/manual/abp/abp-network-defaults.png similarity index 100% rename from doc/content/devices/adding-devices/manual/abp/abp-network-defaults.png rename to doc/content/hardware/devices/adding-devices/manual/abp/abp-network-defaults.png diff --git a/doc/content/devices/adding-devices/manual/device-input-method.png b/doc/content/hardware/devices/adding-devices/manual/device-input-method.png similarity index 100% rename from doc/content/devices/adding-devices/manual/device-input-method.png rename to doc/content/hardware/devices/adding-devices/manual/device-input-method.png diff --git a/doc/content/devices/adding-devices/manual/otaa/_index.md b/doc/content/hardware/devices/adding-devices/manual/otaa/_index.md similarity index 93% rename from doc/content/devices/adding-devices/manual/otaa/_index.md rename to doc/content/hardware/devices/adding-devices/manual/otaa/_index.md index 6a2c4f8fe2..bf3cb978be 100644 --- a/doc/content/devices/adding-devices/manual/otaa/_index.md +++ b/doc/content/hardware/devices/adding-devices/manual/otaa/_index.md @@ -2,6 +2,7 @@ title: "Over the Air Activation (OTAA)" description: "" weight: 1 +aliases: [/devices/adding-devices/manual/otaa] --- Over-the-Air-Activation (OTAA) is the secure, scalable way to activate LoRaWAN devices. All commercially available LoRaWAN devices support OTAA, and it is selected by default. This guide explains how to add OTAA devices manually. @@ -12,17 +13,17 @@ Over-the-Air-Activation (OTAA) is the secure, scalable way to activate LoRaWAN d {{< tabs/tab "Console" >}} -The example in this guide covers adding a device using [OTAA]({{< ref "reference/glossary#over-the-air-activation" >}}) (the most secure and preferred activation method) and [LoRaWAN version]({{< ref "reference/glossary#lorawan-version" >}}) MAC V1.0.2 (the most common LoRaWAN version, although newer versions are better and more secure) and RP001 Regional Parameters 1.0.2 revision B. Names and keys may vary slightly for other versions, but the process is the same and any differences are noted. +The example in this guide covers adding a device using [OTAA]({{< ref "/getting-started/glossary#over-the-air-activation" >}}) (the most secure and preferred activation method) and [LoRaWAN version]({{< ref "/getting-started/glossary#lorawan-version" >}}) MAC V1.0.2 (the most common LoRaWAN version, although newer versions are better and more secure) and RP001 Regional Parameters 1.0.2 revision B. Names and keys may vary slightly for other versions, but the process is the same and any differences are noted. First, enter a **JoinEUI/AppEUI** if provided by your manufacturer. If it is not provided by the manufacturer and your device is programmable, you can generate a random one in accordance with the test ranges defined by the [IEEE 802 standards](https://ieee802.org/) or use all zeros, just make sure to program the same value into your device. Then click **Confirm**. Enter your **DevEUI**. This should be provided by your manufacturer for commercial devices. If your device is programmable, you may generate an EUI using the **Generate** button, and program it in your device. -{{< note >}} Note that the **JoinEUI** and **DevEUI** fields will be pre-filled if you scanned your device's QR code as explained in [Onboarding Devices using QR Codes]({{< ref "/devices/adding-devices#onboarding-devices-using-qr-codes" >}}) section. {{}} +{{< note >}} Note that the **JoinEUI** and **DevEUI** fields will be pre-filled if you scanned your device's QR code as explained in [Onboarding Devices using QR Codes]({{< ref "/hardware/devices/adding-devices#onboarding-devices-using-qr-codes" >}}) section. {{}} If your manufacturer provides an **AppKey**, enter it. Otherwise, use the **Generate** button to create one, and program it into your device. -Give your device a unique **End device ID**. See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for guidelines about choosing a unique ID. +Give your device a unique **End device ID**. See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for guidelines about choosing a unique ID. {{< figure src="manual-network-settings-otaa.png" alt="Manually create OTAA end device" >}} diff --git a/doc/content/devices/adding-devices/manual/otaa/manual-network-settings-otaa.png b/doc/content/hardware/devices/adding-devices/manual/otaa/manual-network-settings-otaa.png similarity index 100% rename from doc/content/devices/adding-devices/manual/otaa/manual-network-settings-otaa.png rename to doc/content/hardware/devices/adding-devices/manual/otaa/manual-network-settings-otaa.png diff --git a/doc/content/devices/adding-devices/non-qr-all-set.png b/doc/content/hardware/devices/adding-devices/non-qr-all-set.png similarity index 100% rename from doc/content/devices/adding-devices/non-qr-all-set.png rename to doc/content/hardware/devices/adding-devices/non-qr-all-set.png diff --git a/doc/content/devices/adding-devices/non-qr-join-eui.png b/doc/content/hardware/devices/adding-devices/non-qr-join-eui.png similarity index 100% rename from doc/content/devices/adding-devices/non-qr-join-eui.png rename to doc/content/hardware/devices/adding-devices/non-qr-join-eui.png diff --git a/doc/content/devices/adding-devices/qr-data-found.png b/doc/content/hardware/devices/adding-devices/qr-data-found.png similarity index 100% rename from doc/content/devices/adding-devices/qr-data-found.png rename to doc/content/hardware/devices/adding-devices/qr-data-found.png diff --git a/doc/content/hardware/devices/adding-devices/register-devices-option.png b/doc/content/hardware/devices/adding-devices/register-devices-option.png new file mode 100644 index 0000000000..a2b0fc6534 Binary files /dev/null and b/doc/content/hardware/devices/adding-devices/register-devices-option.png differ diff --git a/doc/content/devices/adding-devices/registered.png b/doc/content/hardware/devices/adding-devices/registered.png similarity index 100% rename from doc/content/devices/adding-devices/registered.png rename to doc/content/hardware/devices/adding-devices/registered.png diff --git a/doc/content/devices/adding-devices/select-dr-non-qr.png b/doc/content/hardware/devices/adding-devices/select-dr-non-qr.png similarity index 100% rename from doc/content/devices/adding-devices/select-dr-non-qr.png rename to doc/content/hardware/devices/adding-devices/select-dr-non-qr.png diff --git a/doc/content/devices/concepts/_index.md b/doc/content/hardware/devices/concepts/_index.md similarity index 82% rename from doc/content/devices/concepts/_index.md rename to doc/content/hardware/devices/concepts/_index.md index 16f288b895..1f9f862a45 100644 --- a/doc/content/devices/concepts/_index.md +++ b/doc/content/hardware/devices/concepts/_index.md @@ -2,6 +2,7 @@ title: "Concepts" description: "" weight: 3 +aliases: [/devices/concepts/] --- Learn the basic concepts of working with The Things Stack and LoRaWAN® end devices. diff --git a/doc/content/devices/concepts/abp-vs-otaa/_index.md b/doc/content/hardware/devices/concepts/abp-vs-otaa/_index.md similarity index 88% rename from doc/content/devices/concepts/abp-vs-otaa/_index.md rename to doc/content/hardware/devices/concepts/abp-vs-otaa/_index.md index afe2abbf16..26685da623 100644 --- a/doc/content/devices/concepts/abp-vs-otaa/_index.md +++ b/doc/content/hardware/devices/concepts/abp-vs-otaa/_index.md @@ -2,7 +2,7 @@ title: "ABP vs OTAA" description: "" weight: 1 -aliases: ["devices/abp-vs-otaa"] +aliases: [/devices/abp-vs-otaa, /devices/concepts/abp-vs-otaa] --- This section can help you understand the differences between ABP and OTAA activation modes for LoRaWAN® end devices, and comprehend why using OTAA is recommended. @@ -33,7 +33,7 @@ ABP's drawbacks are arising as consequences of its main characteristics. 1. **ABP end devices use a fixed `DevAddr`.** -Taking the structure of `DevAddr` into the account and the fact that, with ABP, `NwkID` is fixed, we come to the conclusion that this device can work correctly only in its predefined network. Even if a network or a cluster allows registering end devices with different `DevAddr` values than the ones that were assigned to that network/cluster, the [Packet Broker]({{< ref "/the-things-stack/packet-broker#packet-broker" >}}) will not route the traffic from those end devices to the right network/cluster. +Taking the structure of `DevAddr` into the account and the fact that, with ABP, `NwkID` is fixed, we come to the conclusion that this device can work correctly only in its predefined network. Even if a network or a cluster allows registering end devices with different `DevAddr` values than the ones that were assigned to that network/cluster, the [Packet Broker]({{< ref "/concepts/packet-broker#packet-broker" >}}) will not route the traffic from those end devices to the right network/cluster. Also, even if the network/cluster is assigned with additional address blocks, the Network Server will not be able to perform optimization of `DevAddr` allocation, hence the device matching procedure for ABP end devices will not be improved. @@ -49,7 +49,7 @@ Unlike ABP, OTAA end devices re-negotiate frame counters and session keys at est Read more about LoRaWAN security in [The Things Network LoRaWAN documentation](https://www.thethingsnetwork.org/docs/lorawan/security/). -For enhancing security, you can use [The Things Join Server]({{< ref "/the-things-stack/host/join-server" >}}) to handle the join flow, Network Server and Application Server authentication, store root keys and generate session keys. Another option is using Hardware Secured Elements (see [Microchip ATECC608 secure elements]({{< ref "/devices/adding-devices/atecc608a" >}})) which prevent the exposure of keys to software, firmware, manufacturing sites, and other third parties. +For enhancing security, you can use [The Things Join Server]({{< ref "/enterprise/join-server" >}}) to handle the join flow, Network Server and Application Server authentication, store root keys and generate session keys. Another option is using Hardware Secured Elements (see [Microchip ATECC608 secure elements]({{< ref "/hardware/devices/adding-devices/atecc608a" >}})) which prevent the exposure of keys to software, firmware, manufacturing sites, and other third parties. 3. **ABP end devices use fixed network parameters.** @@ -69,6 +69,6 @@ If the network coverage for the end device can not be guaranteed, it does not me A naive approach that has been used in the past to avoid this was to use ABP. ABP allows a device to start transmitting messages immediately when it is switched on, regardless of whether it has the network coverage or not. -A better approach is to perform an OTAA join in a factory or workshop where the network coverage and working downlinks can be guaranteed. There are no drawbacks to this approach as long as the device follows the LoRaWAN [best practices]({{< ref "/devices/concepts/best-practices" >}}). +A better approach is to perform an OTAA join in a factory or workshop where the network coverage and working downlinks can be guaranteed. There are no drawbacks to this approach as long as the device follows the LoRaWAN [best practices]({{< ref "/hardware/devices/concepts/best-practices" >}}). One more thing to take into account is persisting network parameters between device restarts. For example, an ABP device uses a non-volatile storage to persist frame counters between restarts. A better approach would be to switch to using OTAA and store the OTAA session rather than frame counters. diff --git a/doc/content/devices/concepts/best-practices/_index.md b/doc/content/hardware/devices/concepts/best-practices/_index.md similarity index 97% rename from doc/content/devices/concepts/best-practices/_index.md rename to doc/content/hardware/devices/concepts/best-practices/_index.md index eda95499ef..08270f2338 100644 --- a/doc/content/devices/concepts/best-practices/_index.md +++ b/doc/content/hardware/devices/concepts/best-practices/_index.md @@ -2,7 +2,7 @@ title: "Best Practices" description: "" weight: -1 -aliases: ["/devices/best-practices"] +aliases: [/devices/best-practices, /devices/concepts/best-practices] --- This section contains best practices for building connected devices which use {{% tts %}} as a Network Server. @@ -83,7 +83,7 @@ For devices that don't move, the LoRaWAN specification recommends allowing the N For moving devices, ADR should not be used since RF conditions will likely change, but since many moving devices are temporarily stationary, it is possible to save additional power by requesting ADR only during the time a device is stationary. -You may also use application specific knowledge to predict when ADR is appropriate. A tracking device can detect when it is moving, for example. A parked car sensor can detect when a parked car will affect RF conditions, and should fall back to another strategy. [Learn more about how ADR is implemented in {{% tts %}}]({{< ref "/reference/adr" >}}). +You may also use application specific knowledge to predict when ADR is appropriate. A tracking device can detect when it is moving, for example. A parked car sensor can detect when a parked car will affect RF conditions, and should fall back to another strategy. [Learn more about how ADR is implemented in {{% tts %}}]({{< ref "/concepts/features/lorawan/adr" >}}). ## Use OTAA @@ -93,7 +93,7 @@ OTAA devices perform a join-procedure with the network, during which a dynamic D Devices should save network parameters between regular power cycles. This includes session parameters like `DevAddr`, session keys, `FCnt`, and nonces. This allows the device to easily Join, as keys and counters remain synchronized. -Devices should also randomize initial power on delay (i.e. Join). See [Synchronization, Backoff, and Jitter]({{< ref "/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}). +Devices should also randomize initial power on delay (i.e. Join). See [Synchronization, Backoff, and Jitter]({{< ref "/hardware/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}). ## Frame Counters diff --git a/doc/content/devices/concepts/confirmed-downlinks-behavior/_index.md b/doc/content/hardware/devices/concepts/confirmed-downlinks-behavior/_index.md similarity index 81% rename from doc/content/devices/concepts/confirmed-downlinks-behavior/_index.md rename to doc/content/hardware/devices/concepts/confirmed-downlinks-behavior/_index.md index 64da69b2ab..9ec5fc6c3d 100644 --- a/doc/content/devices/concepts/confirmed-downlinks-behavior/_index.md +++ b/doc/content/hardware/devices/concepts/confirmed-downlinks-behavior/_index.md @@ -1,7 +1,11 @@ --- title: "Confirmed Downlinks Behavior" description: "" -aliases: ["/devices/confirmed-downlinks-behavior"] +aliases: + [ + /devices/confirmed-downlinks-behavior, + /devices/concepts/confirmed-downlinks-behaviour, + ] --- This section describes differences in behavior of class A, B and C devices when scheduling confirmed downlink messages. @@ -22,4 +26,4 @@ On the other hand, for class B and class C devices, the server behavior for conf Re-attempting downlinks without constraint for class B and class C devices is a bad practice, because it might cause an infinite loop if the end device is powered off or out of the gateway range. Consequences of this practice would be creating noise in the area for no good reason, and consuming gateway's duty cycle. -Whether a confirmed downlink will be resent and how many times depends on the application. The application can conclude if the Network Server has generated the `downlink ack/nack` message using dedicated message paths - see [MQTT]({{< ref "/integrations/mqtt#subscribing-to-upstream-traffic" >}}) or [Webhooks]({{< ref "/integrations/webhooks/webhook-templates/format#endpoint" >}}) documentation. If the Application Server has received the `downlink nack` message, no action is required, because the Application Server will try to resend the downlink on its own. However, if the Application Server has not received the `downlink ack/nack`, it can not decide on its own if it should retry the downlink. +Whether a confirmed downlink will be resent and how many times depends on the application. The application can conclude if the Network Server has generated the `downlink ack/nack` message using dedicated message paths - see [MQTT]({{< ref "/integrations/other-integrations/mqtt#subscribing-to-upstream-traffic" >}}) or [Webhooks]({{< ref "/integrations/webhooks/webhook-templates/format#endpoint" >}}) documentation. If the Application Server has received the `downlink nack` message, no action is required, because the Application Server will try to resend the downlink on its own. However, if the Application Server has not received the `downlink ack/nack`, it can not decide on its own if it should retry the downlink. diff --git a/doc/content/devices/concepts/confirmed-uplinks-behavior/_index.md b/doc/content/hardware/devices/concepts/confirmed-uplinks-behavior/_index.md similarity index 60% rename from doc/content/devices/concepts/confirmed-uplinks-behavior/_index.md rename to doc/content/hardware/devices/concepts/confirmed-uplinks-behavior/_index.md index 1ddf0e1e42..7616b1aa3c 100644 --- a/doc/content/devices/concepts/confirmed-uplinks-behavior/_index.md +++ b/doc/content/hardware/devices/concepts/confirmed-uplinks-behavior/_index.md @@ -1,6 +1,7 @@ --- title: "Confirmed Uplinks Behavior" description: "" +aliases: [/devices/concepts/confirmed-uplinks-behavior] --- This section describes LoRaWAN network behavior upon receiving confirmed uplink messages. @@ -16,10 +17,11 @@ To confirm a reception of the above mentioned uplink, the Network Server generat If the confirmation downlink successfully reaches the end device, the device considers the uplink message confirmed. If the end device doesn't receive the confirmation downlink or if the Network Server doesn't receive the previously mentioned confirmed uplink, the end device behavior might differ depending on the LoRaWAN version: + - Devices with LoRaWAN version lower than 1.0.4 may retry sending the confirmed uplink unlimited number of times. - Devices with LoRaWAN version greater or equal to 1.0.4 will retry sending the confirmed uplink at most `NbTrans` humber of times. -Regardless of which LoRaWAN version device has, the same frame counter will be used, so {{% tts %}} application will see the confirmed uplink message at most once, but the Network Server might see it multiple times if it has been resent. + Regardless of which LoRaWAN version device has, the same frame counter will be used, so {{% tts %}} application will see the confirmed uplink message at most once, but the Network Server might see it multiple times if it has been resent. -As mentioned in the [Best Practices]({{< ref "/devices/concepts/best-practices#limit-transmission-length-payload-size-and-duty-cycle" >}}) section, it is advised to avoid using confirmed uplink messages except in cases where 100% assurance of transmission is required, i.e. in applications such as alarms. This especially applies to large fleets of devices. This is because in LoRaWAN deployments there's commonly a lot less gateways than devices, and if too many end devices send confirmed uplinks very often, there's a possibility of consuming the gateway's entire duty cycle. As a consequence of gateway not confirming confirmed uplinks, the end devices will try retransmitting confirmed uplinks which again won't be confirmed and so on. +As mentioned in the [Best Practices]({{< ref "/hardware/devices/concepts/best-practices#limit-transmission-length-payload-size-and-duty-cycle" >}}) section, it is advised to avoid using confirmed uplink messages except in cases where 100% assurance of transmission is required, i.e. in applications such as alarms. This especially applies to large fleets of devices. This is because in LoRaWAN deployments there's commonly a lot less gateways than devices, and if too many end devices send confirmed uplinks very often, there's a possibility of consuming the gateway's entire duty cycle. As a consequence of gateway not confirming confirmed uplinks, the end devices will try retransmitting confirmed uplinks which again won't be confirmed and so on. -Using confirmed uplinks is left to the user's responsibility since the Network Server cannot force end devices to stop using confirmed uplinks, but some end devices have application layer commands which allow confirmed uplinks to be disabled. \ No newline at end of file +Using confirmed uplinks is left to the user's responsibility since the Network Server cannot force end devices to stop using confirmed uplinks, but some end devices have application layer commands which allow confirmed uplinks to be disabled. diff --git a/doc/content/devices/concepts/device-claiming/_index.md b/doc/content/hardware/devices/concepts/device-claiming/_index.md similarity index 73% rename from doc/content/devices/concepts/device-claiming/_index.md rename to doc/content/hardware/devices/concepts/device-claiming/_index.md index f6f32cd88e..f331bcc025 100644 --- a/doc/content/devices/concepts/device-claiming/_index.md +++ b/doc/content/hardware/devices/concepts/device-claiming/_index.md @@ -1,7 +1,7 @@ --- title: "Device Claiming" description: "" -aliases: ["/devices/device-claiming"] +aliases: [/devices/device-claiming, /devices/concepts/device-claiming] --- Device claiming is a mechanism that securely transfers ownership from the device maker to the device owner without transferring LoRaWAN® root keys. This section provides an overview to resources for device makers and device owners. @@ -23,6 +23,6 @@ Device makers provision devices on a LoRaWAN Join Server that supports claiming. Device makers send the proof of ownership together with the physical end devices to the owner. There are various ways to transfer the proof of ownership: it can be encoded in a QR code or text printed on the device packaging, or sent as an import file. -Device owners claim the device by scanning the QR code, entering the claim authentication code or importing a file with claim authentication codes. The process of claiming a device using its QR code is integrated in the [adding devices flow]({{< ref "/devices/adding-devices" >}}), while the process of claiming devices using their claim authentication code is explained in the [Adding devices in bulk]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) section. +Device owners claim the device by scanning the QR code, entering the claim authentication code or importing a file with claim authentication codes. The process of claiming a device using its QR code is integrated in the [adding devices flow]({{< ref "/hardware/devices/adding-devices" >}}), while the process of claiming devices using their claim authentication code is explained in the [Adding devices in bulk]({{< ref "/hardware/devices/adding-devices/adding-devices-in-bulk" >}}) section. -Device claiming works with LoRaWAN Join Servers configured in {{% tts %}}. By default, {{% tts %}} Cloud and {{% ttss %}} are preconfigured to use The Things Join Server and Semtech Join Server. If you operate {{% tts %}} Enterprise or Open Source, configure the [LoRaWAN Backend Interfaces interoperability repository]({{< ref "/reference/interop-repository" >}}) and the [Device Claiming repository]({{< ref "/reference/device-claiming-repository" >}}) accordingly. +Device claiming works with LoRaWAN Join Servers configured in {{% tts %}}. By default, {{% tts %}} Cloud and {{% ttss %}} are preconfigured to use The Things Join Server and Semtech Join Server. If you operate {{% tts %}} Enterprise or Open Source, configure the [LoRaWAN Backend Interfaces interoperability repository]({{< ref "/enterprise/join-server/interop-configuration" >}}) and the [Device Claiming repository]({{< ref "/enterprise/join-server/device-claiming-configuration" >}}) accordingly. diff --git a/doc/content/devices/concepts/lorawan-device-repository/_index.md b/doc/content/hardware/devices/concepts/lorawan-device-repository/_index.md similarity index 86% rename from doc/content/devices/concepts/lorawan-device-repository/_index.md rename to doc/content/hardware/devices/concepts/lorawan-device-repository/_index.md index 4cb83c4478..7c1112c659 100644 --- a/doc/content/devices/concepts/lorawan-device-repository/_index.md +++ b/doc/content/hardware/devices/concepts/lorawan-device-repository/_index.md @@ -1,6 +1,7 @@ --- title: "LoRaWAN device repository" description: "" +aliases: [/devices/concepts/features/lorawan-device-repository] --- The [LoRaWAN device repository](https://github.com/TheThingsNetwork/lorawan-devices) contains device profiles, LoRaWAN information, codecs, and more, for many LoRaWAN devices. Using the device repository to add devices in {{% tts %}} automatically uses the correct LoRaWAN version and regional parameters version, which means less information for you to find! diff --git a/doc/content/devices/concepts/relay/_index.md b/doc/content/hardware/devices/concepts/relay/_index.md similarity index 99% rename from doc/content/devices/concepts/relay/_index.md rename to doc/content/hardware/devices/concepts/relay/_index.md index 2cc5c06465..67fc4d5677 100644 --- a/doc/content/devices/concepts/relay/_index.md +++ b/doc/content/hardware/devices/concepts/relay/_index.md @@ -1,7 +1,7 @@ --- title: "Relay" description: "" -aliases: ["/devices/relay"] +aliases: [/devices/relay, /devices/concepts/relay] --- This section describes the basic concepts and limitations related to [LoRaWAN® Relay](https://resources.lora-alliance.org/technical-specifications/ts011-1-0-0-relay). @@ -83,4 +83,3 @@ The current relay specification allows at most 16 uplink forwarding rules. As su ### Join Request Forwarding Rules Limit The current relay specification allows at most 15 join request forwarding rules. In certain circumstances this may mean that a whitelist approach cannot be used. - diff --git a/doc/content/devices/configuring-devices/_index.md b/doc/content/hardware/devices/configuring-devices/_index.md similarity index 76% rename from doc/content/devices/configuring-devices/_index.md rename to doc/content/hardware/devices/configuring-devices/_index.md index 0b3cd50a8b..9ea0c0cc6b 100644 --- a/doc/content/devices/configuring-devices/_index.md +++ b/doc/content/hardware/devices/configuring-devices/_index.md @@ -2,6 +2,7 @@ title: "Configuring Devices" description: "" weight: 2 +aliases: [/devices/configuring-devices] --- This section contains guides on configuring LoRaWAN® end devices. diff --git a/doc/content/devices/configuring-devices/class-b/index.md b/doc/content/hardware/devices/configuring-devices/class-b/index.md similarity index 81% rename from doc/content/devices/configuring-devices/class-b/index.md rename to doc/content/hardware/devices/configuring-devices/class-b/index.md index a6a40e93be..acc98506a5 100644 --- a/doc/content/devices/configuring-devices/class-b/index.md +++ b/doc/content/hardware/devices/configuring-devices/class-b/index.md @@ -1,17 +1,17 @@ --- title: "Class B Settings" description: "" -aliases: ["/devices/class-b"] +aliases: [/devices/class-b, /devices/configuring-devices/class-b] weight: 3 --- -Class B end devices listen for downlink messages during ping slots. This allows applications to send messages to devices at predefined time slots, rather than waiting for a Class A uplink. When combined with [multicast groups]({{< ref "/devices/configuring-devices/multicast" >}}), this allows applications to send periodic downlinks to many devices at the same time. +Class B end devices listen for downlink messages during ping slots. This allows applications to send messages to devices at predefined time slots, rather than waiting for a Class A uplink. When combined with [multicast groups]({{< ref "/hardware/devices/configuring-devices/multicast" >}}), this allows applications to send periodic downlinks to many devices at the same time. Read more about device classes in [The Things Network LoRaWAN® documentation](https://www.thethingsnetwork.org/docs/lorawan/classes/). -{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class B devices differs from confirmed downlinks behavior for class A devices. {{}} +{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/hardware/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class B devices differs from confirmed downlinks behavior for class A devices. {{}} We define some user parameters that will be used below: @@ -46,7 +46,7 @@ To disable Class B scheduling, reset with `--supports-class-b=false`. ## Multicast Group -See [Multicast]({{< ref "/devices/configuring-devices/multicast" >}}) for instructions for creating and using multicast groups. +See [Multicast]({{< ref "/hardware/devices/configuring-devices/multicast" >}}) for instructions for creating and using multicast groups. ## Class B Message Settings @@ -73,7 +73,7 @@ ttn-lw-cli end-devices create --application-id $APP_ID --device-id $DEVICE_ID \ --supports-class-b ``` -Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}): +Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/other-integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}): ```json { diff --git a/doc/content/devices/configuring-devices/class-c/_index.md b/doc/content/hardware/devices/configuring-devices/class-c/_index.md similarity index 81% rename from doc/content/devices/configuring-devices/class-c/_index.md rename to doc/content/hardware/devices/configuring-devices/class-c/_index.md index c9a9b5c7e4..80854ab85c 100644 --- a/doc/content/devices/configuring-devices/class-c/_index.md +++ b/doc/content/hardware/devices/configuring-devices/class-c/_index.md @@ -1,11 +1,11 @@ --- title: "Class C Settings" description: "" -aliases: ["/devices/class-c"] +aliases: [/devices/class-c, /devices/configuring-devices/class-c] weight: 4 --- -Class C end devices continuously listen for downlink messages. This allows applications to send messages to devices at any time, instead of having to wait for a Class A uplink. When combined with [multicast groups]({{< ref "/devices/configuring-devices/multicast" >}}), this allows applications to send immediate downlinks to many devices at the same time. +Class C end devices continuously listen for downlink messages. This allows applications to send messages to devices at any time, instead of having to wait for a Class A uplink. When combined with [multicast groups]({{< ref "/hardware/devices/configuring-devices/multicast" >}}), this allows applications to send immediate downlinks to many devices at the same time. This guide shows how to enable or disable Class C for an and device, and how to work with multicast groups. @@ -13,7 +13,7 @@ This guide shows how to enable or disable Class C for an and device, and how to Read more about device classes in [The Things Network LoRaWAN® documentation](https://www.thethingsnetwork.org/docs/lorawan/classes/). -{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class C devices differs from confirmed downlinks behavior for class A devices. {{}} +{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/hardware/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class C devices differs from confirmed downlinks behavior for class A devices. {{}} We define some user parameters that will be used below: @@ -48,7 +48,7 @@ To disable Class C scheduling, reset with `--supports-class-c=false`. ## Multicast Group -See [Multicast]({{< ref "/devices/configuring-devices/multicast" >}}) for instructions for creating and using multicast groups. +See [Multicast]({{< ref "/hardware/devices/configuring-devices/multicast" >}}) for instructions for creating and using multicast groups. ## Class C Message Settings @@ -75,7 +75,7 @@ ttn-lw-cli end-devices create --application-id $APP_ID --device-id $DEVICE_ID \ --supports-class-c ``` -Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}): +Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/other-integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}): ```json { diff --git a/doc/content/devices/configuring-devices/device-location/_index.md b/doc/content/hardware/devices/configuring-devices/device-location/_index.md similarity index 97% rename from doc/content/devices/configuring-devices/device-location/_index.md rename to doc/content/hardware/devices/configuring-devices/device-location/_index.md index 2baf1a00d5..6a115545c0 100644 --- a/doc/content/devices/configuring-devices/device-location/_index.md +++ b/doc/content/hardware/devices/configuring-devices/device-location/_index.md @@ -2,6 +2,7 @@ title: "Device location settings" description: "" weight: 1 +aliases: [/devices/configuring-devices/device-location] --- Once you have added your end device to {{% tts %}}, you can also set its location to be displayed on a map widget. diff --git a/doc/content/devices/configuring-devices/device-location/device-location.png b/doc/content/hardware/devices/configuring-devices/device-location/device-location.png similarity index 100% rename from doc/content/devices/configuring-devices/device-location/device-location.png rename to doc/content/hardware/devices/configuring-devices/device-location/device-location.png diff --git a/doc/content/devices/configuring-devices/downlink-queue-ops/_index.md b/doc/content/hardware/devices/configuring-devices/downlink-queue-ops/_index.md similarity index 78% rename from doc/content/devices/configuring-devices/downlink-queue-ops/_index.md rename to doc/content/hardware/devices/configuring-devices/downlink-queue-ops/_index.md index df583593b1..6ff739657d 100644 --- a/doc/content/devices/configuring-devices/downlink-queue-ops/_index.md +++ b/doc/content/hardware/devices/configuring-devices/downlink-queue-ops/_index.md @@ -2,6 +2,7 @@ title: "Downlink Queue Operations" description: "" weight: 7 +aliases: [/devices/configuring-devices/downlink-queue-ops] --- {{% tts %}} keeps a queue of downlink messages per device. Applications can keep pushing downlink messages or replace the queue with a list of downlink messages. @@ -10,9 +11,9 @@ weight: 7 You can schedule a downlink using the CLI, MQTT or HTTP webhooks. -To schedule downlinks using MQTT, see [MQTT Server]({{< ref "integrations/mqtt" >}}). To schedule downlinks using webhooks, see [Scheduling Downlinks with Webhooks]({{< ref "integrations/webhooks/scheduling-downlinks" >}}). +To schedule downlinks using MQTT, see [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). To schedule downlinks using webhooks, see [Scheduling Downlinks with Webhooks]({{< ref "integrations/webhooks/scheduling-downlinks" >}}). -{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class B and class C devices differs from confirmed downlinks behavior for class A devices. {{}} +{{< note >}} See the [Confirmed Downlinks Behavior]({{< ref "/hardware/devices/concepts/confirmed-downlinks-behavior" >}}) section to learn how confirmed downlinks behavior for class B and class C devices differs from confirmed downlinks behavior for class A devices. {{}} This guide shows how to interact with the downlink queue from the command-line interface (CLI). diff --git a/doc/content/devices/configuring-devices/mac-settings/_index.md b/doc/content/hardware/devices/configuring-devices/mac-settings/_index.md similarity index 95% rename from doc/content/devices/configuring-devices/mac-settings/_index.md rename to doc/content/hardware/devices/configuring-devices/mac-settings/_index.md index 0c4a6f24cc..f615534a6d 100644 --- a/doc/content/devices/configuring-devices/mac-settings/_index.md +++ b/doc/content/hardware/devices/configuring-devices/mac-settings/_index.md @@ -1,7 +1,7 @@ --- title: "MAC Settings" description: "" -aliases: ["/devices/configuring-devices/mac-settings"] +aliases: [/devices/configuring-devices/mac-settings] weight: 2 --- @@ -25,7 +25,7 @@ The expected procedure for testing and updating settings is: 2. Test that everything works as expected 3. Modify `mac-settings.desired_` to make the change permanent -See how this applies to the Rx1 delay parameter in the example below. If no settings are provided on device creation or unset, defaults are first taken from the device Frequency Plan if available, and finally from [Network Server Configuration]({{< ref "/reference/configuration/network-server" >}}). +See how this applies to the Rx1 delay parameter in the example below. If no settings are provided on device creation or unset, defaults are first taken from the device Frequency Plan if available, and finally from [Network Server Configuration]({{< ref "/enterprise/management/configuration/network-server" >}}). ### Example: Configure Rx1 Delay @@ -129,7 +129,7 @@ To enable ADR, set the `mac-settings.use-adr` parameter: ttn-lw-cli end-devices set --mac-settings.use-adr=true ``` -See the [Adaptive Data Rate]({{< ref "/reference/adr" >}}) section for detailed information on configuring ADR parameters and ADR margin using MAC settings. +See the [Adaptive Data Rate]({{< ref "/concepts/features/lorawan/adr" >}}) section for detailed information on configuring ADR parameters and ADR margin using MAC settings. ### Set RX1 Delay diff --git a/doc/content/devices/configuring-devices/multicast/index.md b/doc/content/hardware/devices/configuring-devices/multicast/index.md similarity index 74% rename from doc/content/devices/configuring-devices/multicast/index.md rename to doc/content/hardware/devices/configuring-devices/multicast/index.md index b1ee64af13..2c97141e44 100644 --- a/doc/content/devices/configuring-devices/multicast/index.md +++ b/doc/content/hardware/devices/configuring-devices/multicast/index.md @@ -1,11 +1,11 @@ --- title: "Multicast Groups" description: "" -aliases: ["devices/multicast"] +aliases: [/devices/multicast, /devices/configuring-devices/multicast] weight: 5 --- -It is also possible to create a [Class B]({{< ref "devices/configuring-devices/class-b" >}}) or [Class C]({{< ref "devices/configuring-devices/class-c" >}}) multicast group to send downlink messages to a group of end devices. A multicast group is a virtual ABP device, where multiple physical devices share the same DevAddr and session keys. It does not support uplink, confirmed downlink nor MAC commands. +It is also possible to create a [Class B]({{< ref "/hardware/devices/configuring-devices/class-b" >}}) or [Class C]({{< ref "/hardware/devices/configuring-devices/class-c" >}}) multicast group to send downlink messages to a group of end devices. A multicast group is a virtual ABP device, where multiple physical devices share the same DevAddr and session keys. It does not support uplink, confirmed downlink nor MAC commands. @@ -45,7 +45,7 @@ ttn-lw-cli end-devices create $APP_ID $DEVICE_ID \ --mac-settings.ping-slot-periodicity PING_EVERY_4S ``` -See the [MAC Settings]({{< ref "/devices/configuring-devices/mac-settings" >}}) guide for more information about configuring MAC layer parameters. +See the [MAC Settings]({{< ref "/hardware/devices/configuring-devices/mac-settings" >}}) guide for more information about configuring MAC layer parameters. ## Creating a Multicast Group @@ -87,7 +87,7 @@ ttn-lw-cli end-devices create $APP_ID $DEVICE_ID \ --supports-class-c ``` -Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}). A downlink path must be specified because none is known, as there is no uplink in multicast: +Then, schedule the following message to the [Application Server MQTT server]({{< ref "/integrations/other-integrations/mqtt" >}}) or [HTTP webhooks]({{< ref "/integrations/webhooks" >}}). A downlink path must be specified because none is known, as there is no uplink in multicast: ```json { @@ -120,5 +120,5 @@ Then, schedule the following message to the [Application Server MQTT server]({{< Changing MAC settings of a Multicast device (virtual ABP device) requires performing the below steps: -1. Change [MAC settings]({{< ref "/devices/configuring-devices/mac-settings" >}}). -2. Reset the Multicast device at the Network Server end as explained [here]({{< ref "/devices/configuring-devices/mac-settings#session-and-mac-state-reset" >}}) to apply above mentioned changes. \ No newline at end of file +1. Change [MAC settings]({{< ref "/hardware/devices/configuring-devices/mac-settings" >}}). +2. Reset the Multicast device at the Network Server end as explained [here]({{< ref "/hardware/devices/configuring-devices/mac-settings#session-and-mac-state-reset" >}}) to apply above mentioned changes. diff --git a/doc/content/devices/configuring-devices/payload-crypto-override/_index.md b/doc/content/hardware/devices/configuring-devices/payload-crypto-override/_index.md similarity index 95% rename from doc/content/devices/configuring-devices/payload-crypto-override/_index.md rename to doc/content/hardware/devices/configuring-devices/payload-crypto-override/_index.md index f17c579102..37ec0e9513 100644 --- a/doc/content/devices/configuring-devices/payload-crypto-override/_index.md +++ b/doc/content/hardware/devices/configuring-devices/payload-crypto-override/_index.md @@ -1,6 +1,7 @@ --- title: "Payload Crypto Override" description: "" +aliases: [/devices/configuring-devices/payload-crypto-override] --- LoRaWAN frames are encrypted on the application layer using the AppSKey. Once the end device is registered, you can choose to enforce or skip payload encryption. Skipping payload encryption will cause the Application Server to forward messages to integrations without any processing, for example it will neglect [payload formatters]({{< ref "/integrations/payload-formatters" >}}). If you choose to skip payload encryption, integrations will be responsible for processing the message in order to understand it. diff --git a/doc/content/devices/configuring-devices/payload-crypto-override/skip-payload-crypto.png b/doc/content/hardware/devices/configuring-devices/payload-crypto-override/skip-payload-crypto.png similarity index 100% rename from doc/content/devices/configuring-devices/payload-crypto-override/skip-payload-crypto.png rename to doc/content/hardware/devices/configuring-devices/payload-crypto-override/skip-payload-crypto.png diff --git a/doc/content/devices/configuring-devices/relay-settings/_index.md b/doc/content/hardware/devices/configuring-devices/relay-settings/_index.md similarity index 85% rename from doc/content/devices/configuring-devices/relay-settings/_index.md rename to doc/content/hardware/devices/configuring-devices/relay-settings/_index.md index cb9206ade3..2148a4334f 100644 --- a/doc/content/devices/configuring-devices/relay-settings/_index.md +++ b/doc/content/hardware/devices/configuring-devices/relay-settings/_index.md @@ -1,10 +1,10 @@ --- title: "Relay Settings" description: "" -aliases: ["/devices/relay-settings"] +aliases: [/devices/relay-settings, /devices/configuring-devices/relay-settings] --- -This section provides guidelines for configuring [relay]({{< ref "/devices/concepts/relay" >}}) settings for end devices via CLI. +This section provides guidelines for configuring [relay]({{< ref "/hardware/devices/concepts/relay" >}}) settings for end devices via CLI. @@ -12,13 +12,13 @@ This section provides guidelines for configuring [relay]({{< ref "/devices/conce ## Retroactivity -In contrast to [MAC settings]({{< ref "/devices/configuring-devices/mac-settings" >}}), the relay configuration commands will automatically apply changes to both the current, pending and future sessions of the end devices. +In contrast to [MAC settings]({{< ref "/hardware/devices/configuring-devices/mac-settings" >}}), the relay configuration commands will automatically apply changes to both the current, pending and future sessions of the end devices. ## Examples ### Enabling the Serving Mode {{< new-in-version "3.29.0">}} -In order to enable the [serving mode]({{< ref "/devices/concepts/relay#relay-mode" >}}) of an end device, use the `create` command and the `--mode.serving` parameter. +In order to enable the [serving mode]({{< ref "/hardware/devices/concepts/relay#relay-mode" >}}) of an end device, use the `create` command and the `--mode.serving` parameter. ```bash ttn-lw-cli relays create --mode.serving @@ -26,7 +26,7 @@ ttn-lw-cli relays create --mode.serving ### Enabling the Served Mode {{< new-in-version "3.29.0">}} -In order to enable the [served mode]({{< ref "/devices/concepts/relay#relay-mode" >}}) of an end device, use the `create` command and the `--mode.served` flag. +In order to enable the [served mode]({{< ref "/hardware/devices/concepts/relay#relay-mode" >}}) of an end device, use the `create` command and the `--mode.served` flag. {{< note "A serving end device must already exist." />}} @@ -35,6 +35,7 @@ ttn-lw-cli relays create --mode.served.mode.end-device-cont ``` Multiple modes of operations are available for a served end device: + 1. A device may always attempt to use the serving end device before transmitting an uplink message. This mode is called _always_, and can be used using the `--mode.served.mode.always` flag. 2. A device may attempt to use the serving end device only after it has not received a downlink message recently. This mode is called _dynamic_, and can be used using the `--mode.served.mode.dynamic` flag. 3. A device may have its own algorithm to choose when to use the serving end device. This mode is called _end device controlled_, and can be used using the `--mode.served.mode.end-device-controlled` flag. diff --git a/doc/content/devices/models/_index.md b/doc/content/hardware/devices/models/_index.md similarity index 89% rename from doc/content/devices/models/_index.md rename to doc/content/hardware/devices/models/_index.md index 0ee5f9f3d1..217f45e5b1 100644 --- a/doc/content/devices/models/_index.md +++ b/doc/content/hardware/devices/models/_index.md @@ -2,6 +2,7 @@ title: "Models" description: "Guides on connecting devices to The Things Stack by model" weight: 4 +aliases: [/devices/models/] --- This subsection contains comprehensive instructions for connecting some of the popular LoRaWAN® devices to {{% tts %}}. diff --git a/doc/content/devices/models/browan-tbms100/_index.md b/doc/content/hardware/devices/models/browan-tbms100/_index.md similarity index 79% rename from doc/content/devices/models/browan-tbms100/_index.md rename to doc/content/hardware/devices/models/browan-tbms100/_index.md index eb16fcffce..e41c3c19c4 100644 --- a/doc/content/devices/models/browan-tbms100/_index.md +++ b/doc/content/hardware/devices/models/browan-tbms100/_index.md @@ -1,7 +1,8 @@ --- title: "Browan TBMS100 Motion Sensor" description: "" -weight: +weight: +aliases: [/devices/models/browan-tbms100] --- {{< figure src="tbms100.png" alt="Generic Node Sensor Edition" class="float plain" >}} @@ -11,6 +12,7 @@ The Browan [TBMS100 Motion Sensor](https://lora-alliance.org/wp-content/uploads/ ## Provisioning Information + The provisioning information, such as **JoinEUI** and **DevEUI**, can be found on the back of the device. The **AppKey**, which is sensitive information, is provided within an Excel sheet via email to the person who purchased it. {{< figure src="tbms100-back.png" alt="TBMS100 provisioning information" >}} @@ -23,7 +25,7 @@ You can onboard your TBMS100 using the **LoRaWAN Device Repository** or **manual If you prefer onboarding with the **LoRaWAN Device Repository**, in the **End device type** section, under **Input method**, select the **Select the end device in the LoRaWAN Device Repository** option. -The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are TBMS100-specific: +The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are TBMS100-specific: - End device brand: **Browan Communication Incorp.** - Model: **Motion Sensor** @@ -36,7 +38,7 @@ After configuring your device, select the **Register end device** button. {{< figure src="tbms100-device-repository.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are TBMS100-specific: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are TBMS100-specific: - LoRaWAN version: **LoRaWAN Specification 1.0.3** - Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** @@ -45,4 +47,4 @@ Then fill in the **Provisioning information**, which were found [in the first st After configuring your device, select the **Register end device** button. -{{< figure src="tbms100-manually.png" alt="Settings for manual registration" >}} \ No newline at end of file +{{< figure src="tbms100-manually.png" alt="Settings for manual registration" >}} diff --git a/doc/content/devices/models/browan-tbms100/tbms100-back.png b/doc/content/hardware/devices/models/browan-tbms100/tbms100-back.png similarity index 100% rename from doc/content/devices/models/browan-tbms100/tbms100-back.png rename to doc/content/hardware/devices/models/browan-tbms100/tbms100-back.png diff --git a/doc/content/devices/models/browan-tbms100/tbms100-device-repository.png b/doc/content/hardware/devices/models/browan-tbms100/tbms100-device-repository.png similarity index 100% rename from doc/content/devices/models/browan-tbms100/tbms100-device-repository.png rename to doc/content/hardware/devices/models/browan-tbms100/tbms100-device-repository.png diff --git a/doc/content/devices/models/browan-tbms100/tbms100-manually.png b/doc/content/hardware/devices/models/browan-tbms100/tbms100-manually.png similarity index 100% rename from doc/content/devices/models/browan-tbms100/tbms100-manually.png rename to doc/content/hardware/devices/models/browan-tbms100/tbms100-manually.png diff --git a/doc/content/devices/models/browan-tbms100/tbms100.png b/doc/content/hardware/devices/models/browan-tbms100/tbms100.png similarity index 100% rename from doc/content/devices/models/browan-tbms100/tbms100.png rename to doc/content/hardware/devices/models/browan-tbms100/tbms100.png diff --git a/doc/content/devices/models/dragino-lht52/_index.md b/doc/content/hardware/devices/models/dragino-lht52/_index.md similarity index 78% rename from doc/content/devices/models/dragino-lht52/_index.md rename to doc/content/hardware/devices/models/dragino-lht52/_index.md index 7ebfc05541..a799780423 100644 --- a/doc/content/devices/models/dragino-lht52/_index.md +++ b/doc/content/hardware/devices/models/dragino-lht52/_index.md @@ -1,7 +1,8 @@ --- title: "Dragino LHT52" description: "" -weight: +weight: +aliases: [/devices/models/dragino-lht52] --- {{< figure src="lht52.png" alt="Generic Node Sensor Edition" class="float plain">}} @@ -12,7 +13,7 @@ The Dragino [LHT52](https://www.dragino.com/products/temperature-humidity-sensor ## Provisioning Information -Provisioning information (the **JoinEUI/AppEUI**, **DevEUI** and **AppKey**) can be found on a sticker inside the box. +Provisioning information (the **JoinEUI/AppEUI**, **DevEUI** and **AppKey**) can be found on a sticker inside the box. {{< figure src="lht52-prov-info.png" alt="LHT52 provisioning information" width="50%">}} @@ -24,7 +25,7 @@ The LHT52 can be onboarded to {{% tts %}} using the **Device Repository** or by The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the Dragino LHT52, which enables quick and easy onboarding to {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are LHT52-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are LHT52-specific: - End device brand: **Dragino Technology Co., Limited** - Model: **LHT52** @@ -37,14 +38,13 @@ After configuring your device, select the **Register end device** button. {{< figure src="lht52-prov-info-stack.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LHT52: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LHT52: - LoRaWAN version: **LoRaWAN Specification 1.0.3** - Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** Then fill in the **Provisioning information**, which were found [in the first steps](#provisioning-information). - After configuring your device, select the **Register end device** button. {{< figure src="manual-register.png" alt="Settings for manual registration" >}} diff --git a/doc/content/devices/models/dragino-lht52/lht52-prov-info-stack.png b/doc/content/hardware/devices/models/dragino-lht52/lht52-prov-info-stack.png similarity index 100% rename from doc/content/devices/models/dragino-lht52/lht52-prov-info-stack.png rename to doc/content/hardware/devices/models/dragino-lht52/lht52-prov-info-stack.png diff --git a/doc/content/devices/models/dragino-lht52/lht52-prov-info.png b/doc/content/hardware/devices/models/dragino-lht52/lht52-prov-info.png similarity index 100% rename from doc/content/devices/models/dragino-lht52/lht52-prov-info.png rename to doc/content/hardware/devices/models/dragino-lht52/lht52-prov-info.png diff --git a/doc/content/devices/models/dragino-lht52/lht52.png b/doc/content/hardware/devices/models/dragino-lht52/lht52.png similarity index 100% rename from doc/content/devices/models/dragino-lht52/lht52.png rename to doc/content/hardware/devices/models/dragino-lht52/lht52.png diff --git a/doc/content/devices/models/dragino-lht52/manual-register.png b/doc/content/hardware/devices/models/dragino-lht52/manual-register.png similarity index 100% rename from doc/content/devices/models/dragino-lht52/manual-register.png rename to doc/content/hardware/devices/models/dragino-lht52/manual-register.png diff --git a/doc/content/devices/models/elsys-ers-lite/_index.md b/doc/content/hardware/devices/models/elsys-ers-lite/_index.md similarity index 77% rename from doc/content/devices/models/elsys-ers-lite/_index.md rename to doc/content/hardware/devices/models/elsys-ers-lite/_index.md index f209f3e8dc..1c8393e3f6 100644 --- a/doc/content/devices/models/elsys-ers-lite/_index.md +++ b/doc/content/hardware/devices/models/elsys-ers-lite/_index.md @@ -1,7 +1,8 @@ --- title: "Elsys ERS Lite" description: "" -weight: +weight: +aliases: [/devices/models/elsys-ers-lite] --- {{< figure src="ers-lite.png" alt="ELSYS ERS Lite" class="float plain" width="60%">}} @@ -24,7 +25,7 @@ You can onboard your Elsys ERS Lite using the **LoRaWAN Device Repository** or * If you prefer onboarding with the **LoRaWAN Device Repository**, in the **End device type** section, under **Input method**, select the **Select the end device in the LoRaWAN Device Repository** option. -The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Elsys ERS Lite-specific: +The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Elsys ERS Lite-specific: - End device brand: **Elsys** - Model: **ERS Lite indoor environment monitoring** @@ -37,7 +38,7 @@ After configuring your device, select the **Register end device** button. {{< figure src="ers-lite-repository.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are Elsys ERS Lite-specific: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are Elsys ERS Lite-specific: - LoRaWAN version: **LoRaWAN Specification 1.0.3** - Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** diff --git a/doc/content/devices/models/elsys-ers-lite/ers-lite-back.png b/doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-back.png similarity index 100% rename from doc/content/devices/models/elsys-ers-lite/ers-lite-back.png rename to doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-back.png diff --git a/doc/content/devices/models/elsys-ers-lite/ers-lite-manually.png b/doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-manually.png similarity index 100% rename from doc/content/devices/models/elsys-ers-lite/ers-lite-manually.png rename to doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-manually.png diff --git a/doc/content/devices/models/elsys-ers-lite/ers-lite-repository.png b/doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-repository.png similarity index 100% rename from doc/content/devices/models/elsys-ers-lite/ers-lite-repository.png rename to doc/content/hardware/devices/models/elsys-ers-lite/ers-lite-repository.png diff --git a/doc/content/devices/models/elsys-ers-lite/ers-lite.png b/doc/content/hardware/devices/models/elsys-ers-lite/ers-lite.png similarity index 100% rename from doc/content/devices/models/elsys-ers-lite/ers-lite.png rename to doc/content/hardware/devices/models/elsys-ers-lite/ers-lite.png diff --git a/doc/content/devices/models/generic-node-se/_index.md b/doc/content/hardware/devices/models/generic-node-se/_index.md similarity index 99% rename from doc/content/devices/models/generic-node-se/_index.md rename to doc/content/hardware/devices/models/generic-node-se/_index.md index 748db2b3ba..7cd7fdb7cc 100644 --- a/doc/content/devices/models/generic-node-se/_index.md +++ b/doc/content/hardware/devices/models/generic-node-se/_index.md @@ -2,6 +2,7 @@ title: "Generic Node Sensor Edition" description: "" weight: +aliases: [/devices/models/generic-node-se] --- {{< figure src="generic-node-se.png" alt="Generic Node Sensor Edition" class="float plain" >}} diff --git a/doc/content/devices/models/generic-node-se/dev-rep-1.png b/doc/content/hardware/devices/models/generic-node-se/dev-rep-1.png similarity index 100% rename from doc/content/devices/models/generic-node-se/dev-rep-1.png rename to doc/content/hardware/devices/models/generic-node-se/dev-rep-1.png diff --git a/doc/content/devices/models/generic-node-se/dev-rep-2.png b/doc/content/hardware/devices/models/generic-node-se/dev-rep-2.png similarity index 100% rename from doc/content/devices/models/generic-node-se/dev-rep-2.png rename to doc/content/hardware/devices/models/generic-node-se/dev-rep-2.png diff --git a/doc/content/devices/models/generic-node-se/found-qr-data.png b/doc/content/hardware/devices/models/generic-node-se/found-qr-data.png similarity index 100% rename from doc/content/devices/models/generic-node-se/found-qr-data.png rename to doc/content/hardware/devices/models/generic-node-se/found-qr-data.png diff --git a/doc/content/devices/models/generic-node-se/generic-node-se.png b/doc/content/hardware/devices/models/generic-node-se/generic-node-se.png similarity index 100% rename from doc/content/devices/models/generic-node-se/generic-node-se.png rename to doc/content/hardware/devices/models/generic-node-se/generic-node-se.png diff --git a/doc/content/devices/models/generic-node-se/gnse-after-register.png b/doc/content/hardware/devices/models/generic-node-se/gnse-after-register.png similarity index 100% rename from doc/content/devices/models/generic-node-se/gnse-after-register.png rename to doc/content/hardware/devices/models/generic-node-se/gnse-after-register.png diff --git a/doc/content/devices/models/generic-node-se/manually-1.png b/doc/content/hardware/devices/models/generic-node-se/manually-1.png similarity index 100% rename from doc/content/devices/models/generic-node-se/manually-1.png rename to doc/content/hardware/devices/models/generic-node-se/manually-1.png diff --git a/doc/content/devices/models/generic-node-se/manually-2.png b/doc/content/hardware/devices/models/generic-node-se/manually-2.png similarity index 100% rename from doc/content/devices/models/generic-node-se/manually-2.png rename to doc/content/hardware/devices/models/generic-node-se/manually-2.png diff --git a/doc/content/devices/models/generic-node-se/register-end-device.png b/doc/content/hardware/devices/models/generic-node-se/register-end-device.png similarity index 100% rename from doc/content/devices/models/generic-node-se/register-end-device.png rename to doc/content/hardware/devices/models/generic-node-se/register-end-device.png diff --git a/doc/content/devices/models/generic-node-se/waiting-for-camera.png b/doc/content/hardware/devices/models/generic-node-se/waiting-for-camera.png similarity index 100% rename from doc/content/devices/models/generic-node-se/waiting-for-camera.png rename to doc/content/hardware/devices/models/generic-node-se/waiting-for-camera.png diff --git a/doc/content/devices/models/heltec-ab01/_index.md b/doc/content/hardware/devices/models/heltec-ab01/_index.md similarity index 89% rename from doc/content/devices/models/heltec-ab01/_index.md rename to doc/content/hardware/devices/models/heltec-ab01/_index.md index e09336aa90..55884389bc 100644 --- a/doc/content/devices/models/heltec-ab01/_index.md +++ b/doc/content/hardware/devices/models/heltec-ab01/_index.md @@ -1,7 +1,8 @@ --- title: "Heltec HTCC-AB01" description: "" -weight: +weight: +aliases: [/devices/models/heltec-ab01] --- {{< figure src="ab01.png" alt="" class="float plain" width="80%">}} @@ -61,7 +62,7 @@ The device can be onboarded using the **Device Repository** or **manually**. The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the AB01, which enables quick and easy registration with {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are AB01-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are AB01-specific: - End device brand: **HelTec AutoMation** - Model: **HTCC-AB01(Class A OTAA)** @@ -71,6 +72,7 @@ In the **End device type** section, under **Input method**, select either the ** {{< figure src="ab01-register.png" alt="Settings for registration through device repository" >}} For the Provisioning information, enter the following details: + - JoinEUI: `0000000000000000` - DevEUI: **The DevEui that was previously copied from Arduino IDE Serial Monitor.** - AppKey: **Generate by clicking the Generate button.** @@ -79,7 +81,7 @@ For the Provisioning information, enter the following details: After configuring your device, select the **Register end device** button. -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the AB01: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the AB01: - LoRaWAN version: **LoRaWAN Specification 1.0.2** - Regional parameters version: **RP001 Regional Parameters 1.0.2 revision B** @@ -88,12 +90,11 @@ After configuring your device, select the **Register end device** button. {{< figure src="manual-register.png" alt="Settings for manual registration" >}} - ## Configuring the Device -The device is now registered with {{% tts %}}, but it still needs lacks the AppKey info in order to connect. +The device is now registered with {{% tts %}}, but it still needs lacks the AppKey info in order to connect. -Go back to your code, and at the top you should see these lines: +Go back to your code, and at the top you should see these lines: ```cpp /* OTAA para*/ @@ -104,7 +105,7 @@ uint8_t appKey[] = { 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, In {{% tts %}}, under **Activation Information**, click the **eye** icon next to **AppKey** and then selecting the **** icon. Then copy the AppKey by clicking the **Copy to clipboard** button. -Replace the AppKey string between the brackets in your code with the AppKey copied from {{% tts %}}. +Replace the AppKey string between the brackets in your code with the AppKey copied from {{% tts %}}. Now upload the code again to your device. diff --git a/doc/content/devices/models/heltec-ab01/ab01-prov-info.png b/doc/content/hardware/devices/models/heltec-ab01/ab01-prov-info.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/ab01-prov-info.png rename to doc/content/hardware/devices/models/heltec-ab01/ab01-prov-info.png diff --git a/doc/content/devices/models/heltec-ab01/ab01-register.png b/doc/content/hardware/devices/models/heltec-ab01/ab01-register.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/ab01-register.png rename to doc/content/hardware/devices/models/heltec-ab01/ab01-register.png diff --git a/doc/content/devices/models/heltec-ab01/ab01-select.png b/doc/content/hardware/devices/models/heltec-ab01/ab01-select.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/ab01-select.png rename to doc/content/hardware/devices/models/heltec-ab01/ab01-select.png diff --git a/doc/content/devices/models/heltec-ab01/ab01-serial.png b/doc/content/hardware/devices/models/heltec-ab01/ab01-serial.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/ab01-serial.png rename to doc/content/hardware/devices/models/heltec-ab01/ab01-serial.png diff --git a/doc/content/devices/models/heltec-ab01/ab01.png b/doc/content/hardware/devices/models/heltec-ab01/ab01.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/ab01.png rename to doc/content/hardware/devices/models/heltec-ab01/ab01.png diff --git a/doc/content/devices/models/heltec-ab01/board-url.png b/doc/content/hardware/devices/models/heltec-ab01/board-url.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/board-url.png rename to doc/content/hardware/devices/models/heltec-ab01/board-url.png diff --git a/doc/content/devices/models/heltec-ab01/boards-manager.png b/doc/content/hardware/devices/models/heltec-ab01/boards-manager.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/boards-manager.png rename to doc/content/hardware/devices/models/heltec-ab01/boards-manager.png diff --git a/doc/content/devices/models/heltec-ab01/install-board.png b/doc/content/hardware/devices/models/heltec-ab01/install-board.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/install-board.png rename to doc/content/hardware/devices/models/heltec-ab01/install-board.png diff --git a/doc/content/devices/models/heltec-ab01/live-data.png b/doc/content/hardware/devices/models/heltec-ab01/live-data.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/live-data.png rename to doc/content/hardware/devices/models/heltec-ab01/live-data.png diff --git a/doc/content/devices/models/heltec-ab01/manual-register.png b/doc/content/hardware/devices/models/heltec-ab01/manual-register.png similarity index 100% rename from doc/content/devices/models/heltec-ab01/manual-register.png rename to doc/content/hardware/devices/models/heltec-ab01/manual-register.png diff --git a/doc/content/devices/models/lilygo-lora32/boards-manager-url.png b/doc/content/hardware/devices/models/lilygo-lora32/boards-manager-url.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/boards-manager-url.png rename to doc/content/hardware/devices/models/lilygo-lora32/boards-manager-url.png diff --git a/doc/content/devices/models/lilygo-lora32/esp32-install.png b/doc/content/hardware/devices/models/lilygo-lora32/esp32-install.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/esp32-install.png rename to doc/content/hardware/devices/models/lilygo-lora32/esp32-install.png diff --git a/doc/content/devices/models/lilygo-lora32/esp32-url.png b/doc/content/hardware/devices/models/lilygo-lora32/esp32-url.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/esp32-url.png rename to doc/content/hardware/devices/models/lilygo-lora32/esp32-url.png diff --git a/doc/content/devices/models/lilygo-lora32/index.md b/doc/content/hardware/devices/models/lilygo-lora32/index.md similarity index 90% rename from doc/content/devices/models/lilygo-lora32/index.md rename to doc/content/hardware/devices/models/lilygo-lora32/index.md index 92554203a8..a163aa53ad 100644 --- a/doc/content/devices/models/lilygo-lora32/index.md +++ b/doc/content/hardware/devices/models/lilygo-lora32/index.md @@ -1,7 +1,8 @@ --- title: "LILYGO LoRa32" description: "" -weight: +weight: +aliases: [/devices/models/lilygo-lora32] --- {{< figure src="lora32.png" alt="" class="float plain" width="80%">}} @@ -52,12 +53,13 @@ Now we need the credentials to onboard it to {{% tts %}}. The device has to be onboarded **manually**. -To onboard **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LoRa32: +To onboard **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LoRa32: - LoRaWAN version: **LoRaWAN Specification 1.1.0** - Regional parameters version: **RP001 Regional Parameters 1.1 revision A** For the Provisioning information, enter the following details: + - JoinEUI: `0000000000000000` - DevEUI, AppKey & NwkKey: **Generate by clicking the Generate button.** @@ -70,16 +72,17 @@ After configuring your device, select the **Register end device** button. Our device is registered with {{% tts %}}, but it still needs the correct info in order to connect. Go back to your Arduino IDE, and go to the `config.h` file. There you should see the following: + ``` -// the Device EUI & two keys can be generated on the TTN console +// the Device EUI & two keys can be generated on the TTN console #ifndef RADIOLIB_LORAWAN_DEV_EUI // Replace with your Device EUI #define RADIOLIB_LORAWAN_DEV_EUI 0x--------------- #endif -#ifndef RADIOLIB_LORAWAN_APP_KEY // Replace with your App Key -#define RADIOLIB_LORAWAN_APP_KEY 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- +#ifndef RADIOLIB_LORAWAN_APP_KEY // Replace with your App Key +#define RADIOLIB_LORAWAN_APP_KEY 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- #endif #ifndef RADIOLIB_LORAWAN_NWK_KEY // Put your Nwk Key here -#define RADIOLIB_LORAWAN_NWK_KEY 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- +#define RADIOLIB_LORAWAN_NWK_KEY 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- #endif ``` @@ -101,25 +104,24 @@ Now upload the code to your device using the **->** button in the top-left. ## Monitoring Live Data -As the device payload comes to {{% tts %}} in a HEX format, you will need to decode it using a [payload formatter](https://www.thethingsindustries.com/docs/integrations/payload-formatters/). To do this, in your application on {{% tts %}}, navigate to **Payload formatters**. +As the device payload comes to {{% tts %}} in a HEX format, you will need to decode it using a [payload formatter](https://www.thethingsindustries.com/docs/integrations/payload-formatters/). To do this, in your application on {{% tts %}}, navigate to **Payload formatters**. -Select the **Custom Javascript formatter** from the **Formatter type** dropdown. +Select the **Custom Javascript formatter** from the **Formatter type** dropdown. -Enter the following code in the **Formatter code** field: +Enter the following code in the **Formatter code** field: ```js function decodeUplink(input) { var value1 = input.bytes[0]; var value2 = (input.bytes[1] << 8) | input.bytes[2]; - + return { data: { value1: value1, - value2: value2 - } + value2: value2, + }, }; } - ``` Click **Save changes** at the bottom of the page and go back to the **Live Data** tab to view all messages exchanged between the end device and {{% tts %}}. diff --git a/doc/content/devices/models/lilygo-lora32/live-data.png b/doc/content/hardware/devices/models/lilygo-lora32/live-data.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/live-data.png rename to doc/content/hardware/devices/models/lilygo-lora32/live-data.png diff --git a/doc/content/devices/models/lilygo-lora32/lora32-activ-info.png b/doc/content/hardware/devices/models/lilygo-lora32/lora32-activ-info.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/lora32-activ-info.png rename to doc/content/hardware/devices/models/lilygo-lora32/lora32-activ-info.png diff --git a/doc/content/devices/models/lilygo-lora32/lora32-select.png b/doc/content/hardware/devices/models/lilygo-lora32/lora32-select.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/lora32-select.png rename to doc/content/hardware/devices/models/lilygo-lora32/lora32-select.png diff --git a/doc/content/devices/models/lilygo-lora32/lora32.png b/doc/content/hardware/devices/models/lilygo-lora32/lora32.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/lora32.png rename to doc/content/hardware/devices/models/lilygo-lora32/lora32.png diff --git a/doc/content/devices/models/lilygo-lora32/manual-register.png b/doc/content/hardware/devices/models/lilygo-lora32/manual-register.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/manual-register.png rename to doc/content/hardware/devices/models/lilygo-lora32/manual-register.png diff --git a/doc/content/devices/models/lilygo-lora32/radiolib-install.png b/doc/content/hardware/devices/models/lilygo-lora32/radiolib-install.png similarity index 100% rename from doc/content/devices/models/lilygo-lora32/radiolib-install.png rename to doc/content/hardware/devices/models/lilygo-lora32/radiolib-install.png diff --git a/doc/content/devices/models/lw001-bg-pro/_index.md b/doc/content/hardware/devices/models/lw001-bg-pro/_index.md similarity index 85% rename from doc/content/devices/models/lw001-bg-pro/_index.md rename to doc/content/hardware/devices/models/lw001-bg-pro/_index.md index 54695b3c26..7d3890ab82 100644 --- a/doc/content/devices/models/lw001-bg-pro/_index.md +++ b/doc/content/hardware/devices/models/lw001-bg-pro/_index.md @@ -1,12 +1,13 @@ --- title: "Moko Smart LW001-BG Pro" description: "" -weight: +weight: +aliases: [/devices/models/lw001-bg-pro] --- {{< figure src="lw001-bg-pro.png" alt="Moko Smart LW001-BG Pro" class="float plain" width="50%">}} -The Moko Smart [LW001-BG Pro](https://www.mokosmart.com/lorawan-tracker-lw001-bg-pro/) is a LoRaWAN tracker. It integrates GPS positioning, Bluetooth positioning and WiFi positioning and supports multiple detection methods, such as anti-demolition alarm, motion detection and vibration detection. +The Moko Smart [LW001-BG Pro](https://www.mokosmart.com/lorawan-tracker-lw001-bg-pro/) is a LoRaWAN tracker. It integrates GPS positioning, Bluetooth positioning and WiFi positioning and supports multiple detection methods, such as anti-demolition alarm, motion detection and vibration detection. The device supports a variety of working modes as well and is suitable for most tracking applications. @@ -43,7 +44,7 @@ The device can be onboarded using the **Device Repository** or **manually**. The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the Moko Smart LW001-BG Pro, which enables quick and easy registration with {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are LW001-BG Pro-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are LW001-BG Pro-specific: - End device brand: **Moko Technology Ltd** - Model: **LW001-BGPRO** @@ -56,10 +57,10 @@ After configuring your device, select the **Register end device** button. {{< figure src="lw001-bg-pro-prov-info-stack.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LW001-BG Pro: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the LW001-BG Pro: - LoRaWAN version: **LoRaWAN Specification 1.0.3** -- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** +- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** Then fill in the **Provisioning information**, which were found [in the first steps](#provisioning-information). diff --git a/doc/content/devices/models/lw001-bg-pro/lw001-bg-pro-prov-info-stack.png b/doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro-prov-info-stack.png similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/lw001-bg-pro-prov-info-stack.png rename to doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro-prov-info-stack.png diff --git a/doc/content/devices/models/lw001-bg-pro/lw001-bg-pro-turn-on.jpg b/doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro-turn-on.jpg similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/lw001-bg-pro-turn-on.jpg rename to doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro-turn-on.jpg diff --git a/doc/content/devices/models/lw001-bg-pro/lw001-bg-pro.png b/doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro.png similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/lw001-bg-pro.png rename to doc/content/hardware/devices/models/lw001-bg-pro/lw001-bg-pro.png diff --git a/doc/content/devices/models/lw001-bg-pro/manual-register.png b/doc/content/hardware/devices/models/lw001-bg-pro/manual-register.png similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/manual-register.png rename to doc/content/hardware/devices/models/lw001-bg-pro/manual-register.png diff --git a/doc/content/devices/models/lw001-bg-pro/moko-app-connection.png b/doc/content/hardware/devices/models/lw001-bg-pro/moko-app-connection.png similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/moko-app-connection.png rename to doc/content/hardware/devices/models/lw001-bg-pro/moko-app-connection.png diff --git a/doc/content/devices/models/lw001-bg-pro/moko-app-list.png b/doc/content/hardware/devices/models/lw001-bg-pro/moko-app-list.png similarity index 100% rename from doc/content/devices/models/lw001-bg-pro/moko-app-list.png rename to doc/content/hardware/devices/models/lw001-bg-pro/moko-app-list.png diff --git a/doc/content/devices/models/milesight-em300-th/_index.md b/doc/content/hardware/devices/models/milesight-em300-th/_index.md similarity index 77% rename from doc/content/devices/models/milesight-em300-th/_index.md rename to doc/content/hardware/devices/models/milesight-em300-th/_index.md index 3c9967b788..ed43034e15 100644 --- a/doc/content/devices/models/milesight-em300-th/_index.md +++ b/doc/content/hardware/devices/models/milesight-em300-th/_index.md @@ -1,7 +1,8 @@ --- title: "Milesight EM300-TH" description: "" -weight: +weight: +aliases: [/devices/models/milesight-em300-th] --- {{< figure src="milesight-EM300-TH.png" alt="Milesight EM300-TH" class="float plain" width="60%" >}} @@ -13,7 +14,8 @@ The [Milesight EM300-TH](https://www.milesight.com/iot/product/lorawan-sensor/em ## Provisioning Information For the provisioning information: -- **DevEUI**: Can be found on the back of the device. + +- **DevEUI**: Can be found on the back of the device. - **JoinEUI**: `24E124C0002A0001`. - **AppKey**: Will be received through an email after purchasing the device. @@ -27,7 +29,7 @@ You can onboard your EM300-TH using the **LoRaWAN Device Repository** or **manua If you prefer onboarding with the **LoRaWAN Device Repository**, in the **End device type** section, under **Input method**, select the **Select the end device in the LoRaWAN Device Repository** option. -The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are EM300-TH-specific: +The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are EM300-TH-specific: - End device brand: **Milesight IoT Co., Ltd** - Model: **EM300-TH** @@ -40,7 +42,7 @@ After configuring your device, select the **Register end device** button. {{< figure src="em300-th-repo.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are EM300-TH-specific: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are EM300-TH-specific: - LoRaWAN version: **LoRaWAN Specification 1.0.3** - Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** diff --git a/doc/content/devices/models/milesight-em300-th/em300-th-manually.png b/doc/content/hardware/devices/models/milesight-em300-th/em300-th-manually.png similarity index 100% rename from doc/content/devices/models/milesight-em300-th/em300-th-manually.png rename to doc/content/hardware/devices/models/milesight-em300-th/em300-th-manually.png diff --git a/doc/content/devices/models/milesight-em300-th/em300-th-repo.png b/doc/content/hardware/devices/models/milesight-em300-th/em300-th-repo.png similarity index 100% rename from doc/content/devices/models/milesight-em300-th/em300-th-repo.png rename to doc/content/hardware/devices/models/milesight-em300-th/em300-th-repo.png diff --git a/doc/content/devices/models/milesight-em300-th/milesight-EM300-TH-back.png b/doc/content/hardware/devices/models/milesight-em300-th/milesight-EM300-TH-back.png similarity index 100% rename from doc/content/devices/models/milesight-em300-th/milesight-EM300-TH-back.png rename to doc/content/hardware/devices/models/milesight-em300-th/milesight-EM300-TH-back.png diff --git a/doc/content/devices/models/milesight-em300-th/milesight-EM300-TH.png b/doc/content/hardware/devices/models/milesight-em300-th/milesight-EM300-TH.png similarity index 100% rename from doc/content/devices/models/milesight-em300-th/milesight-EM300-TH.png rename to doc/content/hardware/devices/models/milesight-em300-th/milesight-EM300-TH.png diff --git a/doc/content/devices/models/mkr1310/_index.md b/doc/content/hardware/devices/models/mkr1310/_index.md similarity index 89% rename from doc/content/devices/models/mkr1310/_index.md rename to doc/content/hardware/devices/models/mkr1310/_index.md index 56ac8dba20..d24184dfa1 100755 --- a/doc/content/devices/models/mkr1310/_index.md +++ b/doc/content/hardware/devices/models/mkr1310/_index.md @@ -2,6 +2,7 @@ title: "Arduino MKR 1310" description: "" weight: +aliases: [/devices/models/mkr1310] --- {{< figure src="mkrwan1310.png" alt="Arduino MKR WAN 1310" class="float plain" >}} @@ -54,9 +55,10 @@ Now copy the Device EUI and save it, as it will be used for connecting to {{% tt ## Registering on {{% tts %}} -Move to {{% tts %}} Console, create an application and click register device. Check [Adding Devices](https://www.thethingsindustries.com/docs/devices/adding-devices/) for more info. +Move to {{% tts %}} Console, create an application and click register device. Check [Adding Devices](https://www.thethingsindustries.com/docs/hardware/devices/adding-devices/) for more info. Here enter the following details: + - **End device brand:** `Arduino SA` - **Model:** `MKR WAN 1310` - **Hardware Ver.:** `1.0` @@ -66,41 +68,42 @@ Here enter the following details: {{< figure src="stack-device.png" alt="details of the end device type" >}} -For the **Provisioning information**, enter the following details: +For the **Provisioning information**, enter the following details: + - **JoinEUI:** `0000000000000000` - **DevEUI:** The Device EUI value that was previously copied from Arduino IDE Serial Monitor -- **AppKey:** Generate by clicking the **Generate** button +- **AppKey:** Generate by clicking the **Generate** button -In the device overview you can now see three parameters in the **Activation information** section: **AppEUI**, **DevEUI** and **AppKey**. You are going to need these values for the next steps. +In the device overview you can now see three parameters in the **Activation information** section: **AppEUI**, **DevEUI** and **AppKey**. You are going to need these values for the next steps. {{< figure src="device-overview.png" alt="Device overview page with activation information highlighted" >}} -## Connecting board to {{% tts %}} +## Connecting board to {{% tts %}} -Now let's go back to the **FirstConfiguration** sketch again. To be safe, reset your board and open the Arduino IDE Serial Monitor again. Once the program starts, it will start asking questions in the Serial Monitor. The first one is if you are using OTAA or ABP. We are going to use OTAA, so you can enter a `1` in the message field and hit enter. For why we are using OTAA, check [ABP vs OTAA](https://www.thethingsindustries.com/docs/devices/concepts/abp-vs-otaa/). +Now let's go back to the **FirstConfiguration** sketch again. To be safe, reset your board and open the Arduino IDE Serial Monitor again. Once the program starts, it will start asking questions in the Serial Monitor. The first one is if you are using OTAA or ABP. We are going to use OTAA, so you can enter a `1` in the message field and hit enter. For why we are using OTAA, check [ABP vs OTAA](https://www.thethingsindustries.com/docs/hardware/devices/concepts/abp-vs-otaa/). -Then it will ask you for your **APP EUI** and **APP KEY**. Enter values for these parameters from the **Activation information** fields inside {{% tts %}} Console device overview. Once you have entered them, the device will try to connect to {{% tts %}}. +Then it will ask you for your **APP EUI** and **APP KEY**. Enter values for these parameters from the **Activation information** fields inside {{% tts %}} Console device overview. Once you have entered them, the device will try to connect to {{% tts %}}. {{< figure src="monitor-prov.png" alt="serial monitor with message field highlighted" >}} -Now go to {{% tts %}} Console **Live data** tab and you should see messages arriving, which should mean the device is connecting. +Now go to {{% tts %}} Console **Live data** tab and you should see messages arriving, which should mean the device is connecting. -As the device payload comes to {{% tts %}} in a HEX format, you will need to decode it using a [payload formatter](https://www.thethingsindustries.com/docs/integrations/payload-formatters/). To do this, in your application on {{% tts %}}, navigate to **Payload formatters**. +As the device payload comes to {{% tts %}} in a HEX format, you will need to decode it using a [payload formatter](https://www.thethingsindustries.com/docs/integrations/payload-formatters/). To do this, in your application on {{% tts %}}, navigate to **Payload formatters**. {{< figure src="stack-pf.png" alt="Payload formatters highlighted" >}} -Select the **Custom Javascript formatter** from the **Formatter type** dropdown. +Select the **Custom Javascript formatter** from the **Formatter type** dropdown. -Enter the following code in the **Formatter code** field: +Enter the following code in the **Formatter code** field: ```js function Decoder(bytes, port) { - var result = ""; - for (var i = 0; i < bytes.length; i++) { - result += String.fromCharCode(parseInt(bytes[i])); - } - return { payload: result, }; + var result = ""; + for (var i = 0; i < bytes.length; i++) { + result += String.fromCharCode(parseInt(bytes[i])); + } + return { payload: result }; } ``` -That was it! Now you can check out our [example project]({{< ref "/devices/models/mkr1310/temp" >}}) or start creating your own. +That was it! Now you can check out our [example project]({{< ref "/hardware/devices/models/mkr1310/temp" >}}) or start creating your own. diff --git a/doc/content/devices/models/mkr1310/boards-manager.png b/doc/content/hardware/devices/models/mkr1310/boards-manager.png similarity index 100% rename from doc/content/devices/models/mkr1310/boards-manager.png rename to doc/content/hardware/devices/models/mkr1310/boards-manager.png diff --git a/doc/content/devices/models/mkr1310/device-eui.png b/doc/content/hardware/devices/models/mkr1310/device-eui.png similarity index 100% rename from doc/content/devices/models/mkr1310/device-eui.png rename to doc/content/hardware/devices/models/mkr1310/device-eui.png diff --git a/doc/content/devices/models/mkr1310/device-overview.png b/doc/content/hardware/devices/models/mkr1310/device-overview.png similarity index 100% rename from doc/content/devices/models/mkr1310/device-overview.png rename to doc/content/hardware/devices/models/mkr1310/device-overview.png diff --git a/doc/content/devices/models/mkr1310/dht-lib.png b/doc/content/hardware/devices/models/mkr1310/dht-lib.png similarity index 100% rename from doc/content/devices/models/mkr1310/dht-lib.png rename to doc/content/hardware/devices/models/mkr1310/dht-lib.png diff --git a/doc/content/devices/models/mkr1310/fritzing.png b/doc/content/hardware/devices/models/mkr1310/fritzing.png similarity index 100% rename from doc/content/devices/models/mkr1310/fritzing.png rename to doc/content/hardware/devices/models/mkr1310/fritzing.png diff --git a/doc/content/devices/models/mkr1310/hw-version.png b/doc/content/hardware/devices/models/mkr1310/hw-version.png similarity index 100% rename from doc/content/devices/models/mkr1310/hw-version.png rename to doc/content/hardware/devices/models/mkr1310/hw-version.png diff --git a/doc/content/devices/models/mkr1310/library-manager.png b/doc/content/hardware/devices/models/mkr1310/library-manager.png similarity index 100% rename from doc/content/devices/models/mkr1310/library-manager.png rename to doc/content/hardware/devices/models/mkr1310/library-manager.png diff --git a/doc/content/devices/models/mkr1310/live-data.png b/doc/content/hardware/devices/models/mkr1310/live-data.png similarity index 100% rename from doc/content/devices/models/mkr1310/live-data.png rename to doc/content/hardware/devices/models/mkr1310/live-data.png diff --git a/doc/content/devices/models/mkr1310/mkrwan1310.png b/doc/content/hardware/devices/models/mkr1310/mkrwan1310.png similarity index 100% rename from doc/content/devices/models/mkr1310/mkrwan1310.png rename to doc/content/hardware/devices/models/mkr1310/mkrwan1310.png diff --git a/doc/content/devices/models/mkr1310/monitor-prov.png b/doc/content/hardware/devices/models/mkr1310/monitor-prov.png similarity index 100% rename from doc/content/devices/models/mkr1310/monitor-prov.png rename to doc/content/hardware/devices/models/mkr1310/monitor-prov.png diff --git a/doc/content/devices/models/mkr1310/select-board.png b/doc/content/hardware/devices/models/mkr1310/select-board.png similarity index 100% rename from doc/content/devices/models/mkr1310/select-board.png rename to doc/content/hardware/devices/models/mkr1310/select-board.png diff --git a/doc/content/devices/models/mkr1310/serial-monitor-temp.png b/doc/content/hardware/devices/models/mkr1310/serial-monitor-temp.png similarity index 100% rename from doc/content/devices/models/mkr1310/serial-monitor-temp.png rename to doc/content/hardware/devices/models/mkr1310/serial-monitor-temp.png diff --git a/doc/content/devices/models/mkr1310/serial-monitor.png b/doc/content/hardware/devices/models/mkr1310/serial-monitor.png similarity index 100% rename from doc/content/devices/models/mkr1310/serial-monitor.png rename to doc/content/hardware/devices/models/mkr1310/serial-monitor.png diff --git a/doc/content/devices/models/mkr1310/stack-device.png b/doc/content/hardware/devices/models/mkr1310/stack-device.png similarity index 100% rename from doc/content/devices/models/mkr1310/stack-device.png rename to doc/content/hardware/devices/models/mkr1310/stack-device.png diff --git a/doc/content/devices/models/mkr1310/stack-pf.png b/doc/content/hardware/devices/models/mkr1310/stack-pf.png similarity index 100% rename from doc/content/devices/models/mkr1310/stack-pf.png rename to doc/content/hardware/devices/models/mkr1310/stack-pf.png diff --git a/doc/content/devices/models/mkr1310/temp.md b/doc/content/hardware/devices/models/mkr1310/temp.md similarity index 100% rename from doc/content/devices/models/mkr1310/temp.md rename to doc/content/hardware/devices/models/mkr1310/temp.md diff --git a/doc/content/devices/models/quectel-kg200z/_index.md b/doc/content/hardware/devices/models/quectel-kg200z/_index.md similarity index 83% rename from doc/content/devices/models/quectel-kg200z/_index.md rename to doc/content/hardware/devices/models/quectel-kg200z/_index.md index ac8ddb086e..18d325c047 100644 --- a/doc/content/devices/models/quectel-kg200z/_index.md +++ b/doc/content/hardware/devices/models/quectel-kg200z/_index.md @@ -1,16 +1,17 @@ --- title: "Quectel KG200ZABTB" description: "" -weight: +weight: +aliases: [/devices/models/quectel-kg200z] --- {{< figure src="kg200z.png" alt="Quectel KG200ZABTB" class="float plain" width="60%">}} -The [Quectel KG200ZABTB](https://www.quectel.com/product/lora-kg200z) is a high-performance LoRa module launched by Quectel, which provides ultra-low power consumption and long-range wireless transmission applications. +The [Quectel KG200ZABTB](https://www.quectel.com/product/lora-kg200z) is a high-performance LoRa module launched by Quectel, which provides ultra-low power consumption and long-range wireless transmission applications. -The module integrates an ARM Cortex-M4 core with the modulations of LoRa, (G)FSK, (G)MSK and BPSK, supporting LoRaWAN standard protocol, as well as 470–510MHz and 862–928MHz LoRa frequency bands. Additionally, it incorporates AES hardware encryption for enhanced security. +The module integrates an ARM Cortex-M4 core with the modulations of LoRa, (G)FSK, (G)MSK and BPSK, supporting LoRaWAN standard protocol, as well as 470–510MHz and 862–928MHz LoRa frequency bands. Additionally, it incorporates AES hardware encryption for enhanced security. In this guide, we focus on connecting the evaluation board (EVK) to {{% tts %}}. This board can be used for programming the KG200Z module. @@ -18,15 +19,15 @@ In this guide, we focus on connecting the evaluation board (EVK) to {{% tts %}}. ## Provisioning Information -To get the provisioning information of the EVK we need to connect to the board via serial. The steps for connecting to it via serial depends on what OS you are using, [MacOS/Linux](#macos--linux) or [Windows](#windows). +To get the provisioning information of the EVK we need to connect to the board via serial. The steps for connecting to it via serial depends on what OS you are using, [MacOS/Linux](#macos--linux) or [Windows](#windows). ### MacOS / Linux -On MacOS and Linux, you can use the handy built-in `screen` command. +On MacOS and Linux, you can use the handy built-in `screen` command. First step is to find out the board address. -Before plugging in the board, open up a terminal and type `ls /dev/tty.*`. You should see a couple of addresses show up. +Before plugging in the board, open up a terminal and type `ls /dev/tty.*`. You should see a couple of addresses show up. {{< figure src="cmd-ls.png" class="plain ">}} @@ -34,43 +35,43 @@ Then plug in the EVK and turn it on. When you try the command again you should s {{< figure src="cmd-ls-dev.png" class="plain">}} -Now use the newly discovered board address to connect to the board using the `screen 115200` command. +Now use the newly discovered board address to connect to the board using the `screen 115200` command. {{< figure src="cmd-screen.png" class="plain">}} -Once you do that, you should see some text show up in your terminal. Now press the reset button on the EVK to have the device show its provisioning information. Select and copy the **AppKey**, **DevEUI** and **AppEUI** and store them somewhere. +Once you do that, you should see some text show up in your terminal. Now press the reset button on the EVK to have the device show its provisioning information. Select and copy the **AppKey**, **DevEUI** and **AppEUI** and store them somewhere. {{< figure src="prov-info.png" class="plain">}} -Using these values we can now proceed with onboarding the device to {{% tts %}}. +Using these values we can now proceed with onboarding the device to {{% tts %}}. -### Windows +### Windows To connect to the EVK using Windows, a third party tool that can interface with the EVK needs to be installed first. **Make sure your board isn't yet connected to your computer.** -For this tutorial we use [SimpleCom](https://github.com/YaSuenag/SimpleCom/releases/latest), but any UART serial tool should do the trick. Download the ZIP file, unzip it and run **SimpleCom.exe**. +For this tutorial we use [SimpleCom](https://github.com/YaSuenag/SimpleCom/releases/latest), but any UART serial tool should do the trick. Download the ZIP file, unzip it and run **SimpleCom.exe**. -When you run the tool, you will see the following screen. If you select the COM dropdown, you will probably see a couple of COM ports. +When you run the tool, you will see the following screen. If you select the COM dropdown, you will probably see a couple of COM ports. {{< figure src="win-com.png" class="plain ">}} -Now close the program (using the **Cancel** button), then plug in the EVK and turn it on. Run the program again, and when you select the dropdown again you should see a new COM port show up. Select that one and make sure the **Baud Rate** is set at `115200`. +Now close the program (using the **Cancel** button), then plug in the EVK and turn it on. Run the program again, and when you select the dropdown again you should see a new COM port show up. Select that one and make sure the **Baud Rate** is set at `115200`. {{< figure src="win-com-dev.png" class="plain">}} -Once that is done, hit **Connect** and you should see some text show up in the terminal. Now press the reset button on the EVK to have the device show its provisioning information. Select and copy the **AppKey**, **DevEUI** and **AppEUI** and store them somewhere. +Once that is done, hit **Connect** and you should see some text show up in the terminal. Now press the reset button on the EVK to have the device show its provisioning information. Select and copy the **AppKey**, **DevEUI** and **AppEUI** and store them somewhere. {{< figure src="win-com-prov.png" class="plain">}} -Using these values we can now proceed with onboarding the device to {{% tts %}}. +Using these values we can now proceed with onboarding the device to {{% tts %}}. {{< note "Quectel KG200ZABTB cannot be onboarded to {{% tts %}} using QR code." />}} ## Onboarding to {{% tts %}} -The Quectel KG200ZABTB has to be onboarded [**manually**](https://www.thethingsindustries.com/docs/devices/adding-devices/manual/). +The Quectel KG200ZABTB has to be onboarded [**manually**](https://www.thethingsindustries.com/docs/hardware/devices/adding-devices/manual/). -To do this, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are Quectel KG200ZABTB-specific: +To do this, in the **End device type** section, under **Input Method**, select **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are Quectel KG200ZABTB-specific: - LoRaWAN version: **LoRaWAN Specification 1.0.2** - Regional parameters version: **RP001 Regional Parameters 1.0.2 revision B** diff --git a/doc/content/devices/models/quectel-kg200z/cmd-ls-dev.png b/doc/content/hardware/devices/models/quectel-kg200z/cmd-ls-dev.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/cmd-ls-dev.png rename to doc/content/hardware/devices/models/quectel-kg200z/cmd-ls-dev.png diff --git a/doc/content/devices/models/quectel-kg200z/cmd-ls.png b/doc/content/hardware/devices/models/quectel-kg200z/cmd-ls.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/cmd-ls.png rename to doc/content/hardware/devices/models/quectel-kg200z/cmd-ls.png diff --git a/doc/content/devices/models/quectel-kg200z/cmd-screen.png b/doc/content/hardware/devices/models/quectel-kg200z/cmd-screen.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/cmd-screen.png rename to doc/content/hardware/devices/models/quectel-kg200z/cmd-screen.png diff --git a/doc/content/devices/models/quectel-kg200z/evk-manual-prov.png b/doc/content/hardware/devices/models/quectel-kg200z/evk-manual-prov.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/evk-manual-prov.png rename to doc/content/hardware/devices/models/quectel-kg200z/evk-manual-prov.png diff --git a/doc/content/devices/models/quectel-kg200z/kg200z.png b/doc/content/hardware/devices/models/quectel-kg200z/kg200z.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/kg200z.png rename to doc/content/hardware/devices/models/quectel-kg200z/kg200z.png diff --git a/doc/content/devices/models/quectel-kg200z/prov-info.png b/doc/content/hardware/devices/models/quectel-kg200z/prov-info.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/prov-info.png rename to doc/content/hardware/devices/models/quectel-kg200z/prov-info.png diff --git a/doc/content/devices/models/quectel-kg200z/win-com-dev.png b/doc/content/hardware/devices/models/quectel-kg200z/win-com-dev.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/win-com-dev.png rename to doc/content/hardware/devices/models/quectel-kg200z/win-com-dev.png diff --git a/doc/content/devices/models/quectel-kg200z/win-com-prov.png b/doc/content/hardware/devices/models/quectel-kg200z/win-com-prov.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/win-com-prov.png rename to doc/content/hardware/devices/models/quectel-kg200z/win-com-prov.png diff --git a/doc/content/devices/models/quectel-kg200z/win-com.png b/doc/content/hardware/devices/models/quectel-kg200z/win-com.png similarity index 100% rename from doc/content/devices/models/quectel-kg200z/win-com.png rename to doc/content/hardware/devices/models/quectel-kg200z/win-com.png diff --git a/doc/content/devices/models/rakwireless-rak2560/_index.md b/doc/content/hardware/devices/models/rakwireless-rak2560/_index.md similarity index 81% rename from doc/content/devices/models/rakwireless-rak2560/_index.md rename to doc/content/hardware/devices/models/rakwireless-rak2560/_index.md index 6cb3040ee6..d4d0d962a0 100644 --- a/doc/content/devices/models/rakwireless-rak2560/_index.md +++ b/doc/content/hardware/devices/models/rakwireless-rak2560/_index.md @@ -1,12 +1,13 @@ --- title: "RAKwireless RAK2560 Sensor Hub" description: "" -weight: +weight: +aliases: [/devices/models/rakwireless-rak2560] --- {{< figure src="rak2560.png" alt="RAK2560" class="float plain" width="80%">}} -The RAKwireless [RAK2560 WisNode Sensor Hub](https://store.rakwireless.com/products/sensor-hub) is a modular sensor ecosystem consisting of the Sensor Hub Smart Datalogger and multiple pre-configured sensor probes. With pluggable, interchangeable probes, and the option to add third-party sensors to the mixture, the Sensor Hub is a suitable and versatile solution platform for various IoT applications where environmental monitoring is needed. +The RAKwireless [RAK2560 WisNode Sensor Hub](https://store.rakwireless.com/products/sensor-hub) is a modular sensor ecosystem consisting of the Sensor Hub Smart Datalogger and multiple pre-configured sensor probes. With pluggable, interchangeable probes, and the option to add third-party sensors to the mixture, the Sensor Hub is a suitable and versatile solution platform for various IoT applications where environmental monitoring is needed. @@ -18,7 +19,7 @@ After opening the app it will ask you to log in/create an account, but you can c Then press **Start**, select **NFC Activation** and follow the instructions for connecting to the device. -Once you reach the device menu, select the **LORA & LORAWAN PARAMETERS** tab. Open the **Global Settings** dropdown and make sure the **Join mode** and **Region** are set correctly. +Once you reach the device menu, select the **LORA & LORAWAN PARAMETERS** tab. Open the **Global Settings** dropdown and make sure the **Join mode** and **Region** are set correctly. Then open the **LoRaWAN keys, ID, EUI** dropdown and copy the **Device EUI**, **AppEUI** and **AppKey** and save them somewhere as they will be needed later for onboarding. @@ -36,7 +37,7 @@ The device can be onboarded using the **Device Repository** or **manually**. The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the RAK2560, which enables quick and easy registration with {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are RAK2560-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are RAK2560-specific: - End device brand: **RAKwireless Technology Co.** - Model: **RAK2560 Sensor Hub** @@ -49,13 +50,13 @@ After configuring your device, select the **Register end device** button. {{< figure src="rak2560-register.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the RAK2560: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the RAK2560: - LoRaWAN version: **LoRaWAN Specification 1.0.3** -- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** +- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** Then fill in the **Provisioning information**, which were found [in the first steps](#sensor-setup). After configuring your device, select the **Register end device** button. -{{< figure src="manual-register.png" alt="Settings for manual registration" >}} \ No newline at end of file +{{< figure src="manual-register.png" alt="Settings for manual registration" >}} diff --git a/doc/content/devices/models/rakwireless-rak2560/manual-register.png b/doc/content/hardware/devices/models/rakwireless-rak2560/manual-register.png similarity index 100% rename from doc/content/devices/models/rakwireless-rak2560/manual-register.png rename to doc/content/hardware/devices/models/rakwireless-rak2560/manual-register.png diff --git a/doc/content/devices/models/rakwireless-rak2560/rak2560-register.png b/doc/content/hardware/devices/models/rakwireless-rak2560/rak2560-register.png similarity index 100% rename from doc/content/devices/models/rakwireless-rak2560/rak2560-register.png rename to doc/content/hardware/devices/models/rakwireless-rak2560/rak2560-register.png diff --git a/doc/content/devices/models/rakwireless-rak2560/rak2560.png b/doc/content/hardware/devices/models/rakwireless-rak2560/rak2560.png similarity index 100% rename from doc/content/devices/models/rakwireless-rak2560/rak2560.png rename to doc/content/hardware/devices/models/rakwireless-rak2560/rak2560.png diff --git a/doc/content/devices/models/rakwireless-rak2560/wistoolbox.png b/doc/content/hardware/devices/models/rakwireless-rak2560/wistoolbox.png similarity index 100% rename from doc/content/devices/models/rakwireless-rak2560/wistoolbox.png rename to doc/content/hardware/devices/models/rakwireless-rak2560/wistoolbox.png diff --git a/doc/content/devices/models/seeed-E5/AT.png b/doc/content/hardware/devices/models/seeed-E5/AT.png similarity index 100% rename from doc/content/devices/models/seeed-E5/AT.png rename to doc/content/hardware/devices/models/seeed-E5/AT.png diff --git a/doc/content/devices/models/seeed-E5/_index.md b/doc/content/hardware/devices/models/seeed-E5/_index.md similarity index 89% rename from doc/content/devices/models/seeed-E5/_index.md rename to doc/content/hardware/devices/models/seeed-E5/_index.md index 6dc0066a98..0f75e4064b 100644 --- a/doc/content/devices/models/seeed-E5/_index.md +++ b/doc/content/hardware/devices/models/seeed-E5/_index.md @@ -1,7 +1,8 @@ --- title: "Seeed Studio Wio-E5" description: "" -weight: +weight: +aliases: [/devices/models/seeed-E5] --- {{< figure src="wio-e5-mini.png" alt="Image of the Wio-E5 mini" class="float plain" width="80%">}} @@ -30,7 +31,7 @@ The device can be onboarded using the **Device Repository** or **manually**. The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the Wio-E5 mini, which enables quick and easy registration with {{% tts %}}. -To onboard with the **Device Repository**, in the **End device type** section, under **Input method**, select the **Select the end device in the LoRaWAN Device Repository** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Wio-E5 mini-specific: +To onboard with the **Device Repository**, in the **End device type** section, under **Input method**, select the **Select the end device in the LoRaWAN Device Repository** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Wio-E5 mini-specific: - End device brand: **Seeed Technology Co., Ltd** - Model: **Wio-E5 mini (STM32WLE5JC) Dev Board** @@ -39,7 +40,7 @@ To onboard with the **Device Repository**, in the **End device type** section, u {{< figure src="repository-onboard.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the Wio-E5 mini: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the Wio-E5 mini: - LoRaWAN version: **LoRaWAN Specification 1.0.3** - Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** diff --git a/doc/content/devices/models/seeed-E5/manual.png b/doc/content/hardware/devices/models/seeed-E5/manual.png similarity index 100% rename from doc/content/devices/models/seeed-E5/manual.png rename to doc/content/hardware/devices/models/seeed-E5/manual.png diff --git a/doc/content/devices/models/seeed-E5/prov-info.png b/doc/content/hardware/devices/models/seeed-E5/prov-info.png similarity index 100% rename from doc/content/devices/models/seeed-E5/prov-info.png rename to doc/content/hardware/devices/models/seeed-E5/prov-info.png diff --git a/doc/content/devices/models/seeed-E5/repository-onboard.png b/doc/content/hardware/devices/models/seeed-E5/repository-onboard.png similarity index 100% rename from doc/content/devices/models/seeed-E5/repository-onboard.png rename to doc/content/hardware/devices/models/seeed-E5/repository-onboard.png diff --git a/doc/content/devices/models/seeed-E5/wio-e5-mini.png b/doc/content/hardware/devices/models/seeed-E5/wio-e5-mini.png similarity index 100% rename from doc/content/devices/models/seeed-E5/wio-e5-mini.png rename to doc/content/hardware/devices/models/seeed-E5/wio-e5-mini.png diff --git a/doc/content/devices/models/seeed-s210x/_index.md b/doc/content/hardware/devices/models/seeed-s210x/_index.md similarity index 80% rename from doc/content/devices/models/seeed-s210x/_index.md rename to doc/content/hardware/devices/models/seeed-s210x/_index.md index c93a4ab899..f54cdd5d80 100644 --- a/doc/content/devices/models/seeed-s210x/_index.md +++ b/doc/content/hardware/devices/models/seeed-s210x/_index.md @@ -1,12 +1,13 @@ --- title: "Seeed Studio S210x Series" description: "" -weight: +weight: +aliases: [/devices/models/seeed-s210x] --- {{< figure src="s210x.png" alt="Generic Node Sensor Edition" class="float plain" width="80%">}} -The Seeed Studio [S210x Series](https://www.seeedstudio.com/SenseCAP-S2100-LoRaWAN-Data-Logger-p-5361.html) offers users industrial long-distance data acquisition via LoRaWAN. This series is suitable for a wide variety of different industries such as smart agriculture, smart buildings and industrial control. +The Seeed Studio [S210x Series](https://www.seeedstudio.com/SenseCAP-S2100-LoRaWAN-Data-Logger-p-5361.html) offers users industrial long-distance data acquisition via LoRaWAN. This series is suitable for a wide variety of different industries such as smart agriculture, smart buildings and industrial control. @@ -16,7 +17,7 @@ To acquire the provisioning information and properly setup the sensor you must d After opening the app it will ask you to log in/create an account, but you can click on **Skip** in the top right if you don't wish to sign up. -Then click the device you wish to connect to (either the **S210x Sensor** or the **S2100 Data Logger**) and select configuration mode: **Advanced Configuration**. +Then click the device you wish to connect to (either the **S210x Sensor** or the **S2100 Data Logger**) and select configuration mode: **Advanced Configuration**. The app then explains how to enter Bluetooth pairing mode. Press and hold the button under the device for 3 seconds and release when it starts to blink. Once done click **Device is ready for configuration**. It will then proceed to scan for the device, and it should show up in the list. Click on **your device's serial number** to proceed. @@ -32,10 +33,10 @@ The device can be onboarded using the **Device Repository** or **manually**. The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the Seeed Studio, which enables quick and easy registration with {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are S210x-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are S210x-specific: - End device brand: **SenseCAP** -- Model: **S210x** *(replace the 'x' with whichever type you have)* +- Model: **S210x** _(replace the 'x' with whichever type you have)_ - Hardware Ver.: **1.0** - Firmware Ver.: **1.0** @@ -45,13 +46,13 @@ After configuring your device, select the **Register end device** button. {{< figure src="s210x-prov-info-stack.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the S210x: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the S210x: - LoRaWAN version: **LoRaWAN Specification 1.0.2** -- Regional parameters version: **RP001 Regional Parameters 1.0.2 revision B** +- Regional parameters version: **RP001 Regional Parameters 1.0.2 revision B** Then fill in the **Provisioning information**, which were found [in the first steps](#sensor-setup). After configuring your device, select the **Register end device** button. -{{< figure src="manual-register.png" alt="Settings for manual registration" >}} \ No newline at end of file +{{< figure src="manual-register.png" alt="Settings for manual registration" >}} diff --git a/doc/content/devices/models/seeed-s210x/manual-register.png b/doc/content/hardware/devices/models/seeed-s210x/manual-register.png similarity index 100% rename from doc/content/devices/models/seeed-s210x/manual-register.png rename to doc/content/hardware/devices/models/seeed-s210x/manual-register.png diff --git a/doc/content/devices/models/seeed-s210x/s210x-prov-info-stack.png b/doc/content/hardware/devices/models/seeed-s210x/s210x-prov-info-stack.png similarity index 100% rename from doc/content/devices/models/seeed-s210x/s210x-prov-info-stack.png rename to doc/content/hardware/devices/models/seeed-s210x/s210x-prov-info-stack.png diff --git a/doc/content/devices/models/seeed-s210x/s210x.png b/doc/content/hardware/devices/models/seeed-s210x/s210x.png similarity index 100% rename from doc/content/devices/models/seeed-s210x/s210x.png rename to doc/content/hardware/devices/models/seeed-s210x/s210x.png diff --git a/doc/content/devices/models/seeed-s210x/sensecap-app-settings.png b/doc/content/hardware/devices/models/seeed-s210x/sensecap-app-settings.png similarity index 100% rename from doc/content/devices/models/seeed-s210x/sensecap-app-settings.png rename to doc/content/hardware/devices/models/seeed-s210x/sensecap-app-settings.png diff --git a/doc/content/devices/models/sensative-strips/_index.md b/doc/content/hardware/devices/models/sensative-strips/_index.md similarity index 81% rename from doc/content/devices/models/sensative-strips/_index.md rename to doc/content/hardware/devices/models/sensative-strips/_index.md index 665b71d2f2..66089c8102 100644 --- a/doc/content/devices/models/sensative-strips/_index.md +++ b/doc/content/hardware/devices/models/sensative-strips/_index.md @@ -1,7 +1,8 @@ --- title: "Sensative Strips" description: "" -weight: +weight: +aliases: [/devices/models/sensative-strips] --- {{< figure src="strip.png" alt="Generic Node Sensor Edition" class="float plain" width="80%">}} @@ -12,7 +13,7 @@ The Sensative [Strips](https://sensative.com/sensors/strips-sensors-for-lorawan/ ## Provisioning Information -Provisioning information (the **JoinEUI/AppEUI**, **DevEUI** and **AppKey**) can be found on a sticker inside the box. +Provisioning information (the **JoinEUI/AppEUI**, **DevEUI** and **AppKey**) can be found on a sticker inside the box. {{< figure src="strips-prov-info.png" alt="Strips provisioning information" width="50%">}} @@ -24,7 +25,7 @@ The device can be onboarded using the **Device Repository** or by **manually** e The [LoRaWAN® Device repository](https://github.com/TheThingsNetwork/lorawan-devices) comprises over 800 end-device profiles, including the Sensative Strips, which enables quick and easy registration with {{% tts %}}. -In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Strips-specific: +In the **End device type** section, under **Input method**, select either the **Select the end device in the LoRaWAN Device Repository** or **Enter end device specifics manually** option. The [Onboarding devices without QR codes]({{< ref "/hardware/devices/adding-devices/#onboarding-devices-without-qr-codes" >}}) section of the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide explains this procedure in detail. Following details are Strips-specific: - End device brand: **Sensative AB** - Model: **Strips - Multisensor** @@ -37,10 +38,10 @@ After configuring your device, select the **Register end device** button. {{< figure src="strips-prov-info-stack.png" alt="Settings for registration through device repository" >}} -If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the Strips: +If you prefer onboarding **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the Strips: - LoRaWAN version: **LoRaWAN Specification 1.0.3** -- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** +- Regional parameters version: **RP001 Regional Parameters 1.0.3 revision A** Then fill in the **Provisioning information**, which were found [in the first steps](#provisioning-information). @@ -56,6 +57,6 @@ If you have removed the magnets, and you need to manually join the device, take {{< figure src="strips-joining.png" alt="Moving magnet to the end of the strips" class="plain" width="100%" >}} -{{< note >}} **One long green LED blink** signals the device has successfully joined to {{% tts %}}. +{{< note >}} **One long green LED blink** signals the device has successfully joined to {{% tts %}}. **5 red blinks** means the device failed to join to the network. {{}} diff --git a/doc/content/devices/models/sensative-strips/manual-register.png b/doc/content/hardware/devices/models/sensative-strips/manual-register.png similarity index 100% rename from doc/content/devices/models/sensative-strips/manual-register.png rename to doc/content/hardware/devices/models/sensative-strips/manual-register.png diff --git a/doc/content/devices/models/sensative-strips/strip.png b/doc/content/hardware/devices/models/sensative-strips/strip.png similarity index 100% rename from doc/content/devices/models/sensative-strips/strip.png rename to doc/content/hardware/devices/models/sensative-strips/strip.png diff --git a/doc/content/devices/models/sensative-strips/strips-joining.png b/doc/content/hardware/devices/models/sensative-strips/strips-joining.png similarity index 100% rename from doc/content/devices/models/sensative-strips/strips-joining.png rename to doc/content/hardware/devices/models/sensative-strips/strips-joining.png diff --git a/doc/content/devices/models/sensative-strips/strips-prov-info-stack.png b/doc/content/hardware/devices/models/sensative-strips/strips-prov-info-stack.png similarity index 100% rename from doc/content/devices/models/sensative-strips/strips-prov-info-stack.png rename to doc/content/hardware/devices/models/sensative-strips/strips-prov-info-stack.png diff --git a/doc/content/devices/models/sensative-strips/strips-prov-info.png b/doc/content/hardware/devices/models/sensative-strips/strips-prov-info.png similarity index 100% rename from doc/content/devices/models/sensative-strips/strips-prov-info.png rename to doc/content/hardware/devices/models/sensative-strips/strips-prov-info.png diff --git a/doc/content/devices/models/sg-f1/connect-device.png b/doc/content/hardware/devices/models/sg-f1/connect-device.png similarity index 100% rename from doc/content/devices/models/sg-f1/connect-device.png rename to doc/content/hardware/devices/models/sg-f1/connect-device.png diff --git a/doc/content/devices/models/sg-f1/ctrl-install.png b/doc/content/hardware/devices/models/sg-f1/ctrl-install.png similarity index 100% rename from doc/content/devices/models/sg-f1/ctrl-install.png rename to doc/content/hardware/devices/models/sg-f1/ctrl-install.png diff --git a/doc/content/devices/models/sg-f1/f1-activ-info.png b/doc/content/hardware/devices/models/sg-f1/f1-activ-info.png similarity index 100% rename from doc/content/devices/models/sg-f1/f1-activ-info.png rename to doc/content/hardware/devices/models/sg-f1/f1-activ-info.png diff --git a/doc/content/devices/models/sg-f1/f1-board.png b/doc/content/hardware/devices/models/sg-f1/f1-board.png similarity index 100% rename from doc/content/devices/models/sg-f1/f1-board.png rename to doc/content/hardware/devices/models/sg-f1/f1-board.png diff --git a/doc/content/devices/models/sg-f1/f1-manual-register.png b/doc/content/hardware/devices/models/sg-f1/f1-manual-register.png similarity index 100% rename from doc/content/devices/models/sg-f1/f1-manual-register.png rename to doc/content/hardware/devices/models/sg-f1/f1-manual-register.png diff --git a/doc/content/devices/models/sg-f1/index.md b/doc/content/hardware/devices/models/sg-f1/index.md similarity index 93% rename from doc/content/devices/models/sg-f1/index.md rename to doc/content/hardware/devices/models/sg-f1/index.md index 3bcef62ec8..c76b95a81a 100644 --- a/doc/content/devices/models/sg-f1/index.md +++ b/doc/content/hardware/devices/models/sg-f1/index.md @@ -1,7 +1,8 @@ --- title: "SG Wireless F1 Starter Kit" description: "" -weight: +weight: +aliases: [/devices/models/sg-f1] --- {{< figure src="f1-board.png" alt="" class="float plain" width="80%">}} @@ -20,7 +21,7 @@ Open Visual Studio Code and navigate to **Extensions**. Search for `ctrlr` and c {{< figure src="ctrl-install.png" alt="" >}} -Connect your F1 Starter Kit to your PC and turn it on (SW200 switch from OFF to ON). +Connect your F1 Starter Kit to your PC and turn it on (SW200 switch from OFF to ON). Head over to the CtrlR tab and click on the **Connect device** button (lightning bolt) for the device. @@ -114,12 +115,13 @@ Now we have our code in place, but we need credentials for connecting it to {{% The device has to be onboarded **manually**. -To onboard **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the F1: +To onboard **manually**, in the **End device type** section, under **Input Method**, select the **Enter end device specifics manually** option. The [Manually adding devices]({{< ref "/hardware/devices/adding-devices/manual/" >}}) and [Over the Air Activation (OTAA)]({{< ref "/hardware/devices/adding-devices/manual/otaa/" >}}) guides explain this procedure in detail. Following details are specific to the F1: - LoRaWAN version: **LoRaWAN Specification 1.1.0** - Regional parameters version: **RP001 Regional Parameters 1.1 revision B** For the Provisioning information, enter the following details: + - JoinEUI: `0000000000000000` - DevEUI, AppKey and NwkKey: **Generate by clicking the Generate button.** diff --git a/doc/content/devices/models/sg-f1/main-file.png b/doc/content/hardware/devices/models/sg-f1/main-file.png similarity index 100% rename from doc/content/devices/models/sg-f1/main-file.png rename to doc/content/hardware/devices/models/sg-f1/main-file.png diff --git a/doc/content/devices/models/sg-f1/open-device.png b/doc/content/hardware/devices/models/sg-f1/open-device.png similarity index 100% rename from doc/content/devices/models/sg-f1/open-device.png rename to doc/content/hardware/devices/models/sg-f1/open-device.png diff --git a/doc/content/devices/models/the-things-node/ActivationInformation.png b/doc/content/hardware/devices/models/the-things-node/ActivationInformation.png similarity index 100% rename from doc/content/devices/models/the-things-node/ActivationInformation.png rename to doc/content/hardware/devices/models/the-things-node/ActivationInformation.png diff --git a/doc/content/devices/models/the-things-node/AddEndDevice.png b/doc/content/hardware/devices/models/the-things-node/AddEndDevice.png similarity index 100% rename from doc/content/devices/models/the-things-node/AddEndDevice.png rename to doc/content/hardware/devices/models/the-things-node/AddEndDevice.png diff --git a/doc/content/devices/models/the-things-node/ConnectUsbCable.png b/doc/content/hardware/devices/models/the-things-node/ConnectUsbCable.png similarity index 100% rename from doc/content/devices/models/the-things-node/ConnectUsbCable.png rename to doc/content/hardware/devices/models/the-things-node/ConnectUsbCable.png diff --git a/doc/content/devices/models/the-things-node/NodeOpenCase.jpg b/doc/content/hardware/devices/models/the-things-node/NodeOpenCase.jpg similarity index 100% rename from doc/content/devices/models/the-things-node/NodeOpenCase.jpg rename to doc/content/hardware/devices/models/the-things-node/NodeOpenCase.jpg diff --git a/doc/content/devices/models/the-things-node/RegisterThingsNodeP1.png b/doc/content/hardware/devices/models/the-things-node/RegisterThingsNodeP1.png similarity index 100% rename from doc/content/devices/models/the-things-node/RegisterThingsNodeP1.png rename to doc/content/hardware/devices/models/the-things-node/RegisterThingsNodeP1.png diff --git a/doc/content/devices/models/the-things-node/RegisterThingsNodeP2.png b/doc/content/hardware/devices/models/the-things-node/RegisterThingsNodeP2.png similarity index 100% rename from doc/content/devices/models/the-things-node/RegisterThingsNodeP2.png rename to doc/content/hardware/devices/models/the-things-node/RegisterThingsNodeP2.png diff --git a/doc/content/devices/models/the-things-node/TheThingsNetworkArduinoLib.png b/doc/content/hardware/devices/models/the-things-node/TheThingsNetworkArduinoLib.png similarity index 100% rename from doc/content/devices/models/the-things-node/TheThingsNetworkArduinoLib.png rename to doc/content/hardware/devices/models/the-things-node/TheThingsNetworkArduinoLib.png diff --git a/doc/content/devices/models/the-things-node/TheThingsNode.jpg b/doc/content/hardware/devices/models/the-things-node/TheThingsNode.jpg similarity index 100% rename from doc/content/devices/models/the-things-node/TheThingsNode.jpg rename to doc/content/hardware/devices/models/the-things-node/TheThingsNode.jpg diff --git a/doc/content/devices/models/the-things-node/TheThingsNodeArduinoLib.png b/doc/content/hardware/devices/models/the-things-node/TheThingsNodeArduinoLib.png similarity index 100% rename from doc/content/devices/models/the-things-node/TheThingsNodeArduinoLib.png rename to doc/content/hardware/devices/models/the-things-node/TheThingsNodeArduinoLib.png diff --git a/doc/content/devices/models/the-things-node/UplinkPayloadFormatter.png b/doc/content/hardware/devices/models/the-things-node/UplinkPayloadFormatter.png similarity index 100% rename from doc/content/devices/models/the-things-node/UplinkPayloadFormatter.png rename to doc/content/hardware/devices/models/the-things-node/UplinkPayloadFormatter.png diff --git a/doc/content/devices/models/the-things-node/_index.md b/doc/content/hardware/devices/models/the-things-node/_index.md similarity index 99% rename from doc/content/devices/models/the-things-node/_index.md rename to doc/content/hardware/devices/models/the-things-node/_index.md index b3926cea57..b543714ee0 100755 --- a/doc/content/devices/models/the-things-node/_index.md +++ b/doc/content/hardware/devices/models/the-things-node/_index.md @@ -2,6 +2,7 @@ title: "The Things Node" description: "" weight: +aliases: [/devices/models/the-things-node] --- {{< figure src="TheThingsNode.jpg" alt="The Things Node" class="float plain" >}} @@ -196,7 +197,7 @@ Under the **Enter registration data**, select/fill the following mandatory field - AppEUI – Copy the **AppEUI** from the output printed by the **_DeviceInfo_** sketch. - DevEUI – Copy the **DevEUI** from the output printed by the **_DeviceInfo_** sketch. - AppKey – Select **Generate** button to generate an **AppKey**. -- End device ID – Give your device a unique human-readable [identifier]({{< ref "reference/id-eui-constraints" >}}). +- End device ID – Give your device a unique human-readable [identifier]({{< ref "/concepts/architecture/id-eui-constraints" >}}). Select the **Register end device** button. diff --git a/doc/content/devices/models/the-things-node/additional-boards-manager.png b/doc/content/hardware/devices/models/the-things-node/additional-boards-manager.png similarity index 100% rename from doc/content/devices/models/the-things-node/additional-boards-manager.png rename to doc/content/hardware/devices/models/the-things-node/additional-boards-manager.png diff --git a/doc/content/devices/models/the-things-node/decoded-payload.png b/doc/content/hardware/devices/models/the-things-node/decoded-payload.png similarity index 100% rename from doc/content/devices/models/the-things-node/decoded-payload.png rename to doc/content/hardware/devices/models/the-things-node/decoded-payload.png diff --git a/doc/content/devices/models/the-things-node/payload-formatter.png b/doc/content/hardware/devices/models/the-things-node/payload-formatter.png similarity index 100% rename from doc/content/devices/models/the-things-node/payload-formatter.png rename to doc/content/hardware/devices/models/the-things-node/payload-formatter.png diff --git a/doc/content/devices/models/the-things-node/sparkfun-avr-boards.png b/doc/content/hardware/devices/models/the-things-node/sparkfun-avr-boards.png similarity index 100% rename from doc/content/devices/models/the-things-node/sparkfun-avr-boards.png rename to doc/content/hardware/devices/models/the-things-node/sparkfun-avr-boards.png diff --git a/doc/content/devices/models/the-things-uno/AddApplication.png b/doc/content/hardware/devices/models/the-things-uno/AddApplication.png similarity index 100% rename from doc/content/devices/models/the-things-uno/AddApplication.png rename to doc/content/hardware/devices/models/the-things-uno/AddApplication.png diff --git a/doc/content/devices/models/the-things-uno/AddEndDevice.png b/doc/content/hardware/devices/models/the-things-uno/AddEndDevice.png similarity index 100% rename from doc/content/devices/models/the-things-uno/AddEndDevice.png rename to doc/content/hardware/devices/models/the-things-uno/AddEndDevice.png diff --git a/doc/content/devices/models/the-things-uno/ApplicationOverview.png b/doc/content/hardware/devices/models/the-things-uno/ApplicationOverview.png similarity index 100% rename from doc/content/devices/models/the-things-uno/ApplicationOverview.png rename to doc/content/hardware/devices/models/the-things-uno/ApplicationOverview.png diff --git a/doc/content/devices/models/the-things-uno/Board.png b/doc/content/hardware/devices/models/the-things-uno/Board.png similarity index 100% rename from doc/content/devices/models/the-things-uno/Board.png rename to doc/content/hardware/devices/models/the-things-uno/Board.png diff --git a/doc/content/devices/models/the-things-uno/CreateApplication.png b/doc/content/hardware/devices/models/the-things-uno/CreateApplication.png similarity index 100% rename from doc/content/devices/models/the-things-uno/CreateApplication.png rename to doc/content/hardware/devices/models/the-things-uno/CreateApplication.png diff --git a/doc/content/devices/models/the-things-uno/LibraryManager.png b/doc/content/hardware/devices/models/the-things-uno/LibraryManager.png similarity index 100% rename from doc/content/devices/models/the-things-uno/LibraryManager.png rename to doc/content/hardware/devices/models/the-things-uno/LibraryManager.png diff --git a/doc/content/devices/models/the-things-uno/PayloadFormatter.png b/doc/content/hardware/devices/models/the-things-uno/PayloadFormatter.png similarity index 100% rename from doc/content/devices/models/the-things-uno/PayloadFormatter.png rename to doc/content/hardware/devices/models/the-things-uno/PayloadFormatter.png diff --git a/doc/content/devices/models/the-things-uno/Port.png b/doc/content/hardware/devices/models/the-things-uno/Port.png similarity index 100% rename from doc/content/devices/models/the-things-uno/Port.png rename to doc/content/hardware/devices/models/the-things-uno/Port.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceManualABP.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualABP.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceManualABP.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualABP.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceManualCommon.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualCommon.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceManualCommon.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualCommon.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceManualOTAA.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualOTAA.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceManualOTAA.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceManualOTAA.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceRepo.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepo.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceRepo.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepo.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceRepoABP.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepoABP.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceRepoABP.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepoABP.png diff --git a/doc/content/devices/models/the-things-uno/RegisterEndDeviceRepoOTAA.png b/doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepoOTAA.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterEndDeviceRepoOTAA.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterEndDeviceRepoOTAA.png diff --git a/doc/content/devices/models/the-things-uno/RegisterTheThingsUnoData.png b/doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoData.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterTheThingsUnoData.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoData.png diff --git a/doc/content/devices/models/the-things-uno/RegisterTheThingsUnoDeviceRepository.png b/doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoDeviceRepository.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterTheThingsUnoDeviceRepository.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoDeviceRepository.png diff --git a/doc/content/devices/models/the-things-uno/RegisterTheThingsUnoParameters.png b/doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoParameters.png similarity index 100% rename from doc/content/devices/models/the-things-uno/RegisterTheThingsUnoParameters.png rename to doc/content/hardware/devices/models/the-things-uno/RegisterTheThingsUnoParameters.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsStackConsole1.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsStackConsole1.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsStackConsole1.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsStackConsole1.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUno.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUno.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUno.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUno.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUnoJoinAccept.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUnoJoinAccept.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUnoJoinAccept.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUnoJoinAccept.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUnoLiveData.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUnoLiveData.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUnoLiveData.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUnoLiveData.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUnoOverview.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUnoOverview.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUnoOverview.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUnoOverview.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUnoRawData.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUnoRawData.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUnoRawData.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUnoRawData.png diff --git a/doc/content/devices/models/the-things-uno/TheThingsUnoRawData2.png b/doc/content/hardware/devices/models/the-things-uno/TheThingsUnoRawData2.png similarity index 100% rename from doc/content/devices/models/the-things-uno/TheThingsUnoRawData2.png rename to doc/content/hardware/devices/models/the-things-uno/TheThingsUnoRawData2.png diff --git a/doc/content/devices/models/the-things-uno/Things Uno.png b/doc/content/hardware/devices/models/the-things-uno/Things Uno.png similarity index 100% rename from doc/content/devices/models/the-things-uno/Things Uno.png rename to doc/content/hardware/devices/models/the-things-uno/Things Uno.png diff --git a/doc/content/devices/models/the-things-uno/_index.md b/doc/content/hardware/devices/models/the-things-uno/_index.md similarity index 97% rename from doc/content/devices/models/the-things-uno/_index.md rename to doc/content/hardware/devices/models/the-things-uno/_index.md index 9d1ebac31a..473e54e2f6 100755 --- a/doc/content/devices/models/the-things-uno/_index.md +++ b/doc/content/hardware/devices/models/the-things-uno/_index.md @@ -2,7 +2,7 @@ title: "The Things Uno" description: "" weight: -aliases: ["/devices/the-things-uno"] +aliases: [/devices/the-things-uno, /devices/models/the-things-uno] --- {{< figure src="TheThingsUno.png" alt="The Things Uno" class="float plain" >}} @@ -206,7 +206,7 @@ Under **Select the end device**, select the following mandatory fields. - Brand - `The Things Products` - Model – `The Things Uno` - Hardware Ver. – `1.0` -- Firmware Ver. – `quickstart` or `abp`. We recommend you to use `quickstart` as it supports [OTAA]({{< ref "devices/concepts/abp-vs-otaa#otaa" >}}). +- Firmware Ver. – `quickstart` or `abp`. We recommend you to use `quickstart` as it supports [OTAA]({{< ref "/hardware/devices/concepts/abp-vs-otaa#otaa" >}}). - Profile (Region) – Choose `EU_863_870` or `US_902_928` to match with your board. {{< figure src="RegisterEndDeviceRepo.png" alt="Register End Device from LoRaWAN repository" >}} @@ -219,7 +219,7 @@ If you have selected `quickstart` from the **Firmware Ver.** in the previous ste - AppEUI – Copy the **AppEUI** from the output printed by the **_TheThingsUnoTest_** sketch. - DevEUI – Copy the **DevEUI** from the output printed by the **_TheThingsUnoTest_** sketch. - AppKey – Select **Generate** button to generate an **AppKey**. -- End device ID – Give your device a unique human-readable [identifier]({{< ref "reference/id-eui-constraints" >}}). +- End device ID – Give your device a unique human-readable [identifier]({{< ref "/concepts/architecture/id-eui-constraints" >}}). Select the **Register end device** button. @@ -231,7 +231,7 @@ If you have selected `abp` from the **Firmware Ver.** in the previous step: - Device address - Select **Generate** button. - AppSKey– Select **Generate** button. - NwkSKey– Select **Generate** button. -- End device ID – Give your device a unique human-readable [identifier]({{< ref "reference/id-eui-constraints" >}}). +- End device ID – Give your device a unique human-readable [identifier]({{< ref "/concepts/architecture/id-eui-constraints" >}}). Select the **Register end device** button. diff --git a/doc/content/devices/troubleshooting/_index.md b/doc/content/hardware/devices/troubleshooting/_index.md similarity index 86% rename from doc/content/devices/troubleshooting/_index.md rename to doc/content/hardware/devices/troubleshooting/_index.md index f1faef6c25..ec95b3cf91 100644 --- a/doc/content/devices/troubleshooting/_index.md +++ b/doc/content/hardware/devices/troubleshooting/_index.md @@ -1,6 +1,7 @@ --- title: "Troubleshooting Devices" description: "" +aliases: [/devices/troubleshooting] --- This section provides help for common issues and frequently asked questions you may have when adding devices. @@ -11,7 +12,7 @@ This section provides help for common issues and frequently asked questions you Here are some common errors and solutions: -- **ID already taken**: Another end device in the application is using this ID. Choose a different Device ID. See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for more information. +- **ID already taken**: Another end device in the application is using this ID. Choose a different Device ID. See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for more information. - **An end device with JoinEUI `` and DevEUI `` is already registered as `` in application ``**: Within {{% tts %}} deployment, only a single end device can be registered with a certain combination of DevEUI and JoinEUI/AppEUI. If you previously registered an end device with this combination of DevEUI and JoinEUI, you can delete the existing device and repeat the registration. You can also register the device using another JoinEUI, but keep in mind that you will need to configure that JoinEUI in the device as well. - **An end device with JoinEUI `` and DevEUI `` is already registered in another tenant**: Within {{% tts %}} deployment, only a single end device can be registered with a certain combination of DevEUI and JoinEUI/AppEUI, across all tenants. If someone already registered an end device with this combination of DevEUI and JoinEUI, you can contact the manufacturer to check if your EUIs are correct and/or provide you new EUIs. You can also register the device using another JoinEUI, but keep in mind that you will need to configure that JoinEUI in the device as well. - **Duplicate identifiers**: This error occurs when an end device is deleted from the Identity Server, but the device entry persists in the Join Server, Network Server and Application Server databases. In this case, the device will not appear in {{% tts %}} Console, so you need to check if it is present in the Join Server/Network Server/Application Server components using the following command: @@ -28,7 +29,7 @@ Here are some common errors and solutions: ## I cannot access my device in {{% tts %}} Console. -If you cannot access your device in the Console, i.e. you're seeing the `An unknown error occured. Please try again later...` error, your device is probably not properly provisioned in all {{% tts %}} components (Identity Server, Join Server, Network Server and Application Server). For example, this might happen if you tried to create your device [Using the API]({{< ref "/devices/adding-devices/manual" >}}), but you haven't created it properly in all four server components. +If you cannot access your device in the Console, i.e. you're seeing the `An unknown error occured. Please try again later...` error, your device is probably not properly provisioned in all {{% tts %}} components (Identity Server, Join Server, Network Server and Application Server). For example, this might happen if you tried to create your device [Using the API]({{< ref "/hardware/devices/adding-devices/manual" >}}), but you haven't created it properly in all four server components. This error can be resolved if you delete your device from all four above mentioned server components, and recreate it from scratch. @@ -56,15 +57,15 @@ To delete your device from Join Server, Network Server and/or Application Server curl -X DELETE 'https://thethings.example.com/api/v3//applications//devices/' -H 'Accept: application/json' -H 'Authorization: Bearer ' ``` -Next, recreate your device as documented in the [Using the API]({{< ref "/devices/adding-devices/manual" >}}). +Next, recreate your device as documented in the [Using the API]({{< ref "/hardware/devices/adding-devices/manual" >}}). ## I see "Unable to access the end device" error If you're facing this error, your end device has probably been configured with incorrect server addresses, so {{% tts %}} Console treats and shows it as in `Other cluster`. To regain access to your end device, you should configure it with the correct server addresses. That can be done by accessing device's **General settings** and configuring server addresses, or by deleting and recreating the end device with appropriate server addresses. - + ## How do I see device events? -Device event logs can be found in the console in the device's general information page. See [Working with Events]({{< ref "the-things-stack/management/events" >}}) for other ways of subscribing to events. +Device event logs can be found in the console in the device's general information page. See [Working with Events]({{< ref "/concepts/features/events" >}}) for other ways of subscribing to events. ## I see no Join Requests from my device in {{% tts %}}. @@ -96,7 +97,7 @@ It is possible that your device is sending Join Requests on non-default frequenc - Check for the errors and solutions listed above - If the Network Server is processing Join Requests and scheduling Join Accepts, check the gateway events and see whether the Join Accept downlink messages are being scheduled by the gateway -- If you see any deviation in scheduling Join Accept downlinks from the gateway, follow the [Troubleshooting Gateways]({{< ref "/gateways/troubleshooting" >}}) +- If you see any deviation in scheduling Join Accept downlinks from the gateway, follow the [Troubleshooting Gateways]({{< ref "/hardware/gateways/troubleshooting" >}}) - Did you schedule a command to reset your device as a confirmed downlink? If yes, the downlink confirmation will never arrive. You should always schedule the reset command as an unconfirmed downlink. However, if your device is already affected, use the **Reset session and MAC state** option under **Network layer** in your device's settings, then manually re-join the device. ## I see the "The LoRaWAN version `` does not support the `` frequency plan. Please choose a different MAC version or frequency plan" error while registering a device in {{% tts %}}. @@ -118,7 +119,7 @@ Here are some common causes and solutions: - The device has no network coverage. Check if your device has a network coverage from any of the gateways registered in your tenant. - The device is transmitting data in a different FSB (frequency sub-band) than the one that the gateway is listening on. Check if the frequency plan and FSB that the gateway listens on are correctly configured on {{% tts %}} and on the device. - The gateway is not receiving uplinks due to hardware issues. Check if your gateway is receiving uplinks by observing its debug logs. -- The gateway is not forwarding received uplinks to the Network Server. Check your gateway's debug logs for any errors or warnings. Refer to the [Troubleshooting Gateways guide]({{< ref "/gateways/troubleshooting" >}}). +- The gateway is not forwarding received uplinks to the Network Server. Check your gateway's debug logs for any errors or warnings. Refer to the [Troubleshooting Gateways guide]({{< ref "/hardware/gateways/troubleshooting" >}}). ## {{% tts %}} is no longer receiving uplinks from my device. What do I do? @@ -149,7 +150,7 @@ The `ns.down.data.schedule.fail` event, that can be noticed in the Live data tab The `ns.down.data.schedule.fail` event usually occurs with the following errors: - `no_absolute_gateway_time`: Downlinks are being scheduled with the absolute time, and the absolute time of the Gateway Server is not in sync with the absolute time of the gateway. To sync them, a gateway has to either report its GPS time, or transmit five downlink frames in order for Gateway Server to infer its absolute time by observing RTTs. -- `scheduling_conflict`: Devices are synchronized, i.e. a number of devices are sending joins or uplinks at the same time. To avoid device synchronization, devices need to be configured to initiate joins or send uplinks at random times or with random delays. You can also try with improving the network coverage in your area. See [Best Practices]({{< ref "/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}) for more info about device synchronization. +- `scheduling_conflict`: Devices are synchronized, i.e. a number of devices are sending joins or uplinks at the same time. To avoid device synchronization, devices need to be configured to initiate joins or send uplinks at random times or with random delays. You can also try with improving the network coverage in your area. See [Best Practices]({{< ref "/hardware/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}) for more info about device synchronization. We also advise to double check your network connection. If the connection between the gateway and the Network Server is slow, downlink messages could be sent too late. For example, this can happen in case of: @@ -163,14 +164,14 @@ When using the [AWS IoT integration]({{< ref "/integrations/cloud-integrations/a When this option is enabled, encryption and decryption at the Application Server is disabled, i.e. the `skip_payload_crypto` field for the end device is enabled on the application level. The downlinks are expected to be scheduled from the AWS IoT, and not from the {{% tts %}}. -Read more about skipping payload crypto option on an [application level]({{< ref "/integrations/adding-applications#payload-encryption-and-decryption" >}}) or on a [device level]({{< ref "/devices/adding-devices#application-layer-settings" >}}). +Read more about skipping payload crypto option on an [application level]({{< ref "/integrations/adding-applications#payload-encryption-and-decryption" >}}) or on a [device level]({{< ref "/hardware/devices/adding-devices#application-layer-settings" >}}). ## {{% tts %}} intermittently receives uplinks from my device, but with the FCnt gap. Your device probably does not have a good network coverage. Some common reasons: - The device is using SF7, while it should be using a higher SF for better coverage and reach. -- There might be a conflict in receiving uplinks due to [synchronization of devices]({{< ref "/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}). +- There might be a conflict in receiving uplinks due to [synchronization of devices]({{< ref "/hardware/devices/concepts/best-practices#synchronization-backoff-and-jitter" >}}). Check your network coverage, and make sure your devices are within your gateway's reach and are using a suitable SF. @@ -182,27 +183,20 @@ Possible causes and solutions: - The uplinks could be coming from other devices in the gateways range, that are not registered in {{% tts %}}. In this case, you can just ignore them. - If you are facing this while trying to activate a device, please double-check that the DevEUI and JoinEUI/AppEUI on {{% tts %}} and on your device match. - FCnt mismatch - - For ABP devices, the FCnt mismatch might occur if the device resets while the **Reset Frame Counters** option for the device is disabled. Try enabling the **Reset Frame Counters** option in the device's overview in {{% tts %}} Console, or by setting [MAC commands]({{< ref "/devices/configuring-devices/mac-settings#available-mac-settings" >}}) using the CLI. + - For ABP devices, the FCnt mismatch might occur if the device resets while the **Reset Frame Counters** option for the device is disabled. Try enabling the **Reset Frame Counters** option in the device's overview in {{% tts %}} Console, or by setting [MAC commands]({{< ref "/hardware/devices/configuring-devices/mac-settings#available-mac-settings" >}}) using the CLI. - For OTAA devices, the FCnt mismatch might occur due to missing packets. The maximum FCnt gap between two consecutive uplinks is `16384` according to the LoRaWAN specification. Try re-joining your OTAA device. - Using inappropriate frequencies - - This case applies only to ABP devices and EU/IN/AS frequency bands. Since the Network Server is initially accepting uplinks from devices only in default channels, uplinks from the device that is using non-default channels are dropped. In this case, **Factory Preset Frequencies** have to be set either in device's overview in {{% tts %}} Console, or by setting [MAC commands]({{< ref "/devices/configuring-devices/mac-settings#available-mac-settings" >}}) using the CLI. If these settings are applied to an existing device, you might need to reset the device as well. + - This case applies only to ABP devices and EU/IN/AS frequency bands. Since the Network Server is initially accepting uplinks from devices only in default channels, uplinks from the device that is using non-default channels are dropped. In this case, **Factory Preset Frequencies** have to be set either in device's overview in {{% tts %}} Console, or by setting [MAC commands]({{< ref "/hardware/devices/configuring-devices/mac-settings#available-mac-settings" >}}) using the CLI. If these settings are applied to an existing device, you might need to reset the device as well. - Session keys mismatch - For ABP devices, if there is a mismatch between session keys (AppSKey and NwkSKey) that are hardcoded in the device and those used when registering the device on {{% tts %}}, uplinks will not be seen in the device's Live data tab. Please cross-check that your device's session keys match the ones used upon registration on {{% tts %}}. -This problem can also occur after [migrating an active device session]({{< ref "/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session" >}}) from {{% ttnv2 %}} to {{% tts %}}, for devices that transmit uplinks on frequencies that are not part of the standard [frequency plans]({{< ref "/reference/frequency-plans" >}}) used by {{% tts %}}. The issue arises from the fact that factory preset frequencies were not stored in {{% ttnv2 %}}, so they are not present in the [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}) used for importing devices in {{% tts %}}. There are two possible solutions: - -- If the end device can be reset, i.e. if it can perform a re-join to {{% tts %}} network or at least reset frame counters (for ABP devices) - - Go to **General settings** in the device overview in {{% tts %}} Console, navigate to **Network layer → Advanced MAC settings** and set the **Factory preset frequencies**, then click the **Reset session and MAC state** button. By resetting the device, a new session will be established with {{% tts %}} Network Server and the uplinks on the defined frequencies will be accepted. -- If the end device cannot be reset - - Changes related to factory preset frequencies take effect only after a device reset, but applying the fix explained above will break the existing device session. If you really want to keep the active session or simply cannot reset the device physically, you can try adding the frequency channels manually in the `mac_state.current.channels` and `mac_state.desired_channels` parameters of the [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}) before you import it to {{% tts %}}. - ## I notice a delay in scheduling Class C downlinks. What can I do to fix it? Here are some common causes of a delay in scheduling downlinks for Class C devices: - **The `Supports class C` option not enabled in device settings**: If this option is not enabled, {{% tts %}} treats the device as a class A device, so it schedules a downlink only after receiving an uplink. Find and enable this option under **General settings → Network layer → LoRaWAN class capabilities**, then trigger your device for a re-join in order for changes to have an effect. - **Device not responding immediately on a confirmed downlink or a MAC command**: Your device might be configured to respond to confirmed downlinks and/or MAC commands with the next uplink, instead of immediately. All downlinks scheduled after the confirmed downlink or a MAC command will be in a pending state until the device responds with an ACK or a MAC answer. You can check pending requests with `ttn-lw-cli end-devices get --application-id --device-id --mac-state > .mac-state.txt`. If the device does not respond in the `class-c-timeout` interval (5 minutes by default), all pending downlinks will be discarded. In this case, you need to configure your device to immediately answer confirmed downlinks and MAC commands. -- **Downlink failure**: If you have already addressed the above mentioned cases, but you are still experiencing a delay in scheduling downlinks, the downlinks might not be reaching the device. Please check your end device's debug logs, and your gateway's packet forwarder logs for errors. Find the common gateway-related issues and solutions in the [Troubleshooting Gateways]({{< ref "/gateways/troubleshooting" >}}) section. +- **Downlink failure**: If you have already addressed the above mentioned cases, but you are still experiencing a delay in scheduling downlinks, the downlinks might not be reaching the device. Please check your end device's debug logs, and your gateway's packet forwarder logs for errors. Find the common gateway-related issues and solutions in the [Troubleshooting Gateways]({{< ref "/hardware/gateways/troubleshooting" >}}) section. ## I see downlinks being sent after every uplink message, but I did not schedule any. What are those downlinks? @@ -224,11 +218,11 @@ This error indicates that your end device was added from the [Device Repository] The `COLLISION_PACKET` error occurs when downlink transmissions overlap - this happens when two or more packets overlap in time and use the same spreading factor, bandwith and frequency plan settings. -To avoid packet collisions, users can enable server-side buffering of donwlink messages. If server-side buffering is enabled, the Gateway Server schedules the downlink message to be sent after the downlink message that was already queued but not sent yet, so that their transmissions don't overlap. To enable this, navigate to your gateway's **General settings** section, expand the **LoRaWAN** section and **Enable** the **Schedule downlink late** option by ticking the box. Note that this is a recommended setting for gateways that use [UDP packet forwarder]({{< ref "/gateways/concepts/udp" >}}). +To avoid packet collisions, users can enable server-side buffering of donwlink messages. If server-side buffering is enabled, the Gateway Server schedules the downlink message to be sent after the downlink message that was already queued but not sent yet, so that their transmissions don't overlap. To enable this, navigate to your gateway's **General settings** section, expand the **LoRaWAN** section and **Enable** the **Schedule downlink late** option by ticking the box. Note that this is a recommended setting for gateways that use [UDP packet forwarder]({{< ref "/hardware/gateways/concepts/udp" >}}). ## Scheduling downlinks for a Multicast device results with "no downlink path available" error. -[Multicast]({{< ref "/devices/configuring-devices/multicast" >}}) devices in {{% tts %}} do not support uplinks, confirm downlinks, or MAC commands, so a specified downlink path is required for scheduling multicast downlink messages. For example, omitting the gateway ID or selecting an inactive gateway in the downlink message causes a `No downlink path available` error. +[Multicast]({{< ref "/hardware/devices/configuring-devices/multicast" >}}) devices in {{% tts %}} do not support uplinks, confirm downlinks, or MAC commands, so a specified downlink path is required for scheduling multicast downlink messages. For example, omitting the gateway ID or selecting an inactive gateway in the downlink message causes a `No downlink path available` error. Below is an example cURL command for scheduling a downlink to a multicast device: diff --git a/doc/content/hardware/gateways/_index.md b/doc/content/hardware/gateways/_index.md new file mode 100644 index 0000000000..59aec6a7f9 --- /dev/null +++ b/doc/content/hardware/gateways/_index.md @@ -0,0 +1,13 @@ +--- +title: "Gateways" +description: "" +weight: 2 +aliases: [/guides/connecting-gateways] +--- + +This section contains information to help you work with gateways in {{% tts %}}. + + + +Here, you'll find guides for connecting gateways using {{% lbs %}} or the {{% udp-pf %}}, and instructions for connecting many popular LoRaWAN® gateways. +If your {{% tts %}} deployment is connected to [Packet Broker]({{< ref "/concepts/packet-broker" >}}), you can take advantage of coverage from The Things Network without adding any gateways of your own. See [Adding Gateways]({{< relref "concepts/adding-gateways" >}}) for instructions to add gateways and to find out if your location has nearby gateways. diff --git a/doc/content/gateways/concepts/_index.md b/doc/content/hardware/gateways/concepts/_index.md similarity index 86% rename from doc/content/gateways/concepts/_index.md rename to doc/content/hardware/gateways/concepts/_index.md index bc4f76ff8b..1a5cbf5f86 100644 --- a/doc/content/gateways/concepts/_index.md +++ b/doc/content/hardware/gateways/concepts/_index.md @@ -2,6 +2,7 @@ title: "Concepts" description: "Guides on basic concepts of working with The Things Stack and Gateways" weight: -3 +aliases: [/gateways/concepts] --- Learn the basic concepts of working with {{% tts %}} and Gateways. diff --git a/doc/content/gateways/concepts/adding-gateways/_index.md b/doc/content/hardware/gateways/concepts/adding-gateways/_index.md similarity index 94% rename from doc/content/gateways/concepts/adding-gateways/_index.md rename to doc/content/hardware/gateways/concepts/adding-gateways/_index.md index 2ab9727cbb..a11448f820 100644 --- a/doc/content/gateways/concepts/adding-gateways/_index.md +++ b/doc/content/hardware/gateways/concepts/adding-gateways/_index.md @@ -5,8 +5,9 @@ weight: -2 aliases: [ /gateways/adding-gateways, - /the-things-stack/interact/cli/create-gateway, - /the-things-stack/interact/console/create-gateway, + /concepts/features/cli/create-gateway, + /concepts/console/create-gateway, + /gateways/concepts/adding-gateways, ] --- @@ -14,9 +15,9 @@ This section contains instructions for adding Gateways in {{%tts%}}. -Some gateways, like [{{% ttigpro %}}]({{< ref "/gateways/models/thethingsindoorgatewaypro" >}}) and [{{% ttig %}}]({{< ref "/gateways/models/thethingsindoorgateway" >}}), have an onboarding guide. Look for your gateway in the left hand menu for specific instructions. +Some gateways, like [{{% ttigpro %}}]({{< ref "/hardware/gateways/models/thethingsindoorgatewaypro" >}}) and [{{% ttig %}}]({{< ref "/hardware/gateways/models/thethingsindoorgateway" >}}), have an onboarding guide. Look for your gateway in the left hand menu for specific instructions. -If your {{% tts %}} deployment is connected to [Packet Broker]({{< ref "the-things-stack/packet-broker" >}}), you can take advantage of coverage from The Things Network without adding any gateways of your own. See the community sourced [TTN Mapper](https://ttnmapper.org) to find out if you have nearby gateways. +If your {{% tts %}} deployment is connected to [Packet Broker]({{< ref "/concepts/packet-broker" >}}), you can take advantage of coverage from The Things Network without adding any gateways of your own. See the community sourced [TTN Mapper](https://ttnmapper.org) to find out if you have nearby gateways. {{< tabs/container "Console" "CLI" "HTTP (REST) API">}} @@ -424,11 +425,11 @@ curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer $API_K Keep in mind that the `antennas.location` object will be cleared if previously set since it's only possible to set entire `antennas` object. Combine this with setting the location if both values need to persist. -Once a gateway has been added, get started with [Adding Devices]({{< ref "/devices/adding-devices" >}}) and [Integrations]({{< ref "/integrations" >}}) to process and act on data. +Once a gateway has been added, get started with [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) and [Integrations]({{< ref "/integrations" >}}) to process and act on data. ## Forwarding Uplinks to Packet Broker -In deployments connected to [Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}), you can control if you want uplinks received by your gateway to be forwarded to Packet Broker or not. In these deployments, uplinks received by your gateway are being forwarded to Packet Broker by default, but you can choose to disable this behavior. +In deployments connected to [Packet Broker]({{< ref "/concepts/packet-broker" >}}), you can control if you want uplinks received by your gateway to be forwarded to Packet Broker or not. In these deployments, uplinks received by your gateway are being forwarded to Packet Broker by default, but you can choose to disable this behavior. {{< tabs/container "Console" "CLI" "HTTP (REST) API" >}} diff --git a/doc/content/hardware/gateways/concepts/adding-gateways/gateway-add.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-add.png new file mode 100644 index 0000000000..dc347415ae Binary files /dev/null and b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-add.png differ diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-api-key-created.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-api-key-created.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-api-key-created.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-api-key-created.png diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-api-key-creation.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-api-key-creation.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-api-key-creation.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-api-key-creation.png diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-claim.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-claim.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-claim.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-claim.png diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-creation.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-creation.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-creation.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-creation.png diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-location.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-location.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-location.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-location.png diff --git a/doc/content/gateways/concepts/adding-gateways/gateway-overview.png b/doc/content/hardware/gateways/concepts/adding-gateways/gateway-overview.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/gateway-overview.png rename to doc/content/hardware/gateways/concepts/adding-gateways/gateway-overview.png diff --git a/doc/content/gateways/concepts/adding-gateways/pb-forwarding.png b/doc/content/hardware/gateways/concepts/adding-gateways/pb-forwarding.png similarity index 100% rename from doc/content/gateways/concepts/adding-gateways/pb-forwarding.png rename to doc/content/hardware/gateways/concepts/adding-gateways/pb-forwarding.png diff --git a/doc/content/reference/gateway-rtt/_index.md b/doc/content/hardware/gateways/concepts/gateway-rtt/_index.md similarity index 93% rename from doc/content/reference/gateway-rtt/_index.md rename to doc/content/hardware/gateways/concepts/gateway-rtt/_index.md index a1802a2f59..dfc0376929 100644 --- a/doc/content/reference/gateway-rtt/_index.md +++ b/doc/content/hardware/gateways/concepts/gateway-rtt/_index.md @@ -1,6 +1,7 @@ --- -title: "Gateway RTT" +title: "Gateway Round Trip Times" description: "Gateway RTT" +aliases: [/reference/gateway-rtt] --- {{% tts %}} records Round Trip Times (RTT) between the Gateway Server and Gateways which act as a measure of latency. @@ -19,7 +20,7 @@ For {{% lbs %}} gateways, the `RefTime` parameter that is sent on the Tx Confirm ## Downlink Scheduling -The Gateway Server uses RTT values to adjust downlink time when scheduling downlinks. {{% tts %}} by default stores a maximum of 20 recent RTT entries. Also, only those that were recorded within the the last 30 mins are considered. +The Gateway Server uses RTT values to adjust downlink time when scheduling downlinks. {{% tts %}} by default stores a maximum of 20 recent RTT entries. Also, only those that were recorded within the the last 30 mins are considered. When scheduling downlinks, if there are 5 or more RTT values that have been recorded in the last 30 mins, {{% tts %}} gets the 90th percentile value of these entries and uses that as the RTT. This value is then offset with either the gateway timestamp or the gateway absolute time (if the gateway has GPS) on the downlink that is scheduled. @@ -27,9 +28,9 @@ If there are are lesser than 5 RTT entries in the past 30 mins, the downlink is ## Querying RTT values -To query the RTT Values for each gateway can be found in the Gateway Connection stats. +To query the RTT Values for each gateway can be found in the Gateway Connection stats. - {{< cli-only >}} +{{< cli-only >}} ```bash ttn-lw-cli gateways get-connection-stats diff --git a/doc/content/gateways/concepts/lora-basics-station/_index.md b/doc/content/hardware/gateways/concepts/lora-basics-station/_index.md similarity index 94% rename from doc/content/gateways/concepts/lora-basics-station/_index.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/_index.md index f46248e0f4..1499769f3d 100644 --- a/doc/content/gateways/concepts/lora-basics-station/_index.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/_index.md @@ -2,7 +2,13 @@ title: "LoRa Basics™ Station" description: "" weight: -1 -aliases: [gateways/lbs, /gateways/lora-basics-station, gateways/lora-basics-station] +aliases: + [ + gateways/lbs, + /gateways/lora-basics-station, + gateways/lora-basics-station, + /gateways/concepts/lora-basics-station, + ] --- The [{{% lbs %}}](https://lora-developers.semtech.com/resources/tools/lora-basics/lora-basics-for-gateways/) protocol simplifies management of large scale LoRaWAN® networks. {{% lbs %}} is the preferred way of connecting Gateways to {{% tts %}}. diff --git a/doc/content/gateways/concepts/lora-basics-station/change-lns-key-and-gs-addr.png b/doc/content/hardware/gateways/concepts/lora-basics-station/change-lns-key-and-gs-addr.png similarity index 100% rename from doc/content/gateways/concepts/lora-basics-station/change-lns-key-and-gs-addr.png rename to doc/content/hardware/gateways/concepts/lora-basics-station/change-lns-key-and-gs-addr.png diff --git a/doc/content/gateways/concepts/lora-basics-station/cups-forwarding.md b/doc/content/hardware/gateways/concepts/lora-basics-station/cups-forwarding.md similarity index 97% rename from doc/content/gateways/concepts/lora-basics-station/cups-forwarding.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/cups-forwarding.md index d2116b5994..2d68df14f7 100644 --- a/doc/content/gateways/concepts/lora-basics-station/cups-forwarding.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/cups-forwarding.md @@ -2,6 +2,7 @@ title: "Using CUPS to redirect to a different LNS" description: "" weight: -1 +aliases: [/gateways/concepts/lora-basics-station/cups-forwarding] --- This section explains how redirect your gateway from one {{% tts %}} instance to another using CUPS, thus facilitating remote gateway management. diff --git a/doc/content/gateways/concepts/lora-basics-station/cups-rights.png b/doc/content/hardware/gateways/concepts/lora-basics-station/cups-rights.png similarity index 100% rename from doc/content/gateways/concepts/lora-basics-station/cups-rights.png rename to doc/content/hardware/gateways/concepts/lora-basics-station/cups-rights.png diff --git a/doc/content/gateways/concepts/lora-basics-station/cups.md b/doc/content/hardware/gateways/concepts/lora-basics-station/cups.md similarity index 82% rename from doc/content/gateways/concepts/lora-basics-station/cups.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/cups.md index 180bfe9035..815a88574b 100644 --- a/doc/content/gateways/concepts/lora-basics-station/cups.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/cups.md @@ -2,7 +2,11 @@ title: "Configuration and Update Server (CUPS)" description: "" weight: -1 -aliases: [/gateways/lora-basics-station/cups] +aliases: + [ + /gateways/lora-basics-station/cups, + /gateways/concepts/lora-basics-station/cups, + ] --- {{% lbs %}} can regularly connect to a {{% cups %}} (CUPS) server to check for configuration and software updates. This page contains information about connecting your gateway to {{% tts %}} to support remote management via the CUPS Protocol. @@ -18,7 +22,7 @@ aliases: [/gateways/lora-basics-station/cups] ## Create a Gateway -To connect a gateway using the CUPS protocol, you must first add the gateway in {{% tts %}}. This can be done either in the console, or via the command line. See instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +To connect a gateway using the CUPS protocol, you must first add the gateway in {{% tts %}}. This can be done either in the console, or via the command line. See instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). ## Create Separate CUPS and LNS API Keys @@ -38,7 +42,7 @@ LNS requires an API Key with the following rights: {{< figure src="../lns-rights.png" alt="LNS API Key Rights" >}} -To create these API keys for your gateway, follow instructions for [Creating a Gateway API key]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). +To create these API keys for your gateway, follow instructions for [Creating a Gateway API key]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). ## Configure CUPS to Send the LNS API Key @@ -48,7 +52,7 @@ To create these API keys for your gateway, follow instructions for [Creating a G We need to configure CUPS in {{% tts %}} to transmit the LNS API key when a gateway connects. To do so in the Console, go to the **General Settings** page of your gateway. -In the **LoRa Basics Station LNS Authentication Key** field, paste the [LNS API key]({{< ref "/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you generated in the previous step. +In the **LoRa Basics Station LNS Authentication Key** field, paste the [LNS API key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you generated in the previous step. {{< figure src="../lns-key.png" alt="LoRa Basics Station LNS Authentication Key" >}} @@ -58,7 +62,7 @@ Press **Save Changes** to update the gateway settings. When your gateway connect {{< tabs/tab "CLI" >}} -We need to configure CUPS in {{% tts %}} to transmit the LNS API key when a gateway connects. Use the following command to do so, replacing `"your-gateway-id"` with your gateway ID in {{% tts %}} and `"your-lns-api-key"` with the [LNS API key]({{< ref "/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you created in the last step: +We need to configure CUPS in {{% tts %}} to transmit the LNS API key when a gateway connects. Use the following command to do so, replacing `"your-gateway-id"` with your gateway ID in {{% tts %}} and `"your-lns-api-key"` with the [LNS API key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you created in the last step: ```bash GTW_ID="your-gateway-id" @@ -67,7 +71,7 @@ SECRET=$(echo -n $LNS_KEY | xxd -ps -u -c 8192) ttn-lw-cli gateways update $GTW_ID --lbs-lns-secret.value $SECRET ``` -{{< note >}}If you receive an error running `ttn-lw-cli gateways update`, you may need to update the CLI. See instructions in [Installing the CLI]({{< ref "/the-things-stack/interact/cli/installing-cli" >}}).{{}} +{{< note >}}If you receive an error running `ttn-lw-cli gateways update`, you may need to update the CLI. See instructions in [Installing the CLI]({{< ref "/concepts/features/cli/installing-cli" >}}).{{}} If successful, you should receive a response as follows: @@ -81,15 +85,14 @@ If successful, you should receive a response as follows: }, "created_at": "2020-10-13T10:49:02.730Z", "updated_at": "2020-11-17T14:52:06.440Z", - "version_ids": { - - }, + "version_ids": {}, "lbs_lns_secret": { "key_id": "is/gateway-secrets-encryption-key", "value": "" } } ``` + {{}} @@ -98,19 +101,19 @@ If successful, you should receive a response as follows: ## Configure Gateway -All {{% lbs %}} gateways support the following configuration options. Consult your gateway documentation for more information about configuring your specific gateway. +All {{% lbs %}} gateways support the following configuration options. Consult your gateway documentation for more information about configuring your specific gateway. ### CUPS Server Address The server address is the network endpoint of {{% tts %}} CUPS. It is a combination of the **protocol** (https), the **server address**, and the **port**. -Enter the following in your gateway as CUPS Server Address: `https://:443`. +Enter the following in your gateway as CUPS Server Address: `https://:443`. -The `` is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) for more info. +The `` is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) for more info. ### CUPS Server Certificate / CUPS Trust -This is the [CA certificate](https://en.wikipedia.org/wiki/Certificate_authority) which secures your domain. A `.pem` file containing common certificates is available in the [Root Certificates Reference]({{< ref "/reference/root-certificates" >}}). +This is the [CA certificate](https://en.wikipedia.org/wiki/Certificate_authority) which secures your domain. A `.pem` file containing common certificates is available in the [Root Certificates Reference]({{< ref "/concepts/advanced/root-certificates" >}}). Upload the `.pem` file in your gateway as the CUPS Server Certificate, i.e. CUPS Trust. @@ -118,7 +121,7 @@ Upload the `.pem` file in your gateway as the CUPS Server Certificate, i.e. CUPS This is a file which {{% tts %}} uses to verify the identity of your gateway. -Instructions below show how to create a file called `cups.key`, replacing `"your-cups-api-key"` with the [CUPS API key]({{< ref "/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you created above. +Instructions below show how to create a file called `cups.key`, replacing `"your-cups-api-key"` with the [CUPS API key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}) you created above. On Linux or macOS use the following commands: diff --git a/doc/content/reference/lbs/_index.md b/doc/content/hardware/gateways/concepts/lora-basics-station/implementation-guide.md similarity index 97% rename from doc/content/reference/lbs/_index.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/implementation-guide.md index 66ea413e5c..c780319a60 100644 --- a/doc/content/reference/lbs/_index.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/implementation-guide.md @@ -1,7 +1,8 @@ --- -title: "LoRa Basics Station Implementation Guide" +title: "Implementation Guide" description: "" -aliases: ["/reference/lbs-implementation-guide/implementation-details/"] +aliases: + [/reference/lbs-implementation-guide/implementation-details/, /reference/lbs] --- This guide contains implementation details primarily for gateway manufacturers intending to implement the {{% lbs %}} protocol. diff --git a/doc/content/gateways/concepts/lora-basics-station/lns-key.png b/doc/content/hardware/gateways/concepts/lora-basics-station/lns-key.png similarity index 100% rename from doc/content/gateways/concepts/lora-basics-station/lns-key.png rename to doc/content/hardware/gateways/concepts/lora-basics-station/lns-key.png diff --git a/doc/content/gateways/concepts/lora-basics-station/lns-rights.png b/doc/content/hardware/gateways/concepts/lora-basics-station/lns-rights.png similarity index 100% rename from doc/content/gateways/concepts/lora-basics-station/lns-rights.png rename to doc/content/hardware/gateways/concepts/lora-basics-station/lns-rights.png diff --git a/doc/content/gateways/concepts/lora-basics-station/lns.md b/doc/content/hardware/gateways/concepts/lora-basics-station/lns.md similarity index 82% rename from doc/content/gateways/concepts/lora-basics-station/lns.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/lns.md index 983f7a77d0..9af5621ccc 100644 --- a/doc/content/gateways/concepts/lora-basics-station/lns.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/lns.md @@ -2,7 +2,11 @@ title: "LoRaWAN Network Server (LNS)" description: "" weight: -1 -aliases: [/gateways/lora-basics-station/lns] +aliases: + [ + /gateways/lora-basics-station/lns, + /gateways/concepts/lora-basics-station/lns, + ] --- LNS establishes a data connection between a {{% lbs %}} and {{% tts %}}. This page contains information about connecting your gateway to {{% tts %}} using the {{% lns %}} (LNS) protocol. @@ -20,7 +24,7 @@ These are general instructions for all {{% lbs %}} gateways. For specific instru ## Create a Gateway -To connect a gateway using the LNS protocol, you must first add the gateway in {{% tts %}}. This can be done either in the console, or via the command line. See instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +To connect a gateway using the LNS protocol, you must first add the gateway in {{% tts %}}. This can be done either in the console, or via the command line. See instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). ## Create an API Key @@ -30,11 +34,11 @@ LNS requires an API Key with the following rights: {{< figure src="../lns-rights.png" alt="LNS API Key Rights" >}} -To create this API key for your gateway, follow instructions for [Creating a Gateway API key ]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). +To create this API key for your gateway, follow instructions for [Creating a Gateway API key ]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). ## Configure Gateway -All {{% lbs %}} gateways support the following configuration options. Consult your gateway documentation for more information about configuring your specific gateway. +All {{% lbs %}} gateways support the following configuration options. Consult your gateway documentation for more information about configuring your specific gateway. ### LNS Server Address @@ -42,11 +46,11 @@ The server address is the network endpoint of {{% tts %}} LNS. It is a combinati Enter the following in your gateway as the LNS Server Address: `wss://:8887`. -The `` is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) for more info. +The `` is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) for more info. ### LNS Server Certificate / LNS Trust -This is the [CA certificate](https://en.wikipedia.org/wiki/Certificate_authority) which secures your domain. A `.pem` file containing common certificates is available in the [Root Certificates Reference]({{< ref "/reference/root-certificates" >}}). +This is the [CA certificate](https://en.wikipedia.org/wiki/Certificate_authority) which secures your domain. A `.pem` file containing common certificates is available in the [Root Certificates Reference]({{< ref "/concepts/advanced/root-certificates" >}}). Upload the `.pem` file in your gateway as the LNS Server Certificate, i.e. LNS Trust. @@ -54,7 +58,7 @@ Upload the `.pem` file in your gateway as the LNS Server Certificate, i.e. LNS T This is a file which {{% tts %}} uses to verify the identity of your gateway. -Instructions below show how to create a file called `lns.key`, replacing `"your-lns-api-key"` with the [LNS API key]({{< ref "/gateways/concepts/lora-basics-station/lns#create-an-api-key" >}}) you created above. +Instructions below show how to create a file called `lns.key`, replacing `"your-lns-api-key"` with the [LNS API key]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#create-an-api-key" >}}) you created above. On Linux or macOS use the following commands: diff --git a/doc/content/gateways/concepts/lora-basics-station/mtls-authentication/index.md b/doc/content/hardware/gateways/concepts/lora-basics-station/mtls-authentication/index.md similarity index 96% rename from doc/content/gateways/concepts/lora-basics-station/mtls-authentication/index.md rename to doc/content/hardware/gateways/concepts/lora-basics-station/mtls-authentication/index.md index a68437c78c..962ce005c6 100644 --- a/doc/content/gateways/concepts/lora-basics-station/mtls-authentication/index.md +++ b/doc/content/hardware/gateways/concepts/lora-basics-station/mtls-authentication/index.md @@ -23,7 +23,7 @@ To check if your deployment supports it, contact the operator. 3. The gateway vendor/user sends the CA certificate used for signing the gateway credentials to the operator of {{% tts %}} deployment. The operator will configure these CAs in {{% tts %}}. -4. The user of the gateway registers it on a {{% tts %}} deployment. See instructions for in the [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}) guide. +4. The user of the gateway registers it on a {{% tts %}} deployment. See instructions for in the [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) guide. 5. When this gateway make a CUPS `/update-info` request to {{% tts %}}, it presents the client certificate. {{% tts %}} verifies this certificate against the configured CA certificate. If the cryptographic check is successful, {{% tts %}} will check rest of the CUPS request and respond with the LNS credentials. diff --git a/doc/content/gateways/concepts/lora-basics-station/target-instance-registration.png b/doc/content/hardware/gateways/concepts/lora-basics-station/target-instance-registration.png similarity index 100% rename from doc/content/gateways/concepts/lora-basics-station/target-instance-registration.png rename to doc/content/hardware/gateways/concepts/lora-basics-station/target-instance-registration.png diff --git a/doc/content/reference/packet-forwarder/_index.md b/doc/content/hardware/gateways/concepts/packet-forwarder/_index.md similarity index 67% rename from doc/content/reference/packet-forwarder/_index.md rename to doc/content/hardware/gateways/concepts/packet-forwarder/_index.md index b9d84ab1d6..a440039743 100644 --- a/doc/content/reference/packet-forwarder/_index.md +++ b/doc/content/hardware/gateways/concepts/packet-forwarder/_index.md @@ -1,12 +1,14 @@ --- title: "Packet Forwarders" +weight: 2 +aliases: [/reference/packet-forwarder] --- This reference describes support for various Packet Forwarders in {{% tts %}}. -{{% tts %}} supports [{{% ttigw %}}]({{< ref "/gateways/concepts/ttigw" >}}) and [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). There is also legacy support for the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}), but it will be removed in the future. +{{% tts %}} supports [{{% ttigw %}}]({{< ref "/hardware/gateways/concepts/ttigw" >}}) and [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). There is also legacy support for the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}), but it will be removed in the future. {{% lbs %}} is the preferred way of connecting gateways to {{% tts %}}. The advantages of {{% lbs %}} over the legacy UDP Packet Forwarder are centralized update and configuration management for gateway fleets, TLS and token-based authentication, centralized channel plan management, and no dependency on local timekeeping. diff --git a/doc/content/gateways/concepts/ttigw/_index.md b/doc/content/hardware/gateways/concepts/ttigw/_index.md similarity index 97% rename from doc/content/gateways/concepts/ttigw/_index.md rename to doc/content/hardware/gateways/concepts/ttigw/_index.md index 8603ebd296..d974dc4b23 100644 --- a/doc/content/gateways/concepts/ttigw/_index.md +++ b/doc/content/hardware/gateways/concepts/ttigw/_index.md @@ -2,6 +2,7 @@ title: "The Things Industries Gateway Protocol" description: "" weight: -1 +aliases: [/gateways/concepts/ttigw] --- {{% ttigw %}} is a proprietary protocol developed by The Things Industries. Unlike other protocols like [{{% lbs %}}]({{< relref "../lora-basics-station" >}}) and [{{% udp-pf %}}]({{< relref "../udp" >}}), {{% ttigw %}} can only be used by gateways provisioned by The Things Industries. diff --git a/doc/content/gateways/concepts/udp/_index.md b/doc/content/hardware/gateways/concepts/udp/_index.md similarity index 90% rename from doc/content/gateways/concepts/udp/_index.md rename to doc/content/hardware/gateways/concepts/udp/_index.md index 1faf9085d7..9fed42a1ec 100644 --- a/doc/content/gateways/concepts/udp/_index.md +++ b/doc/content/hardware/gateways/concepts/udp/_index.md @@ -2,12 +2,12 @@ title: "Semtech UDP Packet Forwarder" description: "" weight: -1 -aliases: [semtech-udp-packet-forwarder, /gateways/udp] +aliases: [semtech-udp-packet-forwarder, /gateways/udp, /gateways/concepts/udp] --- The [{{% udp-pf %}}](https://github.com/lora-net/packet_forwarder) is the original LoRaWAN® packet forwarder, connecting to servers through the Semtech UDP protocol. Many gateways include a pre-compiled version of the {{% udp-pf %}}, often adapted to the specific gateway. -{{< warning >}} The {{% udp-pf %}} has many security and scalability drawbacks. Use [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}) to connect your gateway to {{% tts %}}. {{}} +{{< warning >}} The {{% udp-pf %}} has many security and scalability drawbacks. Use [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) to connect your gateway to {{% tts %}}. {{}} @@ -35,7 +35,7 @@ To download a `global_conf.json` file for your gateway, open the Gateway overvie ## Download Configuration via Terminal -To download a `global_conf.json` file using the terminal, you will need a Gateway API key with the `View gateway information` right enabled. To create an API key, see instructions for in the [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}) guide. +To download a `global_conf.json` file using the terminal, you will need a Gateway API key with the `View gateway information` right enabled. To create an API key, see instructions for in the [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) guide. Open the command prompt in Windows or any Linux terminal to run a curl command (as shown below) to generate the required `global_conf.json` file in your current working directory. diff --git a/doc/content/gateways/concepts/udp/conf.png b/doc/content/hardware/gateways/concepts/udp/conf.png similarity index 100% rename from doc/content/gateways/concepts/udp/conf.png rename to doc/content/hardware/gateways/concepts/udp/conf.png diff --git a/doc/content/gateways/models/_index.md b/doc/content/hardware/gateways/models/_index.md similarity index 100% rename from doc/content/gateways/models/_index.md rename to doc/content/hardware/gateways/models/_index.md diff --git a/doc/content/gateways/models/browan-minihub-pro/_index.md b/doc/content/hardware/gateways/models/browan-minihub-pro/_index.md similarity index 65% rename from doc/content/gateways/models/browan-minihub-pro/_index.md rename to doc/content/hardware/gateways/models/browan-minihub-pro/_index.md index 660e3ec751..30d84d96db 100644 --- a/doc/content/gateways/models/browan-minihub-pro/_index.md +++ b/doc/content/hardware/gateways/models/browan-minihub-pro/_index.md @@ -3,10 +3,10 @@ title: "Browan Minihub Pro" vendor: Browan vendor_page: "https://www.browan.com/product/minihub-pro/detail" description: "The Browan Minihub Pro is a low-cost LoRaWAN® gateway with a WiFi backhaul." -ip_rating: +ip_rating: backhaul: [Wi-Fi] weight: -aliases: [/gateways/browan-minihub-pro] +aliases: [/gateways/browan-minihub-pro, /gateways/models/browan-minihub-pro] image: [minihub-pro.png] --- @@ -16,4 +16,4 @@ The [**Browan Minihub Pro**](https://www.browan.com/product/minihub-pro/detail) -The detailed guide on how to register Browan Minihub Pro on {{% tts %}} using [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}) or [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}) are available in [this document](https://www.browan.com/download/PmN/stream). \ No newline at end of file +The detailed guide on how to register Browan Minihub Pro on {{% tts %}} using [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}) or [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) are available in [this document](https://www.browan.com/download/PmN/stream). diff --git a/doc/content/gateways/models/browan-minihub-pro/minihub-pro.png b/doc/content/hardware/gateways/models/browan-minihub-pro/minihub-pro.png similarity index 100% rename from doc/content/gateways/models/browan-minihub-pro/minihub-pro.png rename to doc/content/hardware/gateways/models/browan-minihub-pro/minihub-pro.png diff --git a/doc/content/gateways/models/ciscowirelessgateway/_index.md b/doc/content/hardware/gateways/models/ciscowirelessgateway/_index.md similarity index 85% rename from doc/content/gateways/models/ciscowirelessgateway/_index.md rename to doc/content/hardware/gateways/models/ciscowirelessgateway/_index.md index dc13c469e9..7a8ce8d60f 100644 --- a/doc/content/gateways/models/ciscowirelessgateway/_index.md +++ b/doc/content/hardware/gateways/models/ciscowirelessgateway/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.cisco.com/c/en/us/products/routers/wireless-gateway-lo description: "The Cisco LoRaWAN Gateway is carrier-grade solution suitable for users who have experience with Cisco software, and that are looking for an industrial-grade LoRaWAN gateway. It supports 16 channels, as well as geolocation." ip_rating: "IP67" backhaul: [Ethernet, Wi-Fi (add-on), Cellular (add-on)] -alias: [/gateways/ciscowirelessgateway] +alias: [/gateways/ciscowirelessgateway, /gateways/models/ciscowirelessgateway] image: [cisco.png] --- @@ -13,23 +13,23 @@ This page guides you to connecting the Cisco Wireless Gateway for LoRaWAN® to { -Technical specifications for this gateway can be found in [Cisco's official documentation](https://www.cisco.com/c/en/us/products/routers/wireless-gateway-lorawan/). +Technical specifications for this gateway can be found in [Cisco's official documentation](https://www.cisco.com/c/en/us/products/routers/wireless-gateway-lorawan/). {{< figure src="cisco.png" alt="Cisco LoRaWAN Gateway" class="float plain" width="60%" >}} ## Prerequisites 1. User account on {{% tts %}} with rights to create gateways. -2. Cisco Wireless Gateway for LoRaWAN with latest firmware, connecte to the internet (or your local network) via ethernet. Version `2.3.0` is the minimal required for [connecting using {{% lbs %}}]({{< ref "/gateways/models/ciscowirelessgateway/lbs" >}}) +2. Cisco Wireless Gateway for LoRaWAN with latest firmware, connecte to the internet (or your local network) via ethernet. Version `2.3.0` is the minimal required for [connecting using {{% lbs %}}]({{< ref "/hardware/gateways/models/ciscowirelessgateway/lbs" >}}) 3. [Console cable from USB to RJ45](https://www.cablesandkits.com/accessories/console-cables/usb-rj45-6ft/pro-9900/). ## Registration -Create a gateway by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +Create a gateway by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The gateway EUI is derived from the MAC address that can be found on the back panel of the gateway. To get the EUI from the MAC address insert `FFFE` after the first 6 characters to make it a 64-bit EUI. For example, if the gateway's MAC address is `5B:A0:CB:80:04:2B` then the EUI is `5B A0 CB FF FE 80 04 2B`. -The **Gateway Server Address** is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +The **Gateway Server Address** is the address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). ## Configuration @@ -62,7 +62,7 @@ Gateway> enable To configure your Cisco Gateway to your network, type the following commands: ``` -Gateway# configure terminal +Gateway# configure terminal Gateway(config)# interface FastEthernet 0/1 ``` @@ -146,7 +146,7 @@ This command may return the message `packet-forwarder firmware is not installed` As a final step before setting up the packet forwarder software, we are going to enable the radio. You can see radio information with the `show radio` command: ``` -Gateway# show radio +Gateway# show radio ORA_SN: FOC21028R8S ORA_PN: 95.1602T01 ORA_SKU: 915 @@ -164,7 +164,7 @@ on If the radio is off, enable it with: ``` -Gateway# configure terminal +Gateway# configure terminal Gateway(config)# no radio off Gateway(config)# exit ``` @@ -177,22 +177,22 @@ To prevent unauthorized access to the gateway, you'll want to set up user authen To enable this secret system, you can use the following commands: -+ `Gateway# configure terminal` to enter global configuration mode. -+ To set the secret, you can use different commands: - `Gateway(config)# enable secret ` to enter in plaintext the secret you wish to set, instead of ``. *Note*: Special characters cannot be used in plain secrets. +- `Gateway# configure terminal` to enter global configuration mode. +- To set the secret, you can use different commands: + `Gateway(config)# enable secret ` to enter in plaintext the secret you wish to set, instead of ``. _Note_: Special characters cannot be used in plain secrets. `Gateway(config)# enable secret 5 ` to enter the md5-encrypted secret. `Gateway(config)# enable secret 8 ` to enter the SHA512-encrypted secret. -+ `Gateway(config)# exit` to exit global configuration mode. -+ `Gateway#copy running-config startup-config` to save the configuration. +- `Gateway(config)# exit` to exit global configuration mode. +- `Gateway#copy running-config startup-config` to save the configuration. ### Verification Before we install the packet forwarder, let's run verification to ensure that the gateway is ready. -+ Type `show radio` to verify that the radio is enabled. The result should indicate **radio status: on**. -+ Type `show inventory` to verify that the **FPGAStatus** is **Ready**. -+ Type `show gps status` to verify that the GPS is correctly connected. You can get additional GPS metadata by typing `show gps info`. -+ Verify that the network connection is working. You can test this by pinging common ping servers with `ping ip `, if your local network does not block ping commands. For example, you can ping Google's servers with `ping ip 8.8.8.8`. +- Type `show radio` to verify that the radio is enabled. The result should indicate **radio status: on**. +- Type `show inventory` to verify that the **FPGAStatus** is **Ready**. +- Type `show gps status` to verify that the GPS is correctly connected. You can get additional GPS metadata by typing `show gps info`. +- Verify that the network connection is working. You can test this by pinging common ping servers with `ping ip `, if your local network does not block ping commands. For example, you can ping Google's servers with `ping ip 8.8.8.8`. If some of those checks fail, go back to the appropriate section earlier in order to fix it. @@ -204,7 +204,7 @@ Gateway# copy running-config startup-config --- -After the initial gateway configuration is done, you can proceed with connecting the gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/models/ciscowirelessgateway/lbs" >}}) or [{{% udp-pf %}}]({{< ref "/gateways/models/ciscowirelessgateway/udp" >}}). +After the initial gateway configuration is done, you can proceed with connecting the gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/models/ciscowirelessgateway/lbs" >}}) or [{{% udp-pf %}}]({{< ref "/hardware/gateways/models/ciscowirelessgateway/udp" >}}). ## Troubleshooting diff --git a/doc/content/gateways/models/ciscowirelessgateway/cisco.png b/doc/content/hardware/gateways/models/ciscowirelessgateway/cisco.png similarity index 100% rename from doc/content/gateways/models/ciscowirelessgateway/cisco.png rename to doc/content/hardware/gateways/models/ciscowirelessgateway/cisco.png diff --git a/doc/content/gateways/models/ciscowirelessgateway/lbs.md b/doc/content/hardware/gateways/models/ciscowirelessgateway/lbs.md similarity index 71% rename from doc/content/gateways/models/ciscowirelessgateway/lbs.md rename to doc/content/hardware/gateways/models/ciscowirelessgateway/lbs.md index f1ebe6c18e..899113af4e 100644 --- a/doc/content/gateways/models/ciscowirelessgateway/lbs.md +++ b/doc/content/hardware/gateways/models/ciscowirelessgateway/lbs.md @@ -3,15 +3,15 @@ title: "Connect Cisco IXM with LoRa Basics™ Station" description: "" --- -This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). {{< note >}} The minimal Cisco IXM gateway software version required for connecting to {{% tts %}} with {{% lbs %}} is `2.3.0`. Note that the use of the Cisco's Common Packet Forwarder (CPF) software is subject to a license fee. {{}} -To connect the gateway via LNS protocol, first follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}), then follow instructions below. +To connect the gateway via LNS protocol, first follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}), then follow instructions below. -To upload the [LNS Server Certificate]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-server-certificate--lns-trust" >}}) (`tc.trust` file) and [LNS Key]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) (`tc.key`file) from your local IP to the Cisco IXM flash, use the following commands: +To upload the [LNS Server Certificate]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-server-certificate--lns-trust" >}}) (`tc.trust` file) and [LNS Key]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) (`tc.key`file) from your local IP to the Cisco IXM flash, use the following commands: ```bash Gateway# copy tftp:////tc.trust flash: @@ -25,7 +25,7 @@ Gateway# common-pack-forwarder cert install srv flash:tc.trust Gateway# common-pack-forwarder cert install gw NA flash:tc.key ``` -Next, you need to configure the common packet forwarder profile. The example configuration assuming the use of a single 1.5 dBi antenna is shown below. Make sure to replace the `server-address` with {{% tts %}} Gateway Server address (e.g. `eu1.cloud.thethings.network`) and `gateway-EUI` with Cisco IXM gateway EUI as defined in [Registration section]({{< ref "/gateways/models/ciscowirelessgateway#registration" >}}). +Next, you need to configure the common packet forwarder profile. The example configuration assuming the use of a single 1.5 dBi antenna is shown below. Make sure to replace the `server-address` with {{% tts %}} Gateway Server address (e.g. `eu1.cloud.thethings.network`) and `gateway-EUI` with Cisco IXM gateway EUI as defined in [Registration section]({{< ref "/hardware/gateways/models/ciscowirelessgateway#registration" >}}). ``` Gateway# configure terminal diff --git a/doc/content/gateways/models/ciscowirelessgateway/udp.md b/doc/content/hardware/gateways/models/ciscowirelessgateway/udp.md similarity index 94% rename from doc/content/gateways/models/ciscowirelessgateway/udp.md rename to doc/content/hardware/gateways/models/ciscowirelessgateway/udp.md index 599ddadbef..e0df2f0248 100644 --- a/doc/content/gateways/models/ciscowirelessgateway/udp.md +++ b/doc/content/hardware/gateways/models/ciscowirelessgateway/udp.md @@ -7,7 +7,7 @@ This section contains instructions for connecting to {{% tts %}} using {{% udp-p -To connect the gateway via UDP packet forwarder, first follow [these instructions]({{< ref "/gateways/concepts/udp" >}}) to obtain `global_conf.json` file, then follow instructions below. +To connect the gateway via UDP packet forwarder, first follow [these instructions]({{< ref "/hardware/gateways/concepts/udp" >}}) to obtain `global_conf.json` file, then follow instructions below. ## Packet Forwarder Configuration @@ -35,7 +35,7 @@ bash-3.2# cp /tools/pkt_forwarder /etc/pktfwd/pkt_forwarder ### Retrieve configuration from the Gateway Configuration Server -The Gateway Configuration Server can be used to retrieve a proper `global_conf.json` configuration file for your gateway. Follow instructions [here]({{< ref "/gateways/concepts/udp" >}}). +The Gateway Configuration Server can be used to retrieve a proper `global_conf.json` configuration file for your gateway. Follow instructions [here]({{< ref "/hardware/gateways/concepts/udp" >}}). Copy the downloaded `global_conf.json` configuration template as `config.json `to `/etc/pktfwd`: @@ -51,7 +51,6 @@ bash-3.2# /etc/pktfwd/pkt_forwarder -c /etc/pktfwd/config.json -g/dev/ttyS1 Your gateway will connect to {{% tts %}} after a couple of minutes. - Now that we know the packet forwarder is running, let's make it run automatically. Use this command: ```bash diff --git a/doc/content/gateways/models/cloudgate/BasicsStation-Config-Authentication.png b/doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-Authentication.png similarity index 100% rename from doc/content/gateways/models/cloudgate/BasicsStation-Config-Authentication.png rename to doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-Authentication.png diff --git a/doc/content/gateways/models/cloudgate/BasicsStation-Config-GatewayKey.png b/doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-GatewayKey.png similarity index 100% rename from doc/content/gateways/models/cloudgate/BasicsStation-Config-GatewayKey.png rename to doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-GatewayKey.png diff --git a/doc/content/gateways/models/cloudgate/BasicsStation-Config-ServerCACert.png b/doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-ServerCACert.png similarity index 100% rename from doc/content/gateways/models/cloudgate/BasicsStation-Config-ServerCACert.png rename to doc/content/hardware/gateways/models/cloudgate/BasicsStation-Config-ServerCACert.png diff --git a/doc/content/gateways/models/cloudgate/CloudGate.png b/doc/content/hardware/gateways/models/cloudgate/CloudGate.png similarity index 100% rename from doc/content/gateways/models/cloudgate/CloudGate.png rename to doc/content/hardware/gateways/models/cloudgate/CloudGate.png diff --git a/doc/content/gateways/models/cloudgate/Connection-status.png b/doc/content/hardware/gateways/models/cloudgate/Connection-status.png similarity index 100% rename from doc/content/gateways/models/cloudgate/Connection-status.png rename to doc/content/hardware/gateways/models/cloudgate/Connection-status.png diff --git a/doc/content/gateways/models/cloudgate/Create-API-Key.png b/doc/content/hardware/gateways/models/cloudgate/Create-API-Key.png similarity index 100% rename from doc/content/gateways/models/cloudgate/Create-API-Key.png rename to doc/content/hardware/gateways/models/cloudgate/Create-API-Key.png diff --git a/doc/content/gateways/models/cloudgate/Insert-SIM.jpeg b/doc/content/hardware/gateways/models/cloudgate/Insert-SIM.jpeg similarity index 100% rename from doc/content/gateways/models/cloudgate/Insert-SIM.jpeg rename to doc/content/hardware/gateways/models/cloudgate/Insert-SIM.jpeg diff --git a/doc/content/gateways/models/cloudgate/Network-settings.png b/doc/content/hardware/gateways/models/cloudgate/Network-settings.png similarity index 100% rename from doc/content/gateways/models/cloudgate/Network-settings.png rename to doc/content/hardware/gateways/models/cloudgate/Network-settings.png diff --git a/doc/content/gateways/models/cloudgate/Open-BasicsStation.png b/doc/content/hardware/gateways/models/cloudgate/Open-BasicsStation.png similarity index 100% rename from doc/content/gateways/models/cloudgate/Open-BasicsStation.png rename to doc/content/hardware/gateways/models/cloudgate/Open-BasicsStation.png diff --git a/doc/content/gateways/models/cloudgate/_index.md b/doc/content/hardware/gateways/models/cloudgate/_index.md similarity index 87% rename from doc/content/gateways/models/cloudgate/_index.md rename to doc/content/hardware/gateways/models/cloudgate/_index.md index 6606b286d8..46c16c620a 100644 --- a/doc/content/gateways/models/cloudgate/_index.md +++ b/doc/content/hardware/gateways/models/cloudgate/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.option.com/products/" description: "Option Wireless Technology’s CloudGate is the carrier-approved IoT solution platform that delivers device connectivity, security and processing power for global IoT applications." ip_rating: backhaul: [Ethernet, Wi-Fi (add-on), Cellular (add-on)] -aliases: [/gateways/cloudgate] +aliases: [/gateways/cloudgate, /gateways/models/cloudgate] image: [CloudGate.png] --- @@ -13,7 +13,7 @@ image: [CloudGate.png] Option Wireless Technology’s CloudGate is the carrier-approved IoT solution platform that delivers device connectivity, security and processing power for global IoT applications. -This guide will help you set up the CloudGate gateway to communicate over {{% tts %}} using [LoRa Basics Station]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This guide will help you set up the CloudGate gateway to communicate over {{% tts %}} using [LoRa Basics Station]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -22,43 +22,43 @@ For more information, see [CloudGate Universe documentation](https://cloudgateun ## Prerequisites 1. User account on {{% tts %}} with rights to create Gateways. -2. CloudGate Gateway with firmware version `2.96.0` or newer, connected to Internet via Ethernet or LTE. -3. CG2132 LoRa expansion card installed in to the CloudGate. +2. CloudGate Gateway with firmware version `2.96.0` or newer, connected to Internet via Ethernet or LTE. +3. CG2132 LoRa expansion card installed in to the CloudGate. ## CloudGate Setup For the first-time hardware and software setup, you can refer to the appropriate configuration guide on the [CloudGate Universe documentation](https://cloudgateuniverse.com/docs/cloudgate-user-guide) page. Here, we have included a few short steps to help you to get started. -### Connect the CloudGate to the Internet via Ethernet +### Connect the CloudGate to the Internet via Ethernet Connect an Ethernet cable to the WAN port of the CloudGate gateway. The WAN port supports DHCP and should automatically obtain an IP address from the network. ### Connect the CloudGate to the Internet via LTE - + {{< figure src="Insert-SIM.jpeg" alt="Insert SIM" class="float" >}} Install the LoRa expansion card into the CloudGate gateway. - + Attach the appropriate antennas to the antenna connectors on the front of the device. The right SMA connector is for the main antenna, and the left SMA connector is for the GPS/diversity antenna. - + Install the micro-SIM card by removing the plate on the back side of the CloudGate. Insert the micro SIM into the slot as shown in the picture on the right. ### Connect your PC to the CloudGate Power on the CloudGate by plugging in the 12VDC power supply. The boot process takes about 120 seconds. - + Connect one side of an Ethernet cable to the LAN port of the CloudGate, and the other side to your PC. The CloudGate runs a built-in DHCP server, so it will provide your PC with an IP address in the `192.168.1.x` range. - + Now, open a web browser and navigate to to `192.168.1.1`. - + Log in using `admin` as both a username and a password. It is highly recommended to change the default username and password. This can be done in the settings under the **System** tab. Navigate to the **Home** tab and check if the CloudGate is connected. -{{< figure src="Connection-status.png" alt="Connection status" >}} - - In case the CloudGate is not connected yet and you are connecting it via LTE network, check if the SIM PIN is entered correctly or if the correct APN parameters are used in the **Network Settings** section (under the **Connections → LTE Interface** tab). - +{{< figure src="Connection-status.png" alt="Connection status" >}} + +In case the CloudGate is not connected yet and you are connecting it via LTE network, check if the SIM PIN is entered correctly or if the correct APN parameters are used in the **Network Settings** section (under the **Connections → LTE Interface** tab). + {{< figure src="Network-settings.png" alt="Network settings" >}} On the other hand, if you are connecting it via Ethernet, check if the CloudGate has obtained an IP address in the **Connections → Main Ethernet Interface** tab. @@ -75,7 +75,7 @@ Go to **Home → System Information** and make sure that the **Basics Statio ### Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The Gateway EUI is the MAC address of the CloudGate with `FFFE` in the middle. For example, if the gateway's MAC address is `1234567890AB`, the Gateway EUI is `123456FFFE7890AB`. @@ -83,13 +83,13 @@ The Gateway EUI is the MAC address of the CloudGate with `FFFE` in the middle. F LNS establishes a data connection between a LoRa Basics Station and {{% tts %}}. To connect a gateway using the LNS protocol, it requires an API Key. -Navigate to the **API Keys** on the left hand menu in your gateway's settings on {{% tts %}} and select **Add API Key**. +Navigate to the **API Keys** on the left hand menu in your gateway's settings on {{% tts %}} and select **Add API Key**. Enter a name for your key, select the **Link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink** right and then press **Create API Key**. {{< figure src="Create-API-Key.png" alt="Create API key" >}} -You will see a screen that shows your newly created API Key. You now can copy it in your clipboard by pressing the copy button. After saving the key in a safe place, press **I have copied the key**.  +You will see a screen that shows your newly created API Key. You now can copy it in your clipboard by pressing the copy button. After saving the key in a safe place, press **I have copied the key**. ### Configure Basics Station @@ -103,11 +103,11 @@ Configure the authentication as **LNS**, and select the region. {{< figure src="BasicsStation-Config-Authentication.png" alt="Choose Authentication Field" >}} -On CloudGate gateways, only CUPS or LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting to CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +On CloudGate gateways, only CUPS or LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting to CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). The server address is the network endpoint of {{% tts %}} LNS. It is a combination of the **protocol** (wss), the **server address**, and the **port**. Enter the following in your gateway as the **LNS Server Address**: `wss://:8887`. -The server CA certificates can be found from [Root Certificates]({{< ref "/reference/root-certificates" >}}) page. +The server CA certificates can be found from [Root Certificates]({{< ref "/concepts/advanced/root-certificates" >}}) page. You can download the minimal certificates list, and then copy and paste the content into the **Server CA Cert** field. @@ -120,4 +120,3 @@ In the **Gateway Key** field, enter the LNS API key you created during previous {{< figure src="BasicsStation-Config-GatewayKey.png" alt=" Enter Gateway Key" >}} If your configuration was successful, your gateway will connect to {{% tts %}} after a couple of seconds! - diff --git a/doc/content/gateways/models/cotx/_index.md b/doc/content/hardware/gateways/models/cotx/_index.md similarity index 55% rename from doc/content/gateways/models/cotx/_index.md rename to doc/content/hardware/gateways/models/cotx/_index.md index f7fce0eb32..58c1c5af47 100644 --- a/doc/content/gateways/models/cotx/_index.md +++ b/doc/content/hardware/gateways/models/cotx/_index.md @@ -1,10 +1,10 @@ --- title: COTX -aliases: [/gateways/cotx] +aliases: [/gateways/cotx, /gateways/models/cotx] --- [COTX](https://www.cotxnetworks.com/) product portfolio consists of IoT modules, LoRa gateways, node devices and all-in-one solutions. They offer high quality radio performances and carrier-grade security. COTX offers a few gateway versions, and instructions for all of them are available in the following sections: -- [COTX X1 (Lite) Gateway]({{< ref "/gateways/models/cotx/x1" >}}) -- [COTX X3 Gateway]({{< ref "/gateways/models/cotx/x3" >}}) -- [COTX X5 Gateway]({{< ref "/gateways/models/cotx/x5" >}}) +- [COTX X1 (Lite) Gateway]({{< ref "/hardware/gateways/models/cotx/x1" >}}) +- [COTX X3 Gateway]({{< ref "/hardware/gateways/models/cotx/x3" >}}) +- [COTX X5 Gateway]({{< ref "/hardware/gateways/models/cotx/x5" >}}) diff --git a/doc/content/gateways/models/cotx/x1/X1_1.png b/doc/content/hardware/gateways/models/cotx/x1/X1_1.png similarity index 100% rename from doc/content/gateways/models/cotx/x1/X1_1.png rename to doc/content/hardware/gateways/models/cotx/x1/X1_1.png diff --git a/doc/content/gateways/models/cotx/x1/X1_2.png b/doc/content/hardware/gateways/models/cotx/x1/X1_2.png similarity index 100% rename from doc/content/gateways/models/cotx/x1/X1_2.png rename to doc/content/hardware/gateways/models/cotx/x1/X1_2.png diff --git a/doc/content/gateways/models/cotx/x1/X1_3.png b/doc/content/hardware/gateways/models/cotx/x1/X1_3.png similarity index 100% rename from doc/content/gateways/models/cotx/x1/X1_3.png rename to doc/content/hardware/gateways/models/cotx/x1/X1_3.png diff --git a/doc/content/gateways/models/cotx/x1/_index.md b/doc/content/hardware/gateways/models/cotx/x1/_index.md similarity index 80% rename from doc/content/gateways/models/cotx/x1/_index.md rename to doc/content/hardware/gateways/models/cotx/x1/_index.md index ee31ed8c8c..7b4b5e49aa 100644 --- a/doc/content/gateways/models/cotx/x1/_index.md +++ b/doc/content/hardware/gateways/models/cotx/x1/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.cotxnetworks.com/hotspot/cotx-x1" description: "COTX X1 is a standard LoRaWAN® indoor gateway. It is easy to install and deploy, highly compatible and has a user-friendly interface. COTX offers rich software tools, powerful back office management and technical support." ip_rating: backhaul: [Ethernet, Wi-Fi, Cellular (optional)] -aliases: [/gateways/cotx/x1] +aliases: [/gateways/cotx/x1, /gateways/models/cotx/x1] image: [X1_1.png] --- @@ -15,13 +15,13 @@ COTX X1 is a standard LoRaWAN® indoor gateway. It is easy to install and deploy {{< note >}} You can also follow these instructions for registering COTX X1 Lite version of the gateway. {{}} -## Gateway Setup +## Gateway Setup -First insert the male SMA connector of the antenna feeder into the **LoRa Antenna Port** on the device and tighten it. +First insert the male SMA connector of the antenna feeder into the **LoRa Antenna Port** on the device and tighten it. {{< figure src="X1_1.png" alt="COTX antenna ports" class="plain" >}} -Place your gateway to a suitable location (e.g. near a window) to provide the best coverage for devices. +Place your gateway to a suitable location (e.g. near a window) to provide the best coverage for devices. If you are using a wired Ethernet connection, connect an Ethernet cable between a router or switch and the **Ethernet Port** on the gateway, so the gateway can connect to the Internet. @@ -33,7 +33,7 @@ If the device indicator is green after powering the gateway up, the system is ru ## Connecting COTX X1 (Lite) to {{% tts %}} -Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). For **Gateway ID** and **Gateway EUI**, enter the 8 byte **ID** available on the label at the bottom of the gateway. diff --git a/doc/content/gateways/models/cotx/x3/X3_1.png b/doc/content/hardware/gateways/models/cotx/x3/X3_1.png similarity index 100% rename from doc/content/gateways/models/cotx/x3/X3_1.png rename to doc/content/hardware/gateways/models/cotx/x3/X3_1.png diff --git a/doc/content/gateways/models/cotx/x3/X3_2.png b/doc/content/hardware/gateways/models/cotx/x3/X3_2.png similarity index 100% rename from doc/content/gateways/models/cotx/x3/X3_2.png rename to doc/content/hardware/gateways/models/cotx/x3/X3_2.png diff --git a/doc/content/gateways/models/cotx/x3/X3_3.png b/doc/content/hardware/gateways/models/cotx/x3/X3_3.png similarity index 100% rename from doc/content/gateways/models/cotx/x3/X3_3.png rename to doc/content/hardware/gateways/models/cotx/x3/X3_3.png diff --git a/doc/content/gateways/models/cotx/x3/X3_4.png b/doc/content/hardware/gateways/models/cotx/x3/X3_4.png similarity index 100% rename from doc/content/gateways/models/cotx/x3/X3_4.png rename to doc/content/hardware/gateways/models/cotx/x3/X3_4.png diff --git a/doc/content/gateways/models/cotx/x3/X3_5.png b/doc/content/hardware/gateways/models/cotx/x3/X3_5.png similarity index 100% rename from doc/content/gateways/models/cotx/x3/X3_5.png rename to doc/content/hardware/gateways/models/cotx/x3/X3_5.png diff --git a/doc/content/gateways/models/cotx/x3/_index.md b/doc/content/hardware/gateways/models/cotx/x3/_index.md similarity index 86% rename from doc/content/gateways/models/cotx/x3/_index.md rename to doc/content/hardware/gateways/models/cotx/x3/_index.md index 1a219d05df..b2a2a7fd69 100644 --- a/doc/content/gateways/models/cotx/x3/_index.md +++ b/doc/content/hardware/gateways/models/cotx/x3/_index.md @@ -5,13 +5,14 @@ vendor_page: "https://www.cotxnetworks.com/hotspot/cotx-x3/" description: "The COTX X3 gateway has similar characteristics to the COTX X1 gateway, only with additional features like outdoor support, BLE support, a small screen for easy monitoring and more." ip_rating: backhaul: [Ethernet, Wi-Fi] -aliases: [/gateways/cotx/x3] +aliases: [/gateways/cotx/x3, /gateways/models/cotx/x3] image: [X3_1.png] --- {{< figure src="X3_1.png" alt="COTX X3" class="plain float" >}} -COTX X3 gateway has similar characteristics to previously described [X1]({{< ref "/gateways/models/cotx/x1" >}}) gateway, only with additional features like: +COTX X3 gateway has similar characteristics to previously described [X1]({{< ref "/hardware/gateways/models/cotx/x1" >}}) gateway, only with additional features like: + - Outdoor support - BLE support - Small screen for easy monitoring, etc. @@ -30,7 +31,7 @@ For Ethernet access to WAN/Internet scenario, please connect the **LAN** port on Plug the power adapter to a 110~220V AC power source (socket) and connect the micro USB connector to the **PWR INPUT** port on the gateway. -{{< figure src="X3_4.png" alt="COTX X3 power supply" class="plain" >}} +{{< figure src="X3_4.png" alt="COTX X3 power supply" class="plain" >}} After powering up the gateway, the LED indication should light up and turn green when the gateway is ready for further configuration. Click the **BT** button and the Ethernet interface's IP address and device status will show up on the screen. The gateway should now be able to connect to {{% tts %}}. @@ -38,6 +39,6 @@ After powering up the gateway, the LED indication should light up and turn green ## Connecting COTX X3 to {{% tts %}} -Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). For **Gateway ID** and **Gateway EUI**, enter the 8 byte **ID** available on the label at the bottom of the gateway. diff --git a/doc/content/gateways/models/cotx/x5/X5_1.png b/doc/content/hardware/gateways/models/cotx/x5/X5_1.png similarity index 100% rename from doc/content/gateways/models/cotx/x5/X5_1.png rename to doc/content/hardware/gateways/models/cotx/x5/X5_1.png diff --git a/doc/content/gateways/models/cotx/x5/X5_2.png b/doc/content/hardware/gateways/models/cotx/x5/X5_2.png similarity index 100% rename from doc/content/gateways/models/cotx/x5/X5_2.png rename to doc/content/hardware/gateways/models/cotx/x5/X5_2.png diff --git a/doc/content/gateways/models/cotx/x5/X5_3.png b/doc/content/hardware/gateways/models/cotx/x5/X5_3.png similarity index 100% rename from doc/content/gateways/models/cotx/x5/X5_3.png rename to doc/content/hardware/gateways/models/cotx/x5/X5_3.png diff --git a/doc/content/gateways/models/cotx/x5/X5_4.png b/doc/content/hardware/gateways/models/cotx/x5/X5_4.png similarity index 100% rename from doc/content/gateways/models/cotx/x5/X5_4.png rename to doc/content/hardware/gateways/models/cotx/x5/X5_4.png diff --git a/doc/content/gateways/models/cotx/x5/_index.md b/doc/content/hardware/gateways/models/cotx/x5/_index.md similarity index 73% rename from doc/content/gateways/models/cotx/x5/_index.md rename to doc/content/hardware/gateways/models/cotx/x5/_index.md index ee5e009439..cd4389eba9 100644 --- a/doc/content/gateways/models/cotx/x5/_index.md +++ b/doc/content/hardware/gateways/models/cotx/x5/_index.md @@ -3,7 +3,7 @@ title: COTX X5 vendor: COTX vendor_page: "https://www.cotxnetworks.com/hotspot/cotx-x5/" description: "The COTX X5 gateway is an outdoor gateway intended for industrial IoT use cases, with a water and dust proof aluminium case." -aliases: [/gateways/cotx/x5] +aliases: [/gateways/cotx/x5, /gateways/models/cotx/x5] ip_rating: "IP67" backhaul: [Ethernet, Wi-Fi, Cellular] image: [X5_1.png] @@ -11,11 +11,11 @@ image: [X5_1.png] {{< figure src="X5_1.png" alt="COTX X5" class="plain float" >}} -COTX X5 gateway has similar characteristics to previously described [X1]({{< ref "/gateways/models/cotx/x1" >}}) and [X3]({{< ref "/gateways/models/cotx/x3" >}}) gateways, but unlike them is an outdoor gateway intended for industrial IoT use cases, with a water and dust proof aluminium case. +COTX X5 gateway has similar characteristics to previously described [X1]({{< ref "/hardware/gateways/models/cotx/x1" >}}) and [X3]({{< ref "/hardware/gateways/models/cotx/x3" >}}) gateways, but unlike them is an outdoor gateway intended for industrial IoT use cases, with a water and dust proof aluminium case. -## Gateway Setup +## Gateway Setup -First, carefully connect the LoRa antenna to the **Lora** port of the gateway the Wi-Fi antenna to the **WiFi/BLE** port and the LTE antenna to the **LTE** port. +First, carefully connect the LoRa antenna to the **Lora** port of the gateway the Wi-Fi antenna to the **WiFi/BLE** port and the LTE antenna to the **LTE** port. {{< figure src="X5_2.png" alt="COTX X5 antenna connections" class="plain" >}} @@ -27,7 +27,7 @@ The default gateway setting is Power over Ethernet (PoE). Connect the **Ethernet {{< figure src="X5_3.png" alt="COTX X5 PoE connection" class="plain" >}} -If the PoE function is unavailable unavailable, use a PoE injector and power it up. +If the PoE function is unavailable unavailable, use a PoE injector and power it up. {{< figure src="X5_4.png" alt="COTX X5 PoE injector connection" class="plain" >}} @@ -35,6 +35,6 @@ After powering the gateway up, the system LED lights up. When the system is read ## Connecting COTX X3 to {{% tts %}} -Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Register the COTX gateway by following instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). For **Gateway ID** and **Gateway EUI**, enter the 8 byte **ID** available on the label at the bottom of the gateway. diff --git a/doc/content/gateways/models/dragino-lps8/_index.md b/doc/content/hardware/gateways/models/dragino-lps8/_index.md similarity index 97% rename from doc/content/gateways/models/dragino-lps8/_index.md rename to doc/content/hardware/gateways/models/dragino-lps8/_index.md index bece2235af..398558050a 100644 --- a/doc/content/gateways/models/dragino-lps8/_index.md +++ b/doc/content/hardware/gateways/models/dragino-lps8/_index.md @@ -6,7 +6,7 @@ description: "The Dragino LPS8N is a LoRaWAN® indoor gateway based on the open- ip_rating: backhaul: [Ethernet, Wi-Fi, Cellular (optional)] weight: -aliases: [/gateways/dragino-lps8] +aliases: [/gateways/dragino-lps8, /gateways/models/dragino-lps8] image: [dragino-lps8n.jpg] --- @@ -24,6 +24,7 @@ This page guides you on how to configure the Dragino LPS8N for adding on {{% tts 2. A computer on the same network as the LPS8N. 3. The latest version of firmware running on the Dragino LPS8N. Read the Dragino LPS8N [user manual](http://wiki.dragino.com/xwiki/bin/view/Main/User%20Manual%20for%20All%20Gateway%20models/LPS8N%20-%20LoRaWAN%20Gateway%20User%20Manual/#H8.A0UpgradeLinuxFirmware) for instructions on firmware upgrade. 4. Internet access setup for the LPS8N using one of the following methods: + - Using the WAN port of the LPS8N - As a WiFi client - Using the built-in 4G modem @@ -45,4 +46,4 @@ After signing in, you will be directed to the LPS8N's Web UI. ## Connect to {{% tts %}} -After completing the basic configuration, follow the instructions to [Connect Dragino LPS8N with {{< lbs >}}]({{< relref "lbs" >}}) or to [Connect Dragino LPS8N with {{% udp-pf %}}]({{< relref "udp" >}}). \ No newline at end of file +After completing the basic configuration, follow the instructions to [Connect Dragino LPS8N with {{< lbs >}}]({{< relref "lbs" >}}) or to [Connect Dragino LPS8N with {{% udp-pf %}}]({{< relref "udp" >}}). diff --git a/doc/content/gateways/models/dragino-lps8/add-gateway.png b/doc/content/hardware/gateways/models/dragino-lps8/add-gateway.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/add-gateway.png rename to doc/content/hardware/gateways/models/dragino-lps8/add-gateway.png diff --git a/doc/content/gateways/models/dragino-lps8/api-cups.png b/doc/content/hardware/gateways/models/dragino-lps8/api-cups.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/api-cups.png rename to doc/content/hardware/gateways/models/dragino-lps8/api-cups.png diff --git a/doc/content/gateways/models/dragino-lps8/api-lns.png b/doc/content/hardware/gateways/models/dragino-lps8/api-lns.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/api-lns.png rename to doc/content/hardware/gateways/models/dragino-lps8/api-lns.png diff --git a/doc/content/gateways/models/dragino-lps8/dragino-lps8n.jpg b/doc/content/hardware/gateways/models/dragino-lps8/dragino-lps8n.jpg similarity index 100% rename from doc/content/gateways/models/dragino-lps8/dragino-lps8n.jpg rename to doc/content/hardware/gateways/models/dragino-lps8/dragino-lps8n.jpg diff --git a/doc/content/gateways/models/dragino-lps8/gateway-add-ok.png b/doc/content/hardware/gateways/models/dragino-lps8/gateway-add-ok.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/gateway-add-ok.png rename to doc/content/hardware/gateways/models/dragino-lps8/gateway-add-ok.png diff --git a/doc/content/gateways/models/dragino-lps8/gw-lns.png b/doc/content/hardware/gateways/models/dragino-lps8/gw-lns.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/gw-lns.png rename to doc/content/hardware/gateways/models/dragino-lps8/gw-lns.png diff --git a/doc/content/gateways/models/dragino-lps8/lbs-config.png b/doc/content/hardware/gateways/models/dragino-lps8/lbs-config.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/lbs-config.png rename to doc/content/hardware/gateways/models/dragino-lps8/lbs-config.png diff --git a/doc/content/gateways/models/dragino-lps8/lbs-key.png b/doc/content/hardware/gateways/models/dragino-lps8/lbs-key.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/lbs-key.png rename to doc/content/hardware/gateways/models/dragino-lps8/lbs-key.png diff --git a/doc/content/gateways/models/dragino-lps8/lbs.md b/doc/content/hardware/gateways/models/dragino-lps8/lbs.md similarity index 95% rename from doc/content/gateways/models/dragino-lps8/lbs.md rename to doc/content/hardware/gateways/models/dragino-lps8/lbs.md index 60bbbb53a1..501fadc1cf 100644 --- a/doc/content/gateways/models/dragino-lps8/lbs.md +++ b/doc/content/hardware/gateways/models/dragino-lps8/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Dragino LPS8N with Lora Basics™ Station" description: "" +aliases: [/gateways/models/dragino-lps8/lbs] --- -This section contains instructions for connecting the Dragino LPS8N LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Dragino LPS8N LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). diff --git a/doc/content/gateways/models/dragino-lps8/lorawan-config.png b/doc/content/hardware/gateways/models/dragino-lps8/lorawan-config.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/lorawan-config.png rename to doc/content/hardware/gateways/models/dragino-lps8/lorawan-config.png diff --git a/doc/content/gateways/models/dragino-lps8/lorawan-ok.png b/doc/content/hardware/gateways/models/dragino-lps8/lorawan-ok.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/lorawan-ok.png rename to doc/content/hardware/gateways/models/dragino-lps8/lorawan-ok.png diff --git a/doc/content/gateways/models/dragino-lps8/register-lbs-keys.png b/doc/content/hardware/gateways/models/dragino-lps8/register-lbs-keys.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/register-lbs-keys.png rename to doc/content/hardware/gateways/models/dragino-lps8/register-lbs-keys.png diff --git a/doc/content/gateways/models/dragino-lps8/register-lbs.png b/doc/content/hardware/gateways/models/dragino-lps8/register-lbs.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/register-lbs.png rename to doc/content/hardware/gateways/models/dragino-lps8/register-lbs.png diff --git a/doc/content/gateways/models/dragino-lps8/sign-in-lps8n.png b/doc/content/hardware/gateways/models/dragino-lps8/sign-in-lps8n.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/sign-in-lps8n.png rename to doc/content/hardware/gateways/models/dragino-lps8/sign-in-lps8n.png diff --git a/doc/content/gateways/models/dragino-lps8/tts-add-gateway.png b/doc/content/hardware/gateways/models/dragino-lps8/tts-add-gateway.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/tts-add-gateway.png rename to doc/content/hardware/gateways/models/dragino-lps8/tts-add-gateway.png diff --git a/doc/content/gateways/models/dragino-lps8/udp.md b/doc/content/hardware/gateways/models/dragino-lps8/udp.md similarity index 81% rename from doc/content/gateways/models/dragino-lps8/udp.md rename to doc/content/hardware/gateways/models/dragino-lps8/udp.md index b5fb4d99ae..5985b9289d 100644 --- a/doc/content/gateways/models/dragino-lps8/udp.md +++ b/doc/content/hardware/gateways/models/dragino-lps8/udp.md @@ -1,9 +1,10 @@ --- title: "Connect Dragino LPS8N with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/dragino-lps8/udp] --- -This section contains instructions for connecting the Dragino LPS8N LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Dragino LPS8N LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -26,7 +27,7 @@ Select **Save & Apply**. ## Adding LPS8N to {{% tts %}} -You can add the LPS8N gateway to {{% tts %}} by following the instructions on the [ Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}) page. Use the **Gateway ID** value that you previously copied for the **Gateway EUI** field. +You can add the LPS8N gateway to {{% tts %}} by following the instructions on the [ Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) page. Use the **Gateway ID** value that you previously copied for the **Gateway EUI** field. {{< figure src="../add-gateway.png" alt="Add Gateway" >}} @@ -36,4 +37,4 @@ Finally, test your connection by going to the LPS8N's **Overview** page. You sho You can also verify the presence of a green tick on the LoRa icon in the Web UI. -{{< figure src="../lorawan-ok.png" alt="LoRaWAN OK" >}} \ No newline at end of file +{{< figure src="../lorawan-ok.png" alt="LoRaWAN OK" >}} diff --git a/doc/content/gateways/models/dragino-lps8/web-ui-home-lps8n.png b/doc/content/hardware/gateways/models/dragino-lps8/web-ui-home-lps8n.png similarity index 100% rename from doc/content/gateways/models/dragino-lps8/web-ui-home-lps8n.png rename to doc/content/hardware/gateways/models/dragino-lps8/web-ui-home-lps8n.png diff --git a/doc/content/gateways/models/kerlinkwirnetistation/Kerlink-Wirnet-iStation.png b/doc/content/hardware/gateways/models/kerlinkwirnetistation/Kerlink-Wirnet-iStation.png similarity index 100% rename from doc/content/gateways/models/kerlinkwirnetistation/Kerlink-Wirnet-iStation.png rename to doc/content/hardware/gateways/models/kerlinkwirnetistation/Kerlink-Wirnet-iStation.png diff --git a/doc/content/gateways/models/kerlinkwirnetistation/_index.md b/doc/content/hardware/gateways/models/kerlinkwirnetistation/_index.md similarity index 81% rename from doc/content/gateways/models/kerlinkwirnetistation/_index.md rename to doc/content/hardware/gateways/models/kerlinkwirnetistation/_index.md index b5f5f008d0..512ad5c0c9 100644 --- a/doc/content/gateways/models/kerlinkwirnetistation/_index.md +++ b/doc/content/hardware/gateways/models/kerlinkwirnetistation/_index.md @@ -5,13 +5,18 @@ vendor_page: "https://www.kerlink.com/product/wirnet-istation/" description: "The Kerlink Wirnet iStation is an outdoor LoRaWAN® gateway. It offers cellular (4G with 3G/2G fallback) and Ethernet backhauls, as well as fully integrated internal GPS, 4G and LoRa antennas." ip_rating: "IP67" backhaul: [Ethernet, Cellular (optional)] -aliases: [/guides/connecting-gateways/kerlinkwirnetistation, /gateways/kerlinkwirnetistation] +aliases: + [ + /guides/connecting-gateways/kerlinkwirnetistation, + /gateways/kerlinkwirnetistation, + /gateways/models/kerlinkwirnetistation, + ] image: [Kerlink-Wirnet-iStation.png] --- {{< figure src="Kerlink-Wirnet-iStation.png" alt="Kerlink Wirnet iStation" class="float plain" >}} -The [Kerlink Wirnet iStation](https://www.kerlink.com/product/wirnet-istation/) is an outdoor LoRaWAN® gateway that represents an evolution of the legacy [Kerlink Wirnet Station]({{< ref "/gateways/models/kerlinkwirnetstation" >}}) gateway. It offers cellular (4G with 3G/2G fallback) and Ethernet backhauls, as well as fully integrated internal GPS, 4G and LoRa antennas. +The [Kerlink Wirnet iStation](https://www.kerlink.com/product/wirnet-istation/) is an outdoor LoRaWAN® gateway that represents an evolution of the legacy [Kerlink Wirnet Station]({{< ref "/hardware/gateways/models/kerlinkwirnetstation" >}}) gateway. It offers cellular (4G with 3G/2G fallback) and Ethernet backhauls, as well as fully integrated internal GPS, 4G and LoRa antennas. @@ -24,15 +29,15 @@ This page guides you to connect Kerlink Wirnet iStation to {{% tts %}}. Before registering a gateway in {{% tts %}}, you also need to find out the gateway's EUI. You can do so if you connect to the iStation by SSH-ing into it using `root` login and `pdmk-XXXXXX` passoword. `XXXXXX` represents the last six hexadecimal digits of the **Board ID** printed on the gateway's bottom. For example, if the **Board ID** is `921CHa010001`, the root password will be `pdmk-010001`. -To print the gateway's EUI, use the following command: +To print the gateway's EUI, use the following command: -```bash +```bash grep EUI /tmp/board_info.json ``` ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}) via Console or CLI. Choose a **Gateway ID** and paste the **Gateway EUI** you printed in the previous step. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) via Console or CLI. Choose a **Gateway ID** and paste the **Gateway EUI** you printed in the previous step. Create an API Key with **View gateway information** rights for this gateway using the same instructions. Copy the API key and save it for later use. @@ -44,7 +49,7 @@ All further steps assume the gateway is available at ``, {{% tts %}} In order to ease the process of connecting Wirnet iStation to {{% tts %}}, we provide the provisioning script `provision.sh` you can configure your gateway with. This script is compatible with any Wirnet iStation gateway. -To provision the iStation gateway at `` to use the configuration of `` provided by {{% tts %}} deployed at ``, execute: +To provision the iStation gateway at `` to use the configuration of `` provided by {{% tts %}} deployed at ``, execute: ```bash curl -sL 'https://raw.githubusercontent.com/TheThingsNetwork/kerlink-wirnet-firmware/v0.0.3/provision.sh' | bash -s -- diff --git a/doc/content/gateways/models/kerlinkwirnetstation/_index.md b/doc/content/hardware/gateways/models/kerlinkwirnetstation/_index.md similarity index 85% rename from doc/content/gateways/models/kerlinkwirnetstation/_index.md rename to doc/content/hardware/gateways/models/kerlinkwirnetstation/_index.md index 886335eded..684d9c95f1 100644 --- a/doc/content/gateways/models/kerlinkwirnetstation/_index.md +++ b/doc/content/hardware/gateways/models/kerlinkwirnetstation/_index.md @@ -5,11 +5,11 @@ vendor_page: "https://www.kerlink.com/product/wirnet-station/" description: "The Kerlink Wirnet Station is a robust and highly reliable outdoor LoRaWAN gateway. It was the first commercially available LoRaWAN® gateway on the global market. It offers Ethernet and cellular (3G/2G) backhauls." ip_rating: backhaul: [Ethernet, Wi-Fi, Cellular (optional)] -aliases: [/gateways/kerlinkwirnetstation] +aliases: [/gateways/kerlinkwirnetstation, /gateways/models/kerlinkwirnetstation] image: [wirnet-station.png] --- -{{< warning >}} Kerlink announced the [Product End of Life](https://www.kerlink.com/wp-content/uploads/2020/01/Product-End-of-Life-Wirnet-Station.pdf) in January 2020 for Wirnet Station, so using [Kerlink Wirnet iStation]({{< ref "/gateways/models/kerlinkwirnetistation" >}}) is highly recommended. {{}} +{{< warning >}} Kerlink announced the [Product End of Life](https://www.kerlink.com/wp-content/uploads/2020/01/Product-End-of-Life-Wirnet-Station.pdf) in January 2020 for Wirnet Station, so using [Kerlink Wirnet iStation]({{< ref "/hardware/gateways/models/kerlinkwirnetistation" >}}) is highly recommended. {{}} {{< figure src="wirnet-station.png" alt="Kerlink Wirnet Station" class="float plain" >}} @@ -22,13 +22,13 @@ This page guides you to connect Kerlink Wirnet Station to {{% tts %}}. ## Prerequisites 1. User account on {{% tts %}} with rights to create Gateways. -2. Kerlink Wirnet Station gateway connected to the Internet via Ethernet or cellular network. +2. Kerlink Wirnet Station gateway connected to the Internet via Ethernet or cellular network. {{< note >}} Wirnet Station should be running firmware `v3.0` or higher. {{}} ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). Choose a **Gateway ID**, and fill in the **Gateway EUI** field with value `7276FF0000XXXXXXX`. `XXXXXXX` represents the last 7 characters of the gateway's serial number For example, the **Gateway EUI** could be `7276ff00080E0000`. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Choose a **Gateway ID**, and fill in the **Gateway EUI** field with value `7276FF0000XXXXXXX`. `XXXXXXX` represents the last 7 characters of the gateway's serial number For example, the **Gateway EUI** could be `7276ff00080E0000`. Create an API Key with **View gateway information** rights for this gateway using the same instructions. Copy the API key and save it for later use. @@ -42,7 +42,7 @@ In order to ease the process of connecting Wirnet Station to {{% tts %}}, we pro In case the CPF (Common Packet Forwarder) is not installed on the Wirnet Station, this script will try to install it. If the gateway is running an outdated firmware version, the script will attempt to update the firmware first and install the CPF after. -To provision the Wirnet Station gateway at `` to use the configuration of `` provided by {{% tts %}} deployed at ``, execute: +To provision the Wirnet Station gateway at `` to use the configuration of `` provided by {{% tts %}} deployed at ``, execute: ```bash curl -sL 'https://raw.githubusercontent.com/TheThingsNetwork/kerlink-wirnet-firmware/v0.0.3/provision.sh' | bash -s -- diff --git a/doc/content/gateways/models/kerlinkwirnetstation/wirnet-station.png b/doc/content/hardware/gateways/models/kerlinkwirnetstation/wirnet-station.png similarity index 100% rename from doc/content/gateways/models/kerlinkwirnetstation/wirnet-station.png rename to doc/content/hardware/gateways/models/kerlinkwirnetstation/wirnet-station.png diff --git a/doc/content/gateways/models/laird-sentrius/_index.md b/doc/content/hardware/gateways/models/laird-sentrius/_index.md similarity index 90% rename from doc/content/gateways/models/laird-sentrius/_index.md rename to doc/content/hardware/gateways/models/laird-sentrius/_index.md index f37e5bdcac..6bae593e3b 100644 --- a/doc/content/gateways/models/laird-sentrius/_index.md +++ b/doc/content/hardware/gateways/models/laird-sentrius/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.lairdconnect.com/iot-devices/lorawan-iot-devices/sentr description: "The Laird Sentrius™ RG1xx is a secure, scalable, robust LoRaWAN-Enabled Gateway that supports Wi-Fi, Ethernet, and LTE backends." ip_rating: "IP67 (optional)" backhaul: [Ethernet, Wi-Fi, Cellular (optional)] -aliases: [/gateways/laird-sentrius] +aliases: [/gateways/laird-sentrius, /gateways/models/laird-sentrius] image: [laird.png] --- @@ -29,7 +29,7 @@ The technical specifications can be found in [Laird's official documentation](ht ## Registration -Create a gateway by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +Create a gateway by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **EUI** of the gateway can be found on the configuration web page of the gateway as **Gateway ID**, or on the bottom label as **DevEUI**. @@ -41,7 +41,7 @@ The Laird Sentrius™ RG1xx LoRaWAN Gateway features a Wi-Fi quick config that a 2. From a wirelessly enabled device perform a scan. 3. Connect to the access point rg1xx29378B, where “29378B” are the last six digits of the Ethernet MAC address found on the label on the bottom of the gateway. -The network is secured with WPA2 with a password that is the same as the SSID. It is recommended that the default password is changed for security reasons. The password can be changed on the **Wi-Fi > Advanced** web page. +The network is secured with WPA2 with a password that is the same as the SSID. It is recommended that the default password is changed for security reasons. The password can be changed on the **Wi-Fi > Advanced** web page. See [Laird's official documentation](https://www.lairdconnect.com/wireless-modules/lorawan-solutions/sentrius-rg1xx-lorawan-gateway-wi-fi-ethernet-optional-lte-us-only#documentation) for more information. @@ -52,7 +52,7 @@ To log into the gateway web interface, follow these steps: {{< figure src="mac.png" alt="MAC" class="float plain" >}} 1. Determine the last three bytes of your gateway’s Ethernet MAC address. This can be found on the label on the bottom of the gateway; the last three bytes are highlighted -2. Enter the URL into the web browser to access the web interface. For example, for the gateway used in this guide, the URL is https://rg1xx29378B.local., where “29378B” are the last 6 digits of the Ethernet MAC address. In Wi-Fi quick config mode, the gateway can also be accessed via the IP address at https://192.168.1.1 +2. Enter the URL into the web browser to access the web interface. For example, for the gateway used in this guide, the URL is https://rg1xx29378B.local., where “29378B” are the last 6 digits of the Ethernet MAC address. In Wi-Fi quick config mode, the gateway can also be accessed via the IP address at https://192.168.1.1 3. Accept the self-signed security certificate in the browser. 4. Log on using the following the default username **sentrius** and default password **RG1xx** diff --git a/doc/content/gateways/models/laird-sentrius/basic-station.png b/doc/content/hardware/gateways/models/laird-sentrius/basic-station.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/basic-station.png rename to doc/content/hardware/gateways/models/laird-sentrius/basic-station.png diff --git a/doc/content/gateways/models/laird-sentrius/cups-certificate-configuration.png b/doc/content/hardware/gateways/models/laird-sentrius/cups-certificate-configuration.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/cups-certificate-configuration.png rename to doc/content/hardware/gateways/models/laird-sentrius/cups-certificate-configuration.png diff --git a/doc/content/gateways/models/laird-sentrius/cups-server-configuration.png b/doc/content/hardware/gateways/models/laird-sentrius/cups-server-configuration.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/cups-server-configuration.png rename to doc/content/hardware/gateways/models/laird-sentrius/cups-server-configuration.png diff --git a/doc/content/gateways/models/laird-sentrius/eui-small.png b/doc/content/hardware/gateways/models/laird-sentrius/eui-small.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/eui-small.png rename to doc/content/hardware/gateways/models/laird-sentrius/eui-small.png diff --git a/doc/content/gateways/models/laird-sentrius/laird.png b/doc/content/hardware/gateways/models/laird-sentrius/laird.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/laird.png rename to doc/content/hardware/gateways/models/laird-sentrius/laird.png diff --git a/doc/content/gateways/models/laird-sentrius/lbs.md b/doc/content/hardware/gateways/models/laird-sentrius/lbs.md similarity index 63% rename from doc/content/gateways/models/laird-sentrius/lbs.md rename to doc/content/hardware/gateways/models/laird-sentrius/lbs.md index 3a66456913..1f7e45ce81 100644 --- a/doc/content/gateways/models/laird-sentrius/lbs.md +++ b/doc/content/hardware/gateways/models/laird-sentrius/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Laird Sentrius™ RG1xx with LoRa Basics™ Station" description: "" +aliases: [/gateways/models/laird-sentrius/lbs] --- -This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -19,13 +20,13 @@ Choose **Semtech Basic Station** as the **Mode**. ## CUPS -To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). -Fill the **CUPS Server** in the **Server Configuration** with the [CUPS Server Address]({{< ref "/gateways/concepts/lora-basics-station/cups#cups-server-address" >}}). +Fill the **CUPS Server** in the **Server Configuration** with the [CUPS Server Address]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#cups-server-address" >}}). {{< figure src="../cups-server-configuration.png" alt="Create new server" class="plain" >}} -Click on the **Choose File** button to upload the **Server Certificate File** and **key File** with the [CUPS Server Certificate]({{< ref "/gateways/concepts/lora-basics-station/cups#cups-server-certificate--cups-trust" >}}) and [CUPS Key File]({{< ref "/gateways/concepts/lora-basics-station/cups#cups-key-file" >}}) respectively. +Click on the **Choose File** button to upload the **Server Certificate File** and **key File** with the [CUPS Server Certificate]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#cups-server-certificate--cups-trust" >}}) and [CUPS Key File]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#cups-key-file" >}}) respectively. {{< figure src="../cups-certificate-configuration.png" alt="Create new server" class="plain" >}} @@ -35,13 +36,13 @@ Click **Update**. If your configuration was successful, your gateway will connec ## LNS -To connect the gateway via LNS protocol, follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). +To connect the gateway via LNS protocol, follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). -Fill the **LNS Server** in the **Server Configuration** with the [LNS Server Address]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-server-address" >}}). +Fill the **LNS Server** in the **Server Configuration** with the [LNS Server Address]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-server-address" >}}). {{< figure src="../lns-server-configuration.png" alt="Create new server" class="plain" >}} -Click on the **Choose File** button to upload the **Server Certificate File** and **key File** with the [LNS Server Certificate]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-server-certificate--lns-trust" >}}) and [LNS Key File]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) respectively. +Click on the **Choose File** button to upload the **Server Certificate File** and **key File** with the [LNS Server Certificate]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-server-certificate--lns-trust" >}}) and [LNS Key File]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) respectively. {{< figure src="../lns-certificate-configuration.png" alt="Create new server" class="plain" >}} diff --git a/doc/content/gateways/models/laird-sentrius/lns-certificate-configuration.png b/doc/content/hardware/gateways/models/laird-sentrius/lns-certificate-configuration.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/lns-certificate-configuration.png rename to doc/content/hardware/gateways/models/laird-sentrius/lns-certificate-configuration.png diff --git a/doc/content/gateways/models/laird-sentrius/lns-server-configuration.png b/doc/content/hardware/gateways/models/laird-sentrius/lns-server-configuration.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/lns-server-configuration.png rename to doc/content/hardware/gateways/models/laird-sentrius/lns-server-configuration.png diff --git a/doc/content/gateways/models/laird-sentrius/login.png b/doc/content/hardware/gateways/models/laird-sentrius/login.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/login.png rename to doc/content/hardware/gateways/models/laird-sentrius/login.png diff --git a/doc/content/gateways/models/laird-sentrius/mac.png b/doc/content/hardware/gateways/models/laird-sentrius/mac.png similarity index 100% rename from doc/content/gateways/models/laird-sentrius/mac.png rename to doc/content/hardware/gateways/models/laird-sentrius/mac.png diff --git a/doc/content/gateways/models/mikrotik-knot/KNOT-antenna.png b/doc/content/hardware/gateways/models/mikrotik-knot/KNOT-antenna.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/KNOT-antenna.png rename to doc/content/hardware/gateways/models/mikrotik-knot/KNOT-antenna.png diff --git a/doc/content/gateways/models/mikrotik-knot/_index.md b/doc/content/hardware/gateways/models/mikrotik-knot/_index.md similarity index 91% rename from doc/content/gateways/models/mikrotik-knot/_index.md rename to doc/content/hardware/gateways/models/mikrotik-knot/_index.md index cfea3d4bc6..761d664105 100644 --- a/doc/content/gateways/models/mikrotik-knot/_index.md +++ b/doc/content/hardware/gateways/models/mikrotik-knot/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://mikrotik.com/product/knot" description: "The MikroTik KNOT LR8/LR9 kit is a universal device with exceptional connectivity options and protocol support. It is an IoT Gateway which can use ethernet or LTE-M (also known as CAT-M) technology as the gateway backhaul." ip_rating: "IP20" backhaul: [Ethernet, Wi-Fi, Cellular] -aliases: ["/gateways/mikrotik-knot"] +aliases: [/gateways/mikrotik-knot, /gateways/models/mikrotik-knot] image: [mikrotik-knot.jpeg] --- @@ -27,11 +27,11 @@ For more info, see Mikrotik's [official product page](https://mikrotik.com/produ ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**, or under the **Gateway ID** in the LoRa tab of the MikroTik web GUI. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**, or under the **Gateway ID** in the LoRa tab of the MikroTik web GUI. ## Configuration via Browser -The MikroTik Routerboard exposes a WiFi Access Point (AP) with SSID `MikroTik-xxxxxx`, where `xxxxxx` are the last 6 digits of the device's MAC address. Use your PC, tablet or smartphone to connect to this AP. You will not need a password to connect to this AP. +The MikroTik Routerboard exposes a WiFi Access Point (AP) with SSID `MikroTik-xxxxxx`, where `xxxxxx` are the last 6 digits of the device's MAC address. Use your PC, tablet or smartphone to connect to this AP. You will not need a password to connect to this AP. By opening your browser to `http://192.168.88.1/webfig` you will be able to access the RouterOS web interface and configure your gateway device. @@ -50,7 +50,7 @@ From the top menu, select the **Servers** tab and press the **Add New** button. Edit the server parameters. - **Name**: A distinct name which you can define yourself -- **Address**: The address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Address**: The address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. @@ -83,6 +83,7 @@ To test whether a connection with your LTE-M network is established, go to the * ``` /interface ppp-client info ppp-out1 ``` + If the gateway is set up correctly, it will respond with a message like: ``` diff --git a/doc/content/gateways/models/mikrotik-knot/lte-m-check.png b/doc/content/hardware/gateways/models/mikrotik-knot/lte-m-check.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/lte-m-check.png rename to doc/content/hardware/gateways/models/mikrotik-knot/lte-m-check.png diff --git a/doc/content/gateways/models/mikrotik-knot/mikrotik-knot.jpeg b/doc/content/hardware/gateways/models/mikrotik-knot/mikrotik-knot.jpeg similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/mikrotik-knot.jpeg rename to doc/content/hardware/gateways/models/mikrotik-knot/mikrotik-knot.jpeg diff --git a/doc/content/gateways/models/mikrotik-knot/parameters.png b/doc/content/hardware/gateways/models/mikrotik-knot/parameters.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/parameters.png rename to doc/content/hardware/gateways/models/mikrotik-knot/parameters.png diff --git a/doc/content/gateways/models/mikrotik-knot/portal-lora-disable.png b/doc/content/hardware/gateways/models/mikrotik-knot/portal-lora-disable.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/portal-lora-disable.png rename to doc/content/hardware/gateways/models/mikrotik-knot/portal-lora-disable.png diff --git a/doc/content/gateways/models/mikrotik-knot/portal-lora.png b/doc/content/hardware/gateways/models/mikrotik-knot/portal-lora.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/portal-lora.png rename to doc/content/hardware/gateways/models/mikrotik-knot/portal-lora.png diff --git a/doc/content/gateways/models/mikrotik-knot/portal.png b/doc/content/hardware/gateways/models/mikrotik-knot/portal.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/portal.png rename to doc/content/hardware/gateways/models/mikrotik-knot/portal.png diff --git a/doc/content/gateways/models/mikrotik-knot/servers.png b/doc/content/hardware/gateways/models/mikrotik-knot/servers.png similarity index 100% rename from doc/content/gateways/models/mikrotik-knot/servers.png rename to doc/content/hardware/gateways/models/mikrotik-knot/servers.png diff --git a/doc/content/gateways/models/mikrotik-ltap/LtaP.jpg b/doc/content/hardware/gateways/models/mikrotik-ltap/LtaP.jpg similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/LtaP.jpg rename to doc/content/hardware/gateways/models/mikrotik-ltap/LtaP.jpg diff --git a/doc/content/gateways/models/mikrotik-ltap/_index.md b/doc/content/hardware/gateways/models/mikrotik-ltap/_index.md similarity index 83% rename from doc/content/gateways/models/mikrotik-ltap/_index.md rename to doc/content/hardware/gateways/models/mikrotik-ltap/_index.md index 7a5a4cc4c5..93b982e41e 100644 --- a/doc/content/gateways/models/mikrotik-ltap/_index.md +++ b/doc/content/hardware/gateways/models/mikrotik-ltap/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://mikrotik.com/product/ltap_lte_kit" description: "The LtAP LTE kit is a compact weatherproof wireless access point with a built-in cellular modem that supports 4G (LTE) connectivity." ip_rating: "IP54" backhaul: [Ethernet, Wi-Fi, Cellular] -aliases: ["/gateways/mikrotik-ltap"] +aliases: [/gateways/mikrotik-ltap, /gateways/models/mikrotik-ltap] image: [LtaP.jpg] --- @@ -21,15 +21,15 @@ For more info, see Mikrotik's [official product page](https://mikrotik.com/produ **Features:** -* 2.4 GHz AP in a rugged case -* LTE installed in miniPCIe slot -* Second miniPCIe slot for expansions -* Three Mini SIM slots -* Gigabit Ethernet port -* Built-in GPS -* Many powering options (DC jack, POE-in, automotive) -* Serial port and full size USB for other devices -* Perfect for cars or outdoor mobile applications +- 2.4 GHz AP in a rugged case +- LTE installed in miniPCIe slot +- Second miniPCIe slot for expansions +- Three Mini SIM slots +- Gigabit Ethernet port +- Built-in GPS +- Many powering options (DC jack, POE-in, automotive) +- Serial port and full size USB for other devices +- Perfect for cars or outdoor mobile applications {{< warning >}} Currently, this gateway does not support changing frequency channels. {{}} @@ -41,7 +41,7 @@ For more info, see Mikrotik's [official product page](https://mikrotik.com/produ ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**, or under the **Gateway ID** in the LoRa tab of the MikroTik web GUI. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**, or under the **Gateway ID** in the LoRa tab of the MikroTik web GUI. ## Configuration via Browser @@ -58,6 +58,7 @@ Select **LoRa** on the left hand menu. The status of the gateway should be **Dis {{< figure src="portal-lora.png" alt="MikroTik LoRa portal" class="plain" >}} If you do not see any devices listed in the **Devices** tab of the **LoRa** menu, you will need to enable the LoRa interface first. To do so, click the **Terminal** button in the upper right corner and enter the command: + ``` system routerboard usb set type=mini-PCIe ``` @@ -70,8 +71,8 @@ From the top menu, select the **Servers** Tab and press the **Add New** button. Edit the server parameters. -- **Name**: A distinct name -- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Name**: A distinct name +- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. diff --git a/doc/content/gateways/models/mikrotik-ltap/parameters.png b/doc/content/hardware/gateways/models/mikrotik-ltap/parameters.png similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/parameters.png rename to doc/content/hardware/gateways/models/mikrotik-ltap/parameters.png diff --git a/doc/content/gateways/models/mikrotik-ltap/portal-lora-disable.png b/doc/content/hardware/gateways/models/mikrotik-ltap/portal-lora-disable.png similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/portal-lora-disable.png rename to doc/content/hardware/gateways/models/mikrotik-ltap/portal-lora-disable.png diff --git a/doc/content/gateways/models/mikrotik-ltap/portal-lora.png b/doc/content/hardware/gateways/models/mikrotik-ltap/portal-lora.png similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/portal-lora.png rename to doc/content/hardware/gateways/models/mikrotik-ltap/portal-lora.png diff --git a/doc/content/gateways/models/mikrotik-ltap/portal.png b/doc/content/hardware/gateways/models/mikrotik-ltap/portal.png similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/portal.png rename to doc/content/hardware/gateways/models/mikrotik-ltap/portal.png diff --git a/doc/content/gateways/models/mikrotik-ltap/servers.png b/doc/content/hardware/gateways/models/mikrotik-ltap/servers.png similarity index 100% rename from doc/content/gateways/models/mikrotik-ltap/servers.png rename to doc/content/hardware/gateways/models/mikrotik-ltap/servers.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/_index.md b/doc/content/hardware/gateways/models/mikrotikrouterboard/_index.md similarity index 91% rename from doc/content/gateways/models/mikrotikrouterboard/_index.md rename to doc/content/hardware/gateways/models/mikrotikrouterboard/_index.md index 046e08da50..5b20c23fa4 100644 --- a/doc/content/gateways/models/mikrotikrouterboard/_index.md +++ b/doc/content/hardware/gateways/models/mikrotikrouterboard/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://mikrotik.com/product/wap_lr8_kit" description: "MikroTik Routerboard wAP LoRa8 kit is a LoRaWAN® gateway that contains a pre-installed UDP packet forwarder and an outdoor weatherproof wireless access point with 2.4 GHz WLAN interface and Ethernet port that could be used as a backend." ip_rating: "IP54" backhaul: [Ethernet, Wi-Fi, Cellular] -aliases: ["/gateways/mikrotikrouterboard"] +aliases: [/gateways/mikrotikrouterboard, /gateways/models/mikrotikrouterboard] image: [lr8_kit.png] --- @@ -37,7 +37,7 @@ The MikroTik Routerboard wAP LoRa8 kit comes with a PoE adapter. The image on th ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**. ## Configuration via Browser @@ -49,7 +49,7 @@ Open a browser to `http://192.168.88.1/webfig/#Interfaces`. {{< figure src="portal.png" alt="Portal" class="plain" >}} -In the left hand menu select **LoRa**. Make sure the status is set to *Disabled*, if needed press the **D** to disable the LoRa Device. +In the left hand menu select **LoRa**. Make sure the status is set to _Disabled_, if needed press the **D** to disable the LoRa Device. {{< figure src="portal-lora.png" alt="LoRa" class="plain" >}} @@ -59,8 +59,8 @@ From the top menu, select the **Servers** Tab and press the **Add New** button. Edit the server parameters. -- **Name**: A distinct name -- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Name**: A distinct name +- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. @@ -110,16 +110,16 @@ Scroll down and click on **LoRa**. In the **LoRa** config window select **Device {{< figure src="mikrotik-routerboard-lora-disable.jpeg" alt="MikroTik Routerboard wAP LoRa8 kit LoRa disable" >}} -Back in the **LoRa** section, select the **Servers** section. Select the **+** button to add a new server. +Back in the **LoRa** section, select the **Servers** section. Select the **+** button to add a new server. Edit the server parameters. -- **Name**: A distinct name -- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Name**: A distinct name +- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. -Now back in the **LoRa** section, select **Devices** and select the **LoRa Device**. Click on **Network Servers** and select the server based on the name in the previous step. +Now back in the **LoRa** section, select **Devices** and select the **LoRa Device**. Click on **Network Servers** and select the server based on the name in the previous step. Go back and click on the device and enable it. diff --git a/doc/content/gateways/models/mikrotikrouterboard/device-parameters-network.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters-network.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/device-parameters-network.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters-network.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/device-parameters-selected.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters-selected.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/device-parameters-selected.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters-selected.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/device-parameters.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/device-parameters.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/device-parameters.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/lr8_kit.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/lr8_kit.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/lr8_kit.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/lr8_kit.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-connections.jpg b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-connections.jpg similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-connections.jpg rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-connections.jpg diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-home-page.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-home-page.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-home-page.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-home-page.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-login.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-login.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-login.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-login.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-disable.jpeg b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-disable.jpeg similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-disable.jpeg rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-disable.jpeg diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-enable.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-enable.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-enable.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-enable.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-settings.jpeg b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-settings.jpeg similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-settings.jpeg rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-lora-settings.jpeg diff --git a/doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-traffic-log.jpeg b/doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-traffic-log.jpeg similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/mikrotik-routerboard-traffic-log.jpeg rename to doc/content/hardware/gateways/models/mikrotikrouterboard/mikrotik-routerboard-traffic-log.jpeg diff --git a/doc/content/gateways/models/mikrotikrouterboard/parameters.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/parameters.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/parameters.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/parameters.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/portal-lora-disable.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora-disable.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/portal-lora-disable.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora-disable.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/portal-lora-enable.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora-enable.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/portal-lora-enable.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora-enable.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/portal-lora.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/portal-lora.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/portal-lora.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/portal.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/portal.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/portal.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/portal.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/public.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/public.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/public.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/public.png diff --git a/doc/content/gateways/models/mikrotikrouterboard/servers.png b/doc/content/hardware/gateways/models/mikrotikrouterboard/servers.png similarity index 100% rename from doc/content/gateways/models/mikrotikrouterboard/servers.png rename to doc/content/hardware/gateways/models/mikrotikrouterboard/servers.png diff --git a/doc/content/gateways/models/milesightug56/_index.md b/doc/content/hardware/gateways/models/milesightug56/_index.md similarity index 87% rename from doc/content/gateways/models/milesightug56/_index.md rename to doc/content/hardware/gateways/models/milesightug56/_index.md index a25c0d745f..9342ca177b 100644 --- a/doc/content/gateways/models/milesightug56/_index.md +++ b/doc/content/hardware/gateways/models/milesightug56/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.milesight.com/iot/product/lorawan-gateway/ug56" description: "The Milesight UG56 is a robust 8-channel indoor LoRaWAN® gateway. Adopting SX1302 chip and high-performance quad-core CPU, UG56 supports connection with more than 2000 nodes." ip_rating: "IP30" backhaul: [Ethernet, Cellular (optional)] -aliases: [/gateways/milesightug56] +aliases: [/gateways/milesightug56, /gateways/models/milesightug56] image: [ug56.png] --- @@ -27,7 +27,7 @@ The Milesight UG56 LoRaWAN gateways support two ways of connecting to {{% tts %} ## Registration -[Add a gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +[Add a gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **Gateway EUI** can be found on the gateway's configuration web page. See [Configuration via Browser section]({{< ref "#configuration-via-browser" >}}) below for instructions to access the configuration page. diff --git a/doc/content/gateways/models/milesightug56/basic-station.png b/doc/content/hardware/gateways/models/milesightug56/basic-station.png similarity index 100% rename from doc/content/gateways/models/milesightug56/basic-station.png rename to doc/content/hardware/gateways/models/milesightug56/basic-station.png diff --git a/doc/content/gateways/models/milesightug56/disable.png b/doc/content/hardware/gateways/models/milesightug56/disable.png similarity index 100% rename from doc/content/gateways/models/milesightug56/disable.png rename to doc/content/hardware/gateways/models/milesightug56/disable.png diff --git a/doc/content/gateways/models/milesightug56/eui.png b/doc/content/hardware/gateways/models/milesightug56/eui.png similarity index 100% rename from doc/content/gateways/models/milesightug56/eui.png rename to doc/content/hardware/gateways/models/milesightug56/eui.png diff --git a/doc/content/gateways/models/milesightug56/lbs.md b/doc/content/hardware/gateways/models/milesightug56/lbs.md similarity index 65% rename from doc/content/gateways/models/milesightug56/lbs.md rename to doc/content/hardware/gateways/models/milesightug56/lbs.md index 24d34d5b86..172efbe668 100644 --- a/doc/content/gateways/models/milesightug56/lbs.md +++ b/doc/content/hardware/gateways/models/milesightug56/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG56 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/milesightug56/lbs] --- -This section contains instructions for connecting the Milesight UG56 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Milesight UG56 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -13,7 +14,7 @@ In the **Packet Forwarder** menu and **General** tab, click the little **+** but In the server configuration options, check the **Enable** box. Choose **Basic Station** as the **Type**. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Click **Save** to continue. diff --git a/doc/content/gateways/models/milesightug56/login.png b/doc/content/hardware/gateways/models/milesightug56/login.png similarity index 100% rename from doc/content/gateways/models/milesightug56/login.png rename to doc/content/hardware/gateways/models/milesightug56/login.png diff --git a/doc/content/gateways/models/milesightug56/packet-forwarder.md b/doc/content/hardware/gateways/models/milesightug56/packet-forwarder.md similarity index 82% rename from doc/content/gateways/models/milesightug56/packet-forwarder.md rename to doc/content/hardware/gateways/models/milesightug56/packet-forwarder.md index 8522887103..c257072112 100644 --- a/doc/content/gateways/models/milesightug56/packet-forwarder.md +++ b/doc/content/hardware/gateways/models/milesightug56/packet-forwarder.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG56 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/milesightug56/packet-forwarder] --- -This section contains instructions for connecting the Milesight UG56 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Milesight UG56 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Semtech** as the **Type**. -For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) section for help. +For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) section for help. Choose the appropriate **Port Up** and **Port Down** values. These are both **1700** by default in {{% tts %}}. diff --git a/doc/content/gateways/models/milesightug56/plus.png b/doc/content/hardware/gateways/models/milesightug56/plus.png similarity index 100% rename from doc/content/gateways/models/milesightug56/plus.png rename to doc/content/hardware/gateways/models/milesightug56/plus.png diff --git a/doc/content/gateways/models/milesightug56/semtech.png b/doc/content/hardware/gateways/models/milesightug56/semtech.png similarity index 100% rename from doc/content/gateways/models/milesightug56/semtech.png rename to doc/content/hardware/gateways/models/milesightug56/semtech.png diff --git a/doc/content/gateways/models/milesightug56/ug56.png b/doc/content/hardware/gateways/models/milesightug56/ug56.png similarity index 100% rename from doc/content/gateways/models/milesightug56/ug56.png rename to doc/content/hardware/gateways/models/milesightug56/ug56.png diff --git a/doc/content/gateways/models/milesightug65/_index.md b/doc/content/hardware/gateways/models/milesightug65/_index.md similarity index 87% rename from doc/content/gateways/models/milesightug65/_index.md rename to doc/content/hardware/gateways/models/milesightug65/_index.md index fe5cb8464c..8ab00cc538 100644 --- a/doc/content/gateways/models/milesightug65/_index.md +++ b/doc/content/hardware/gateways/models/milesightug65/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.milesight.com/iot/product/lorawan-gateway/ug65" description: "The Milesight UG65 is a high-performance 8-channel LoRaWAN® gateway that offers reliable connectivity for industrial applications." ip_rating: "IP65" backhaul: [Ethernet, Wi-Fi, Cellular (optional)] -aliases: [/gateways/milesightug65] +aliases: [/gateways/milesightug65, /gateways/models/milesightug65] image: [ug65.png] --- @@ -27,7 +27,7 @@ The Milesight UG65 LoRaWAN gateways support two ways of connecting to {{% tts %} ## Registration -[Add a gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +[Add a gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **Gateway EUI** of the gateway can be found on the gateway's configuration web page. See [Configuration via Browser section]({{< ref "#configuration-via-browser" >}}) below for instructions to access the configuration page. diff --git a/doc/content/gateways/models/milesightug65/basic-station.png b/doc/content/hardware/gateways/models/milesightug65/basic-station.png similarity index 100% rename from doc/content/gateways/models/milesightug65/basic-station.png rename to doc/content/hardware/gateways/models/milesightug65/basic-station.png diff --git a/doc/content/gateways/models/milesightug65/disable.png b/doc/content/hardware/gateways/models/milesightug65/disable.png similarity index 100% rename from doc/content/gateways/models/milesightug65/disable.png rename to doc/content/hardware/gateways/models/milesightug65/disable.png diff --git a/doc/content/gateways/models/milesightug65/eui.png b/doc/content/hardware/gateways/models/milesightug65/eui.png similarity index 100% rename from doc/content/gateways/models/milesightug65/eui.png rename to doc/content/hardware/gateways/models/milesightug65/eui.png diff --git a/doc/content/gateways/models/milesightug65/lbs.md b/doc/content/hardware/gateways/models/milesightug65/lbs.md similarity index 65% rename from doc/content/gateways/models/milesightug65/lbs.md rename to doc/content/hardware/gateways/models/milesightug65/lbs.md index a61bebca6e..c77fb2918e 100644 --- a/doc/content/gateways/models/milesightug65/lbs.md +++ b/doc/content/hardware/gateways/models/milesightug65/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG65 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/milesightug65/lbs] --- -This section contains instructions for connecting the Milesight UG65 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Milesight UG65 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -13,7 +14,7 @@ In the **Packet Forwarder** menu and **General** tab, click the little **+** but In the server configuration options, check the **Enable** box. Choose **Basic Station** as the **Type**. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Click **Save** to continue. diff --git a/doc/content/gateways/models/milesightug65/login.png b/doc/content/hardware/gateways/models/milesightug65/login.png similarity index 100% rename from doc/content/gateways/models/milesightug65/login.png rename to doc/content/hardware/gateways/models/milesightug65/login.png diff --git a/doc/content/gateways/models/milesightug65/packet-forwarder.md b/doc/content/hardware/gateways/models/milesightug65/packet-forwarder.md similarity index 82% rename from doc/content/gateways/models/milesightug65/packet-forwarder.md rename to doc/content/hardware/gateways/models/milesightug65/packet-forwarder.md index d49445a396..d004c2c104 100644 --- a/doc/content/gateways/models/milesightug65/packet-forwarder.md +++ b/doc/content/hardware/gateways/models/milesightug65/packet-forwarder.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG65 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/milesightug65/packet-forwarder] --- -This section contains instructions for connecting the Milesight UG65 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Milesight UG65 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Semtech** as the **Type**. -For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) section for help. +For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) section for help. Choose the appropriate **Port Up** and **Port Down** values. These are both **1700** by default in {{% tts %}}. diff --git a/doc/content/gateways/models/milesightug65/plus.png b/doc/content/hardware/gateways/models/milesightug65/plus.png similarity index 100% rename from doc/content/gateways/models/milesightug65/plus.png rename to doc/content/hardware/gateways/models/milesightug65/plus.png diff --git a/doc/content/gateways/models/milesightug65/semtech.png b/doc/content/hardware/gateways/models/milesightug65/semtech.png similarity index 100% rename from doc/content/gateways/models/milesightug65/semtech.png rename to doc/content/hardware/gateways/models/milesightug65/semtech.png diff --git a/doc/content/gateways/models/milesightug65/ug65.png b/doc/content/hardware/gateways/models/milesightug65/ug65.png similarity index 100% rename from doc/content/gateways/models/milesightug65/ug65.png rename to doc/content/hardware/gateways/models/milesightug65/ug65.png diff --git a/doc/content/gateways/models/milesightug67/_index.md b/doc/content/hardware/gateways/models/milesightug67/_index.md similarity index 88% rename from doc/content/gateways/models/milesightug67/_index.md rename to doc/content/hardware/gateways/models/milesightug67/_index.md index e6d346bcd7..88352b38c5 100644 --- a/doc/content/gateways/models/milesightug67/_index.md +++ b/doc/content/hardware/gateways/models/milesightug67/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.milesight.com/iot/product/lorawan-gateway/ug67" description: "The Milesight UG67 is a robust outdoor LoRaWAN® gateway designed for outdoor deployments. Powered by the SX1302 LoRa chip and a high-performance quad-core CPU, the UG67 can support connectivity with over 2000 nodes." ip_rating: "IP67" backhaul: [Ethernet, Cellular (optional)] -aliases: [/gateways/milesightug67] +aliases: [/gateways/milesightug67, /gateways/models/milesightug67] image: [ug67.png] --- @@ -27,7 +27,7 @@ The Milesight UG67 LoRaWAN gateways support two ways of connecting to {{% tts %} ## Registration -[Add a gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +[Add a gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **Gateway EUI** of the gateway can be found on the gateway's configuration web page. See [Configuration via Browser section]({{< ref "#configuration-via-browser" >}}) below for instructions to access the configuration page. diff --git a/doc/content/gateways/models/milesightug67/basic-station.png b/doc/content/hardware/gateways/models/milesightug67/basic-station.png similarity index 100% rename from doc/content/gateways/models/milesightug67/basic-station.png rename to doc/content/hardware/gateways/models/milesightug67/basic-station.png diff --git a/doc/content/gateways/models/milesightug67/disable.png b/doc/content/hardware/gateways/models/milesightug67/disable.png similarity index 100% rename from doc/content/gateways/models/milesightug67/disable.png rename to doc/content/hardware/gateways/models/milesightug67/disable.png diff --git a/doc/content/gateways/models/milesightug67/eui.png b/doc/content/hardware/gateways/models/milesightug67/eui.png similarity index 100% rename from doc/content/gateways/models/milesightug67/eui.png rename to doc/content/hardware/gateways/models/milesightug67/eui.png diff --git a/doc/content/gateways/models/milesightug67/lbs.md b/doc/content/hardware/gateways/models/milesightug67/lbs.md similarity index 65% rename from doc/content/gateways/models/milesightug67/lbs.md rename to doc/content/hardware/gateways/models/milesightug67/lbs.md index 8d3428237e..8f8c140d91 100644 --- a/doc/content/gateways/models/milesightug67/lbs.md +++ b/doc/content/hardware/gateways/models/milesightug67/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG67 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/milesightug67/lbs] --- -This section contains instructions for connecting the Milesight UG67 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Milesight UG67 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -13,7 +14,7 @@ In the **Packet Forwarder** menu and **General** tab, click the little **+** but In the server configuration options, check the **Enable** box. Choose **Basic Station** as the **Type**. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Click **Save** to continue. diff --git a/doc/content/gateways/models/milesightug67/login.png b/doc/content/hardware/gateways/models/milesightug67/login.png similarity index 100% rename from doc/content/gateways/models/milesightug67/login.png rename to doc/content/hardware/gateways/models/milesightug67/login.png diff --git a/doc/content/gateways/models/milesightug67/packet-forwarder.md b/doc/content/hardware/gateways/models/milesightug67/packet-forwarder.md similarity index 82% rename from doc/content/gateways/models/milesightug67/packet-forwarder.md rename to doc/content/hardware/gateways/models/milesightug67/packet-forwarder.md index 79020e67b5..3740f0827b 100644 --- a/doc/content/gateways/models/milesightug67/packet-forwarder.md +++ b/doc/content/hardware/gateways/models/milesightug67/packet-forwarder.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG67 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/milesightug67/packet-forwarder] --- -This section contains instructions for connecting the Milesight UG67 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Milesight UG67 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Semtech** as the **Type**. -For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) section for help. +For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) section for help. Choose the appropriate **Port Up** and **Port Down** values. These are both **1700** by default in {{% tts %}}. diff --git a/doc/content/gateways/models/milesightug67/plus.png b/doc/content/hardware/gateways/models/milesightug67/plus.png similarity index 100% rename from doc/content/gateways/models/milesightug67/plus.png rename to doc/content/hardware/gateways/models/milesightug67/plus.png diff --git a/doc/content/gateways/models/milesightug67/semtech.png b/doc/content/hardware/gateways/models/milesightug67/semtech.png similarity index 100% rename from doc/content/gateways/models/milesightug67/semtech.png rename to doc/content/hardware/gateways/models/milesightug67/semtech.png diff --git a/doc/content/gateways/models/milesightug67/ug67.png b/doc/content/hardware/gateways/models/milesightug67/ug67.png similarity index 100% rename from doc/content/gateways/models/milesightug67/ug67.png rename to doc/content/hardware/gateways/models/milesightug67/ug67.png diff --git a/doc/content/gateways/models/milesightug85/_index.md b/doc/content/hardware/gateways/models/milesightug85/_index.md similarity index 88% rename from doc/content/gateways/models/milesightug85/_index.md rename to doc/content/hardware/gateways/models/milesightug85/_index.md index ae6c6ce264..fe072a7254 100644 --- a/doc/content/gateways/models/milesightug85/_index.md +++ b/doc/content/hardware/gateways/models/milesightug85/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://resource.milesight.com/milesight/iot/document/ug85_user_gu description: "The Milesight UG85 industrial LoRaWAN gateway delivers tenacious connection over network with full-featured design such as automated failover/failback, extended operating temperature, dual SIM cards, hardware watchdog, VPN, Gigabit Ethernet and beyond." ip_rating: "IP30" backhaul: [Ethernet, Wi-Fi (optional), Cellular (optional)] -aliases: [/gateways/milesightug85] +aliases: [/gateways/milesightug85, /gateways/models/milesightug85] image: [ug85.png] --- @@ -25,7 +25,7 @@ Technical specifications can be found in Milesight's official [document center]( ## Registration -[Add a gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +[Add a gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **Gateway EUI** can be found on the gateway's configuration web page. See the [Configuration via Browser section]({{< ref "#configuration-via-browser" >}}) below for instructions to access the configuration page. diff --git a/doc/content/gateways/models/milesightug85/basic-station.png b/doc/content/hardware/gateways/models/milesightug85/basic-station.png similarity index 100% rename from doc/content/gateways/models/milesightug85/basic-station.png rename to doc/content/hardware/gateways/models/milesightug85/basic-station.png diff --git a/doc/content/gateways/models/milesightug85/disable.png b/doc/content/hardware/gateways/models/milesightug85/disable.png similarity index 100% rename from doc/content/gateways/models/milesightug85/disable.png rename to doc/content/hardware/gateways/models/milesightug85/disable.png diff --git a/doc/content/gateways/models/milesightug85/eui.png b/doc/content/hardware/gateways/models/milesightug85/eui.png similarity index 100% rename from doc/content/gateways/models/milesightug85/eui.png rename to doc/content/hardware/gateways/models/milesightug85/eui.png diff --git a/doc/content/gateways/models/milesightug85/lbs.md b/doc/content/hardware/gateways/models/milesightug85/lbs.md similarity index 65% rename from doc/content/gateways/models/milesightug85/lbs.md rename to doc/content/hardware/gateways/models/milesightug85/lbs.md index 2bd6ab4277..7c7e81cef4 100644 --- a/doc/content/gateways/models/milesightug85/lbs.md +++ b/doc/content/hardware/gateways/models/milesightug85/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG85 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/milesightug85/lbs] --- -This section contains instructions for connecting the Milesight UG85 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Milesight UG85 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Basic Station** as the **Type**. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Click **Save** to continue. diff --git a/doc/content/gateways/models/milesightug85/login.png b/doc/content/hardware/gateways/models/milesightug85/login.png similarity index 100% rename from doc/content/gateways/models/milesightug85/login.png rename to doc/content/hardware/gateways/models/milesightug85/login.png diff --git a/doc/content/gateways/models/milesightug85/packet-forwarder.md b/doc/content/hardware/gateways/models/milesightug85/packet-forwarder.md similarity index 82% rename from doc/content/gateways/models/milesightug85/packet-forwarder.md rename to doc/content/hardware/gateways/models/milesightug85/packet-forwarder.md index 7626d7ca77..cd5f70e4d6 100644 --- a/doc/content/gateways/models/milesightug85/packet-forwarder.md +++ b/doc/content/hardware/gateways/models/milesightug85/packet-forwarder.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG85 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/milesightug85/packet-forwarder] --- -This section contains instructions for connecting the Milesight UG85 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Milesight UG85 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Semtech** as the **Type**. -For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) section for help. +For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) section for help. Choose the appropriate **Port Up** and **Port Down** values. These are both **1700** by default in {{% tts %}}. diff --git a/doc/content/gateways/models/milesightug85/plus.png b/doc/content/hardware/gateways/models/milesightug85/plus.png similarity index 100% rename from doc/content/gateways/models/milesightug85/plus.png rename to doc/content/hardware/gateways/models/milesightug85/plus.png diff --git a/doc/content/gateways/models/milesightug85/semtech.png b/doc/content/hardware/gateways/models/milesightug85/semtech.png similarity index 100% rename from doc/content/gateways/models/milesightug85/semtech.png rename to doc/content/hardware/gateways/models/milesightug85/semtech.png diff --git a/doc/content/gateways/models/milesightug85/ug85.png b/doc/content/hardware/gateways/models/milesightug85/ug85.png similarity index 100% rename from doc/content/gateways/models/milesightug85/ug85.png rename to doc/content/hardware/gateways/models/milesightug85/ug85.png diff --git a/doc/content/gateways/models/milesightug87/_index.md b/doc/content/hardware/gateways/models/milesightug87/_index.md similarity index 88% rename from doc/content/gateways/models/milesightug87/_index.md rename to doc/content/hardware/gateways/models/milesightug87/_index.md index b051f65d34..e5532ab14b 100644 --- a/doc/content/gateways/models/milesightug87/_index.md +++ b/doc/content/hardware/gateways/models/milesightug87/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://resource.milesight.com/milesight/iot/document/ug87_quick_s description: "The Milesight UG87 industrial LoRaWAN gateway delivers tenacious connection over network with full-featured design such as automated failover/failback, extended operating temperature, dual SIM cards, hardware watchdog, VPN, Gigabit Ethernet and beyond." ip_rating: "IP67" backhaul: [Ethernet, Wi-Fi (optional), Cellular (optional)] -aliases: [/gateways/milesightug87] +aliases: [/gateways/milesightug87, /gateways/models/milesightug87] image: [ug87.png] --- @@ -25,7 +25,7 @@ Technical specifications can be found in Milesight's official [document center]( ## Registration -[Add a gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/the-things-stack/interact/console#create-gateway" >}}) or the [CLI]({{< ref "/the-things-stack/interact/cli#create-gateway" >}}). +[Add a gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) by following the instructions for the [Console]({{< ref "/concepts/features/console#create-gateway" >}}) or the [CLI]({{< ref "/concepts/features/cli#create-gateway" >}}). The **Gateway EUI** can be found on the gateway's configuration web page. See the [Configuration via Browser section]({{< ref "#configuration-via-browser" >}}) below for instructions to access the configuration page. diff --git a/doc/content/gateways/models/milesightug87/basic-station.png b/doc/content/hardware/gateways/models/milesightug87/basic-station.png similarity index 100% rename from doc/content/gateways/models/milesightug87/basic-station.png rename to doc/content/hardware/gateways/models/milesightug87/basic-station.png diff --git a/doc/content/gateways/models/milesightug87/disable.png b/doc/content/hardware/gateways/models/milesightug87/disable.png similarity index 100% rename from doc/content/gateways/models/milesightug87/disable.png rename to doc/content/hardware/gateways/models/milesightug87/disable.png diff --git a/doc/content/gateways/models/milesightug87/eui.png b/doc/content/hardware/gateways/models/milesightug87/eui.png similarity index 100% rename from doc/content/gateways/models/milesightug87/eui.png rename to doc/content/hardware/gateways/models/milesightug87/eui.png diff --git a/doc/content/gateways/models/milesightug87/lbs.md b/doc/content/hardware/gateways/models/milesightug87/lbs.md similarity index 65% rename from doc/content/gateways/models/milesightug87/lbs.md rename to doc/content/hardware/gateways/models/milesightug87/lbs.md index ef1f0a4030..f911ae92d1 100644 --- a/doc/content/gateways/models/milesightug87/lbs.md +++ b/doc/content/hardware/gateways/models/milesightug87/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG87 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/milesightug87/lbs] --- -This section contains instructions for connecting the Milesight UG87 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Milesight UG87 LoRaWAN® gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Basic Station** as the **Type**. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). If using CUPS, following the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Click **Save** to continue. diff --git a/doc/content/gateways/models/milesightug87/login.png b/doc/content/hardware/gateways/models/milesightug87/login.png similarity index 100% rename from doc/content/gateways/models/milesightug87/login.png rename to doc/content/hardware/gateways/models/milesightug87/login.png diff --git a/doc/content/gateways/models/milesightug87/packet-forwarder.md b/doc/content/hardware/gateways/models/milesightug87/packet-forwarder.md similarity index 82% rename from doc/content/gateways/models/milesightug87/packet-forwarder.md rename to doc/content/hardware/gateways/models/milesightug87/packet-forwarder.md index 163007fa23..4c9a257f92 100644 --- a/doc/content/gateways/models/milesightug87/packet-forwarder.md +++ b/doc/content/hardware/gateways/models/milesightug87/packet-forwarder.md @@ -1,9 +1,10 @@ --- title: "Connect Milesight UG87 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/milesightug87/packet-forwarder] --- -This section contains instructions for connecting the Milesight UG87 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Milesight UG87 LoRaWAN® gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -15,7 +16,7 @@ In the server configuration options, check the **Enable** box. Choose **Semtech** as the **Type**. -For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) section for help. +For the **Server Address** choose **custom**, and enter the address of {{% tts %}} deployment you are using. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) section for help. Choose the appropriate **Port Up** and **Port Down** values. These are both **1700** by default in {{% tts %}}. diff --git a/doc/content/gateways/models/milesightug87/plus.png b/doc/content/hardware/gateways/models/milesightug87/plus.png similarity index 100% rename from doc/content/gateways/models/milesightug87/plus.png rename to doc/content/hardware/gateways/models/milesightug87/plus.png diff --git a/doc/content/gateways/models/milesightug87/semtech.png b/doc/content/hardware/gateways/models/milesightug87/semtech.png similarity index 100% rename from doc/content/gateways/models/milesightug87/semtech.png rename to doc/content/hardware/gateways/models/milesightug87/semtech.png diff --git a/doc/content/gateways/models/milesightug87/ug87.png b/doc/content/hardware/gateways/models/milesightug87/ug87.png similarity index 100% rename from doc/content/gateways/models/milesightug87/ug87.png rename to doc/content/hardware/gateways/models/milesightug87/ug87.png diff --git a/doc/content/gateways/models/moko-mkgw2-lw/_index.md b/doc/content/hardware/gateways/models/moko-mkgw2-lw/_index.md similarity index 89% rename from doc/content/gateways/models/moko-mkgw2-lw/_index.md rename to doc/content/hardware/gateways/models/moko-mkgw2-lw/_index.md index dad14a9b5b..14b78b83eb 100644 --- a/doc/content/gateways/models/moko-mkgw2-lw/_index.md +++ b/doc/content/hardware/gateways/models/moko-mkgw2-lw/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.mokosmart.com/lorawan-gateway-mkgw2-lw/" description: "MOKOSMART's 8 channel MKGW2 gateway is embedded with Semtech’s high performance multi-channel transceiver SX1301/SX1257 and MTK platform. It is for indoor use and is easy to install." ip_rating: "IP66" backhaul: [Ethernet, Wi-Fi] -aliases: [/gateways/moko-mkgw2-lw] +aliases: [/gateways/moko-mkgw2-lw, /gateways/models/moko-mkgw2-lw] image: [mkgw2-lw.jpg] --- @@ -20,9 +20,9 @@ MOKOSMART's 8 channel MKGW2 gateway is embedded with Semtech’s high performanc ## Registration -Create a gateway by following [the instructions]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway by following [the instructions]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). -The **EUI** of the gateway can be found on the configuration web page of the gateway or on the device packaging. +The **EUI** of the gateway can be found on the configuration web page of the gateway or on the device packaging. {{< figure src="eui.png" alt="Gateway EUI" >}} @@ -39,7 +39,7 @@ It is recommended that the default password is changed for security reasons. ## Connect to {{% tts %}} -The MOKOSMART MKGW2-LW supports the UDP packet forwarder. Please follow instructions for connecting the [UDP packet forwarder]({{< ref "/gateways/concepts/udp" >}}). +The MOKOSMART MKGW2-LW supports the UDP packet forwarder. Please follow instructions for connecting the [UDP packet forwarder]({{< ref "/hardware/gateways/concepts/udp" >}}). Do not forget to click **SAVE&APPLY** after you fill in the parameters. After a few seconds, your gateway should connect to {{% tts %}}. diff --git a/doc/content/gateways/models/moko-mkgw2-lw/eui.png b/doc/content/hardware/gateways/models/moko-mkgw2-lw/eui.png similarity index 100% rename from doc/content/gateways/models/moko-mkgw2-lw/eui.png rename to doc/content/hardware/gateways/models/moko-mkgw2-lw/eui.png diff --git a/doc/content/gateways/models/moko-mkgw2-lw/login-web.png b/doc/content/hardware/gateways/models/moko-mkgw2-lw/login-web.png similarity index 100% rename from doc/content/gateways/models/moko-mkgw2-lw/login-web.png rename to doc/content/hardware/gateways/models/moko-mkgw2-lw/login-web.png diff --git a/doc/content/gateways/models/moko-mkgw2-lw/mkgw2-lw.jpg b/doc/content/hardware/gateways/models/moko-mkgw2-lw/mkgw2-lw.jpg similarity index 100% rename from doc/content/gateways/models/moko-mkgw2-lw/mkgw2-lw.jpg rename to doc/content/hardware/gateways/models/moko-mkgw2-lw/mkgw2-lw.jpg diff --git a/doc/content/gateways/models/multitechconduit-mlinux/001_Multitech_Conduit.png b/doc/content/hardware/gateways/models/multitechconduit-mlinux/001_Multitech_Conduit.png similarity index 100% rename from doc/content/gateways/models/multitechconduit-mlinux/001_Multitech_Conduit.png rename to doc/content/hardware/gateways/models/multitechconduit-mlinux/001_Multitech_Conduit.png diff --git a/doc/content/gateways/models/multitechconduit-mlinux/_index.md b/doc/content/hardware/gateways/models/multitechconduit-mlinux/_index.md similarity index 96% rename from doc/content/gateways/models/multitechconduit-mlinux/_index.md rename to doc/content/hardware/gateways/models/multitechconduit-mlinux/_index.md index 9523762ce6..f210f2510f 100644 --- a/doc/content/gateways/models/multitechconduit-mlinux/_index.md +++ b/doc/content/hardware/gateways/models/multitechconduit-mlinux/_index.md @@ -1,7 +1,8 @@ --- title: "MultiTech Conduit mLinux" description: "The MultiTech MultiConnect® Conduit™ is a configurable, scalable cellular communications gateway for industrial IoT applications." -aliases: [/gateways/multitechconduit-mlinux] +aliases: + [/gateways/multitechconduit-mlinux, /gateways/models/multitechconduit-mlinux] --- {{< figure src="001_Multitech_Conduit.png" alt="MultiTech MultiConnect Conduit Gateway" class="float plain" >}} @@ -21,7 +22,7 @@ The MultiTech Conduit has two compatible firmwares - **AEP**, which is configure ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The gateway EUI can be found at the bottom of the gateway under the field "LORA NODE". @@ -81,7 +82,7 @@ The Gateway Configuration Server can be used to retrieve a proper `global_conf.j ### Configuring the Packet Forwarder -Once the `global_conf.json` file is generated, you will need to add this to your gateway. +Once the `global_conf.json` file is generated, you will need to add this to your gateway. Login to your router at its IP address on your local network, and copy the `global_conf.json` contents in to a file at `/var/config/lora/global_conf.json` @@ -102,7 +103,7 @@ Copy in the contents of the `global_conf.json` file you downloaded. While the fi ... ``` -Multitech devices require a `clksrc` of `0`. Do not skip this step, or your device [will not work!](https://www.multitech.net/developer/software/lora/conduit-mlinux-convert-to-basic-packet-forwarder/#SX1301_conf) +Multitech devices require a `clksrc` of `0`. Do not skip this step, or your device [will not work!](https://www.multitech.net/developer/software/lora/conduit-mlinux-convert-to-basic-packet-forwarder/#SX1301_conf) Finally, edit the configuration settings to start the `lora-packet-forwarder` by default, and disable the `lora-network-server`: diff --git a/doc/content/gateways/models/multitechconduit/_index.md b/doc/content/hardware/gateways/models/multitechconduit/_index.md similarity index 96% rename from doc/content/gateways/models/multitechconduit/_index.md rename to doc/content/hardware/gateways/models/multitechconduit/_index.md index 3fa0991b6a..b9ff3bf4e4 100644 --- a/doc/content/gateways/models/multitechconduit/_index.md +++ b/doc/content/hardware/gateways/models/multitechconduit/_index.md @@ -5,11 +5,16 @@ vendor_page: "http://www.multitech.net/developer/products/multiconnect-Conduit-p description: "The MultiTech MultiConnect® Conduit™ is a configurable, scalable cellular communications gateway for industrial IoT applications." ip_rating: "IP30" backhaul: [Ethernet, Wi-Fi (optional), Cellular (optional)] -aliases: [/guides/connecting-gateways/multitechconduit, /gateways/multitechconduit] +aliases: + [ + /guides/connecting-gateways/multitechconduit, + /gateways/multitechconduit, + /gateways/models/multitechconduit, + ] image: [multitech-conduit.png] --- -The [MultiTech MultiConnect® Conduit™](http://www.multitech.net/developer/products/multiconnect-Conduit-platform/) is a configurable, scalable cellular communications gateway for industrial IoT applications. +The [MultiTech MultiConnect® Conduit™](http://www.multitech.net/developer/products/multiconnect-Conduit-platform/) is a configurable, scalable cellular communications gateway for industrial IoT applications. This guide will help you set up the Multitech Conduit gateway to communicate over {{%tts%}}. @@ -28,7 +33,7 @@ The technical specifications of the Conduit can be found in the software guide i ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The gateway EUI can be found at the bottom of the gateway under the field "LORA NODE". @@ -115,7 +120,7 @@ You can find the packet forwarder logs using the gateway's web console. Do {{< figure src="packet-forwarder.png" alt="Packet forwarder" >}} -Now, in the downloaded logs, open the *lora-pkt-fwd-1.log* file to see the packet forwarder logs. +Now, in the downloaded logs, open the _lora-pkt-fwd-1.log_ file to see the packet forwarder logs. ### Upgrading the Firmware diff --git a/doc/content/gateways/models/multitechconduit/access-save.png b/doc/content/hardware/gateways/models/multitechconduit/access-save.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/access-save.png rename to doc/content/hardware/gateways/models/multitechconduit/access-save.png diff --git a/doc/content/gateways/models/multitechconduit/access.png b/doc/content/hardware/gateways/models/multitechconduit/access.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/access.png rename to doc/content/hardware/gateways/models/multitechconduit/access.png diff --git a/doc/content/gateways/models/multitechconduit/cert-error.png b/doc/content/hardware/gateways/models/multitechconduit/cert-error.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/cert-error.png rename to doc/content/hardware/gateways/models/multitechconduit/cert-error.png diff --git a/doc/content/gateways/models/multitechconduit/confirm.png b/doc/content/hardware/gateways/models/multitechconduit/confirm.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/confirm.png rename to doc/content/hardware/gateways/models/multitechconduit/confirm.png diff --git a/doc/content/gateways/models/multitechconduit/eth.png b/doc/content/hardware/gateways/models/multitechconduit/eth.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/eth.png rename to doc/content/hardware/gateways/models/multitechconduit/eth.png diff --git a/doc/content/gateways/models/multitechconduit/firmware-upgrade.png b/doc/content/hardware/gateways/models/multitechconduit/firmware-upgrade.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/firmware-upgrade.png rename to doc/content/hardware/gateways/models/multitechconduit/firmware-upgrade.png diff --git a/doc/content/gateways/models/multitechconduit/first-time-setup.png b/doc/content/hardware/gateways/models/multitechconduit/first-time-setup.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/first-time-setup.png rename to doc/content/hardware/gateways/models/multitechconduit/first-time-setup.png diff --git a/doc/content/gateways/models/multitechconduit/lbs-cups.png b/doc/content/hardware/gateways/models/multitechconduit/lbs-cups.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/lbs-cups.png rename to doc/content/hardware/gateways/models/multitechconduit/lbs-cups.png diff --git a/doc/content/gateways/models/multitechconduit/lbs-menu.png b/doc/content/hardware/gateways/models/multitechconduit/lbs-menu.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/lbs-menu.png rename to doc/content/hardware/gateways/models/multitechconduit/lbs-menu.png diff --git a/doc/content/gateways/models/multitechconduit/lbs-save.png b/doc/content/hardware/gateways/models/multitechconduit/lbs-save.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/lbs-save.png rename to doc/content/hardware/gateways/models/multitechconduit/lbs-save.png diff --git a/doc/content/gateways/models/multitechconduit/lbs.md b/doc/content/hardware/gateways/models/multitechconduit/lbs.md similarity index 66% rename from doc/content/gateways/models/multitechconduit/lbs.md rename to doc/content/hardware/gateways/models/multitechconduit/lbs.md index 19868f066e..323168b817 100644 --- a/doc/content/gateways/models/multitechconduit/lbs.md +++ b/doc/content/hardware/gateways/models/multitechconduit/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect Multitech Conduit with LoRa Basics™ Station" description: "" +aliases: [/gateways/models/multitechconduit/lbs] --- -This section contains instructions for connecting the Multitech Conduit AEP to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Multitech Conduit AEP to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -22,18 +23,18 @@ Choose **Basic Station** in the **LoRa Mode** dropdown. {{< figure src="../lbs-menu.png" alt="LoRaWAN Menu" >}} -On Multitech gateways, only CUPS **or** LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +On Multitech gateways, only CUPS **or** LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Be sure to select **CUPS** in the **Credentials** dropdown. The entire configuration should look like: - Credentials: CUPS -- URI: See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) +- URI: See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) - Station Config: Leave it as-is (will be overwritten by CUPS) -- Server Cert: Use the [ISRG Root X1 Certificate]({{< ref "reference/root-certificates#isrg-root-x1" >}}) +- Server Cert: Use the [ISRG Root X1 Certificate]({{< ref "/concepts/advanced/root-certificates#isrg-root-x1" >}}) - Gateway Cert: Leave blank -- Gateway Key: [Create a CUPS API key]({{< ref "/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}). Copy the API key and paste it to this field in the following format: `Authorization: Bearer `. Be sure you have also configured CUPS to [transmit an LNS API Key]({{< ref "/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}). +- Gateway Key: [Create a CUPS API key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#create-separate-cups-and-lns-api-keys" >}}). Copy the API key and paste it to this field in the following format: `Authorization: Bearer `. Be sure you have also configured CUPS to [transmit an LNS API Key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}). {{< figure src="../lbs-cups.png" alt="LoRa Basics Station" >}} diff --git a/doc/content/gateways/models/multitechconduit/main-menu.png b/doc/content/hardware/gateways/models/multitechconduit/main-menu.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/main-menu.png rename to doc/content/hardware/gateways/models/multitechconduit/main-menu.png diff --git a/doc/content/gateways/models/multitechconduit/manual-config-2.png b/doc/content/hardware/gateways/models/multitechconduit/manual-config-2.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/manual-config-2.png rename to doc/content/hardware/gateways/models/multitechconduit/manual-config-2.png diff --git a/doc/content/gateways/models/multitechconduit/manual-config.png b/doc/content/hardware/gateways/models/multitechconduit/manual-config.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/manual-config.png rename to doc/content/hardware/gateways/models/multitechconduit/manual-config.png diff --git a/doc/content/gateways/models/multitechconduit/multitech-conduit-ap.png b/doc/content/hardware/gateways/models/multitechconduit/multitech-conduit-ap.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/multitech-conduit-ap.png rename to doc/content/hardware/gateways/models/multitechconduit/multitech-conduit-ap.png diff --git a/doc/content/gateways/models/multitechconduit/multitech-conduit.png b/doc/content/hardware/gateways/models/multitechconduit/multitech-conduit.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/multitech-conduit.png rename to doc/content/hardware/gateways/models/multitechconduit/multitech-conduit.png diff --git a/doc/content/gateways/models/multitechconduit/network-interfaces.png b/doc/content/hardware/gateways/models/multitechconduit/network-interfaces.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/network-interfaces.png rename to doc/content/hardware/gateways/models/multitechconduit/network-interfaces.png diff --git a/doc/content/gateways/models/multitechconduit/packet-forwarder-menu.png b/doc/content/hardware/gateways/models/multitechconduit/packet-forwarder-menu.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/packet-forwarder-menu.png rename to doc/content/hardware/gateways/models/multitechconduit/packet-forwarder-menu.png diff --git a/doc/content/gateways/models/multitechconduit/packet-forwarder.png b/doc/content/hardware/gateways/models/multitechconduit/packet-forwarder.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/packet-forwarder.png rename to doc/content/hardware/gateways/models/multitechconduit/packet-forwarder.png diff --git a/doc/content/gateways/models/multitechconduit/save-and-restart.png b/doc/content/hardware/gateways/models/multitechconduit/save-and-restart.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/save-and-restart.png rename to doc/content/hardware/gateways/models/multitechconduit/save-and-restart.png diff --git a/doc/content/gateways/models/multitechconduit/time-date.png b/doc/content/hardware/gateways/models/multitechconduit/time-date.png similarity index 100% rename from doc/content/gateways/models/multitechconduit/time-date.png rename to doc/content/hardware/gateways/models/multitechconduit/time-date.png diff --git a/doc/content/gateways/models/multitechconduit/udp.md b/doc/content/hardware/gateways/models/multitechconduit/udp.md similarity index 94% rename from doc/content/gateways/models/multitechconduit/udp.md rename to doc/content/hardware/gateways/models/multitechconduit/udp.md index 23a31be0d2..0a9c7b6a86 100644 --- a/doc/content/gateways/models/multitechconduit/udp.md +++ b/doc/content/hardware/gateways/models/multitechconduit/udp.md @@ -1,9 +1,10 @@ --- title: "Connect Multitech Conduit with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/multitechconduit/udp] --- -This section contains instructions for connecting the Multitech Conduit AEP to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Multitech Conduit AEP to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -13,7 +14,7 @@ This section contains instructions for connecting the Multitech Conduit AEP to { To configure the gateway for the correct channel plans, you need a `global_conf.json`. -The Gateway Configuration Server can be used to retrieve a proper `global_conf.json` configuration file for your gateway. Follow instructions [here]({{< ref "/gateways/concepts/udp" >}}). +The Gateway Configuration Server can be used to retrieve a proper `global_conf.json` configuration file for your gateway. Follow instructions [here]({{< ref "/hardware/gateways/concepts/udp" >}}). Once the `global_conf.json` file is generated, you will need to add this to your gateway. In a web browser, open the gateway’s configuration page by navigating to its IP Address obtained from the network it is connected to. Once logged in, you can configure the gateway to connect to {{%tts%}} by following the steps below: diff --git a/doc/content/gateways/models/nasysoutdoorgateway/IX1001.png b/doc/content/hardware/gateways/models/nasysoutdoorgateway/IX1001.png similarity index 100% rename from doc/content/gateways/models/nasysoutdoorgateway/IX1001.png rename to doc/content/hardware/gateways/models/nasysoutdoorgateway/IX1001.png diff --git a/doc/content/gateways/models/nasysoutdoorgateway/_index.md b/doc/content/hardware/gateways/models/nasysoutdoorgateway/_index.md similarity index 89% rename from doc/content/gateways/models/nasysoutdoorgateway/_index.md rename to doc/content/hardware/gateways/models/nasysoutdoorgateway/_index.md index a736641842..4724751130 100644 --- a/doc/content/gateways/models/nasysoutdoorgateway/_index.md +++ b/doc/content/hardware/gateways/models/nasysoutdoorgateway/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.nasys.no/product/lorawan-gateway/" description: "NASys LoRaWAN Outdoor Gateway is an 8 Channel LoRaWAN gateway." ip_rating: "IP67" backhaul: [Ethernet, Cellular (optional)] -aliases: [/gateways/nasysoutdoorgateway] +aliases: [/gateways/nasysoutdoorgateway, /gateways/models/nasysoutdoorgateway] image: [IX1001.png] --- @@ -15,7 +15,7 @@ This page guides you to connect NASys LoRaWAN® Outdoor Gateway to {{% tts %}}. -NASys LoRaWAN Outdoor Gateway is an 8 Channel LoRaWAN gateway, whose technical specifications can be found in [the official product page](https://www.nasys.no/product/lorawan-gateway/). +NASys LoRaWAN Outdoor Gateway is an 8 Channel LoRaWAN gateway, whose technical specifications can be found in [the official product page](https://www.nasys.no/product/lorawan-gateway/). ## Prerequisites @@ -24,7 +24,7 @@ NASys LoRaWAN Outdoor Gateway is an 8 Channel LoRaWAN gateway, whose technical s ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). Typically, the **EUI** field for your gateway should exist on the sticker at the bottom. Make note of the Gateway ID you choose, because it will be needed later. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Typically, the **EUI** field for your gateway should exist on the sticker at the bottom. Make note of the Gateway ID you choose, because it will be needed later. ## Configuration using a Terminal @@ -64,7 +64,7 @@ vi /opt/nas-lgw/global_conf.json Edit the server parameters: - **gateway_ID**: Make sure this is the same as the GatewayEUI (in lowercase). -- **server_address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **server_address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **serv_port_up**: UDP upstream port of the Gateway Server, typically 1700. - **serv_port_down**: UDP downstream port of the Gateway Server, typically 1700. diff --git a/doc/content/gateways/models/peplink-20x/B20X_LoRa.png b/doc/content/hardware/gateways/models/peplink-20x/B20X_LoRa.png similarity index 100% rename from doc/content/gateways/models/peplink-20x/B20X_LoRa.png rename to doc/content/hardware/gateways/models/peplink-20x/B20X_LoRa.png diff --git a/doc/content/gateways/models/peplink-20x/EUI.png b/doc/content/hardware/gateways/models/peplink-20x/EUI.png similarity index 100% rename from doc/content/gateways/models/peplink-20x/EUI.png rename to doc/content/hardware/gateways/models/peplink-20x/EUI.png diff --git a/doc/content/gateways/models/peplink-20x/Event_log.png b/doc/content/hardware/gateways/models/peplink-20x/Event_log.png similarity index 100% rename from doc/content/gateways/models/peplink-20x/Event_log.png rename to doc/content/hardware/gateways/models/peplink-20x/Event_log.png diff --git a/doc/content/gateways/models/peplink-20x/Gateway_setup.png b/doc/content/hardware/gateways/models/peplink-20x/Gateway_setup.png similarity index 100% rename from doc/content/gateways/models/peplink-20x/Gateway_setup.png rename to doc/content/hardware/gateways/models/peplink-20x/Gateway_setup.png diff --git a/doc/content/gateways/models/peplink-20x/Status.png b/doc/content/hardware/gateways/models/peplink-20x/Status.png similarity index 100% rename from doc/content/gateways/models/peplink-20x/Status.png rename to doc/content/hardware/gateways/models/peplink-20x/Status.png diff --git a/doc/content/gateways/models/peplink-20x/_index.md b/doc/content/hardware/gateways/models/peplink-20x/_index.md similarity index 82% rename from doc/content/gateways/models/peplink-20x/_index.md rename to doc/content/hardware/gateways/models/peplink-20x/_index.md index 5ee4702674..981769032a 100644 --- a/doc/content/gateways/models/peplink-20x/_index.md +++ b/doc/content/hardware/gateways/models/peplink-20x/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.peplink.com/products/balance-20x/" description: "Peplink’s Balance 20X is an SD-WAN branch router with an option to add LoRaWAN® gateway functionality using a LoRaWAN FlexModule Mini." ip_rating: backhaul: [Ethernet, Wi-Fi, Cellular (optional)] -aliases: [/gateways/peplink] +aliases: [/gateways/peplink, /gateways/models/peplink] image: [B20X_LoRa.png] --- @@ -13,9 +13,9 @@ image: [B20X_LoRa.png] {{< figure src="B20X_LoRa.png" alt="Balance 20X with LoRaWAN FlexModule Mini" class="plain" >}} -The Balance 20X delivers excellent routing throughput with an embedded cellular modem, making it an easy-to-use, all-in-one router for indoor deployments. Its installation and configuration are made simple through a web-based user-friendly interface. +The Balance 20X delivers excellent routing throughput with an embedded cellular modem, making it an easy-to-use, all-in-one router for indoor deployments. Its installation and configuration are made simple through a web-based user-friendly interface. -The gateway supports both [LoRa Basics™ Station]({{< ref "/gateways/concepts/lora-basics-station" >}}) and the [Semtech UDP Packet Forwarder]({{< ref "/gateways/concepts/udp" >}}). Keep in mind that using Lora Basics™ Station is preferred. +The gateway supports both [LoRa Basics™ Station]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) and the [Semtech UDP Packet Forwarder]({{< ref "/hardware/gateways/concepts/udp" >}}). Keep in mind that using Lora Basics™ Station is preferred. For scalable deployments, Peplink’s in-house device management system, [InControl](https://www.peplink.com/software/network-management-solution-incontrol-2/) can also be used. @@ -27,10 +27,9 @@ For scalable deployments, Peplink’s in-house device management system, [InCont {{< note "Balance 20X must be running 8.3.0 or newer firmware version. Please check [Peplink's download page](https://www.peplink.com/support/downloads/#balance) to download the latest firmware version." />}} - ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). In the registration process, you will need the gateway's EUI. The Peplink 20X's EUI can be found in several ways: @@ -48,13 +47,14 @@ On your Peplink router’s web admin page, go to the **Advanced** tab along the Find **LoRaWAN** settings on the left and tick the **Enable** checkbox. -Download a [common root SSL certificate]({{< ref "/reference/root-certificates" >}}) used in {{% tts %}}. For this guide, we used **ISRG Root X1 certificate**. +Download a [common root SSL certificate]({{< ref "/concepts/advanced/root-certificates" >}}) used in {{% tts %}}. For this guide, we used **ISRG Root X1 certificate**. Now configure the following settings: + - **Protocol: Basics™ Station** - **Server**: select **Configuration and Update Server (CUPS)** and enter the address of your {{% tts %}} deployment - **Server Certificate (pem encoded):** paste the ISRG Root X1 certificate you previously downloaded -- **Gateway Authorization:** select **Token** and paste your gateway's API key (check the [Create Gateway API Key]({{< ref "/gateways/concepts/adding-gateways/#create-gateway-api-key" >}}) section) +- **Gateway Authorization:** select **Token** and paste your gateway's API key (check the [Create Gateway API Key]({{< ref "/hardware/gateways/concepts/adding-gateways/#create-gateway-api-key" >}}) section) - **Network Mode: Public** - **Antenna Gain:** enter antenna Gain (**2dBi** for Peplink Balance 20X gateway) - **Cable Loss:** enter cable loss if there is a cable between antenna and LoRa module diff --git a/doc/content/gateways/models/rak-7240/_index.md b/doc/content/hardware/gateways/models/rak-7240/_index.md similarity index 89% rename from doc/content/gateways/models/rak-7240/_index.md rename to doc/content/hardware/gateways/models/rak-7240/_index.md index 387eff7c05..da199e4424 100644 --- a/doc/content/gateways/models/rak-7240/_index.md +++ b/doc/content/hardware/gateways/models/rak-7240/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.rakwireless.com/en-us/products/lpwan-gateways-and-conc description: "The RAK7240 (WisGate Edge Prime) is a macro outdoor LoRaWAN® gateway, ideal for large scale deployments. It is highly reliable, customizable, and offers a WiFi, LTE and Ethernet backhaul." ip_rating: "IP65" backhaul: [Ethernet, Wi-Fi, Cellular] -aliases: [/gateways/rak-7240] +aliases: [/gateways/rak-7240, /gateways/models/rak-7240] image: [rak7240.jpg] --- @@ -37,15 +37,15 @@ You can access the RAK7240 gateway's Web Management Platform in two ways - using #### WiFi Access Point Mode -The gateway exposes a WiFi network with SSID format **RAK7240_XXXX**, where **XXXX** represents the last two bytes of the gateway's MAC address. You will need no password to connect to this WiFi network. +The gateway exposes a WiFi network with SSID format **RAK7240_XXXX**, where **XXXX** represents the last two bytes of the gateway's MAC address. You will need no password to connect to this WiFi network. -To access the Web Management Platform, connect your PC/tablet/phone to this network and enter the default gateway IP address `192.168.230.1` in your browser. +To access the Web Management Platform, connect your PC/tablet/phone to this network and enter the default gateway IP address `192.168.230.1` in your browser. #### Ethernet Port -Connect the Ethernet port of the gateway to the PoE port of the PoE injector with an Ethernet cable. Connect the LAN port of the PoE injector to your PC. +Connect the Ethernet port of the gateway to the PoE port of the PoE injector with an Ethernet cable. Connect the LAN port of the PoE injector to your PC. -The default IP address used for accessing the Web Management Platform has a format `169.254.X.X`, where `X.X` segment is mapped from the last four bits of the gateway's MAC address. For example, if the last four bits of the MAC address are `0F:01`, the IP address is `169.254.15.1`. +The default IP address used for accessing the Web Management Platform has a format `169.254.X.X`, where `X.X` segment is mapped from the last four bits of the gateway's MAC address. For example, if the last four bits of the MAC address are `0F:01`, the IP address is `169.254.15.1`. Now manually configure the IP address of your PC/tablet/phone to be in the same network (e.g. `169.254.15.2`) and access the Web Management Platform through your browser. @@ -55,33 +55,33 @@ In both ways, after succesfully accessing the Web Management Platform, you will ### Access the Internet -Providing your gateway with the Internet access can be done in three ways - through WiFi or Ethernet/PoE connection to your router, or via cellular network. +Providing your gateway with the Internet access can be done in three ways - through WiFi or Ethernet/PoE connection to your router, or via cellular network. #### WiFi Wireless Client -In the Web Management Platform, navigate to **Network → Wi-Fi** and enable the **Wireless Client**. +In the Web Management Platform, navigate to **Network → Wi-Fi** and enable the **Wireless Client**. -Click the **Scan** button to scan for available WiFi networks. Choose your router's WiFi network, enter the **Encryption** method it is using and the **Key**. +Click the **Scan** button to scan for available WiFi networks. Choose your router's WiFi network, enter the **Encryption** method it is using and the **Key**. {{< figure src="wireless-client.png" alt="Wireless Client enabled" class="plain" >}} -After successfully connecting, your gateway's WiFi interface will be assigned with an IP address by the DHCP server running on your WiFi router. +After successfully connecting, your gateway's WiFi interface will be assigned with an IP address by the DHCP server running on your WiFi router. #### WAN Interface -Connect your gateway's Ethernet port to the PoE port of the PoE injector with an Ethernet cable. Connect the LAN port of the PoE injector to your router. +Connect your gateway's Ethernet port to the PoE port of the PoE injector with an Ethernet cable. Connect the LAN port of the PoE injector to your router. The DHCP server running on the router will assign an IP address to your gateway's WAN interface. You can find out this IP address by navigating to **Network → WAN Interface**. #### Cellular Interface -Place a SIM card in your gateway's Nano SIM Socket. +Place a SIM card in your gateway's Nano SIM Socket. -In the Web Management Platform, navigate to **Network → Cellular Interface**. +In the Web Management Platform, navigate to **Network → Cellular Interface**. If needed, you will need to set **APN**, **User** and **Password** for your provider. Commonly, these parameters are automatically acquired. -If your SIM card needs a PIN, enter it in the **PIN Code** field. +If your SIM card needs a PIN, enter it in the **PIN Code** field. It is also recommended to set the gateway metric. By increasing the gateway metric, you are lowering the priority of using the specific interface. Since using cellular backhaul can be limiting or expensive, the gateway metric for cellular interface should be the highest one. @@ -91,12 +91,12 @@ The IP address of your gateway will be shown under **Status**. ### Configuring LoRaWAN Network Settings -In the Web Management Platform, navigate to **LoRa Network → Network Settings**. +In the Web Management Platform, navigate to **LoRa Network → Network Settings**. -RAK7240 can operate in three modes - **Network Server**, **Basic Station** and **Packet Forwarder**. The available network settings depend on which **Mode** you choose. For this guide, Network Server mode is not relevant. Continue reading to learn to connect RAK7240 to {{% tts %}} using [Basic Station mode]({{< ref "/gateways/models/rak-7240/bs.md" >}}) or [Packet Forwarder mode]({{< ref "/gateways/models/rak-7240/pf.md" >}}). +RAK7240 can operate in three modes - **Network Server**, **Basic Station** and **Packet Forwarder**. The available network settings depend on which **Mode** you choose. For this guide, Network Server mode is not relevant. Continue reading to learn to connect RAK7240 to {{% tts %}} using [Basic Station mode]({{< ref "/hardware/gateways/models/rak-7240/bs.md" >}}) or [Packet Forwarder mode]({{< ref "/hardware/gateways/models/rak-7240/pf.md" >}}). ## Registration -Create a gateway on {{% tts %}} by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway on {{% tts %}} by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). You can find the **Gateway EUI** under **LoRa Network → Network Settings → LoRaWAN Network Settings** once you successfully access the Web Management Platform. diff --git a/doc/content/gateways/models/rak-7240/bs.md b/doc/content/hardware/gateways/models/rak-7240/bs.md similarity index 51% rename from doc/content/gateways/models/rak-7240/bs.md rename to doc/content/hardware/gateways/models/rak-7240/bs.md index 1f345eb934..3a6bcc1662 100644 --- a/doc/content/gateways/models/rak-7240/bs.md +++ b/doc/content/hardware/gateways/models/rak-7240/bs.md @@ -2,10 +2,10 @@ title: "Connect RAK7240 in Basic Station Mode" description: "" weight: 2 -aliases: [/gateways/rak-7240/bs] +aliases: [/gateways/rak-7240/bs, /gateways/models/rak-7240/bs] --- -RAK7240's **Basic Station** mode utilizes the [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}) protocol. As part of the Basic Station mode, RAK7240 supports two {{% lbs %}} subprotocols - [LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}) and [CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). Follow this section to learn how to connect to {{% tts %}} Network Server using this mode. +RAK7240's **Basic Station** mode utilizes the [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) protocol. As part of the Basic Station mode, RAK7240 supports two {{% lbs %}} subprotocols - [LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}) and [CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Follow this section to learn how to connect to {{% tts %}} Network Server using this mode. @@ -13,18 +13,18 @@ To configure the gateway to use LNS or CUPS, first navigate to **LoRa Network &# ## CUPS -To connect the gateway to via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +To connect the gateway to via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). -Select **TLS Server Authentication and Client Token** for the **Authentication Mode**. Copy your CUPS Server Certificate and paste it in the **trust** field. Copy the [CUPS Key File]({{< ref "/gateways/concepts/lora-basics-station/cups#cups-key-file" >}}) and paste it in the **token** field. +Select **TLS Server Authentication and Client Token** for the **Authentication Mode**. Copy your CUPS Server Certificate and paste it in the **trust** field. Copy the [CUPS Key File]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#cups-key-file" >}}) and paste it in the **token** field. ## LNS To connect the gateway to via LNS protocol, fill in the info in the **LNS Server** section instead. -Follow the instructions for [Connecting LNS]({{< ref "/gateways/concepts/lora-basics-station/lns" >}}). +Follow the instructions for [Connecting LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns" >}}). -Select **TLS Server Authentication and Client Token** for the **Authentication Mode**. Copy your LNS Server Certificate and paste it in the **trust** field. Copy the [LNS Key File]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) and paste it in the **token** field. +Select **TLS Server Authentication and Client Token** for the **Authentication Mode**. Copy your LNS Server Certificate and paste it in the **trust** field. Copy the [LNS Key File]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-key-file" >}}) and paste it in the **token** field. -Whichever subprotocol you have configured, press **Save & Apply** and your gateway should appear as connected in {{% tts %}} Console. +Whichever subprotocol you have configured, press **Save & Apply** and your gateway should appear as connected in {{% tts %}} Console. {{< figure src="../cups-lns.png" alt="Configuring CUPS and LNS" class="plain" >}} diff --git a/doc/content/gateways/models/rak-7240/cellular-interface.jpg b/doc/content/hardware/gateways/models/rak-7240/cellular-interface.jpg similarity index 100% rename from doc/content/gateways/models/rak-7240/cellular-interface.jpg rename to doc/content/hardware/gateways/models/rak-7240/cellular-interface.jpg diff --git a/doc/content/gateways/models/rak-7240/cups-lns.png b/doc/content/hardware/gateways/models/rak-7240/cups-lns.png similarity index 100% rename from doc/content/gateways/models/rak-7240/cups-lns.png rename to doc/content/hardware/gateways/models/rak-7240/cups-lns.png diff --git a/doc/content/gateways/models/rak-7240/ethernet-poe.png b/doc/content/hardware/gateways/models/rak-7240/ethernet-poe.png similarity index 100% rename from doc/content/gateways/models/rak-7240/ethernet-poe.png rename to doc/content/hardware/gateways/models/rak-7240/ethernet-poe.png diff --git a/doc/content/gateways/models/rak-7240/pf.md b/doc/content/hardware/gateways/models/rak-7240/pf.md similarity index 77% rename from doc/content/gateways/models/rak-7240/pf.md rename to doc/content/hardware/gateways/models/rak-7240/pf.md index 3e58c28201..64dbe36610 100644 --- a/doc/content/gateways/models/rak-7240/pf.md +++ b/doc/content/hardware/gateways/models/rak-7240/pf.md @@ -2,10 +2,10 @@ title: "Connect RAK7240 in Packet Forwarder Mode" description: "" weight: 3 -aliases: [/gateways/rak-7240/pf] +aliases: [/gateways/rak-7240/pf, /gateways/models/rak-7240/pf] --- -RAK7240's **Packet Forwarder** mode utilizes the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}) protocol. Follow this section to learn how to connect to {{% tts %}} Network Server using this mode. +RAK7240's **Packet Forwarder** mode utilizes the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}) protocol. Follow this section to learn how to connect to {{% tts %}} Network Server using this mode. @@ -15,9 +15,9 @@ To configure the gateway to use the {{% udp-pf %}}, navigate to **LoRa Network & ## Semtech UDP GWMP Protocol -To use the legacy {{% udp-pf %}}, select **Semtech UDP GWMP Protocol** in the **Protocol** drop-down list. +To use the legacy {{% udp-pf %}}, select **Semtech UDP GWMP Protocol** in the **Protocol** drop-down list. -Enter {{% tts %}} address in the **Server Address** field. +Enter {{% tts %}} address in the **Server Address** field. Fill in the **Server Port Up** and **Server Port Down** fields with value `1700`. diff --git a/doc/content/gateways/models/rak-7240/rak7240.jpg b/doc/content/hardware/gateways/models/rak-7240/rak7240.jpg similarity index 100% rename from doc/content/gateways/models/rak-7240/rak7240.jpg rename to doc/content/hardware/gateways/models/rak-7240/rak7240.jpg diff --git a/doc/content/gateways/models/rak-7240/udp-pf.jpg b/doc/content/hardware/gateways/models/rak-7240/udp-pf.jpg similarity index 100% rename from doc/content/gateways/models/rak-7240/udp-pf.jpg rename to doc/content/hardware/gateways/models/rak-7240/udp-pf.jpg diff --git a/doc/content/gateways/models/rak-7240/wireless-client.png b/doc/content/hardware/gateways/models/rak-7240/wireless-client.png similarity index 100% rename from doc/content/gateways/models/rak-7240/wireless-client.png rename to doc/content/hardware/gateways/models/rak-7240/wireless-client.png diff --git a/doc/content/gateways/models/rak-7240/wmp.jpg b/doc/content/hardware/gateways/models/rak-7240/wmp.jpg similarity index 100% rename from doc/content/gateways/models/rak-7240/wmp.jpg rename to doc/content/hardware/gateways/models/rak-7240/wmp.jpg diff --git a/doc/content/gateways/models/raspberry-pi/_index.md b/doc/content/hardware/gateways/models/raspberry-pi/_index.md similarity index 92% rename from doc/content/gateways/models/raspberry-pi/_index.md rename to doc/content/hardware/gateways/models/raspberry-pi/_index.md index f7b443d030..66961039ac 100644 --- a/doc/content/gateways/models/raspberry-pi/_index.md +++ b/doc/content/hardware/gateways/models/raspberry-pi/_index.md @@ -2,7 +2,7 @@ title: "Building a gateway with Raspberry Pi and IC880A" description: "" weight: 1 -aliases: [/gateways/raspberry-pi] +aliases: [/gateways/raspberry-pi, /gateways/models/raspberry-pi] --- This guide can help you build your own LoRaWAN gateway using a Raspberry Pi and an iC880A LoRa concentrator board, and run {{% lbs %}} on it. @@ -146,7 +146,7 @@ Make sure you write it down for further steps. ## Register the Gateway on {{% tts %}} -To register your gateway on {{% tts %}}, follow the process described in the [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways/" >}}) section. For the **Gateway EUI**, use the EUI that was derived in the previous step. +To register your gateway on {{% tts %}}, follow the process described in the [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways/" >}}) section. For the **Gateway EUI**, use the EUI that was derived in the previous step. While registering, it is also recommended to enable the **Require authenticated connection** option. @@ -154,7 +154,7 @@ While registering, it is also recommended to enable the **Require authenticated Next, you need to create an API key for your gateway on {{% tts %}}, which will be used for your gateway's authentication. -Follow the instructions in the [LNS]({{< ref "/gateways/concepts/lora-basics-station/lns#create-an-api-key" >}}) section to create an API key with the **Link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink** right. Make sure to copy the key as you will not be able to see it again. +Follow the instructions in the [LNS]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#create-an-api-key" >}}) section to create an API key with the **Link as Gateway to a Gateway Server for traffic exchange, i.e. write uplink and read downlink** right. Make sure to copy the key as you will not be able to see it again. ## Configure {{% lbs %}} @@ -172,7 +172,7 @@ Create a configuration file `tc.uri` containing an LNS server address. For examp echo 'wss://eu1.cloud.thethings.network:8887' | sudo tee /opt/ttn-station/config/tc.uri ``` -See [Server Addresses]({{< ref "/the-things-stack/concepts/server-addresses" >}}) if you are not sure which server address to use. See also [LNS Server Address]({{< ref "/gateways/concepts/lora-basics-station/lns#lns-server-address" >}}) for info about LNS server address format. +See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) if you are not sure which server address to use. See also [LNS Server Address]({{< ref "/hardware/gateways/concepts/lora-basics-station/lns#lns-server-address" >}}) for info about LNS server address format. Next, create the `tc.key` configuration file containing an authorization header. This header will contain the API Key you created in the previous step, and it will be used to authenticate your gateway's connection. diff --git a/doc/content/gateways/models/raspberry-pi/cables.jpg b/doc/content/hardware/gateways/models/raspberry-pi/cables.jpg similarity index 100% rename from doc/content/gateways/models/raspberry-pi/cables.jpg rename to doc/content/hardware/gateways/models/raspberry-pi/cables.jpg diff --git a/doc/content/gateways/models/raspberry-pi/hardware.png b/doc/content/hardware/gateways/models/raspberry-pi/hardware.png similarity index 100% rename from doc/content/gateways/models/raspberry-pi/hardware.png rename to doc/content/hardware/gateways/models/raspberry-pi/hardware.png diff --git a/doc/content/gateways/models/tektelickonamicro/_index.md b/doc/content/hardware/gateways/models/tektelickonamicro/_index.md similarity index 92% rename from doc/content/gateways/models/tektelickonamicro/_index.md rename to doc/content/hardware/gateways/models/tektelickonamicro/_index.md index 6557f5e0ab..9790ed8509 100644 --- a/doc/content/gateways/models/tektelickonamicro/_index.md +++ b/doc/content/hardware/gateways/models/tektelickonamicro/_index.md @@ -5,10 +5,10 @@ vendor_page: "https://tektelic.com/products/gateways/kona-micro-iot-gateway/" description: "Tektelic Kona Micro IoT LoRaWAN Gateway is an 8 channel LoRaWAN gateway." ip_rating: "IP30" backhaul: [Ethernet, Cellular] -aliases: [/gateways/tektelickonamicro] +aliases: [/gateways/tektelickonamicro, /gateways/models/tektelickonamicro] image: [kona-micro.jpg] --- - + This page guides you to connect Tektelic Kona Micro IoT LoRaWAN® Gateway to {{% tts %}}. @@ -24,7 +24,7 @@ Tektelic Kona Micro IoT LoRaWAN Gateway is an 8 channel LoRaWAN gateway, whose t ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). The **EUI** of the gateway can be found on the back panel of the gateway under the field **GW ID**. ## Connect to the Gateway @@ -56,7 +56,7 @@ The password for the **root** user can be found on the back panel of the gateway ## Connecting the Gateway to {{% tts %}} -The Tektelic Kona Micro supports {{% lbs %}} and the legacy {{% udp-pf %}}. +The Tektelic Kona Micro supports {{% lbs %}} and the legacy {{% udp-pf %}}. {{% lbs %}} is more secure and supports configuration of custom channel plans, amongst other improvements, so please follow instructions for [connecting the Tektelic Kona Micro with {{% lbs %}}]({{< relref "lbs" >}}). diff --git a/doc/content/gateways/models/tektelickonamicro/kona-micro.jpg b/doc/content/hardware/gateways/models/tektelickonamicro/kona-micro.jpg similarity index 100% rename from doc/content/gateways/models/tektelickonamicro/kona-micro.jpg rename to doc/content/hardware/gateways/models/tektelickonamicro/kona-micro.jpg diff --git a/doc/content/gateways/models/tektelickonamicro/lbs.md b/doc/content/hardware/gateways/models/tektelickonamicro/lbs.md similarity index 92% rename from doc/content/gateways/models/tektelickonamicro/lbs.md rename to doc/content/hardware/gateways/models/tektelickonamicro/lbs.md index 36b68f26e8..6175082ff5 100644 --- a/doc/content/gateways/models/tektelickonamicro/lbs.md +++ b/doc/content/hardware/gateways/models/tektelickonamicro/lbs.md @@ -1,10 +1,11 @@ --- title: "Connect Tektelic Kona Micro with Lora Basics™ Station" description: "" -aliases: [/gateways/tektelickonamicro/lbs] +aliases: + [/gateways/tektelickonamicro/lbs, /gateways/models/tektelickonamicro/lbs] --- -This section guides you to connect the Tektelic Kona Micro IoT LoRaWAN® Gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section guides you to connect the Tektelic Kona Micro IoT LoRaWAN® Gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -18,7 +19,7 @@ Obtain the **ipk/bsp** package by contacting Tektelic's support team. Create an Upload the `Basic-Station-packages-vx.x.x-for-Tektelic-gateways.tar.gz` to the directory `/lib/firmware` on the target gateway and extract it using following command: -```bash +```bash tar -C /lib/firmware \ -zxvf /lib/firmware/Basic-Station-packages-vx.x.x-for-Tektelic-gateways.tar.gz ``` @@ -84,7 +85,7 @@ The Basic Station process ID should be displayed. ### Upload Configuration Files -On Basic Station gateways, only CUPS or LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +On Basic Station gateways, only CUPS or LNS can be configured. Configuring CUPS will automatically configure LNS, so to use {{% tts %}}, just follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). After completing the instructions for CUPS, you should have the following files: diff --git a/doc/content/gateways/models/tektelickonamicro/udp.md b/doc/content/hardware/gateways/models/tektelickonamicro/udp.md similarity index 86% rename from doc/content/gateways/models/tektelickonamicro/udp.md rename to doc/content/hardware/gateways/models/tektelickonamicro/udp.md index 1ae1368eaa..6f5ed7b3fe 100644 --- a/doc/content/gateways/models/tektelickonamicro/udp.md +++ b/doc/content/hardware/gateways/models/tektelickonamicro/udp.md @@ -1,10 +1,11 @@ --- title: "Connect Tektelic Kona Micro with UDP Packet Forwarder" description: "" -aliases: [/gateways/tektelickonamicro/udp] +aliases: + [/gateways/tektelickonamicro/udp, /gateways/models/tektelickonamicro/udp] --- -This section guides you to connect the Tektelic Kona Micro IoT LoRaWAN® Gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section guides you to connect the Tektelic Kona Micro IoT LoRaWAN® Gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -20,7 +21,7 @@ Press the `i` key on your keyboard to start insert mode. Once finished editing, Edit the server parameters: -- **server_address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **server_address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **serv_port_up**: UDP upstream port of the Gateway Server, typically 1700. - **serv_port_down**: UDP downstream port of the Gateway Server, typically 1700. diff --git a/doc/content/gateways/models/thethingsindoorgateway/TTIG.png b/doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgateway/TTIG.png rename to doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG.png diff --git a/doc/content/gateways/models/thethingsindoorgateway/TTIG_Claim.png b/doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_Claim.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgateway/TTIG_Claim.png rename to doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_Claim.png diff --git a/doc/content/gateways/models/thethingsindoorgateway/TTIG_EUI.png b/doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_EUI.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgateway/TTIG_EUI.png rename to doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_EUI.png diff --git a/doc/content/gateways/models/thethingsindoorgateway/TTIG_Serial.jpg b/doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_Serial.jpg similarity index 100% rename from doc/content/gateways/models/thethingsindoorgateway/TTIG_Serial.jpg rename to doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_Serial.jpg diff --git a/doc/content/gateways/models/thethingsindoorgateway/TTIG_WiFi_Setup.png b/doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_WiFi_Setup.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgateway/TTIG_WiFi_Setup.png rename to doc/content/hardware/gateways/models/thethingsindoorgateway/TTIG_WiFi_Setup.png diff --git a/doc/content/gateways/models/thethingsindoorgateway/_index.md b/doc/content/hardware/gateways/models/thethingsindoorgateway/_index.md similarity index 95% rename from doc/content/gateways/models/thethingsindoorgateway/_index.md rename to doc/content/hardware/gateways/models/thethingsindoorgateway/_index.md index 4f4b5f2ac0..1564c1b3fc 100644 --- a/doc/content/gateways/models/thethingsindoorgateway/_index.md +++ b/doc/content/hardware/gateways/models/thethingsindoorgateway/_index.md @@ -7,7 +7,8 @@ ip_rating: backhaul: [Wi-Fi] distributions: ["Sandbox", "Cloud"] new_in_version: 3.13.3 -aliases: [/gateways/thethingsindoorgateway] +aliases: + [/gateways/thethingsindoorgateway, /gateways/models/thethingsindoorgateway] image: [TTIG.png] --- @@ -142,7 +143,7 @@ If your configuration is correct, - Then, it will blink from GREEN to RED and vice versa for a few seconds while it connects to the server and fetches the necessary configuration. - Please allow 5-10 minutes for the gateway to pick up the new configuration. -For all the LED states and button actions, check the [troubleshooting]({{< ref "/gateways/models/thethingsindoorgateway/#led-states" >}}) section. +For all the LED states and button actions, check the [troubleshooting]({{< ref "/hardware/gateways/models/thethingsindoorgateway/#led-states" >}}) section. If this is the first time your gateway is being powered on/connected to WiFi, it might pick up a new firmware depending on when it was last updated. This is indicated by alternating GREEN/RED blinks of the LED. Please leave the gateway powered on when this happens. @@ -174,9 +175,9 @@ Once {{% ttig %}} is claimed on a {{% tts %}} cluster, the following steps will If you want to connect your gateway to an LNS on a local network (for example if you have {{% tts %}} installed for debugging on your laptop), use the steps below. -{{< note >}} In order to connect your {{% ttig %}} to a local {{% tts %}} network, the [`gs.basic-station.allow-unauthenticated` option]({{< ref "/reference/configuration/gateway-server#security-options" >}}) must be set to `true` in [{{% tts %}} configuration]({{< ref "/the-things-stack/host/docker/configuration#understanding-the-things-stack-configuration" >}}). {{}} +{{< note >}} In order to connect your {{% ttig %}} to a local {{% tts %}} network, the [`gs.basic-station.allow-unauthenticated` option]({{< ref "/enterprise/management/configuration/gateway-server#security-options" >}}) must be set to `true` in [{{% tts %}} configuration]({{< ref "/enterprise/docker/configuration#understanding-the-things-stack-configuration" >}}). {{}} -First, register the {{% ttig %}} on your target LNS by following [the instructions]({{< ref "/gateways/concepts/adding-gateways" >}}). +First, register the {{% ttig %}} on your target LNS by following [the instructions]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). In order for this to work, both the {{% ttig %}} and the local machine where the LNS is running must be connected to the same WiFi access point. @@ -196,7 +197,7 @@ Restart the {{% ttig %}} by removing and reinserting the power supply and if you If you want to connect your gateway to a remotely hosted LNS, use the steps below. -First, register the {{% ttig %}} on your target LNS. If the target LNS requires authenticated connections, then create an auth token for the gateway. If the target LNS is a {{% tts %}} instance, then create an API Key with Link Gateway Rights. Follow the instructions for [Creating a Gateway API key]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). +First, register the {{% ttig %}} on your target LNS. If the target LNS requires authenticated connections, then create an auth token for the gateway. If the target LNS is a {{% tts %}} instance, then create an API Key with Link Gateway Rights. Follow the instructions for [Creating a Gateway API key]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). On the {{% tts %}} cluster where the gateway is claimed, head over to the **General settings** tab on the navigation panel of the gateway. diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/_index.md b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/_index.md similarity index 99% rename from doc/content/gateways/models/thethingsindoorgatewaypro/_index.md rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/_index.md index c8c319fb92..11683ad03e 100644 --- a/doc/content/gateways/models/thethingsindoorgatewaypro/_index.md +++ b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/_index.md @@ -4,6 +4,7 @@ vendor: "The Things Industries" vendor_page: "https://www.thethingsindustries.com/gateways/the-things-indoor-gateway-pro/" description: "The Things Indoor Gateway Pro is a fully cloud-managed 8 channel LoRaWAN® gateway." backhaul: [Cellular, Wi-Fi, Ethernet] +aliases: [/gateways/models/thethingsindoorgatewaypro] new_in_version: 3.32.0 image: [ttigpro.png] --- diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/bottom.svg b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/bottom.svg similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/bottom.svg rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/bottom.svg diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/ceiling-mount.svg b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/ceiling-mount.svg similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/ceiling-mount.svg rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/ceiling-mount.svg diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/desktop-mount.svg b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/desktop-mount.svg similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/desktop-mount.svg rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/desktop-mount.svg diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/post-claim.png b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/post-claim.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/post-claim.png rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/post-claim.png diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/power.svg b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/power.svg similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/power.svg rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/power.svg diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/subscription-add-gateway.png b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/subscription-add-gateway.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/subscription-add-gateway.png rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/subscription-add-gateway.png diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/ttigpro.png b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/ttigpro.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/ttigpro.png rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/ttigpro.png diff --git a/doc/content/gateways/models/thethingsindoorgatewaypro/wifi.png b/doc/content/hardware/gateways/models/thethingsindoorgatewaypro/wifi.png similarity index 100% rename from doc/content/gateways/models/thethingsindoorgatewaypro/wifi.png rename to doc/content/hardware/gateways/models/thethingsindoorgatewaypro/wifi.png diff --git a/doc/content/gateways/models/thethingskickstartergateway/TTKG.png b/doc/content/hardware/gateways/models/thethingskickstartergateway/TTKG.png similarity index 100% rename from doc/content/gateways/models/thethingskickstartergateway/TTKG.png rename to doc/content/hardware/gateways/models/thethingskickstartergateway/TTKG.png diff --git a/doc/content/gateways/models/thethingskickstartergateway/_index.md b/doc/content/hardware/gateways/models/thethingskickstartergateway/_index.md similarity index 90% rename from doc/content/gateways/models/thethingskickstartergateway/_index.md rename to doc/content/hardware/gateways/models/thethingskickstartergateway/_index.md index 7082bc1683..e6277ca207 100644 --- a/doc/content/gateways/models/thethingskickstartergateway/_index.md +++ b/doc/content/hardware/gateways/models/thethingskickstartergateway/_index.md @@ -5,7 +5,11 @@ vendor_page: "https://www.thethingsnetwork.org/docs/gateways/gateway/" description: "The Things Kickstarter Gateway is a LoRaWAN gateway." ip_rating: backhaul: [Ethernet, Wi-Fi] -aliases: [/gateways/thethingskickstartergateway] +aliases: + [ + /gateways/thethingskickstartergateway, + /gateways/models/thethingskickstartergateway, + ] image: [TTKG.png] --- @@ -24,7 +28,7 @@ The Things Kickstarter Gateway is a LoRaWAN gateway, whose technical specificati ## Registration -Create a gateway by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). Choose a **Gateway ID**. An **EUI** is not necessary. +Create a gateway by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Choose a **Gateway ID**. An **EUI** is not necessary. Create an API Key with Gateway Link rights for this gateway using the same instructions. Copy the key and save it for later use. @@ -46,7 +50,7 @@ Choose the WiFi network from the drop down and enter a password if necessary. Click the **Show Advanced Options** button and enter the following fields: -- **Account Server**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Account Server**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Gateway Key**: The API Key that you created earlier. - Click **Save** when done. @@ -93,7 +97,7 @@ A possible cause of this issue is that the LoRa board is not fully pushed in in ### My gateway stays in AP mode. What do I do? -This behaviour occurs when there is a glitch in the WiFi connection of the gateway. When this happens, your gateway will turn into an AP and devices you used to set up the gateway can connect to it (your laptop or phone). To avoid this, you should remove the gateway from the list of APs from your laptop/phone (*Network Settings → Things-Gateway-XXXX → Forget this network*). +This behaviour occurs when there is a glitch in the WiFi connection of the gateway. When this happens, your gateway will turn into an AP and devices you used to set up the gateway can connect to it (your laptop or phone). To avoid this, you should remove the gateway from the list of APs from your laptop/phone (_Network Settings → Things-Gateway-XXXX → Forget this network_). ### I want to get in-depth insight/read debug messages of my gateway. Is that possible? @@ -103,14 +107,14 @@ Connect a UART interface device to your computer. Connect the RX line to the RX {{< figure src="uart-sample.jpg" alt="Sample connection between The Things Kickstarter gateway and an UART device" >}} -Now, you need to start a terminal session to UART interface device with `115200@8N`. On Windows you can use *PuTTY*, on macOS or Linux use *screen*. The sample output is shown below. +Now, you need to start a terminal session to UART interface device with `115200@8N`. On Windows you can use _PuTTY_, on macOS or Linux use _screen_. The sample output is shown below. {{< figure src="screen-macos.png" alt="Sample screen output" >}} ### What steps do I need to take if I want to relocate my gateway? -There is no need to reconfigure the gateway, however, it is recommended to update the [gateway location settings]({{< ref "/gateways/concepts/adding-gateways#set-gateway-location" >}}) in {{% tts %}} Console for a better accuracy. +There is no need to reconfigure the gateway, however, it is recommended to update the [gateway location settings]({{< ref "/hardware/gateways/concepts/adding-gateways#set-gateway-location" >}}) in {{% tts %}} Console for a better accuracy. -### I see *Unexpected data sent to gateway* error. What should I do? +### I see _Unexpected data sent to gateway_ error. What should I do? This error seems to appear when the Gateway ID length exceeds the maximum of 34 characters. If your gateway's ID is longer than the maximum allowed, delete and re-register your gateway in {{% tts %}} Console with a new, shorter Gateway ID. diff --git a/doc/content/gateways/models/thethingskickstartergateway/screen-macos.png b/doc/content/hardware/gateways/models/thethingskickstartergateway/screen-macos.png similarity index 100% rename from doc/content/gateways/models/thethingskickstartergateway/screen-macos.png rename to doc/content/hardware/gateways/models/thethingskickstartergateway/screen-macos.png diff --git a/doc/content/gateways/models/thethingskickstartergateway/ttkg-config-window.png b/doc/content/hardware/gateways/models/thethingskickstartergateway/ttkg-config-window.png similarity index 100% rename from doc/content/gateways/models/thethingskickstartergateway/ttkg-config-window.png rename to doc/content/hardware/gateways/models/thethingskickstartergateway/ttkg-config-window.png diff --git a/doc/content/gateways/models/thethingskickstartergateway/uart-sample.jpg b/doc/content/hardware/gateways/models/thethingskickstartergateway/uart-sample.jpg similarity index 100% rename from doc/content/gateways/models/thethingskickstartergateway/uart-sample.jpg rename to doc/content/hardware/gateways/models/thethingskickstartergateway/uart-sample.jpg diff --git a/doc/content/gateways/models/thethingsoutdoor/GUI.png b/doc/content/hardware/gateways/models/thethingsoutdoor/GUI.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/GUI.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/GUI.png diff --git a/doc/content/gateways/models/thethingsoutdoor/TTOG.png b/doc/content/hardware/gateways/models/thethingsoutdoor/TTOG.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/TTOG.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/TTOG.png diff --git a/doc/content/gateways/models/thethingsoutdoor/TTOG2.png b/doc/content/hardware/gateways/models/thethingsoutdoor/TTOG2.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/TTOG2.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/TTOG2.png diff --git a/doc/content/gateways/models/thethingsoutdoor/TTOG3.png b/doc/content/hardware/gateways/models/thethingsoutdoor/TTOG3.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/TTOG3.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/TTOG3.png diff --git a/doc/content/gateways/models/thethingsoutdoor/_index.md b/doc/content/hardware/gateways/models/thethingsoutdoor/_index.md similarity index 78% rename from doc/content/gateways/models/thethingsoutdoor/_index.md rename to doc/content/hardware/gateways/models/thethingsoutdoor/_index.md index 0a9cb471e3..08640e4ec5 100644 --- a/doc/content/gateways/models/thethingsoutdoor/_index.md +++ b/doc/content/hardware/gateways/models/thethingsoutdoor/_index.md @@ -5,7 +5,7 @@ vendor_page: "https://www.thethingsnetwork.org/docs/gateways/thethingsoutdoor/" description: "The Things Outdoor Gateway (TTOG) is an industrial, outdoor and fully compliant gateway at a very low cost." ip_rating: "IP67" backhaul: [Ethernet, Cellular] -aliases: [/gateways/thethingsoutdoor] +aliases: [/gateways/thethingsoutdoor, /gateways/models/thethingsoutdoor] image: [TTOG.png] --- @@ -19,15 +19,15 @@ The Things Outdoor Gateway (TTOG) is an industrial, outdoor and fully compliant **Salient Features:** -* LoRaWAN 1.0.2 compliant -* Supports eight channels for EU868 and US915 bands -* 3G/4G backhaul via built in modem -* Supports LBT (Listen Before Talk) -* EU868, US915, AS923 and CN470 versions available -* IP67 waterproof enclosure -* Dimensions: 230 x 200 x 68mm -* Weight: 2.05kg -* Power voltage: 55VDC/0.6A via included PoE adapter +- LoRaWAN 1.0.2 compliant +- Supports eight channels for EU868 and US915 bands +- 3G/4G backhaul via built in modem +- Supports LBT (Listen Before Talk) +- EU868, US915, AS923 and CN470 versions available +- IP67 waterproof enclosure +- Dimensions: 230 x 200 x 68mm +- Weight: 2.05kg +- Power voltage: 55VDC/0.6A via included PoE adapter The outdoor gateway is currently available from [Connected Things Store](https://connectedthings.store) in both EU and US versions. @@ -40,10 +40,10 @@ The outdoor gateway is currently available from [Connected Things Store](https:/ Connect all antennas: - - ANT 1 - GPS - - ANT 2 - LTE antenna - - ANT 3 - LoRaWAN antenna - - ANT 4 - (not used) +- ANT 1 - GPS +- ANT 2 - LTE antenna +- ANT 3 - LoRaWAN antenna +- ANT 4 - (not used) Then, connect the PoE injector output cable to the gateway ethernet connector. Connect the PoE input cable to your network. @@ -51,7 +51,7 @@ Then, connect the PoE injector output cable to the gateway ethernet connector. C The ODU GUI is a web interface to configure all network settings. The ODU GUI uses the IP address assigned by the gateway to enter the network setting page. -Connect and power the gateway as above. The gateway will use DHCP to request an IP address from the network. Find this IP address from your router and enter the IP address assigned to the gateway into the web browser to access the ODU GUI interface. The configuration page should look like this: +Connect and power the gateway as above. The gateway will use DHCP to request an IP address from the network. Find this IP address from your router and enter the IP address assigned to the gateway into the web browser to access the ODU GUI interface. The configuration page should look like this: {{< figure src="GUI.png" alt="TTOG GUI">}} @@ -60,9 +60,9 @@ Connect and power the gateway as above. The gateway will use DHCP to request an Navigate to **Packet Forward** > **Module 1 Settings** on the left hand menu and enter the following settings to connect the gateway to {{% tts %}}: - - **Server Address:** The address of your {{% tts %}} instance. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}) - - **Server Uplink Port:** 1700 - - **Server Downlink Port:** 1700 +- **Server Address:** The address of your {{% tts %}} instance. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}) +- **Server Uplink Port:** 1700 +- **Server Downlink Port:** 1700 {{< figure src="gateway-info.png" alt="Gateway Info">}} @@ -75,13 +75,14 @@ If you connect via 3G/LTE, it will take a few minutes before the gateway will st Once the gateway is in LTE backhaul mode it doesn't request an IP from the Ethernet interface again. To connect to the gateway and open the ODU GUI again, you can access the web interface via the fallback IP address: [`168.168.168.253`](http://168.168.168.253). You will need to set your PC's IP address in the same range, e.g.: + - IP address: `168.168.168.100` - Subnet Mask: `255.255.255.0` - Router: `168.168.168.253` - + ## Registration -Create a gateway in {{% tts %}} by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). +Create a gateway in {{% tts %}} by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Give your gateway a unique **Gateway ID** in {{% tts %}} - this is just for you to identify the gateway and it does not need to be the same as the **Gateway ID** displayed in the gateway. @@ -95,8 +96,8 @@ If all steps have been followed correctly, once you register your gateway it wil When you cannot find a way to change the LoRaWAN® settings, you might need to update the system firmware. You can do so by following steps below: -* Navigate to **System** > **System Firmware** on the left hand menu -* Download [this file](https://connectedthings.store/files/WAPS-232N_LW_OPDK_GUI_1.01.27_521895521.tar.gz), making sure to keep the file name exactly the same (do not unzip this file) -* Upload the file and click **Upgrade** -{{< figure src="upgrade_1.png" alt="Upgrade Page">}} -* The gateway will automatically reboot with the upgraded firmware +- Navigate to **System** > **System Firmware** on the left hand menu +- Download [this file](https://connectedthings.store/files/WAPS-232N_LW_OPDK_GUI_1.01.27_521895521.tar.gz), making sure to keep the file name exactly the same (do not unzip this file) +- Upload the file and click **Upgrade** + {{< figure src="upgrade_1.png" alt="Upgrade Page">}} +- The gateway will automatically reboot with the upgraded firmware diff --git a/doc/content/gateways/models/thethingsoutdoor/gateway-info.png b/doc/content/hardware/gateways/models/thethingsoutdoor/gateway-info.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/gateway-info.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/gateway-info.png diff --git a/doc/content/gateways/models/thethingsoutdoor/upgrade_1.png b/doc/content/hardware/gateways/models/thethingsoutdoor/upgrade_1.png similarity index 100% rename from doc/content/gateways/models/thethingsoutdoor/upgrade_1.png rename to doc/content/hardware/gateways/models/thethingsoutdoor/upgrade_1.png diff --git a/doc/content/gateways/models/wifx-l1/_index.md b/doc/content/hardware/gateways/models/wifx-l1/_index.md similarity index 86% rename from doc/content/gateways/models/wifx-l1/_index.md rename to doc/content/hardware/gateways/models/wifx-l1/_index.md index 04f154eb75..936c51e0c0 100644 --- a/doc/content/gateways/models/wifx-l1/_index.md +++ b/doc/content/hardware/gateways/models/wifx-l1/_index.md @@ -5,6 +5,7 @@ vendor_page: "https://iot.wifx.net/en/products/wifx-l1/" description: "The Wifx L1 is a robust and professional grade outdoor LoRaWAN® gateway in an ultra compact form factor, designed and assembled in Switzerland. It is the successor of the Wifx LORIX One." ip_rating: "IP65" backhaul: [Ethernet] +aliases: [/gateways/models/wifx-l1] image: [wifx-l1.png] --- @@ -20,9 +21,9 @@ For additional help and technical specifications, please refer to [Wifx's offici ## Requirements - 1. User account on {{% tts %}} with rights to create Gateways - 2. A Wifx L1 running LORIX OS connected to the network - 3. A computer, tablet or mobile phone connected to the network (to configure the gateway) +1. User account on {{% tts %}} with rights to create Gateways +2. A Wifx L1 running LORIX OS connected to the network +3. A computer, tablet or mobile phone connected to the network (to configure the gateway) ## Get the gateway EUI @@ -30,7 +31,7 @@ To register the gateway, you will need its Gateway EUI/UID. This can be found in ## Registration -Create a gateway in the {{% tts %}} Console by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). Copy the API Key to a notepad, as you will need it later. +Create a gateway in the {{% tts %}} Console by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Copy the API Key to a notepad, as you will need it later. ## Configuration diff --git a/doc/content/gateways/models/wifx-l1/lbs.md b/doc/content/hardware/gateways/models/wifx-l1/lbs.md similarity index 83% rename from doc/content/gateways/models/wifx-l1/lbs.md rename to doc/content/hardware/gateways/models/wifx-l1/lbs.md index 2db0982382..cc552205b7 100644 --- a/doc/content/gateways/models/wifx-l1/lbs.md +++ b/doc/content/hardware/gateways/models/wifx-l1/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect the Wifx L1 with Lora Basics™ Station" description: "" +aliases: [/gateways/models/wifx-l1/lbs] --- -This section contains instructions for connecting the Wifx L1 gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting the Wifx L1 gateway to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -27,11 +28,11 @@ Scroll down to the **Configuration** section and enable the **LoRaWAN Network Se {{< figure src="../wifx-l1-lora-settings-bs.png" alt="Wifx L1 LoRa forwarder Basic Station LNS" >}} -Configure the **Address** with the [Server Address]({{< ref "the-things-stack/concepts/server-addresses" >}}) of your deployment, and **Port** with LNS port `8887`. +Configure the **Address** with the [Server Address]({{< ref "/concepts/server-addresses" >}}) of your deployment, and **Port** with LNS port `8887`. Enable the **Secured TLS connection** and select the **Use local root certificates** option. If you need to use a certificate specific to your infrastructure (for on-premise installations), use the **Use certificate file** option instead and upload the certificate. -Enable the **Client authentication**, select **Use token**, and set the previously saved API key in the **Authentication token** field. This key was shown to you as you created it when [registering the gateway]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). If you did not copy the key, you can delete it and create a new one. +Enable the **Client authentication**, select **Use token**, and set the previously saved API key in the **Authentication token** field. This key was shown to you as you created it when [registering the gateway]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). If you did not copy the key, you can delete it and create a new one. {{< figure src="../wifx-l1-lora-settings-bs-lns.png" alt="Wifx L1 LoRa forwarder Basic Station LNS" class="plain" >}} @@ -62,6 +63,6 @@ Go to the **Configuration** section and enable **Configuration and Update Server {{< figure src="../wifx-l1-lora-settings-bs.png" alt="Wifx L1 LoRa forwarder Basic Station LNS" >}} -To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Press the **SAVE** button. In the **Control** pane above, press **START** and check the logs in the dedicated pane. diff --git a/doc/content/gateways/models/wifx-l1/udp.md b/doc/content/hardware/gateways/models/wifx-l1/udp.md similarity index 77% rename from doc/content/gateways/models/wifx-l1/udp.md rename to doc/content/hardware/gateways/models/wifx-l1/udp.md index 3357abe798..f63442846d 100644 --- a/doc/content/gateways/models/wifx-l1/udp.md +++ b/doc/content/hardware/gateways/models/wifx-l1/udp.md @@ -1,9 +1,10 @@ --- title: "Connect the Wifx L1 with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/wifx-l1/udp] --- -This section contains instructions for connecting the Wifx L1 gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting the Wifx L1 gateway to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -13,9 +14,8 @@ In the **Configuration** pane, click **Edit** (blue button with a pencil). On the **Global** tab of the configuration editor, set the following configuration: -- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. - Save the configuration and start the packet forwarder. diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-login.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-login.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-login.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-login.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-antenna.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-antenna.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-antenna.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-antenna.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-control-logs.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-control-logs.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-control-logs.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-control-logs.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-lns.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-lns.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-lns.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs-lns.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-bs.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-bs.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-bs.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-bs.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-bs.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-bs.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-list.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-list.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-list.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder-change-list.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1-lora-settings-forwarder.png diff --git a/doc/content/gateways/models/wifx-l1/wifx-l1.png b/doc/content/hardware/gateways/models/wifx-l1/wifx-l1.png similarity index 100% rename from doc/content/gateways/models/wifx-l1/wifx-l1.png rename to doc/content/hardware/gateways/models/wifx-l1/wifx-l1.png diff --git a/doc/content/gateways/models/wifx-lorix-one/_index.md b/doc/content/hardware/gateways/models/wifx-lorix-one/_index.md similarity index 88% rename from doc/content/gateways/models/wifx-lorix-one/_index.md rename to doc/content/hardware/gateways/models/wifx-lorix-one/_index.md index 0691660b6c..f2bed5965e 100644 --- a/doc/content/gateways/models/wifx-lorix-one/_index.md +++ b/doc/content/hardware/gateways/models/wifx-lorix-one/_index.md @@ -6,6 +6,7 @@ description: "The LORIX One is a robust and professional grade outdoor LoRaWAN® ip_rating: "IP65" backhaul: [Ethernet] image: [lorix-one.png] +aliases: [/gateways/models/wifx-lorix-one] --- {{< figure src="lorix-one.png" alt="LORIX One" class="plain float" >}} @@ -20,9 +21,9 @@ For additional help and technical specifications, please refer to [Wifx's offici ## Requirements - 1. User account on {{% tts %}} with rights to create Gateways - 2. A Wifx LORIX One running LORIX OS connected to the network - 3. A computer, tablet or mobile phone connected to the network (to configure the gateway) +1. User account on {{% tts %}} with rights to create Gateways +2. A Wifx LORIX One running LORIX OS connected to the network +3. A computer, tablet or mobile phone connected to the network (to configure the gateway) If your gateway is running legacy software, please refer to [the official documentation](https://iot.wifx.net/docs) for upgrade instructions. @@ -47,6 +48,7 @@ FCC23DFFFEABCDEF ``` The full process for conversion is: + ``` FC:C2:3D:AB:CD:EF => FCC23DABCDEF => FCC23D FFFE ABCDEF => FCC23DFFFEABCDEF ``` @@ -57,7 +59,7 @@ To get the Gateway EUI from the Manager UI, connect to your gateway and check th ## Registration -Create a gateway in the {{% tts %}} Console by following the instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). Copy the API Key to a notepad, as you will need it later. +Create a gateway in the {{% tts %}} Console by following the instructions for [Adding Gateways]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}). Copy the API Key to a notepad, as you will need it later. ## Configuration diff --git a/doc/content/gateways/models/wifx-lorix-one/lbs.md b/doc/content/hardware/gateways/models/wifx-lorix-one/lbs.md similarity index 84% rename from doc/content/gateways/models/wifx-lorix-one/lbs.md rename to doc/content/hardware/gateways/models/wifx-lorix-one/lbs.md index ccd2d4082e..d247cd8ca1 100644 --- a/doc/content/gateways/models/wifx-lorix-one/lbs.md +++ b/doc/content/hardware/gateways/models/wifx-lorix-one/lbs.md @@ -1,9 +1,10 @@ --- title: "Connect LORIX One with Lora Basics™ Station" description: "" +aliases: [/gateways/models/wifx-lorix-one/lbs] --- -This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}). +This section contains instructions for connecting to {{% tts %}} using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}). @@ -27,11 +28,11 @@ Scroll down to the **Configuration** section and enable the **LoRaWAN Network Se {{< figure src="../lorix-one-lora-settings-bs.png" alt="LORIX One LoRa forwarder Basic Station LNS" >}} -Configure the **Address** with the [Server Address]({{< ref "the-things-stack/concepts/server-addresses" >}}) of your deployment, and **Port** with LNS port `8887`. +Configure the **Address** with the [Server Address]({{< ref "/concepts/server-addresses" >}}) of your deployment, and **Port** with LNS port `8887`. Enable the **Secured TLS connection** and select the **Use local root certificates** option. If you need to use a certificate specific to your infrastructure (for on-premise installations), use the **Use certificate file** option instead and upload the certificate. -Enable the **Client authentication**, select **Use token**, and set the previously saved API key in the **Authentication token** field. This key was shown to you as you created it when [registering the gateway]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). If you did not copy the key, you can delete it and create a new one. +Enable the **Client authentication**, select **Use token**, and set the previously saved API key in the **Authentication token** field. This key was shown to you as you created it when [registering the gateway]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}). If you did not copy the key, you can delete it and create a new one. {{< figure src="../lorix-one-lora-settings-bs-lns.png" alt="LORIX One LoRa forwarder Basic Station LNS" class="plain" >}} @@ -62,6 +63,6 @@ Go to the **Configuration** section and enable **Configuration and Update Server {{< figure src="../lorix-one-lora-settings-bs.png" alt="LORIX One LoRa forwarder Basic Station LNS" >}} -To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups" >}}). +To connect the gateway via CUPS protocol, follow the instructions for [Connecting CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups" >}}). Press the **SAVE** button. In the **Control** pane above, press **START** and check the logs in the dedicated pane. diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-login.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-login.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-login.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-login.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-antenna.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-antenna.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-antenna.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-antenna.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-control-logs.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-control-logs.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-control-logs.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-control-logs.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-lns.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-lns.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-lns.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs-lns.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-bs.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-bs.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-bs.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-bs.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-bs.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-list.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-list.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-list.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder-change-list.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one-lora-settings-forwarder.png diff --git a/doc/content/gateways/models/wifx-lorix-one/lorix-one.png b/doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one.png similarity index 100% rename from doc/content/gateways/models/wifx-lorix-one/lorix-one.png rename to doc/content/hardware/gateways/models/wifx-lorix-one/lorix-one.png diff --git a/doc/content/gateways/models/wifx-lorix-one/udp.md b/doc/content/hardware/gateways/models/wifx-lorix-one/udp.md similarity index 78% rename from doc/content/gateways/models/wifx-lorix-one/udp.md rename to doc/content/hardware/gateways/models/wifx-lorix-one/udp.md index b27c4e8baf..c1f1ba3efd 100644 --- a/doc/content/gateways/models/wifx-lorix-one/udp.md +++ b/doc/content/hardware/gateways/models/wifx-lorix-one/udp.md @@ -1,9 +1,10 @@ --- title: "Connect LORIX One with UDP Packet Forwarder" description: "" +aliases: [/gateways/models/wifx-lorix-one/udp] --- -This section contains instructions for connecting to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}). +This section contains instructions for connecting to {{% tts %}} using the [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}). @@ -13,9 +14,8 @@ In the **Configuration** pane, click **Edit** (blue button with a pencil) On the **Global** tab of the configuration editor, set the following configuration: -- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +- **Address**: Address of your {{% tts %}} deployment. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). - **Up port**: UDP upstream port of the Gateway Server, typically `1700`. - **Down port**: UDP downstream port of the Gateway Server, typically `1700`. - Save the configuration and start the packet forwarder. diff --git a/doc/content/gateways/troubleshooting/_index.md b/doc/content/hardware/gateways/troubleshooting/_index.md similarity index 87% rename from doc/content/gateways/troubleshooting/_index.md rename to doc/content/hardware/gateways/troubleshooting/_index.md index c00a295599..90a6431713 100644 --- a/doc/content/gateways/troubleshooting/_index.md +++ b/doc/content/hardware/gateways/troubleshooting/_index.md @@ -1,7 +1,11 @@ --- title: "Troubleshooting Gateways" description: "" -aliases: "/gateways/adding-gateways/troubleshooting" +aliases: + [ + "/hardware/gateways/adding-gateways/troubleshooting", + /gateways/troubleshooting, + ] weight: -1 --- @@ -11,7 +15,7 @@ This section provides help for common issues and frequently asked questions you ## What is my server address? -This is the address you use to access {{% tts %}}. See [Server Addresses]({{< ref "the-things-stack/concepts/server-addresses" >}}). +This is the address you use to access {{% tts %}}. See [Server Addresses]({{< ref "/concepts/server-addresses" >}}). For {{% lbs %}}: @@ -23,7 +27,7 @@ For {{% udp-pf %}} use ``. The **Up Port** and **Down Port** are ## Which packet forwarders does {{% tts %}} support? -Read the [Packet Forwarders section]({{< ref "/reference/packet-forwarder" >}}). +Read the [Packet Forwarders section]({{< ref "/hardware/gateways/concepts/packet-forwarder" >}}). ## Where can I learn more about {{% lbs %}}? @@ -47,11 +51,11 @@ For an example configuration file, see [Semtech's {{% lbs %}} documentation](htt ## How do I see gateway events? -Gateway event logs can be found in the Live Data tab in the gateway's general information page. See [Working with Events]({{< ref "the-things-stack/management/events" >}}) for other ways of subscribing to events. +Gateway event logs can be found in the Live Data tab in the gateway's general information page. See [Working with Events]({{< ref "/concepts/features/events" >}}) for other ways of subscribing to events. ## How does {{% tts %}} Console know whether a gateway is connected? -For both [{{% udp-pf %}}]({{< ref "/gateways/concepts/udp" >}}) and [{{% lbs %}}]({{< ref "gateways/concepts/lora-basics-station" >}}) gateways, {{% tts %}} creates a `GatewayConnectionStats` database entry when a gateway connects and removes that entry when the gateway disconnects. The Console checks whether this database entry exists and shows the gateway as connected or disconnected accordingly. +For both [{{% udp-pf %}}]({{< ref "/hardware/gateways/concepts/udp" >}}) and [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) gateways, {{% tts %}} creates a `GatewayConnectionStats` database entry when a gateway connects and removes that entry when the gateway disconnects. The Console checks whether this database entry exists and shows the gateway as connected or disconnected accordingly. The mechanism for determining whether a gateway remains connected differs for UDP and {{% lbs %}} gateways. @@ -64,7 +68,7 @@ UDP is a connectionless protocol. {{% tts %}} expects a UDP gateway to occasiona Check the following in {{% tts %}} Console: - Does the Gateway EUI in the console match with the EUI of the gateway? -- Does the Frequency Plan selected match with the configuration in the gateway? Refer to the [Frequency Plans section]({{< ref "/reference/frequency-plans" >}}) for plans that are officially supported by {{% tts %}}. +- Does the Frequency Plan selected match with the configuration in the gateway? Refer to the [Frequency Plans section]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for plans that are officially supported by {{% tts %}}. - Did you select **Require authenticated connection** in gateway settings? This prevents UDP gateways from working (and for gateways connected with Basic Station or MQTT, this prevents unauthenticated connections). - Do you see any warnings/errors in the Gateway live data section? @@ -80,10 +84,10 @@ For {{% lbs %}} gateways: - Are the CUPS server address and LNS server address correctly configured? See [What's my server address](#whats-my-server-address). - Are the CUPS and LNS ports configured with 443 and 8887 respectively? See [What's my server address](#whats-my-server-address). - Are API keys assigned with necessary rights? See [Is an API key required](#is-an-api-key-required). -- Did you select the correct root certificates? See the [Root Certificates Reference]({{< ref "/reference/root-certificates" >}}). +- Did you select the correct root certificates? See the [Root Certificates Reference]({{< ref "/concepts/advanced/root-certificates" >}}). - Is the backhaul used in the Gateway stable? - Does the Gateway run with the latest firmware? -- Does the Frequency Plan selected match with the configuration in the gateway? Refer to the [Frequency Plans section]({{< ref "/reference/frequency-plans" >}}) for plans that are officially supported by {{% tts %}}. +- Does the Frequency Plan selected match with the configuration in the gateway? Refer to the [Frequency Plans section]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for plans that are officially supported by {{% tts %}}. - Are both CUPS and LNS are configured? There is no need to configure both, as CUPS will automatically configure LNS. Follow the instructions for [configuring CUPS]({{< relref "cups" >}}). Check your manufacturer's documentation to access the gateway logs on your gateway, which will help to diagnose the issue. @@ -98,7 +102,7 @@ Please try restarting your gateway's packet forwarder. ## My gateway is shown as connected in the Console but I don’t see any events (including the gateway connection stats). What do I do? -We have observed this with {{% udp-pf %}} gateways only. We recommend using [{{% lbs %}}]({{< ref "gateways/concepts/lora-basics-station" >}}) instead if possible, as the {{% udp-pf %}} has many security and scalability drawbacks. +We have observed this with {{% udp-pf %}} gateways only. We recommend using [{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) instead if possible, as the {{% udp-pf %}} has many security and scalability drawbacks. Check if you have selected **Require authenticated connection** in the gateway settings in the Console. This prevents UDP gateways from working (and for gateways connected with Basic Station or MQTT, this prevents unauthenticated connections) @@ -121,7 +125,7 @@ If you are using a {{% udp-pf %}} gateway, it is possible that another gateway w ## My UDP gateway is connected, but the Console persistently shows it as offline. What do I do? -As explained [here]({{< ref "/gateways/troubleshooting#how-does-the-things-stack-console-know-whether-a-gateway-is-connected" >}}), {{% tts %}} Console shows UDP gateway as offline if it doesn't receive 3 consecutive `PULL_DATA` messages from it. This might be due to gateway connectivity issues, but it can also be due to high keep alive interval that is configured in the gateway packet forwarder. To make sure that the latter isn't causing gateway to appear offline in the Console, you should configure your gateway's keep alive interval to recommended value of 5 seconds. For further questions regarding this, we recommend contacting your gateway's manufacturer. +As explained [here]({{< ref "/hardware/gateways/troubleshooting#how-does-the-things-stack-console-know-whether-a-gateway-is-connected" >}}), {{% tts %}} Console shows UDP gateway as offline if it doesn't receive 3 consecutive `PULL_DATA` messages from it. This might be due to gateway connectivity issues, but it can also be due to high keep alive interval that is configured in the gateway packet forwarder. To make sure that the latter isn't causing gateway to appear offline in the Console, you should configure your gateway's keep alive interval to recommended value of 5 seconds. For further questions regarding this, we recommend contacting your gateway's manufacturer. ## Why do I still see connection stats of a gateway I previously disconnected? @@ -133,11 +137,11 @@ If a gateway appears in the Console with the status of "Other cluster", it means ## I get an "ID Already Taken" error when adding a gateway. -Another gateway is already registered with this ID. This gateway may have been deleted already, but {{% tts %}} reserves previously used IDs for [security reasons]({{< ref "reference/id-eui-constraints" >}}). +Another gateway is already registered with this ID. This gateway may have been deleted already, but {{% tts %}} reserves previously used IDs for [security reasons]({{< ref "/concepts/architecture/id-eui-constraints" >}}). This gateway may also be registered by another user, but you are not able to see gateways registered by other users if you are not an administrator (e.g. if you are using {{% ttss %}}). -To solve this, use a different gateway ID. If you are an administrator and wish to reuse a deleted ID, see [Purging Entities]({{< ref "/the-things-stack/management/purge" >}}). +To solve this, use a different gateway ID. If you are an administrator and wish to reuse a deleted ID, see [Purging Entities]({{< ref "/concepts/advanced/purge" >}}). If you are using {{% tts %}} Cloud or Enterprise, ask the admin of your tenant to purge this ID for you. @@ -163,7 +167,7 @@ The server is authenticated by a certificate signed by a Root Certificate Author ## How is my gateway authenticated? -Currently, {{% tts %}} only supports [TLS Server Authentication and Client Token](https://doc.sm.tc/station/authmodes.html#tls-server-authentication-and-client-token). The gateway is authenticated using an HTTP header containing an API key generated in {{% tts %}}. See [Configure CUPS]({{< ref "/gateways/concepts/lora-basics-station/cups#configure-gateway" >}}) for instructions for setting this API key for CUPS. +Currently, {{% tts %}} only supports [TLS Server Authentication and Client Token](https://doc.sm.tc/station/authmodes.html#tls-server-authentication-and-client-token). The gateway is authenticated using an HTTP header containing an API key generated in {{% tts %}}. See [Configure CUPS]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#configure-gateway" >}}) for instructions for setting this API key for CUPS. ## Should I set CUPS or LNS credentials? @@ -171,7 +175,7 @@ These are two different types of {{% lbs %}} connections. Since CUPS automatical ## How do I find the CA Trust? -See the [Root Certificates Reference]({{< ref "/reference/root-certificates" >}}). +See the [Root Certificates Reference]({{< ref "/concepts/advanced/root-certificates" >}}). ## Is an API Key required? @@ -218,11 +222,11 @@ See the [{{% lbs %}} Authorization documentation](https://lora-developers.semtec ## I see the "API key not found" error in gateway live events. What do I do? -This error is shown when the API key associated with the gateway has been deleted. Generate a [new API key]({{< ref "/gateways/concepts/adding-gateways#create-gateway-api-key" >}}), configure the gateway with it and reboot it to apply changes. +This error is shown when the API key associated with the gateway has been deleted. Generate a [new API key]({{< ref "/hardware/gateways/concepts/adding-gateways#create-gateway-api-key" >}}), configure the gateway with it and reboot it to apply changes. ## There is "Failed to retrieve TCURI from CUPS: (404) Not Found" error on my Basics Station gateway's logs. -This error occurs due to the incorrect API key configuration in the [**LoRa Basics Station LNS Authentication Key** field]({{< ref "/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}) available in your gateway's settings in the Console. Make sure you've followed instructions to [Configure CUPS to Send the LNS API Key]({{< ref "/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}). +This error occurs due to the incorrect API key configuration in the [**LoRa Basics Station LNS Authentication Key** field]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}) available in your gateway's settings in the Console. Make sure you've followed instructions to [Configure CUPS to Send the LNS API Key]({{< ref "/hardware/gateways/concepts/lora-basics-station/cups#configure-cups-to-send-the-lns-api-key" >}}). ## {{% lbs %}} packet forwarder logs mention the "Send failed: X.509 - Certificate verification failed, e.g. CRL, CA, or signature check failed" error. What does it mean? @@ -278,7 +282,7 @@ Example: { "txpk_ack": { "error": "COLLISION_PACKET" } } ``` -If you are facing `TX_FREQ` or `TX_POWER` errors, please make sure that your gateway's `global_conf.json` file is properly configured. See [{{% udp-pf %}} Configuration]({{< ref "/gateways/concepts/udp#configuration" >}}) section for more info. +If you are facing `TX_FREQ` or `TX_POWER` errors, please make sure that your gateway's `global_conf.json` file is properly configured. See [{{% udp-pf %}} Configuration]({{< ref "/hardware/gateways/concepts/udp#configuration" >}}) section for more info. For the rest of errors in the list above, please create an issue in [{{% tts %}} GitHub repository](https://github.com/TheThingsNetwork/lorawan-stack) or contact [The Things Industries support](mailto:support@thethingsindustries.com). @@ -320,11 +324,11 @@ This error might occur if the gateway mentioned in the downlink path is not conn ## Why are my gateway's GPS location details not shown in {{% tts %}} Console? -[{{% lbs %}}]({{< ref "/gateways/concepts/lora-basics-station" >}}) protocol currently does not support GPS fields in Uplink messages, so the GPS location in {{% tts %}} Console for {{% lbs %}}-based gateways cannot be updated from status messages. +[{{% lbs %}}]({{< ref "/hardware/gateways/concepts/lora-basics-station" >}}) protocol currently does not support GPS fields in Uplink messages, so the GPS location in {{% tts %}} Console for {{% lbs %}}-based gateways cannot be updated from status messages. -Updating gateway location from status messages in supported only for gateways that establish authenticated connections (Basic Station and MQTT gateways), i.e. it is not supported for [UDP]({{< ref "/gateways/concepts/udp" >}}) gateways. +Updating gateway location from status messages in supported only for gateways that establish authenticated connections (Basic Station and MQTT gateways), i.e. it is not supported for [UDP]({{< ref "/hardware/gateways/concepts/udp" >}}) gateways. -Keep in mind that you can still set the gateway location [manually]({{< ref "/gateways/concepts/adding-gateways#set-gateway-location" >}}) from {{% tts %}} Console. +Keep in mind that you can still set the gateway location [manually]({{< ref "/hardware/gateways/concepts/adding-gateways#set-gateway-location" >}}) from {{% tts %}} Console. ## I set the gateway location manually in {{% tts %}} Console. Why can I not see it in the gateway connection statistics? diff --git a/doc/content/the-things-stack/works-with/_index.md b/doc/content/hardware/works-with/_index.md similarity index 97% rename from doc/content/the-things-stack/works-with/_index.md rename to doc/content/hardware/works-with/_index.md index a61b221382..7c66d2e178 100644 --- a/doc/content/the-things-stack/works-with/_index.md +++ b/doc/content/hardware/works-with/_index.md @@ -2,6 +2,7 @@ title: "Works with The Things Stack" description: "" weight: 7 +aliases: [/the-things-stack/works-with] --- Selected LoRaWAN End Devices and Gateways are certified **Works with The Things Stack**. diff --git a/doc/content/the-things-stack/works-with/works-with-tts-light.png b/doc/content/hardware/works-with/works-with-tts-light.png similarity index 100% rename from doc/content/the-things-stack/works-with/works-with-tts-light.png rename to doc/content/hardware/works-with/works-with-tts-light.png diff --git a/doc/content/integrations/_index.md b/doc/content/integrations/_index.md index afec34253c..cec2711058 100644 --- a/doc/content/integrations/_index.md +++ b/doc/content/integrations/_index.md @@ -8,4 +8,6 @@ menu: aliases: [/reference/application-server-data/] --- -This section contains information to help you work with integrations in {{% tts %}}. Here, you'll find guides to add applications, configure many popular cloud integration platforms, work with the built-in Webhooks and MQTT servers, and much more. +Integrations in {{% tts %}} are methods used to store, process and/or transfer application data to external end points. This section contains information to help you work with integrations in {{% tts %}}. + +Here, you'll find guides to add applications, configure Webhooks and Storage Integration and also integrate with popular IoT platforms. diff --git a/doc/content/integrations/adding-applications/_index.md b/doc/content/integrations/adding-applications/_index.md index d58ece8535..bdda59bdf2 100644 --- a/doc/content/integrations/adding-applications/_index.md +++ b/doc/content/integrations/adding-applications/_index.md @@ -7,16 +7,18 @@ aliases: /getting-started/cli/create-application, /getting-started/console/create-application, /guides/getting-started/console/create-application, - /the-things-stack/interact/cli/create-application, - /the-things-stack/interact/console/create-application, - /guides/the-things-stack/interact/console/create-application, + /concepts/features/cli/create-application, + /concepts/console/create-application, + /guides/concepts/console/create-application, ] --- -This section contains instructions for creating an Application. +An Application in {{% tts %}} is a collection of end devices. +Users have the freedom to select which devices are part of an application. Each application has an `Application Identifier (application id)` which is unique within a tenant. Follow the instructions in the guide to create an Application. + {{< tabs/container "Console" "CLI" "HTTP (REST) API" >}} {{< tabs/tab "Console" >}} @@ -105,9 +107,9 @@ The request using `cURL` is as follows. {{< /tabs/container >}} -Next, see [Adding Integrations]({{< ref "/integrations/adding-integrations" >}}) to proceed with using the built-in [MQTT Server]({{< ref "/integrations/mqtt" >}}) and [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}) for receiving uplink and sending downlink traffic. +Next, see [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}) for receiving uplink and sending downlink traffic. Also, use the built-in [Storage Integration]({{< ref "/integrations/storage" >}}) to persist your data. Then you can checkout [Other Integrations]({{< ref "/integrations/other-integrations" >}}). -End devices are also created within applications. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) for more information. +End devices are also created within applications. See [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) for more information. ## Create Application API Key diff --git a/doc/content/integrations/adding-integrations/_index.md b/doc/content/integrations/adding-integrations/_index.md deleted file mode 100644 index aad74dd34f..0000000000 --- a/doc/content/integrations/adding-integrations/_index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Adding Integrations" -description: "" -weight: -1 ---- - -Integrations allow you to process and act on data by triggering events. - - - -Learn how to set up integrations by following [MQTT Server]({{< ref "/integrations/mqtt" >}}) or [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}) guides. Visit [Integrations with MQTT Clients]({{< ref "/integrations/mqtt/mqtt-clients" >}}) and [Cloud Integrations]({{< ref "/integrations/cloud-integrations" >}}) sections to see the examples of integrating with popular cloud IoT platforms and MQTT clients. Check how to obtain location estimates for your devices using [LoRa Cloud]({{< ref "/integrations/lora-cloud" >}}) integration. - -Integrations are managed within applications. See instructions for [Adding Applications]({{< ref "/integrations/adding-applications" >}}). diff --git a/doc/content/reference/application-packages/_index.md b/doc/content/integrations/application-packages/_index.md similarity index 78% rename from doc/content/reference/application-packages/_index.md rename to doc/content/integrations/application-packages/_index.md index 2b1ad7bde5..f73e675a06 100644 --- a/doc/content/reference/application-packages/_index.md +++ b/doc/content/integrations/application-packages/_index.md @@ -1,7 +1,8 @@ --- title: "Application Packages" description: "" -aliases: "/integrations/application-packages" +aliases: [/reference/application-packages] +weight: 8 --- Application packages specify state machines running both on the end device and the Application Server, as well as signalling messages exchanged between the end device's application layer and the Application Server. @@ -14,4 +15,4 @@ The link between an application or a device and an application package is achiev Associations link a device and a FPort to a specific application package. Since you may want to link all of the devices of an application without manually creating an association for each one of them, you may consider a default association, which links the application and a FPort to a specific application package. -All associations with available application packages can be managed [using the CLI]({{< ref "/reference/application-packages/using-the-cli" >}}) or [using the API]({{< ref "/reference/application-packages/using-the-api" >}}). +All associations with available application packages can be managed [using the CLI]({{< ref "/integrations/application-packages/using-the-cli" >}}) or [using the API]({{< ref "/integrations/application-packages/using-the-api" >}}). diff --git a/doc/content/reference/application-packages/lora-cloud-device-and-application-services.md b/doc/content/integrations/application-packages/lora-cloud-device-and-application-services.md similarity index 77% rename from doc/content/reference/application-packages/lora-cloud-device-and-application-services.md rename to doc/content/integrations/application-packages/lora-cloud-device-and-application-services.md index f78994e19a..a884e47632 100644 --- a/doc/content/reference/application-packages/lora-cloud-device-and-application-services.md +++ b/doc/content/integrations/application-packages/lora-cloud-device-and-application-services.md @@ -1,7 +1,8 @@ --- title: "LoRa Cloud Modem and Geolocation Services" description: "" -aliases: "/integrations/application-packages/lora-cloud-device-and-application-services" +aliases: + [/reference/application-packages/lora-cloud-device-and-application-services] --- The LoRa Cloud Modem and Geolocation Services v1 application package communicates the uplinks received from a compatible device to the LoRa Cloud Modem and Geolocation Services, and schedules the downlinks received from the service back to the device. @@ -51,10 +52,11 @@ This will enable the package on FPort `199` of all of the devices of application "updated_at": "2019-12-18T22:06:21.693359719Z", "package_name": "lora-cloud-device-management-v1", "data": { - "token": "AQEAdqwV67..." - } + "token": "AQEAdqwV67..." + } } ``` + ## Using a Custom Server URL @@ -84,20 +86,21 @@ ttn-lw-cli applications packages default-associations set $APP_ID $F_PORT --pack "updated_at": "2020-05-14T02:04:45.286874524Z", "package_name": "lora-cloud-device-management-v1", "data": { - "server_url": "https://app.example.com", - "token": "AQEAdqwV67..." - } + "server_url": "https://app.example.com", + "token": "AQEAdqwV67..." + } } ``` + ## Package Data JSON Schema The package data format is common between both default associations and associations, and should contain the following fields: -| Field | Type | Description | Required | Default value | -|-------|------|-------------|---------|---------------| -| `token` | `string` | The acces token to be used by the package to submit uplinks to the LoRa Cloud Modem and Geolocation Services | Yes | None. | -| `server_url` | `URL` | The custom base URL to be used for service communication | No | `https://mgs.loracloud.com` +| Field | Type | Description | Required | Default value | +| ------------ | -------- | ------------------------------------------------------------------------------------------------------------ | -------- | --------------------------- | +| `token` | `string` | The acces token to be used by the package to submit uplinks to the LoRa Cloud Modem and Geolocation Services | Yes | None. | +| `server_url` | `URL` | The custom base URL to be used for service communication | No | `https://mgs.loracloud.com` | Fields can be customized on a per device basis, by overriding the field in the package data of the association. diff --git a/doc/content/reference/application-packages/lora-dms-token-created.png b/doc/content/integrations/application-packages/lora-dms-token-created.png similarity index 100% rename from doc/content/reference/application-packages/lora-dms-token-created.png rename to doc/content/integrations/application-packages/lora-dms-token-created.png diff --git a/doc/content/reference/application-packages/lora-dms-token-creation.png b/doc/content/integrations/application-packages/lora-dms-token-creation.png similarity index 100% rename from doc/content/reference/application-packages/lora-dms-token-creation.png rename to doc/content/integrations/application-packages/lora-dms-token-creation.png diff --git a/doc/content/reference/application-packages/using-the-api.md b/doc/content/integrations/application-packages/using-the-api.md similarity index 99% rename from doc/content/reference/application-packages/using-the-api.md rename to doc/content/integrations/application-packages/using-the-api.md index a1bd6b37b3..57d0179317 100644 --- a/doc/content/reference/application-packages/using-the-api.md +++ b/doc/content/integrations/application-packages/using-the-api.md @@ -2,6 +2,7 @@ title: "Managing Application Packages using the API" description: "" weight: 2 +aliases: [/reference/application-packages/using-the-api] --- Besides using the CLI, you can also use the [application package HTTP APIs]({{< ref "/api/reference/grpc/application_packages" >}}) exposed by {{% tts %}} to interact with the available application packages. diff --git a/doc/content/reference/application-packages/using-the-cli.md b/doc/content/integrations/application-packages/using-the-cli.md similarity index 96% rename from doc/content/reference/application-packages/using-the-cli.md rename to doc/content/integrations/application-packages/using-the-cli.md index 789314bcd6..e141cb5868 100644 --- a/doc/content/reference/application-packages/using-the-cli.md +++ b/doc/content/integrations/application-packages/using-the-cli.md @@ -2,9 +2,10 @@ title: "Managing Application Packages using the CLI" description: "" weight: 1 +aliases: [/reference/application-packages/using-the-cli] --- -To interact with the available application packages, you can use [{{% tts %}} CLI]({{< ref "/the-things-stack/interact/cli" >}}). +To interact with the available application packages, you can use [{{% tts %}} CLI]({{< ref "/concepts/features/cli" >}}). @@ -91,8 +92,8 @@ This will update the association to use the given `api_key`: "updated_at": "2019-12-18T21:37:16.470742803Z", "package_name": "test-package", "data": { - "api_key": "AQEA8+q0v..." - } + "api_key": "AQEA8+q0v..." + } } ``` @@ -123,6 +124,7 @@ ttn-lw-cli applications packages default-associations list $APP_ID ] } ``` + ## Retrieving an Association @@ -151,6 +153,7 @@ ttn-lw-cli applications packages default-associations get $APP_ID $F_PORT --data } } ``` + ## Deleting an Association diff --git a/doc/content/integrations/cloud-integrations/_index.md b/doc/content/integrations/cloud-integrations/_index.md index a9af5a80ac..6c8a3b69ba 100644 --- a/doc/content/integrations/cloud-integrations/_index.md +++ b/doc/content/integrations/cloud-integrations/_index.md @@ -1,7 +1,7 @@ --- -title: "Cloud Integrations" +title: "Integrate with popular IoT platforms" description: "" -weight: 20 +weight: 7 --- Here you can find detailed guides for creating integrations with popular IoT platforms. diff --git a/doc/content/integrations/cloud-integrations/aws-iot/_index.md b/doc/content/integrations/cloud-integrations/aws-iot/_index.md index fc422d0f1f..0556d6c7bf 100644 --- a/doc/content/integrations/cloud-integrations/aws-iot/_index.md +++ b/doc/content/integrations/cloud-integrations/aws-iot/_index.md @@ -3,7 +3,7 @@ title: "AWS IoT" description: "" distributions: ["Cloud", "Enterprise", "Sandbox"] aliases: - - "/integrations/pubsub/aws-iot/" + - "/integrations/other-integrations/pubsub/aws-iot/" - "/integrations/aws-iot/default/" - "/integrations/cloud-integrations/aws-iot/default/" --- diff --git a/doc/content/integrations/cloud-integrations/aws-iot/deployment-guide.md b/doc/content/integrations/cloud-integrations/aws-iot/deployment-guide.md index c567590a0c..8ba1faca49 100644 --- a/doc/content/integrations/cloud-integrations/aws-iot/deployment-guide.md +++ b/doc/content/integrations/cloud-integrations/aws-iot/deployment-guide.md @@ -74,7 +74,7 @@ The parameters configure the integration: - When using `DeviceID`, the thing name will be a combination of the CloudFormation stack name and the device ID as registered in {{% tts %}}, i.e. `_`. - **Thing Shadow Metrics**: Enable or disable updating the thing shadow with metrics. - **Cluster Address**: The cluster address of your {{% tts %}} deployment. - - When using **The Things Stack Cloud**, go to [The Things Stack Cloud Addresses]({{< relref "/the-things-stack/cloud/addresses" >}}) to find your cluster address + - When using **The Things Stack Cloud**, go to [The Things Stack Cloud Addresses]({{< relref "/cloud/addresses" >}}) to find your cluster address - When using **The Things Stack Enterprise**, enter your cluster address - When using **The Things Network**, select the community cluster from the dropdown - **Application ID**: The application ID for which you configure the integration. diff --git a/doc/content/integrations/cloud-integrations/aws-iot/things.md b/doc/content/integrations/cloud-integrations/aws-iot/things.md index 2f61badf13..240cf31c16 100644 --- a/doc/content/integrations/cloud-integrations/aws-iot/things.md +++ b/doc/content/integrations/cloud-integrations/aws-iot/things.md @@ -22,9 +22,10 @@ The AWS IoT Integration for {{% tts %}} uses the thing that you specified when d Things are created automatically as they join the network or send an uplink message. For the name of new things, you can use their `` or `_`. {{< note >}} + - `stackName`: the AWS CloudFormation stack name of your deployment - `DeviceID`: the device-id of your device -{{}} + {{}} Your AWS IoT things overview may look like this: @@ -76,11 +77,11 @@ Next, you can create a new device by specifying all required attributes under ** - `regionalParametersVersion`: either `1.0`, `1.0.1`, `1.0.2` (or `1.0.2-a`), `1.0.2-b`, `1.0.3-a`, `1.1-a` or `1.1-b` - `appKey`: hexadecimal LoRaWAN AppKey - `nwkKey`: hexadecimal LoRaWAN NwkKey (only when using LoRaWAN 1.1 or higher) -- Optional `deviceID`: the device ID that will be used to create the device in your {{% tts %}} application. When omitted, the integration uses `eui-` as device ID. See [ID and EUI constraints]({{< ref "/reference/id-eui-constraints" >}}) for accepted ID formats. -- Optional `frequencyPlanID`: the frequency plan ID. See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) for the supported values. When omitted, the default frequency plan of your AWS region is used. See the **Outputs** section of your AWS CloudFormation stack to see which one that is. +- Optional `deviceID`: the device ID that will be used to create the device in your {{% tts %}} application. When omitted, the integration uses `eui-` as device ID. See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for accepted ID formats. +- Optional `frequencyPlanID`: the frequency plan ID. See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for the supported values. When omitted, the default frequency plan of your AWS region is used. See the **Outputs** section of your AWS CloudFormation stack to see which one that is. {{< note >}} -Any errors during Creating Things will be propagated to CloudWatch. See [Troubleshooting]({{< ref "/reference/frequency-plans" >}}) for more information about retrieving logs. +Any errors during Creating Things will be propagated to CloudWatch. See [Troubleshooting]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for more information about retrieving logs. {{< /note >}} {{< figure src="../create-thing-3.png" alt="Create Thing" >}} diff --git a/doc/content/integrations/cloud-integrations/azure-iot-central/device-templates.md b/doc/content/integrations/cloud-integrations/azure-iot-central/device-templates.md index 0413eaeb93..7d4d695fb6 100644 --- a/doc/content/integrations/cloud-integrations/azure-iot-central/device-templates.md +++ b/doc/content/integrations/cloud-integrations/azure-iot-central/device-templates.md @@ -8,11 +8,11 @@ Azure IoT Central allows users to model the telemetry and device properties usin -As part of this tutorial we will build a small DTDL model for [The Things Uno]({{< ref "/devices/models/the-things-uno" >}}) which allows us to control the built in LED of the device. +As part of this tutorial we will build a small DTDL model for [The Things Uno]({{< ref "/hardware/devices/models/the-things-uno" >}}) which allows us to control the built in LED of the device. ## Prerequisites -1. A [The Things Uno]({{< ref "/devices/models/the-things-uno" >}}) registered in your end device, with the end device version identifiers set, and using the `quickstart` sketch. +1. A [The Things Uno]({{< ref "/hardware/devices/models/the-things-uno" >}}) registered in your end device, with the end device version identifiers set, and using the `quickstart` sketch. > You can check if the end device version identifiers are set by checking the Console end device overview, under the **Hardware** section. diff --git a/doc/content/integrations/cloud-integrations/azure-iot-central/device-twin.md b/doc/content/integrations/cloud-integrations/azure-iot-central/device-twin.md index 2a42639b37..ab6597e1e8 100644 --- a/doc/content/integrations/cloud-integrations/azure-iot-central/device-twin.md +++ b/doc/content/integrations/cloud-integrations/azure-iot-central/device-twin.md @@ -87,7 +87,7 @@ An example of this property as unmodeled data would look as follows: > `frm-payload` is the service name for the service which derives the end device location from the decoded payload. -- `serviceData` - Object mapping between the service (name) and the service data reported by that service. Used by integrations such as [LoRa Cloud]({{< ref "/integrations/lora-cloud" >}}). +- `serviceData` - Object mapping between the service (name) and the service data reported by that service. Used by integrations such as [LoRa Cloud]({{< ref "/integrations/other-integrations/lora-cloud" >}}). - `decodedPayload` - Decoded payload of the uplink messages, which is generated using the [Payload Formatters]({{< ref "/integrations/payload-formatters" >}}). An example of this property as unmodeled data would look as follows: diff --git a/doc/content/integrations/cloud-integrations/azure-iot-hub/devices.md b/doc/content/integrations/cloud-integrations/azure-iot-hub/devices.md index bc3b53ddcc..99e3fbe716 100644 --- a/doc/content/integrations/cloud-integrations/azure-iot-hub/devices.md +++ b/doc/content/integrations/cloud-integrations/azure-iot-hub/devices.md @@ -31,7 +31,7 @@ Click **Add Device**. As **Device ID**, enter any device ID you like. Hit **Save**. {{< note >}} -See [ID and EUI constraints]({{< ref "reference/id-eui-constraints" >}}) for guidelines about choosing a unique ID. +See [ID and EUI constraints]({{< ref "/concepts/architecture/id-eui-constraints" >}}) for guidelines about choosing a unique ID. {{}} {{< figure src="../add-device.png" alt="Add Device" >}} @@ -48,7 +48,7 @@ You will now be presented with a JSON document containing the Device Twin. You n - `regionalParametersVersion`: either `1.0`, `1.0.1`, `1.0.2` (or `1.0.2-a`), `1.0.2-b`, `1.0.3-a`, `1.1-a` or `1.1-b`. - `appKey`: the hexadecimal LoRaWAN AppKey. - `nwkKey`: the hexadecimal LoRaWAN NwkKey (only when using LoRaWAN 1.1 or higher). -- `frequencyPlanId`: the frequency plan ID. See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) for the supported values. +- `frequencyPlanId`: the frequency plan ID. See [Frequency Plans]({{< ref "/concepts/features/lorawan/frequency-plans" >}}) for the supported values. If your end device is a part of the [LoRaWAN Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}), you may provide the identifiers of the device as part of an optional `versionIdentifiers` object. You can specify the following information as part of the identifiers: @@ -64,21 +64,21 @@ The final JSON `tags` object should look as follows: ```json { - "lorawan":{ - "devEui":"0004A30B001C5838", - "joinEui":"800000000000000C", - "lorawanVersion":"1.0.2", - "regionalParametersVersion":"1.0.2-b", - "frequencyPlanId":"EU_863_870_TTN", - "appKey":"459B77D46A08C427254822A33F6FA1A3", - "versionIdentifiers":{ - "bandId":"EU_863_870", - "brandId":"the-things-products", - "firmwareVersion":"1.0", - "hardwareVersion":"1.0", - "modelId":"the-things-node" - } - } + "lorawan": { + "devEui": "0004A30B001C5838", + "joinEui": "800000000000000C", + "lorawanVersion": "1.0.2", + "regionalParametersVersion": "1.0.2-b", + "frequencyPlanId": "EU_863_870_TTN", + "appKey": "459B77D46A08C427254822A33F6FA1A3", + "versionIdentifiers": { + "bandId": "EU_863_870", + "brandId": "the-things-products", + "firmwareVersion": "1.0", + "hardwareVersion": "1.0", + "modelId": "the-things-node" + } + } } ``` diff --git a/doc/content/integrations/cloud-integrations/cayenne/_index.md b/doc/content/integrations/cloud-integrations/cayenne/_index.md index 407efa555f..496592276f 100644 --- a/doc/content/integrations/cloud-integrations/cayenne/_index.md +++ b/doc/content/integrations/cloud-integrations/cayenne/_index.md @@ -28,9 +28,9 @@ You can choose the device model, but you can also choose **Cayenne LPP**. If you {{< figure src="choose-ttn-device.png" alt="Choose network and device model" >}} -To add your device, you will need to give it a **Name** (you can leave the pre-defined one) and provide its **DevEUI**. +To add your device, you will need to give it a **Name** (you can leave the pre-defined one) and provide its **DevEUI**. -Since in this guide we assume your end device is already connected to {{% tts %}}, choose **Already Registered** for the **Activation Mode**. If your device is not connected to {{% tts %}}, see [Adding Devices]({{< ref "/devices/adding-devices" >}}) section for instructions on how to register it. +Since in this guide we assume your end device is already connected to {{% tts %}}, choose **Already Registered** for the **Activation Mode**. If your device is not connected to {{% tts %}}, see [Adding Devices]({{< ref "/hardware/devices/adding-devices" >}}) section for instructions on how to register it. What you choose under **Tracking → Location** depends on the model of your device, i.e. if it can provide location coordinates or not. If you choose **This device doesn't move**, you will need to provide a static location of your device. diff --git a/doc/content/integrations/cloud-integrations/datacake/index.md b/doc/content/integrations/cloud-integrations/datacake/index.md index 3d59f5a05b..b1f80c1f6a 100644 --- a/doc/content/integrations/cloud-integrations/datacake/index.md +++ b/doc/content/integrations/cloud-integrations/datacake/index.md @@ -1,11 +1,16 @@ --- title: "Datacake" description: "" -weight: -aliases: ["/integrations/cloud-integrations/datacake/datacake-setup", "/integrations/cloud-integrations/datacake/tts-setup", "/integrations/cloud-integrations/datacake/scheduling-downlinks"] +weight: +aliases: + [ + "/integrations/cloud-integrations/datacake/datacake-setup", + "/integrations/cloud-integrations/datacake/tts-setup", + "/integrations/cloud-integrations/datacake/scheduling-downlinks", + ] --- -[Datacake](https://datacake.co/) is a multi-purpose IoT platform, which provides the possibility of building custom IoT applications, without requiring programming skills. +[Datacake](https://datacake.co/) is a multi-purpose IoT platform, which provides the possibility of building custom IoT applications, without requiring programming skills. @@ -15,11 +20,11 @@ aliases: ["/integrations/cloud-integrations/datacake/datacake-setup", "/integrat ## Setup Datacake -First, create a **Workspace** on Datacake by navigating to the **Create Workspace** button in the upper left corner. +First, create a **Workspace** on Datacake by navigating to the **Create Workspace** button in the upper left corner. {{< figure src="datacake-workspace.png" alt="Add workspace on Datacake" >}} -On the left hand menu, click **Devices**. To add a new device, click the **Add Device** button on the right. +On the left hand menu, click **Devices**. To add a new device, click the **Add Device** button on the right. In the **Add Device** pop-up menu, choose **LoRaWAN** → **Generic LoRa Device**. When asked **Which device are you missing?**, just click **Skip** and then select **The Things Industries** adapter. @@ -29,17 +34,17 @@ After selecting your subscription plan, fill in **Name** and **DevEUI** for your Once the device is created, you can click on it in the **Devices** menu to enter its settings. -In the **Configuration** tab, you can find the **LoRaWAN** section, where you can configure **Network** settings, choose to **Authenticate Webhook** or define **Payload Decoder**. +In the **Configuration** tab, you can find the **LoRaWAN** section, where you can configure **Network** settings, choose to **Authenticate Webhook** or define **Payload Decoder**. Under **Network**, choose **The Things Industries** from the drop-down menu. Paste your device's **End device ID** from {{% tts %}} in the **TTI Dev Id** field. -The **TTI Server Url** field should contain the URL of your {{% tts %}} deployment. See the [Server Addresses section]({{< ref "/the-things-stack/concepts/server-addresses" >}}) for more info. +The **TTI Server Url** field should contain the URL of your {{% tts %}} deployment. See the [Server Addresses section]({{< ref "/concepts/server-addresses" >}}) for more info. -Paste your **Application ID** from {{% tts %}} in the **TTI App Id** field. +Paste your **Application ID** from {{% tts %}} in the **TTI App Id** field. -In {{% tts %}}, navigate to **API keys** on the left hand menu, click the **Add API key** button, give it a **Name** and confirm that you have copied it to finish. Paste the copied API key into the **TTI Api Key** field on Datacake. +In {{% tts %}}, navigate to **API keys** on the left hand menu, click the **Add API key** button, give it a **Name** and confirm that you have copied it to finish. Paste the copied API key into the **TTI Api Key** field on Datacake. {{< figure src="lorawan-settings.png" alt="LoRaWAN settings" >}} @@ -65,7 +70,7 @@ Enter your device's settings page on Datacake and go to the **Downlinks** tab. Click the **Add Downlink** button. -Next, fill in the **Name** field, define the **Payload encoder** and click **Save Downlink**. +Next, fill in the **Name** field, define the **Payload encoder** and click **Save Downlink**. Learn to write payload decoders in the [official Datacake documentation](https://docs.datacake.de/lorawan/downlinks#writing-a-downlink-encoder). diff --git a/doc/content/integrations/cloud-integrations/influxdb-cloud/_index.md b/doc/content/integrations/cloud-integrations/influxdb-cloud/_index.md index ae3b55e407..75d5de83c9 100644 --- a/doc/content/integrations/cloud-integrations/influxdb-cloud/_index.md +++ b/doc/content/integrations/cloud-integrations/influxdb-cloud/_index.md @@ -1,15 +1,20 @@ --- title: "InfluxDB Cloud 2.0" description: "" -weight: -aliases: ["/integrations/cloud-integrations/influxdb-cloud/influxdb-cloud-setup", "/integrations/cloud-integrations/influxdb-cloud/telegraf-setup/telegraf-mqtt-setup", "/integrations/cloud-integrations/influxdb-cloud/telegraf-setup/telegraf-http-setup"] +weight: +aliases: + [ + "/integrations/cloud-integrations/influxdb-cloud/influxdb-cloud-setup", + "/integrations/cloud-integrations/influxdb-cloud/telegraf-setup/telegraf-mqtt-setup", + "/integrations/cloud-integrations/influxdb-cloud/telegraf-setup/telegraf-http-setup", + ] --- -[InfluxDB Cloud 2.0](https://v2.docs.influxdata.com/v2.0/get-started/) is a serverless real-time monitoring platform specifically created for working with time series data. It combines data storage, user interface, visualization, processing, monitoring and alerting into one cohesive system. +[InfluxDB Cloud 2.0](https://v2.docs.influxdata.com/v2.0/get-started/) is a serverless real-time monitoring platform specifically created for working with time series data. It combines data storage, user interface, visualization, processing, monitoring and alerting into one cohesive system. -Besides being able to send data to InfluxDB Cloud 2.0, [Telegraf agent](https://www.influxdata.com/time-series-platform/telegraf/) can also be configured to subscribe to messages published by {{% tts %}} [MQTT server]({{< ref "/integrations/mqtt" >}}) or to listen to messages sent by {{% tts %}} Application Server via [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}). This guide contains the instructions for both of these implementations. +Besides being able to send data to InfluxDB Cloud 2.0, [Telegraf agent](https://www.influxdata.com/time-series-platform/telegraf/) can also be configured to subscribe to messages published by {{% tts %}} [MQTT server]({{< ref "/integrations/other-integrations/mqtt" >}}) or to listen to messages sent by {{% tts %}} Application Server via [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}). This guide contains the instructions for both of these implementations. For additional info on configuring the Telegraf agent and using its plugins, check out the [official documentation](https://v2.docs.influxdata.com/v2.0/write-data/no-code/use-telegraf/). @@ -21,7 +26,7 @@ For additional info on configuring the Telegraf agent and using its plugins, che ## Setup InfluxDB Cloud 2.0 -Log in to your InfluxDB Cloud 2.0 account and select the **Data** on the left hand menu. +Log in to your InfluxDB Cloud 2.0 account and select the **Data** on the left hand menu. {{< figure src="influxdb-data-dashboard.png" alt="InfluxDB Data dashboard" >}} @@ -37,9 +42,9 @@ Enter the **Description** and select the bucket you wish to enable reading and w {{< figure src="generating-a-token.png" alt="Generating a read/write token" >}} -Go to the **Telegraf** tab and select **Create Configuration**. +Go to the **Telegraf** tab and select **Create Configuration**. -When asked **What do you want to monitor?**, select **System**. +When asked **What do you want to monitor?**, select **System**. {{< figure src="monitoring-system.png" alt="Selecting to monitor a system" >}} @@ -51,7 +56,7 @@ Once the configuration is created, you can simply click on its name in the **Tel ## Configure Telegraf for MQTT Integration -This section shows you how to configure your Telegraf agent with [MQTT Consumer](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mqtt_consumer) plugin used for connecting to {{% tts %}} [MQTT Server]({{< ref "/integrations/mqtt" >}}). +This section shows you how to configure your Telegraf agent with [MQTT Consumer](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mqtt_consumer) plugin used for connecting to {{% tts %}} [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). The information needed to configure Telegraf can be found on the **MQTT** tab in {{% tts %}} **Integrations** menu. @@ -93,7 +98,7 @@ telegraf --config /path/to/custom/telegraf.conf ## Configure Telegraf and The Things Stack for Webhook Integration -This section shows you how to configure the Telegraf agent with [HTTP Listener v2](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/http_listener_v2/) plugin and how to create a belonging [Webhook integration]({{< ref "/integrations/webhooks/creating-webhooks" >}}) on {{% tts %}}. +This section shows you how to configure the Telegraf agent with [HTTP Listener v2](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/http_listener_v2/) plugin and how to create a belonging [Webhook integration]({{< ref "/integrations/webhooks/creating-webhooks" >}}) on {{% tts %}}. Update the Telegraf configuration you previously downloaded as described in [InfluxDB Cloud 2.0 Setup]({{< ref "/integrations/cloud-integrations/influxdb-cloud" >}}) by adding the following lines and modifying them according to your setup: @@ -127,6 +132,7 @@ Start the Telegraf agent by running the following command in the terminal: ```bash telegraf --config /path/to/custom/telegraf.conf ``` + In {{% tts %}} Console, [create a new webhook]({{< ref "/integrations/webhooks/creating-webhooks" >}}) with JSON **Webhook format**, set the **Base URL** to `http://localhost:8080/telegraf` and tick the box next to the message types you want to enable this webhook for. {{< figure src="tts-webhook-info.png" alt="Creating webhook on The Things Stack" >}} @@ -137,11 +143,10 @@ Keep in mind that Telegraf agent can be hosted in a remote environment as well. Click the **Explore** tab on the left in InfluxDB Cloud 2.0. Select your bucket in the **FROM** window in the bottom. Next, you have to filter your measurements depending on the type of integration. -If you created an MQTT integration, select **_measurement** on the drop-down menu in the **Filter** window and tick the **mqtt_consumer** box. Then you can choose the topic and parameter you wish to monitor. +If you created an MQTT integration, select **\_measurement** on the drop-down menu in the **Filter** window and tick the **mqtt_consumer** box. Then you can choose the topic and parameter you wish to monitor. {{< figure src="influxdb-mqtt.png" alt="Monitoring the MQTT data" >}} -Otherwise, if you are using Webhook integration, select **_measurement** on the drop-down menu in the **Filter** window and tick the **http_listener_v2** box. In another **Filter** window, you can select the **uplink_message_decoded_payload** and click the **Submit** field on the right to see the incoming data. +Otherwise, if you are using Webhook integration, select **\_measurement** on the drop-down menu in the **Filter** window and tick the **http_listener_v2** box. In another **Filter** window, you can select the **uplink_message_decoded_payload** and click the **Submit** field on the right to see the incoming data. {{< figure src="influxdb-http.png" alt="Monitoring the HTTP data" >}} - diff --git a/doc/content/integrations/cloud-integrations/kaa/_index.md b/doc/content/integrations/cloud-integrations/kaa/_index.md index 553c4f8db9..8b290b8005 100644 --- a/doc/content/integrations/cloud-integrations/kaa/_index.md +++ b/doc/content/integrations/cloud-integrations/kaa/_index.md @@ -27,10 +27,10 @@ After that, go to the **Payload formatters** section on the left hand menu in {{ function decodeUplink(input) { return { data: { - bytes: input.bytes + bytes: input.bytes, }, warnings: [], - errors: [] + errors: [], }; } ``` @@ -53,9 +53,9 @@ Next, you can create the integration between Kaa and {{% tts %}} applications. Navigate to the **Device management → Integrations** and click the **Add integration** button. Fill in the following fields: -- TTN username - {{% tts %}} MQTT username +- TTN username - {{% tts %}} MQTT username - TTN API key - the API key that you created in steps above -- Identity Server Host - {{% tts %}} Identity Server host address (see the [Server Addresses section]({{< ref "/the-things-stack/concepts/server-addresses" >}}) for more info) +- Identity Server Host - {{% tts %}} Identity Server host address (see the [Server Addresses section]({{< ref "/concepts/server-addresses" >}}) for more info) - MQTT Server Host - {{% tts %}} MQTT public address {{< figure src="kaa-create-app-integration.png" alt="Create application integration" >}} @@ -68,14 +68,14 @@ Go to the created application integration and create a device integration by cho {{< figure src="kaa-dev-integration.png" alt="Device integrations" >}} -By navigating to **Device management → Devices**, you will find the Kaa endpoint that was automatically created during the device integration creation. +By navigating to **Device management → Devices**, you will find the Kaa endpoint that was automatically created during the device integration creation. All incoming data from {{% tts %}} device will be ingested under that endpoint. {{< figure src="kaa-created-endpoint.png" alt="Created endpoint" >}} ## Visualize Device Data -Next, you can visualize data coming from {{% tts %}} on Kaa UI. +Next, you can visualize data coming from {{% tts %}} on Kaa UI. Edit the application configuration for the [Endpoint Time Series service (EPTS)][EPTS]. EPTS is a Kaa platform component responsible for transforming raw [data samples][data-sample] into well-structured time series. It also stores the time series data and provides access to API for other services, including the [Web Dashboard][WD]. @@ -93,10 +93,10 @@ Now navigate to the device details page of the endpoint created in previous step Let's assume that {{% tts %}} device is sending temperature measurements in the next format: ```json -{"temp":20} +{ "temp": 20 } ``` -Convert this payload to a byte array in HEX (`7B 22 74 65 6D 70 22 3A 32 30 7D`), go to the **End devices → your device's Overview page → Messaging** in {{% tts %}} Console and paste the byte array into the **Payload** field. +Convert this payload to a byte array in HEX (`7B 22 74 65 6D 70 22 3A 32 30 7D`), go to the **End devices → your device's Overview page → Messaging** in {{% tts %}} Console and paste the byte array into the **Payload** field. As a result, you should be able to see the data on Kaa UI. @@ -108,14 +108,13 @@ Congratulations, you have successfully integrated {{% tts %}} with Kaa and visua Explore more Kaa features by completing the [Getting Started tutorials cycle][Getting Started tutorials] with short tutorials on the main Kaa features. -[kaa site]: https://www.kaaiot.com/ -[kaa cloud login]: https://cloud.kaaiot.com/login -[kaa cloud registration]: https://www.kaaiot.com/free-trial - -[data-sample]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Kaa-concepts/#data-sample -[endpoint]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Kaa-concepts/#endpoints -[EPTS]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Data-collection/EPTS +[kaa site]: https://www.kaaiot.com/ +[kaa cloud login]: https://cloud.kaaiot.com/login +[kaa cloud registration]: https://www.kaaiot.com/free-trial +[data-sample]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Kaa-concepts/#data-sample +[endpoint]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Kaa-concepts/#endpoints +[EPTS]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Data-collection/EPTS [EPTS time series auto extraction]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Data-collection/EPTS/Configuration/#time-series-auto-extraction -[EPTS time series configuration]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Data-collection/EPTS/Configuration/#time-series-configuration -[WD]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Visualization/WD -[Getting Started tutorials]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Tutorials/getting-started/ +[EPTS time series configuration]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Data-collection/EPTS/Configuration/#time-series-configuration +[WD]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Features/Visualization/WD +[Getting Started tutorials]: https://docs.kaaiot.io/KAA/docs/v1.4.0/Tutorials/getting-started/ diff --git a/doc/content/integrations/cloud-integrations/thethingsio/_index.md b/doc/content/integrations/cloud-integrations/thethingsio/_index.md index 6b4fca71e1..170714a334 100644 --- a/doc/content/integrations/cloud-integrations/thethingsio/_index.md +++ b/doc/content/integrations/cloud-integrations/thethingsio/_index.md @@ -1,8 +1,13 @@ --- title: "thethings.iO" description: "" -weight: -aliases: ["/integrations/cloud-integrations/thethingsio/thethingsio-setup", "/integrations/cloud-integrations/thethingsio/tts-setup", "/integrations/cloud-integrations/thethingsio/monitor-data"] +weight: +aliases: + [ + "/integrations/cloud-integrations/thethingsio/thethingsio-setup", + "/integrations/cloud-integrations/thethingsio/tts-setup", + "/integrations/cloud-integrations/thethingsio/monitor-data", + ] --- [thethings.iO](https://thethings.io/) is hardware and connectivity agnostic enterprise IoT plaform that enables deploying scalable and flexible IoT solutions. This simple platform offers to quickly connect your IoT products using multiple protocols, APIs to manage them and dashboards to visualize the incoming data. @@ -29,28 +34,28 @@ On the left hand menu, navigate to **Cloud Code**. Since you have created a new {{< figure src="cloud-code-function.png" alt="Auto-generated Cloud Code Function" >}} -To parse the data correctly, you need to modify this function according to the payload you are sending from {{% tts %}}. Checking [Data Formats](https://www.thethingsindustries.com/docs/the-things-stack/concepts/data-formats/) in the the official {{% tts %}} documentation might be useful. +To parse the data correctly, you need to modify this function according to the payload you are sending from {{% tts %}}. Checking [Data Formats](https://www.thethingsindustries.com/docs/integrations/data-formats/) in the the official {{% tts %}} documentation might be useful. -To modify the `lora_parser` function code, click the **Edit** button on its right. +To modify the `lora_parser` function code, click the **Edit** button on its right. In the **Code** window, paste the following code, adjust it to your uplink data and click **Save**: ```js -function main(params, callback){ +function main(params, callback) { var payload = params.payload.uplink_message.decoded_payload; var result = [ { - "key": "battery", - "value": payload.battery - } - ] - callback(null, result); + key: "battery", + value: payload.battery, + }, + ]; + callback(null, result); } ``` {{< figure src="modify-cloud-code-function.png" alt="Modifying the Cloud Code Function" >}} -Once you have created the product and the parser function, thethings.iO setup is ready. The next step will be creating the Webhook integration on {{% tts %}}. +Once you have created the product and the parser function, thethings.iO setup is ready. The next step will be creating the Webhook integration on {{% tts %}}. To complete the Webhook integration, you will need some information about the product you created in the previous steps. You can find the **Product ID** and its **Hash** in the **Details** window of the created product. @@ -64,13 +69,13 @@ Next is to create a Webhook integration on {{% tts %}} by using **thethings.iO** On {{% tts %}}, navigate to **Integrations → Webhooks** and choose **thethings.iO** Webhook template. -Name your integration by filling in the **Webhook ID** field. +Name your integration by filling in the **Webhook ID** field. Paste the **Product ID** and **Hash** values from thethings.iO into the equally named fields of the Webhook template. {{< figure src="thethingsio-webhook-integration.png" alt="Creating the Webhook integration" >}} -Hit the **Create thethings.io webhook** button to finish. +Hit the **Create thethings.io webhook** button to finish. To see the values of all parameters of the thethins.iO integration, click on the integration after you created it with the Webhook template. If you do this, you will see that the final callback URL has the following structure: `https://subscription.thethings.io/lora/{Product ID}/{Hash}?idname=end_device_ids.dev_eui`. @@ -78,11 +83,11 @@ To see the values of all parameters of the thethins.iO integration, click on the After you have created the Webhook integration on {{% tts %}}, you can monitor the incoming data on thethings.iO. -Go back to thethings.iO and navigate to your product's details page. +Go back to thethings.iO and navigate to your product's details page. In the **API calls** and the **Things sending data now** windows, you will see the incoming API calls. -If you scroll down, on the **Things** tab, you will see that now you have one activated thing! Click on its **Details** button on the right. +If you scroll down, on the **Things** tab, you will see that now you have one activated thing! Click on its **Details** button on the right. {{< figure src="api-calls.png" alt="The incoming API calls" >}} diff --git a/doc/content/integrations/cloud-integrations/thingsboard/_index.md b/doc/content/integrations/cloud-integrations/thingsboard/_index.md index 1e7ea02011..17b798708c 100644 --- a/doc/content/integrations/cloud-integrations/thingsboard/_index.md +++ b/doc/content/integrations/cloud-integrations/thingsboard/_index.md @@ -1,15 +1,20 @@ --- title: "ThingsBoard" description: "" -weight: -aliases: ["/integrations/cloud-integrations/thingsboard/thingsboard-setup", "/integrations/cloud-integrations/thingsboard/tts-setup", "/integrations/cloud-integrations/thingsboard/scheduling-downlinks"] +weight: +aliases: + [ + "/integrations/cloud-integrations/thingsboard/thingsboard-setup", + "/integrations/cloud-integrations/thingsboard/tts-setup", + "/integrations/cloud-integrations/thingsboard/scheduling-downlinks", + ] --- [ThingsBoard](https://thingsboard.io/) is an open-source IoT platform for data collection, processing, visualization, and device management. It supports cloud and on-premises deployments, and it combines scalability, fault-tolerance and performances to nullify the chances of getting your IoT data lost. -The integration between {{% tts %}} and ThingsBoard is an example of an MQTT integration. ThingsBoard embeds an MQTT Broker, which is configured with the ThingsBoard **Integrations** functionality to subscribe or publish to {{% tts %}} [MQTT Server]({{< ref "/integrations/mqtt" >}}). +The integration between {{% tts %}} and ThingsBoard is an example of an MQTT integration. ThingsBoard embeds an MQTT Broker, which is configured with the ThingsBoard **Integrations** functionality to subscribe or publish to {{% tts %}} [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). ## Prerequisites @@ -27,8 +32,8 @@ Define a [Javascript]({{< ref "/integrations/payload-formatters/javascript" >}}) function decodeUplink(input) { return { data: { - temperature: input.bytes[0] - } + temperature: input.bytes[0], + }, }; } ``` @@ -39,9 +44,9 @@ Also, note your credentials available under **MQTT** submenu of the **Integratio ## Setup ThingsBoard -Log in to your ThingsBoard account. +Log in to your ThingsBoard account. -### Defining Data Converters +### Defining Data Converters Before creating an integration, you need to define uplink and downlink data converters. To do so, first navigate to **Data converters** on the left hand menu. @@ -55,21 +60,21 @@ var deviceName = data.end_device_ids.device_id; var deviceType = data.end_device_ids.application_ids.application_id; var result = { - deviceName: deviceName, - deviceType: deviceType, - telemetry: { - temperature: data.uplink_message.decoded_payload.temperature - } + deviceName: deviceName, + deviceType: deviceType, + telemetry: { + temperature: data.uplink_message.decoded_payload.temperature, + }, }; function decodeToString(payload) { - return String.fromCharCode.apply(String, payload); + return String.fromCharCode.apply(String, payload); } function decodeToJson(payload) { - var str = decodeToString(payload); - var data = JSON.parse(str); - return data; + var str = decodeToString(payload); + var data = JSON.parse(str); + return data; } return result; @@ -85,20 +90,22 @@ Follow the same procedure to create a converter with **Downlink** as a **Type** ```js var data = { - downlinks: [{ - f_port: 2, - confirmed: false, - frm_payload: btoa(msg.version), - priority: "NORMAL" - }] - }; + downlinks: [ + { + f_port: 2, + confirmed: false, + frm_payload: btoa(msg.version), + priority: "NORMAL", + }, + ], +}; var result = { - contentType: "JSON", - data: JSON.stringify(data), - metadata: { - devId: 'device_id' //enter your device's ID here - } + contentType: "JSON", + data: JSON.stringify(data), + metadata: { + devId: "device_id", //enter your device's ID here + }, }; return result; ``` @@ -127,7 +134,7 @@ You can check the connection with your host via port you specified using credent {{< figure src="creating-integration.png" alt="Creating the integration" >}} -Click the **Add** button on the bottom to finish creating the integration. +Click the **Add** button on the bottom to finish creating the integration. A new device with your end device's ID will be created automatically. You can find it if you navigate to **Device groups → All** and search the end devices list. Select your device and switch to the **Latest telemetry** tab to see the telemetry data your device is sending, and use it to explore the further ThingsBoard features. @@ -151,7 +158,7 @@ Connect the output port of the **Message Type Switch** node with the input port Click **Apply changes** in the bottom right corner. -Go back to your device's settings by navigating to **Device groups → All** and selecting your device. +Go back to your device's settings by navigating to **Device groups → All** and selecting your device. Switch to the **Attributes** tab, choose **Shared attributes** in the **Entity attributes scope** list, then click the **+** in the upper right corner to add a new shared attribute. diff --git a/doc/content/integrations/cloud-integrations/thingspeak/_index.md b/doc/content/integrations/cloud-integrations/thingspeak/_index.md index bd0ffbafce..c7981800ab 100644 --- a/doc/content/integrations/cloud-integrations/thingspeak/_index.md +++ b/doc/content/integrations/cloud-integrations/thingspeak/_index.md @@ -1,8 +1,12 @@ --- title: "ThingSpeak" description: "" -weight: -aliases: ["/integrations/cloud-integrations/thingspeak/thingspeak-setup", "/integrations/cloud-integrations/thingspeak/tts-setup"] +weight: +aliases: + [ + "/integrations/cloud-integrations/thingspeak/thingspeak-setup", + "/integrations/cloud-integrations/thingspeak/tts-setup", + ] --- [ThingSpeak](https://thingspeak.com/) is an IoT platform with built-in [MATLAB®](https://www.mathworks.com/products/matlab.html) analytics, which allows preprocessing, analyzing and visualizing data sent by IoT devices, as well as creating actions such as alerts based on your channel data. @@ -17,11 +21,11 @@ aliases: ["/integrations/cloud-integrations/thingspeak/thingspeak-setup", "/inte Log in to your ThingSpeak user account and navigate to the **Channels** section. To create a new channel, click the **New Channel** button. -Enter a **Name** for your channel, give labels to the data fields and enable them by checking the boxes next to them. +Enter a **Name** for your channel, give labels to the data fields and enable them by checking the boxes next to them. When done, scroll down and click the **Save Channel** button. -You should enable a field for each metric from the `decoded_payload` object of the [uplink message]({{< ref "/the-things-stack/concepts/data-formats#uplink-messages" >}}). +You should enable a field for each metric from the `decoded_payload` object of the [uplink message]({{< ref "/integrations/data-formats#uplink-messages" >}}). {{< figure src="channel.png" alt="Creating a new channel" >}} @@ -42,17 +46,17 @@ function decodeUplink(input) { return { data: { field1: input.bytes[0], - field2: input.bytes[1] + field2: input.bytes[1], }, warnings: [], - errors: [] + errors: [], }; } ``` The last step is to instantiate the **ThingSpeak** [Webhook template]({{< ref "/integrations/webhooks/webhook-templates" >}}) to create a Webhook integration. -Give a name to your integration by filling in the **Webhook ID** field. +Give a name to your integration by filling in the **Webhook ID** field. Fill in the **Channel ID** field with the ThingSpeak channel ID value, and paste the **Write API Key** from ThingSpeak in the **API Key** field. @@ -63,5 +67,3 @@ Finish by clicking the **Create thingspeak webhook** button. To see the values of all parameters of the ThingSpeak integration, click on the integration after you created it with the Webhook template. At this point, you can go back to your [channels page](https://thingspeak.com/channels) on ThingSpeak and select the private or public view of your channel to check out the field charts under **Channel Stats**. You can now also write and automate MATLAB® code to analyze and further visualize your data. - - diff --git a/doc/content/integrations/cloud-integrations/ttnmapper/_index.md b/doc/content/integrations/cloud-integrations/ttnmapper/_index.md index 734b6fb631..9f242073af 100644 --- a/doc/content/integrations/cloud-integrations/ttnmapper/_index.md +++ b/doc/content/integrations/cloud-integrations/ttnmapper/_index.md @@ -3,7 +3,7 @@ title: "TTN Mapper" description: "" --- -[TTN Mapper](https://ttnmapper.org/) is a convenient tool used for mapping the network coverage of gateways connected to {{% tts %}}. +[TTN Mapper](https://ttnmapper.org/) is a convenient tool used for mapping the network coverage of gateways connected to {{% tts %}}. @@ -12,7 +12,7 @@ Check the official [TTN Mapper documentation site](https://docs.ttnmapper.org/). ## Prerequisites 1. A LoRaWAN® end device transmitting GPS coordinates (latitude, longitude and optionally altitude), and HDOP, GPS accuracy or satellite count. -2. A LoRaWAN gateway with a [public location]({{< ref "/gateways/concepts/adding-gateways#set-gateway-location" >}}). +2. A LoRaWAN gateway with a [public location]({{< ref "/hardware/gateways/concepts/adding-gateways#set-gateway-location" >}}). ## Configure {{% tts %}} @@ -21,7 +21,7 @@ Your end device can be sending its GPS coordinates in an uplink message as part - If your end device is sending data in Cayenne LPP format, choose [Cayenne LPP payload formatter](({{< ref "/integrations/payload-formatters/cayenne" >}})) in your device's settings on {{% tts %}}. - Otherwise, create a custom [JavaScript payload formatter]({{< ref "/integrations/payload-formatters/javascript" >}}). This formatter will have to contain fields `latitude`, `longitude` and `altitude`. If possible, `hdop`, `accuracy` or `sats` fields should also be contained. - + The next step is to instantiate the **TTN Mapper** [Webhook template]({{< ref "/integrations/webhooks/webhook-templates" >}}). diff --git a/doc/content/integrations/cloud-integrations/withthegrid/_index.md b/doc/content/integrations/cloud-integrations/withthegrid/_index.md index 0e01a5fc52..b00c767637 100644 --- a/doc/content/integrations/cloud-integrations/withthegrid/_index.md +++ b/doc/content/integrations/cloud-integrations/withthegrid/_index.md @@ -1,7 +1,7 @@ --- title: "Withthegrid" description: "" -weight: +weight: --- [Withthegrid](https://withthegrid.com/) is an IoT asset monitoring platform for infrastructure - it allows you to monitor assets, connect IoT sensors, visualize data, detect anomalies and manage workflows. In this section, we describe how to implement {{% tts %}} integration with the Withthegrid platform. @@ -12,7 +12,7 @@ weight: Use a requirements subheading to list requirements/prerequisites. -1. Access to the Withthegrid platform. To get started go to `https://app.withthegrid.com/` and login with your credentials. If you did not receive any credentials via e-mail you can sign up [here](https://app.withthegrid.com/#/sign-up) for a 14 day free trial. +1. Access to the Withthegrid platform. To get started go to `https://app.withthegrid.com/` and login with your credentials. If you did not receive any credentials via e-mail you can sign up [here](https://app.withthegrid.com/#/sign-up) for a 14 day free trial. ## Architecture @@ -74,11 +74,11 @@ The platform will generate a webhook URL which we can use later to connect with ## Step 3: Creating and configuring a new device type -A new device type can be created in a connectivity environment by navigating to **Device types**. This page shows an overview of all the device types that are available in your environment. Let’s create the first device type by clicking **+** in the bottom right corner. +A new device type can be created in a connectivity environment by navigating to **Device types**. This page shows an overview of all the device types that are available in your environment. Let’s create the first device type by clicking **+** in the bottom right corner. {{< figure src="5_c_environment_deviceType.png" alt="New device type" caption="Figure 9. Device types overview" >}} -Name the new device type. At this point, we can also change the default name of the device channel to `Internal Sensor`. Use the same name for default name for port. This is where internal battery voltage measurements will be pushed. +Name the new device type. At this point, we can also change the default name of the device channel to `Internal Sensor`. Use the same name for default name for port. This is where internal battery voltage measurements will be pushed. {{< figure src="device_type_1.png" alt="Device type overview" caption="Figure 10. Add a new device type" >}} @@ -125,13 +125,13 @@ type JsonObject = { [key: string]: Json }; const ttsApplicationIds = { dragino: { - waterLeak: 'dwl', + waterLeak: "dwl", }, }; - + const deviceTypeHashIds = { dragino: { - waterLeak: '4djrvd', + waterLeak: "4djrvd", }, }; @@ -232,9 +232,9 @@ function handle(args: Arguments, exec: Exec): IncomingRequestResponse | void { ## Step 7: Configuring {{% tts %}} -Now that the webhook and the event handler of the Dragino - LWL02 device are configured, we can proceed with setting up {{% tts %}}. +Now that the webhook and the event handler of the Dragino - LWL02 device are configured, we can proceed with setting up {{% tts %}}. -[Create an application]({{< ref "/integrations/adding-applications" >}}) and [add the Dragino device]({{< ref "/devices/adding-devices" >}}) by following linked tutorials. +[Create an application]({{< ref "/integrations/adding-applications" >}}) and [add the Dragino device]({{< ref "/hardware/devices/adding-devices" >}}) by following linked tutorials. After the device is registered, we can configure a new webhook on {{% tts %}}. Set the webhook format to **JSON** and enter the **Base URL** provided with the Withthegrid webhook we created in step 2. @@ -242,7 +242,7 @@ After the device is registered, we can configure a new webhook on {{% tts %}}. S ## Step 8: Configuring report type -The next step is to correctly configure the created report type such that it can decode the incoming payload into physical measurements. **The Things Network** makes this easy because the payload is already decoded. We only need to push the measurements to correct channels. Voltage measurement should be pushed into *Internal Sensor* channel which is the first channel, therefore, has a `channelIndex` of 0. Measurements related to *Probe* should be pushed to a `channelIndex` of 1. +The next step is to correctly configure the created report type such that it can decode the incoming payload into physical measurements. **The Things Network** makes this easy because the payload is already decoded. We only need to push the measurements to correct channels. Voltage measurement should be pushed into _Internal Sensor_ channel which is the first channel, therefore, has a `channelIndex` of 0. Measurements related to _Probe_ should be pushed to a `channelIndex` of 1. ```tsx /** @@ -370,7 +370,7 @@ The platform will output a claim token that can be copied. {{< figure src="token_3.png" alt="Get claim token" caption="Figure 24. Claim generated token" >}} -In the last step, we will configure the monitoring environment and add the newly connected sensor. +In the last step, we will configure the monitoring environment and add the newly connected sensor. ## Step 11: Configuring the monitoring environment diff --git a/doc/content/the-things-stack/concepts/data-formats/_index.md b/doc/content/integrations/data-formats/_index.md similarity index 77% rename from doc/content/the-things-stack/concepts/data-formats/_index.md rename to doc/content/integrations/data-formats/_index.md index 25c38111f8..ffa71ce6a9 100644 --- a/doc/content/the-things-stack/concepts/data-formats/_index.md +++ b/doc/content/integrations/data-formats/_index.md @@ -1,19 +1,20 @@ --- title: "Data Formats" description: "" -aliases: [/integrations/data-formats, /reference/data-formats] +aliases: + [ + /integrations/data-formats, + /reference/data-formats, + /the-things-stack/concepts/data-formats, + ] weight: 3 --- -The streaming data integrations provide multiple formats for the delivery of application uplink messages and downlink queue operations. This section will delve into the common formats used by them. +{{% tts %}} sends and receives application data from the various integrations in JSON format. This documentation provides some examples of these messages. -Read about LoRaWAN® message types in [The Things Network documentation](https://www.thethingsnetwork.org/docs/lorawan/message-types/). - -## JSON - -The JSON message format is described in the sections below. +These message are closely related to LoRaWAN® message types. Read more about them in [The Things Network documentation](https://www.thethingsnetwork.org/docs/lorawan/message-types/). {{< note >}} Empty fields are omitted from payloads. As such, if a certain field has a value of `""`, `0` or `false` it will not be present in the message. {{}} @@ -45,26 +46,26 @@ The JSON join-accept messages use the following format: ```json { - "end_device_ids" : { - "device_id" : "dev1", - "application_ids" : { - "application_id" : "app1" + "end_device_ids": { + "device_id": "dev1", + "application_ids": { + "application_id": "app1" }, - "dev_eui" : "0004A30B001C0530", - "join_eui" : "800000000000000C", - "dev_addr" : "01497ECC" + "dev_eui": "0004A30B001C0530", + "join_eui": "800000000000000C", + "dev_addr": "01497ECC" }, - "correlation_ids" : [ + "correlation_ids": [ "as:up:01E191YN5F2HMBQCBCVRF731VY", "gs:conn:01E191S6ZEWB630NTR45K5QN4Q", "gs:uplink:01E191YMZ2S7ZRTEGATVE2S3HH", "ns:uplink:01E191YMZ2J64K6FEW5F0WE7TQ", "rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01E191YMZ2KK3TJYG5C4XZP8JK" ], - "received_at" : "2020-02-17T07:49:09.935284891Z", - "join_accept" : { - "session_key_id" : "AXBSH1Pk6Z0G166RlH16CQ==", - "received_at" : "2020-02-17T07:49:09.736532315Z" + "received_at": "2020-02-17T07:49:09.935284891Z", + "join_accept": { + "session_key_id": "AXBSH1Pk6Z0G166RlH16CQ==", + "received_at": "2020-02-17T07:49:09.736532315Z" } } ``` @@ -157,55 +158,57 @@ The JSON uplink messages use the following format: ```json { - "end_device_ids" : { - "device_id" : "dev1", - "application_ids" : { - "application_id" : "app1" + "end_device_ids": { + "device_id": "dev1", + "application_ids": { + "application_id": "app1" }, - "dev_eui" : "0004A30B001C0530", - "join_eui" : "800000000000000C", - "dev_addr" : "00BCB929" + "dev_eui": "0004A30B001C0530", + "join_eui": "800000000000000C", + "dev_addr": "00BCB929" }, - "correlation_ids" : [ + "correlation_ids": [ "as:up:01E0WZGT6Y7657CPFPE5WEYDSQ", "gs:conn:01E0WDEC6T5T4XXBAX7S1VMFKE", "gs:uplink:01E0WZGSZWT07NE5TS2APTV1Z9", "ns:uplink:01E0WZGSZXZXZS8RFAWZX0F2FY", "rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01E0WZGSZXGE1KS577PFBWRJEE" ], - "received_at" : "2020-02-12T15:15:46.014773143Z", - "uplink_message" : { - "session_key_id" : "AXA50tHUGUucuzS/bCGMNw==", - "f_cnt" : 1, - "frm_payload" : "gkHe", - "decoded_payload" : { + "received_at": "2020-02-12T15:15:46.014773143Z", + "uplink_message": { + "session_key_id": "AXA50tHUGUucuzS/bCGMNw==", + "f_cnt": 1, + "frm_payload": "gkHe", + "decoded_payload": { "temperature": 1.0, "luminosity": 0.64 }, - "rx_metadata" : [ { - "gateway_ids" : { - "gateway_id" : "gtw1", - "eui" : "9C5C8E00001A05C4" - }, - "time" : "2020-02-12T15:15:45.787Z", - "timestamp" : 2463457000, - "rssi" : -35, - "channel_rssi" : -35, - "snr" : 5, - "uplink_token" : "ChIKEAoEZ3R3MRIInFyOAAAaBcQQ6L3Vlgk=", - "channel_index" : 2 - } ], - "settings" : { - "data_rate" : { - "lora" : { - "bandwidth" : 125000, - "spreading_factor" : 7 + "rx_metadata": [ + { + "gateway_ids": { + "gateway_id": "gtw1", + "eui": "9C5C8E00001A05C4" + }, + "time": "2020-02-12T15:15:45.787Z", + "timestamp": 2463457000, + "rssi": -35, + "channel_rssi": -35, + "snr": 5, + "uplink_token": "ChIKEAoEZ3R3MRIInFyOAAAaBcQQ6L3Vlgk=", + "channel_index": 2 + } + ], + "settings": { + "data_rate": { + "lora": { + "bandwidth": 125000, + "spreading_factor": 7 } }, - "coding_rate" : "4/6", - "frequency" : "868300000", - "timestamp" : 2463457000, - "time" : "2020-02-12T15:15:45.787Z" + "coding_rate": "4/6", + "frequency": "868300000", + "timestamp": 2463457000, + "time": "2020-02-12T15:15:45.787Z" }, "consumed_airtime": "0.056576s", "locations": { @@ -217,18 +220,18 @@ The JSON uplink messages use the following format: } }, "version_ids": { - "brand_id": "the-things-products", - "model_id": "the-things-uno", - "hardware_version": "1.0", - "firmware_version": "quickstart", - "band_id": "US_902_928" + "brand_id": "the-things-products", + "model_id": "the-things-uno", + "hardware_version": "1.0", + "firmware_version": "quickstart", + "band_id": "US_902_928" }, "network_ids": { "net_id": "000013", "tenant_id": "tenant1", "cluster_id": "nam1" }, - "received_at" : "2020-02-12T15:15:45.789585559Z" + "received_at": "2020-02-12T15:15:45.789585559Z" } } ``` @@ -242,6 +245,7 @@ curl --request GET / --location 'https://thethings.example.com/api/v3/applications//devices/?field_mask=attributes' / --header "Authorization: Bearer " ``` + {{}} ### Downlink Events Messages @@ -277,16 +281,16 @@ The JSON downlink `ack`, `nack`, `queued` and `sent` events messages use the fol ```json { - "end_device_ids" : { - "device_id" : "dev1", - "application_ids" : { - "application_id" : "app1" + "end_device_ids": { + "device_id": "dev1", + "application_ids": { + "application_id": "app1" }, - "dev_eui" : "0004A30B001C0530", - "join_eui" : "800000000000000C", - "dev_addr" : "00C30DFA" + "dev_eui": "0004A30B001C0530", + "join_eui": "800000000000000C", + "dev_addr": "00C30DFA" }, - "correlation_ids" : [ + "correlation_ids": [ "as:downlink:01E19B99501X84X6CV471TVSZ1", "as:up:01E19B9J8ED6HZW5CC41KPGHVD", "gs:conn:01E191S6ZEWB630NTR45K5QN4Q", @@ -294,15 +298,15 @@ The JSON downlink `ack`, `nack`, `queued` and `sent` events messages use the fol "ns:uplink:01E19B9J1CG3QNWS5M8G3DBMPN", "rpc:/ttn.lorawan.v3.GsNs/HandleUplink:01E19B9J17K85MJ1MXPHTW0410" ], - "received_at" : "2020-02-17T10:32:24.590413417Z", - "downlink_ack" : { - "session_key_id" : "AXBSp8v2brG0jqkri+sIkw==", - "f_port" : 15, - "f_cnt" : 1, - "frm_payload" : "vu8=", - "confirmed" : true, - "priority" : "NORMAL", - "correlation_ids" : [ "as:downlink:01E19B99501X84X6CV471TVSZ1" ] + "received_at": "2020-02-17T10:32:24.590413417Z", + "downlink_ack": { + "session_key_id": "AXBSp8v2brG0jqkri+sIkw==", + "f_port": 15, + "f_cnt": 1, + "frm_payload": "vu8=", + "confirmed": true, + "priority": "NORMAL", + "correlation_ids": ["as:downlink:01E19B99501X84X6CV471TVSZ1"] } } ``` @@ -343,27 +347,27 @@ The JSON downlink `failed` event provides both the downlink and the error detail ```json { - "end_device_ids" : { - "device_id" : "dev1", - "application_ids" : { - "application_id" : "app1" + "end_device_ids": { + "device_id": "dev1", + "application_ids": { + "application_id": "app1" } }, - "correlation_ids" : [ "as:downlink:01E19Z5W3BZBG7CXSJE9C0A3CE" ], - "downlink_failed" : { - "downlink" : { - "f_port" : 15, - "frm_payload" : "vu8=", - "confirmed" : true, - "priority" : "NORMAL", - "correlation_ids" : [ "as:downlink:01E19Z5W3BZBG7CXSJE9C0A3CE" ] + "correlation_ids": ["as:downlink:01E19Z5W3BZBG7CXSJE9C0A3CE"], + "downlink_failed": { + "downlink": { + "f_port": 15, + "frm_payload": "vu8=", + "confirmed": true, + "priority": "NORMAL", + "correlation_ids": ["as:downlink:01E19Z5W3BZBG7CXSJE9C0A3CE"] }, - "error" : { - "namespace" : "pkg/networkserver", - "name" : "application_downlink_too_long", - "message_format" : "application downlink payload is too long", - "correlation_id" : "2e7f786912e946e597894e381d0ad7b0", - "code" : 3 + "error": { + "namespace": "pkg/networkserver", + "name": "application_downlink_too_long", + "message_format": "application downlink payload is too long", + "correlation_id": "2e7f786912e946e597894e381d0ad7b0", + "code": 3 } } } @@ -403,23 +407,25 @@ The end device identifiers need to be supplied only to frontends that do not der ```json { - "end_device_ids" : { - "device_id" : "dev1", - "application_ids" : { - "application_id" : "app1" + "end_device_ids": { + "device_id": "dev1", + "application_ids": { + "application_id": "app1" } }, - "downlinks": [{ - "f_port": 15, - "frm_payload": "vu8=", - "decoded_payload" : { - "temperature": 1.0, - "luminosity": 0.64 - }, - "priority": "NORMAL", - "confirmed": true, - "correlation_ids" : [ "custom-id" ] - }] + "downlinks": [ + { + "f_port": 15, + "frm_payload": "vu8=", + "decoded_payload": { + "temperature": 1.0, + "luminosity": 0.64 + }, + "priority": "NORMAL", + "confirmed": true, + "correlation_ids": ["custom-id"] + } + ] } ``` diff --git a/doc/content/integrations/guides/_index.md b/doc/content/integrations/guides/_index.md index 96465b420e..a323b3ba33 100644 --- a/doc/content/integrations/guides/_index.md +++ b/doc/content/integrations/guides/_index.md @@ -1,7 +1,7 @@ --- -title: "Guides" +title: "Examples" description: "" -weight: +weight: 25 --- -This section contains guides for building divers applications using {{% tts %}}. \ No newline at end of file +This section contains examples for building applications using {{% tts %}}. diff --git a/doc/content/integrations/guides/build-an-end-to-end-solution-gn/_index.md b/doc/content/integrations/guides/build-an-end-to-end-solution-gn/_index.md index c028c81fad..4117f626fd 100644 --- a/doc/content/integrations/guides/build-an-end-to-end-solution-gn/_index.md +++ b/doc/content/integrations/guides/build-an-end-to-end-solution-gn/_index.md @@ -8,7 +8,7 @@ This section shows how to build an end-to-end solution to control the [Kuando Bu ## Registering {{% ttig %}} -Register {{% ttig %}} on {{% tts %}} by following [these instructions]({{< ref "/gateways/models/thethingsindoorgateway" >}}). Once registered, your gateway will be ready to receive uplinks and forward downlinks. +Register {{% ttig %}} on {{% tts %}} by following [these instructions]({{< ref "/hardware/gateways/models/thethingsindoorgateway" >}}). Once registered, your gateway will be ready to receive uplinks and forward downlinks. ## Creating an Application @@ -16,7 +16,7 @@ Create a new application on {{% tts %}} by following [these instructions]({{< re ## Adding GNSE -Add GNSE to {{% tts %}} by following [these instructions]({{< ref "/devices/adding-devices/" >}}). +Add GNSE to {{% tts %}} by following [these instructions]({{< ref "/hardware/devices/adding-devices/" >}}). {{< note "Your GNSE comes pre-programmed with a [*vanilla* application](https://www.genericnode.com/docs/applications/se-vanilla/) that can be used with this project. Full instructions on how to program GNSE can be found [here](https://www.genericnode.com/docs/getting-started/se-sw/)." />}} @@ -130,11 +130,11 @@ Press the push button a few more times and see how your chart behaves in time. ## Adding Kuando Busylight -Kuando BusyLight is a light device that you can control using LoRaWAN downlinks. It is a [class C]({{< ref "/devices/configuring-devices/class-c" >}}) end device that opens continuous receive windows so it is capable of receiving downlinks anytime. +Kuando BusyLight is a light device that you can control using LoRaWAN downlinks. It is a [class C]({{< ref "/hardware/devices/configuring-devices/class-c" >}}) end device that opens continuous receive windows so it is capable of receiving downlinks anytime. {{< figure src="busylight.png" alt="" >}} -To register the Kuando Busylight with {{% tts %}}, follow the steps outlined in **Manually Registering an End Device** section in the [Adding Devices]({{< ref "/devices/adding-devices/" >}}) guide. When adding the device, make sure to select **Class C (Continuous)** from the **Additional LoRaWAN class capabilities** drop-down menu. You can find this by expanding the **Show advanced activation, LoRaWAN class and cluster settings** section. +To register the Kuando Busylight with {{% tts %}}, follow the steps outlined in **Manually Registering an End Device** section in the [Adding Devices]({{< ref "/hardware/devices/adding-devices/" >}}) guide. When adding the device, make sure to select **Class C (Continuous)** from the **Additional LoRaWAN class capabilities** drop-down menu. You can find this by expanding the **Show advanced activation, LoRaWAN class and cluster settings** section. ## Sending Downlink Messages to Kuando Busylight from {{% tts %}} Application diff --git a/doc/content/integrations/other-integrations/_index.md b/doc/content/integrations/other-integrations/_index.md new file mode 100644 index 0000000000..51567f2048 --- /dev/null +++ b/doc/content/integrations/other-integrations/_index.md @@ -0,0 +1,8 @@ +--- +title: "Other integrations" +description: "" +aliases: [/integrations/adding-integrations] +weight: 7 +--- + +The {{% tts %}} webhooks are the simplest, most scalable methods to send and receive data to and from your external servers. If, for some reason, this is not suitable for your use case, we list a few alternatives in this section. diff --git a/doc/content/integrations/ifttt/_index.md b/doc/content/integrations/other-integrations/ifttt/_index.md similarity index 95% rename from doc/content/integrations/ifttt/_index.md rename to doc/content/integrations/other-integrations/ifttt/_index.md index dbcb8db52c..8fe4dd274a 100644 --- a/doc/content/integrations/ifttt/_index.md +++ b/doc/content/integrations/other-integrations/ifttt/_index.md @@ -2,6 +2,7 @@ title: "IFTTT" description: "" weight: 70 +aliases: [/integrations/ifttt] --- [IFTTT](https://ifttt.com/) is a service that creates chains of conditional statements, called applets, that can be triggered by the events occurring within various web services. These applets connect multiple applications in order to run automated tasks. diff --git a/doc/content/integrations/ifttt/ifttt-setup/_index.md b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/_index.md similarity index 90% rename from doc/content/integrations/ifttt/ifttt-setup/_index.md rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/_index.md index 49bf6b5a31..f60677765c 100644 --- a/doc/content/integrations/ifttt/ifttt-setup/_index.md +++ b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/_index.md @@ -2,6 +2,7 @@ title: "IFTTT Setup" description: "" weight: 1 +aliases: [/integrations/ifttt/ifttt-setup] --- Create an applet on IFTTT and prepare the setup by following the steps below. @@ -10,7 +11,7 @@ Create an applet on IFTTT and prepare the setup by following the steps below. Log in to your IFTTT user account. -Select the **Create** button in the upper right. +Select the **Create** button in the upper right. Click the **+ This** button. @@ -30,11 +31,11 @@ There are many action services to choose from. In this guide, we will use the ** {{< figure src="choosing-action-service.png" alt="Choosing Android SMS action service" >}} -You also need to specify the action within the action service. For the **Android SMS** action service, choose **Send an SMS** as an action. +You also need to specify the action within the action service. For the **Android SMS** action service, choose **Send an SMS** as an action. Complete the action fields by entering the phone number and SMS body, then click the **Create action** button. -You may also pass the decoded payload values from {{% tts %}} as `value1`, `value2` and `value3`. Learn how to implement this by following the [Node-RED Setup]({{< ref "/integrations/ifttt/node-red-setup" >}}) section. +You may also pass the decoded payload values from {{% tts %}} as `value1`, `value2` and `value3`. Learn how to implement this by following the [Node-RED Setup]({{< ref "/integrations/other-integrations/ifttt/node-red-setup" >}}) section. {{< figure src="completing-action-fields.png" alt="Completing the action fields" >}} diff --git a/doc/content/integrations/ifttt/ifttt-setup/choosing-a-service.png b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/choosing-a-service.png similarity index 100% rename from doc/content/integrations/ifttt/ifttt-setup/choosing-a-service.png rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/choosing-a-service.png diff --git a/doc/content/integrations/ifttt/ifttt-setup/choosing-action-service.png b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/choosing-action-service.png similarity index 100% rename from doc/content/integrations/ifttt/ifttt-setup/choosing-action-service.png rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/choosing-action-service.png diff --git a/doc/content/integrations/ifttt/ifttt-setup/completing-action-fields.png b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/completing-action-fields.png similarity index 100% rename from doc/content/integrations/ifttt/ifttt-setup/completing-action-fields.png rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/completing-action-fields.png diff --git a/doc/content/integrations/ifttt/ifttt-setup/naming-trigger.png b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/naming-trigger.png similarity index 100% rename from doc/content/integrations/ifttt/ifttt-setup/naming-trigger.png rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/naming-trigger.png diff --git a/doc/content/integrations/ifttt/ifttt-setup/webhooks-documentation-page.png b/doc/content/integrations/other-integrations/ifttt/ifttt-setup/webhooks-documentation-page.png similarity index 100% rename from doc/content/integrations/ifttt/ifttt-setup/webhooks-documentation-page.png rename to doc/content/integrations/other-integrations/ifttt/ifttt-setup/webhooks-documentation-page.png diff --git a/doc/content/integrations/ifttt/node-red-setup/_index.md b/doc/content/integrations/other-integrations/ifttt/node-red-setup/_index.md similarity index 98% rename from doc/content/integrations/ifttt/node-red-setup/_index.md rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/_index.md index a7f545cfeb..f251f355f0 100644 --- a/doc/content/integrations/ifttt/node-red-setup/_index.md +++ b/doc/content/integrations/other-integrations/ifttt/node-red-setup/_index.md @@ -2,6 +2,7 @@ title: "Node-RED Setup for Integration with IFTTT" description: "" weight: 2 +aliases: [/integrations/ifttt/node-red-setup] --- This section shows how to create a flow that will act like a mediator between {{% tts %}} and IFTTT. This flow will receive JSON messages from {{% tts %}} via the Webhooks integration, extract the decoded payload and send it as a payload of a separate HTTP POST request to IFTTT. diff --git a/doc/content/integrations/ifttt/node-red-setup/final-setup.png b/doc/content/integrations/other-integrations/ifttt/node-red-setup/final-setup.png similarity index 100% rename from doc/content/integrations/ifttt/node-red-setup/final-setup.png rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/final-setup.png diff --git a/doc/content/integrations/ifttt/node-red-setup/function-node.png b/doc/content/integrations/other-integrations/ifttt/node-red-setup/function-node.png similarity index 100% rename from doc/content/integrations/ifttt/node-red-setup/function-node.png rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/function-node.png diff --git a/doc/content/integrations/ifttt/node-red-setup/http-in-node.png b/doc/content/integrations/other-integrations/ifttt/node-red-setup/http-in-node.png similarity index 100% rename from doc/content/integrations/ifttt/node-red-setup/http-in-node.png rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/http-in-node.png diff --git a/doc/content/integrations/ifttt/node-red-setup/http-request-node.png b/doc/content/integrations/other-integrations/ifttt/node-red-setup/http-request-node.png similarity index 100% rename from doc/content/integrations/ifttt/node-red-setup/http-request-node.png rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/http-request-node.png diff --git a/doc/content/integrations/ifttt/node-red-setup/http-response-node.png b/doc/content/integrations/other-integrations/ifttt/node-red-setup/http-response-node.png similarity index 100% rename from doc/content/integrations/ifttt/node-red-setup/http-response-node.png rename to doc/content/integrations/other-integrations/ifttt/node-red-setup/http-response-node.png diff --git a/doc/content/integrations/ifttt/tts-setup/_index.md b/doc/content/integrations/other-integrations/ifttt/tts-setup/_index.md similarity index 94% rename from doc/content/integrations/ifttt/tts-setup/_index.md rename to doc/content/integrations/other-integrations/ifttt/tts-setup/_index.md index 986bcd5427..046c880aaf 100644 --- a/doc/content/integrations/ifttt/tts-setup/_index.md +++ b/doc/content/integrations/other-integrations/ifttt/tts-setup/_index.md @@ -2,6 +2,7 @@ title: "Creating Webhook Integration with IFTTT via Node-RED" description: "" weight: 3 +aliases: [/integrations/ifttt/tts-setup] --- Follow this section to create a Webhook integration with the **http in** node from Node-RED. @@ -14,7 +15,7 @@ Give a name to your webhook by filling in the **Webhook ID** field. For the **We Enter the **Base URL** value according to your Node-RED deployment. -Select the message type you want to enable this webhook for and fill in the path to be appended to the **Base URL** accordingly. Keep in mind that this path needs to be the same as the path provided in **http in** node. +Select the message type you want to enable this webhook for and fill in the path to be appended to the **Base URL** accordingly. Keep in mind that this path needs to be the same as the path provided in **http in** node. Finish by clicking the **Add webhook** button. diff --git a/doc/content/integrations/ifttt/tts-setup/creating-a-webhook.png b/doc/content/integrations/other-integrations/ifttt/tts-setup/creating-a-webhook.png similarity index 100% rename from doc/content/integrations/ifttt/tts-setup/creating-a-webhook.png rename to doc/content/integrations/other-integrations/ifttt/tts-setup/creating-a-webhook.png diff --git a/doc/content/integrations/lora-cloud/_index.md b/doc/content/integrations/other-integrations/lora-cloud/_index.md similarity index 74% rename from doc/content/integrations/lora-cloud/_index.md rename to doc/content/integrations/other-integrations/lora-cloud/_index.md index 982f967c68..4b34e63674 100644 --- a/doc/content/integrations/lora-cloud/_index.md +++ b/doc/content/integrations/other-integrations/lora-cloud/_index.md @@ -2,9 +2,10 @@ title: "LoRa Cloud" description: "" weight: 60 +aliases: [/integrations/lora-cloud] --- -[LoRa Cloud™](https://www.loracloud.com/) platform offers value-added APIs that enable simple solutions for common tasks related to LoRaWAN® networks and LoRa-based devices. {{% tts %}} supports integrations with [LoRa Cloud Modem Services]({{< ref "/integrations/lora-cloud/modem-services" >}}) and [LoRa Cloud Geolocation Services]({{< ref "/integrations/lora-cloud/geolocation-services" >}}). +[LoRa Cloud™](https://www.loracloud.com/) platform offers value-added APIs that enable simple solutions for common tasks related to LoRaWAN® networks and LoRa-based devices. {{% tts %}} supports integrations with [LoRa Cloud Modem Services]({{< ref "/integrations/other-integrations/lora-cloud/modem-services" >}}) and [LoRa Cloud Geolocation Services]({{< ref "/integrations/other-integrations/lora-cloud/geolocation-services" >}}). @@ -14,6 +15,6 @@ This device is running the LoRa Basics Modem-E Firmware and the LoRa Basics Mode The device is claimed using the [LoRa Cloud Device Join Service](https://www.loracloud.com/documentation/join_service?url=index.html). That operation is out of the scope of this guide and {{% tts %}} documentation in general, but you can find the detailed documentation on how to claim your device at [Semtech's Learning Center site](https://lora-developers.semtech.com/learning-center/hands-on-labs/build-end-to-end-solution-using-lorawan-and-loraedge/claim-your-device-on-the-lora-cloud-portal/). -In this guide, we assume you already [added the device]({{< ref "/devices/adding-devices" >}}) in {{% tts %}} Console. Please keep in mind that in case of using the LoRa Cloud Device Join Service for claiming, you have to tick the **External Join Server** box when adding the device in {{% tts %}} Console, as described [here]({{< ref "/devices/adding-devices#manually-create-end-device" >}}). +In this guide, we assume you already [added the device]({{< ref "/hardware/devices/adding-devices" >}}) in {{% tts %}} Console. Please keep in mind that in case of using the LoRa Cloud Device Join Service for claiming, you have to tick the **External Join Server** box when adding the device in {{% tts %}} Console, as described [here]({{< ref "/hardware/devices/adding-devices#manually-create-end-device" >}}). Keep reading the subtopics in the **left menu** to learn how to integrate and make use of LoRa Cloud features. diff --git a/doc/content/integrations/lora-cloud/add-device.png b/doc/content/integrations/other-integrations/lora-cloud/add-device.png similarity index 100% rename from doc/content/integrations/lora-cloud/add-device.png rename to doc/content/integrations/other-integrations/lora-cloud/add-device.png diff --git a/doc/content/integrations/lora-cloud/copy-token.png b/doc/content/integrations/other-integrations/lora-cloud/copy-token.png similarity index 100% rename from doc/content/integrations/lora-cloud/copy-token.png rename to doc/content/integrations/other-integrations/lora-cloud/copy-token.png diff --git a/doc/content/integrations/lora-cloud/create-token.png b/doc/content/integrations/other-integrations/lora-cloud/create-token.png similarity index 100% rename from doc/content/integrations/lora-cloud/create-token.png rename to doc/content/integrations/other-integrations/lora-cloud/create-token.png diff --git a/doc/content/integrations/lora-cloud/full-info.png b/doc/content/integrations/other-integrations/lora-cloud/full-info.png similarity index 100% rename from doc/content/integrations/lora-cloud/full-info.png rename to doc/content/integrations/other-integrations/lora-cloud/full-info.png diff --git a/doc/content/integrations/lora-cloud/geolocation-services.md b/doc/content/integrations/other-integrations/lora-cloud/geolocation-services.md similarity index 95% rename from doc/content/integrations/lora-cloud/geolocation-services.md rename to doc/content/integrations/other-integrations/lora-cloud/geolocation-services.md index f6cf496e76..46a7e7683d 100644 --- a/doc/content/integrations/lora-cloud/geolocation-services.md +++ b/doc/content/integrations/other-integrations/lora-cloud/geolocation-services.md @@ -2,6 +2,7 @@ title: "LoRa Cloud Geolocation Services" description: "" weight: 2 +aliases: [/integrations/lora-cloud/geolocation-services] --- [LoRa Cloud Geolocation Services](https://www.loracloud.com/portal/geolocation/home) provides simple JSON web APIs that can be easily integrated with a LoRaWAN network or application server to enable estimating the location of LoRa-based devices. @@ -24,13 +25,13 @@ Three query types are supported in scope of this integration and will be demonst The location of your gateway has to be publicly available for this integration, as it participates in the process of computing the end device location. This is disabled in {{% tts %}} by default, because the application (and end device) owner does not have be the one providing the gateway coverage. If you own the gateway, it is safe for you to explicitly allow to publish its location. -To make the gateway location public, tick the **Gateway location → Public** box when [adding your gateway]({{< ref "/gateways/concepts/adding-gateways" >}}) in {{% tts %}} Console. +To make the gateway location public, tick the **Gateway location → Public** box when [adding your gateway]({{< ref "/hardware/gateways/concepts/adding-gateways" >}}) in {{% tts %}} Console. If your gateway is already added in {{% tts %}} Console, go to your gateway's settings, navigate to the **Location** tab on the left hand menu and tick the **Privacy → Publish location** box. -{{< note >}} Using Semtech's [Modem-E firmware](https://lora-developers.semtech.com/library/tech-papers-and-guides/understanding-lora-basics-modem-e/) is recommended for LR1110-based devices, hence using the [LoRa Cloud Modem Services integration]({{< ref "/integrations/lora-cloud/modem-services" >}}) instead of LoRa Cloud Geolocation is also recommended. {{}} +{{< note >}} Using Semtech's [Modem-E firmware](https://lora-developers.semtech.com/library/tech-papers-and-guides/understanding-lora-basics-modem-e/) is recommended for LR1110-based devices, hence using the [LoRa Cloud Modem Services integration]({{< ref "/integrations/other-integrations/lora-cloud/modem-services" >}}) instead of LoRa Cloud Geolocation is also recommended. {{}} -Before proceding with this guide, make sure you have completed the [LoRa Cloud Setup]({{< ref "/integrations/lora-cloud/portal" >}}) guide. +Before proceding with this guide, make sure you have completed the [LoRa Cloud Setup]({{< ref "/integrations/other-integrations/lora-cloud/portal" >}}) guide. ## Configure Geolocation Integration diff --git a/doc/content/integrations/lora-cloud/get-info.png b/doc/content/integrations/other-integrations/lora-cloud/get-info.png similarity index 100% rename from doc/content/integrations/lora-cloud/get-info.png rename to doc/content/integrations/other-integrations/lora-cloud/get-info.png diff --git a/doc/content/integrations/lora-cloud/gnss-assisted-scan-result.png b/doc/content/integrations/other-integrations/lora-cloud/gnss-assisted-scan-result.png similarity index 100% rename from doc/content/integrations/lora-cloud/gnss-assisted-scan-result.png rename to doc/content/integrations/other-integrations/lora-cloud/gnss-assisted-scan-result.png diff --git a/doc/content/integrations/lora-cloud/gnss.png b/doc/content/integrations/other-integrations/lora-cloud/gnss.png similarity index 100% rename from doc/content/integrations/lora-cloud/gnss.png rename to doc/content/integrations/other-integrations/lora-cloud/gnss.png diff --git a/doc/content/integrations/lora-cloud/modem-services.md b/doc/content/integrations/other-integrations/lora-cloud/modem-services.md similarity index 87% rename from doc/content/integrations/lora-cloud/modem-services.md rename to doc/content/integrations/other-integrations/lora-cloud/modem-services.md index 940d056f5a..c6d72392a7 100644 --- a/doc/content/integrations/lora-cloud/modem-services.md +++ b/doc/content/integrations/other-integrations/lora-cloud/modem-services.md @@ -2,6 +2,7 @@ title: "LoRa Cloud Modem Services" description: "" weight: 3 +aliases: [/integrations/lora-cloud/modem-services] --- [LoRa Cloud Modem Services](https://www.loracloud.com/portal/device_management/home) complement your device management solution by giving you fine grain control of your LoRaWAN® end devices. It allows to obtain modem status information such as: system status, firmware version, voltage, downlink signal quality and time since last downlink. @@ -14,7 +15,7 @@ In general, LoRa Cloud Modem Services do not interact directly with network serv However, when it comes to geolocation for modem-based devices, {{% tts %}} integration with LoRa Cloud Modem Services handles this on behalf of the user, i.e. it queries the protocol engine on LoRa Cloud in order to retrieve the response. This way, after the integration is configured and the uplink message containing scanning result is sent from the device, the user only has to monitor results in {{% tts %}}. -Before proceding with this guide, make sure you have completed the [LoRa Cloud Setup]({{< ref "/integrations/lora-cloud/portal" >}}) guide. +Before proceding with this guide, make sure you have completed the [LoRa Cloud Setup]({{< ref "/integrations/other-integrations/lora-cloud/portal" >}}) guide. ## Configure LoRa Cloud Modem Services Integration @@ -34,9 +35,9 @@ Finish by clicking the **Set token** button. For LR1110 modem-based devices, location of the device can be estimated using Wi-Fi, assisted GNSS and autonomous GNSS scans. This section will show you how to obtain the location estimates using Wi-Fi and assisted GNSS scans. -{{< note >}} Please keep in mind that this guide does not refer to LoRa Cloud Geolocation. In case you are looking for geolocation solutions that use RSSI and TOA metadata, or you are using LR1110-based device with transceiver firmware (instead of Modem-E firmware), you should follow the [LoRa Cloud Geolocation guide]({{< ref "/integrations/lora-cloud/geolocation-services" >}}). {{}} +{{< note >}} Please keep in mind that this guide does not refer to LoRa Cloud Geolocation. In case you are looking for geolocation solutions that use RSSI and TOA metadata, or you are using LR1110-based device with transceiver firmware (instead of Modem-E firmware), you should follow the [LoRa Cloud Geolocation guide]({{< ref "/integrations/other-integrations/lora-cloud/geolocation-services" >}}). {{}} -{{< note >}} The number of (useful) satellites detected when running the autonomous GNSS scan might not be enough to calculate the position of your device, so we will not include that case in this guide. However, if you want to read more about it, follow [this guide](https://lora-developers.semtech.com/learning-center/hands-on-labs/build-end-to-end-solution-using-lorawan-and-loraedge/find-the-location-of-your-tracking-device/#run-an-autonomous-gnss-scan-and-send-results). {{}} +{{< note >}} The number of (useful) satellites detected when running the autonomous GNSS scan might not be enough to calculate the position of your device, so we will not include that case in this guide. However, if you want to read more about it, follow [this guide](https://lora-developers.semtech.com/learning-center/hands-on-labs/build-end-to-end-solution-using-lorawan-and-loraedge/find-the-location-of-your-tracking-device/#run-an-autonomous-gnss-scan-and-send-results). {{}} After you obtain the location results, you can further integrate your {{% tts %}} application with other third-party IoT platforms to visualize them, etc. diff --git a/doc/content/integrations/lora-cloud/paste-token-geolocation.png b/doc/content/integrations/other-integrations/lora-cloud/paste-token-geolocation.png similarity index 100% rename from doc/content/integrations/lora-cloud/paste-token-geolocation.png rename to doc/content/integrations/other-integrations/lora-cloud/paste-token-geolocation.png diff --git a/doc/content/integrations/lora-cloud/paste-token-modem.png b/doc/content/integrations/other-integrations/lora-cloud/paste-token-modem.png similarity index 100% rename from doc/content/integrations/lora-cloud/paste-token-modem.png rename to doc/content/integrations/other-integrations/lora-cloud/paste-token-modem.png diff --git a/doc/content/integrations/lora-cloud/portal.md b/doc/content/integrations/other-integrations/lora-cloud/portal.md similarity index 96% rename from doc/content/integrations/lora-cloud/portal.md rename to doc/content/integrations/other-integrations/lora-cloud/portal.md index 78b89c34af..d36020982a 100644 --- a/doc/content/integrations/lora-cloud/portal.md +++ b/doc/content/integrations/other-integrations/lora-cloud/portal.md @@ -2,6 +2,7 @@ title: "LoRa Cloud Setup" description: "" weight: 1 +aliases: [/integrations/lora-cloud/portal] --- Before connecting your device to {{% tts %}} you need to set up the [LoRa Cloud portal](https://www.loracloud.com/portal) by creating an API token. diff --git a/doc/content/integrations/lora-cloud/portal.png b/doc/content/integrations/other-integrations/lora-cloud/portal.png similarity index 100% rename from doc/content/integrations/lora-cloud/portal.png rename to doc/content/integrations/other-integrations/lora-cloud/portal.png diff --git a/doc/content/integrations/lora-cloud/send-requests.png b/doc/content/integrations/other-integrations/lora-cloud/send-requests.png similarity index 100% rename from doc/content/integrations/lora-cloud/send-requests.png rename to doc/content/integrations/other-integrations/lora-cloud/send-requests.png diff --git a/doc/content/integrations/lora-cloud/toa-rssi.png b/doc/content/integrations/other-integrations/lora-cloud/toa-rssi.png similarity index 100% rename from doc/content/integrations/lora-cloud/toa-rssi.png rename to doc/content/integrations/other-integrations/lora-cloud/toa-rssi.png diff --git a/doc/content/integrations/lora-cloud/toa-wifi.png b/doc/content/integrations/other-integrations/lora-cloud/toa-wifi.png similarity index 100% rename from doc/content/integrations/lora-cloud/toa-wifi.png rename to doc/content/integrations/other-integrations/lora-cloud/toa-wifi.png diff --git a/doc/content/integrations/lora-cloud/token-creation.png b/doc/content/integrations/other-integrations/lora-cloud/token-creation.png similarity index 100% rename from doc/content/integrations/lora-cloud/token-creation.png rename to doc/content/integrations/other-integrations/lora-cloud/token-creation.png diff --git a/doc/content/integrations/lora-cloud/wifi-scan-result.png b/doc/content/integrations/other-integrations/lora-cloud/wifi-scan-result.png similarity index 100% rename from doc/content/integrations/lora-cloud/wifi-scan-result.png rename to doc/content/integrations/other-integrations/lora-cloud/wifi-scan-result.png diff --git a/doc/content/integrations/mqtt/_index.md b/doc/content/integrations/other-integrations/mqtt/_index.md similarity index 86% rename from doc/content/integrations/mqtt/_index.md rename to doc/content/integrations/other-integrations/mqtt/_index.md index 4bb94c8484..a1f3248ec6 100644 --- a/doc/content/integrations/mqtt/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/_index.md @@ -1,7 +1,7 @@ --- title: "MQTT Server" description: "" -aliases: [/guides/getting-started/mqtt] +aliases: [/guides/getting-started/mqtt, /integrations/mqtt] weight: 30 --- @@ -16,11 +16,11 @@ weight: 30 For all {{% tts %}} deployments except the Open Source, application IDs and other endpoints include the tenant ID. For the integration with {{% tts %}} MQTT Server on these deployments this means two things: - The **Username** used for connecting will be of format `{application id}@{tenant id}` (see the section below) -- The MQTT topics will contain `{application id}@{tenant id}` (see [MQTT Clients]({{< ref "/integrations/mqtt#mqtt-clients" >}}) section) +- The MQTT topics will contain `{application id}@{tenant id}` (see [MQTT Clients]({{< ref "/integrations/other-integrations/mqtt#mqtt-clients" >}}) section) For example, for an application `app1` added on The Things Network, you would use `app1@ttn`, because `ttn` is a tenant ID for The Things Network. -For {{% tts %}} Open Source deployment these endpoints do not include the tenant ID. Hence, instead of `{application id}@{tenant id}`, you would be using only `{application id}` for **Username** and in topics. +For {{% tts %}} Open Source deployment these endpoints do not include the tenant ID. Hence, instead of `{application id}@{tenant id}`, you would be using only `{application id}` for **Username** and in topics. ## Creating an API Key @@ -32,21 +32,21 @@ You can now click on the **Generate new API key** button in order to generate an {{< figure src="mqtt-key-created.png" alt="MQTT API key created" >}} -{{< note >}} +{{< note >}} Make sure to copy your API key now, since it will no longer be visible after leaving the page for security reasons. If API key does not exist or has been removed, you will probably see the `as.mqtt.connect.fail` event with the `api key with id {api_key_id} not found` error in application Live events. {{}} -Keep in mind that this example shows the MQTT Server information for {{% tts %}} Open Source. If you are using a different deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +Keep in mind that this example shows the MQTT Server information for {{% tts %}} Open Source. If you are using a different deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). The information shown on the image above is enough for you to be able to connect to {{% tts %}} MQTT Server using an arbitrary MQTT client. Keep reading to find out how. ## MQTT Clients -There are many available MQTT clients you can use to connect to {{% tts %}} MQTT Server. See [Integrations with MQTT Clients]({{< ref "/integrations/mqtt/mqtt-clients" >}}) section for detailed instructions on how the integrate with the most popular ones. +There are many available MQTT clients you can use to connect to {{% tts %}} MQTT Server. See [Integrations with MQTT Clients]({{< ref "/integrations/other-integrations/mqtt/mqtt-clients" >}}) section for detailed instructions on how the integrate with the most popular ones. -In this section, we focus on the available topics that the MQTT Server is exposing and provide short examples of their usage. In general, some topics are used for subscribing to upstream traffic, while others are used for publishing downlink traffic. +In this section, we focus on the available topics that the MQTT Server is exposing and provide short examples of their usage. In general, some topics are used for subscribing to upstream traffic, while others are used for publishing downlink traffic. In the examples below, we use the `mosquitto_pub` and `mosquitto_sub` clients. @@ -76,9 +76,9 @@ Subscribing to all topics with the `mosquitto_sub` client can be done with: mosquitto_sub -h thethings.example.com -t "#" -u "app1@tenant1" -P "NNSXS.VEEBURF3KR77ZR.." -d ``` -### Example +### Example -This example is suitable for {{% tts %}} deployments other than Open Source. If you are using {{% tts %}} Open source, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +This example is suitable for {{% tts %}} deployments other than Open Source. If you are using {{% tts %}} Open source, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). When a device `dev1` (in application `app1` in tenant `tenant1`) joins the network, the `join` message is published on the topic `v3/app1@tenant1/devices/dev1/join`. With your MQTT client subscribed to that topic (or all topics), you can catch that `join` message. @@ -107,6 +107,7 @@ When a device `dev1` (in application `app1` in tenant `tenant1`) joins the netwo } } ``` + When a device `dev1` sends an uplink message, that message is being published on the topic `v3/app1@tenant1/devices/dev1/up`. @@ -135,17 +136,19 @@ When a device `dev1` sends an uplink message, that message is being published on "session_key_id": "AWiZpAyXrAfEkUNkBljRoA==", "f_port": 15, "frm_payload": "VGVtcGVyYXR1cmUgPSAwLjA=", - "rx_metadata": [{ - "gateway_ids": { - "gateway_id": "eui-0242020000247803", - "eui": "0242020000247803" - }, - "time": "2019-01-29T13:02:34.981Z", - "timestamp": 1283325000, - "rssi": -35, - "snr": 5, - "uplink_token": "CiIKIAoUZXVpLTAyNDIwMjAwMDAyNDc4MDMSCAJCAgAAJHgDEMj49+ME" - }], + "rx_metadata": [ + { + "gateway_ids": { + "gateway_id": "eui-0242020000247803", + "eui": "0242020000247803" + }, + "time": "2019-01-29T13:02:34.981Z", + "timestamp": 1283325000, + "rssi": -35, + "snr": 5, + "uplink_token": "CiIKIAoUZXVpLTAyNDIwMjAwMDAyNDc4MDMSCAJCAgAAJHgDEMj49+ME" + } + ], "settings": { "data_rate": { "lora": { @@ -161,11 +164,12 @@ When a device `dev1` sends an uplink message, that message is being published on } } ``` + ## Publishing Downlink Traffic -Downlinks can be scheduled by publishing the message to the topic `v3/{application id}@{tenant id}/devices/{device id}/down/push`. +Downlinks can be scheduled by publishing the message to the topic `v3/{application id}@{tenant id}/devices/{device id}/down/push`. Remember that the format of this topic for {{% tts %}} Open Source deployment would be `v3/{application id}/devices/{device id}/down/push`. @@ -173,17 +177,19 @@ Instead of `/push`, you can also use `/replace` to replace the downlink queue. R ### Example -This example is suitable for {{% tts %}} deployments other than Open Source. If you are using {{% tts %}} Open source, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +This example is suitable for {{% tts %}} deployments other than Open Source. If you are using {{% tts %}} Open source, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). To send an unconfirmed downlink message to the device `dev1` in application `app1` in tenant `tenant1` with the hexadecimal payload `BE EF` on `FPort` 15 with normal priority, use the topic `v3/app1@tenant1/devices/dev1/down/push` with the following contents: ```json { - "downlinks": [{ - "f_port": 15, - "frm_payload": "vu8=", - "priority": "NORMAL" - }] + "downlinks": [ + { + "f_port": 15, + "frm_payload": "vu8=", + "priority": "NORMAL" + } + ] } ``` @@ -200,7 +206,7 @@ mosquitto_pub -h thethings.example.com \ -d` ``` -It is also possible to send multiple downlink messages on a single push because `downlinks` is an array. +It is also possible to send multiple downlink messages on a single push because `downlinks` is an array. If you do not specify a priority, the default priority `LOWEST` is used. You can specify `LOWEST`, `LOW`, `BELOW_NORMAL`, `NORMAL`, `ABOVE_NORMAL`, `HIGH` and `HIGHEST`. @@ -208,13 +214,15 @@ If you do not specify a priority, the default priority `LOWEST` is used. You can ```json { - "downlinks": [{ - "f_port": 15, - "frm_payload": "vu8=", - "priority": "HIGH", - "confirmed": true, - "correlation_ids": ["my-correlation-id"] - }] + "downlinks": [ + { + "f_port": 15, + "frm_payload": "vu8=", + "priority": "HIGH", + "confirmed": true, + "correlation_ids": ["my-correlation-id"] + } + ] } ``` @@ -233,10 +241,7 @@ Once the downlink gets acknowledged, a message is published to the topic `v3/app "join_eui": "4200000000000000", "dev_addr": "00E6F42A" }, - "correlation_ids": [ - "my-correlation-id", - "..." - ], + "correlation_ids": ["my-correlation-id", "..."], "downlink_ack": { "session_key_id": "AWnj0318qrtJ7kbudd8Vmw==", "f_port": 15, @@ -244,13 +249,11 @@ Once the downlink gets acknowledged, a message is published to the topic `v3/app "frm_payload": "vu8=", "confirmed": true, "priority": "NORMAL", - "correlation_ids": [ - "my-correlation-id", - "..." - ] + "correlation_ids": ["my-correlation-id", "..."] } } ``` + You see the correlation ID `my-correlation-id` of your downlink message. You can add multiple custom correlation IDs, for example to reference events or identifiers of your application. diff --git a/doc/content/integrations/mqtt/mqtt-clients/_index.md b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/_index.md similarity index 55% rename from doc/content/integrations/mqtt/mqtt-clients/_index.md rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/_index.md index 2c331f6681..24019793ff 100644 --- a/doc/content/integrations/mqtt/mqtt-clients/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/_index.md @@ -2,9 +2,13 @@ title: "Integrations with MQTT Clients" description: "" weight: 40 -aliases: [/integrations/mqtt-clients] +aliases: + [ + /integrations/other-integrations/mqtt-clients, + /integrations/mqtt/mqtt-clients, + ] --- -This section contains detailed guides for integrating with popular MQTT clients. +This section contains detailed guides for integrating with popular MQTT clients. diff --git a/doc/content/integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md similarity index 81% rename from doc/content/integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md index 6f2b0097ce..11bd9b7a12 100644 --- a/doc/content/integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-mosquitto/_index.md @@ -1,20 +1,24 @@ --- title: "Eclipse Mosquitto" description: "" -aliases: [/integrations/mqtt-clients/eclipse-mosquitto] +aliases: + [ + /integrations/other-integrations/mqtt-clients/eclipse-mosquitto, + /integrations/mqtt/mqtt-clients/eclipse-mosquitto, + ] --- -[Eclipse Mosquitto](https://mosquitto.org/) is a project which provides an open source MQTT broker, a C and C++ library for MQTT client implementations and the popular command line MQTT clients. +[Eclipse Mosquitto](https://mosquitto.org/) is a project which provides an open source MQTT broker, a C and C++ library for MQTT client implementations and the popular command line MQTT clients. Its lightweight MQTT protocol implementation makes it suitable for full power machines, as well as for the low power and embedded ones. -This guide shows how to receive upstream messages and send downlink messages with the Eclipse Mosquitto command line clients and {{% tts %}} [MQTT Server]({{< ref "/integrations/mqtt" >}}). +This guide shows how to receive upstream messages and send downlink messages with the Eclipse Mosquitto command line clients and {{% tts %}} [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). {{< note >}} Eclipse Mosquitto MQTT server supports 3.1, 3.1.1 and 5.0 MQTT protocol versions. {{}} -The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). ## Prerequisites @@ -22,11 +26,11 @@ The examples in this guide are suitable for {{% tts %}} Open Source deployment. ## Subscribing to Upstream Traffic -This section follows the example for subscribing to upstream traffic in the [MQTT Server]({{< ref "/integrations/mqtt#subscribing-to-upstream-traffic" >}}) guide. +This section follows the example for subscribing to upstream traffic in the [MQTT Server]({{< ref "/integrations/other-integrations/mqtt#subscribing-to-upstream-traffic" >}}) guide. The command for connecting to a host and subscribing to a topic has using `mosquitto_sub` has the following syntax: -```bash +```bash mosquitto_sub -h -p -u -P -t ``` @@ -44,11 +48,11 @@ Read more about the command line options in the [mosquitto_sub manual](https://m ## Publishing Downlink Messages -This section follows the example for publishing downlink traffic in the [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide. See [Publishing Downlink Messages]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) for a list of available topics. +This section follows the example for publishing downlink traffic in the [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide. See [Publishing Downlink Messages]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) for a list of available topics. For connecting to a host and publishing a message, **mosquitto_pub** client defines a command with the following syntax: -```bash +```bash mosquitto_pub -h -p -u -P -t -m ``` diff --git a/doc/content/integrations/mqtt/mqtt-clients/eclipse-paho/_index.md b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-paho/_index.md similarity index 84% rename from doc/content/integrations/mqtt/mqtt-clients/eclipse-paho/_index.md rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-paho/_index.md index 015df294b1..0193ae2cdf 100644 --- a/doc/content/integrations/mqtt/mqtt-clients/eclipse-paho/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/eclipse-paho/_index.md @@ -1,11 +1,15 @@ --- title: "Eclipse Paho" description: "" -weight: -aliases: [/integrations/mqtt-clients/eclipse-paho] +weight: +aliases: + [ + /integrations/other-integrations/mqtt-clients/eclipse-paho, + /integrations/mqtt/mqtt-clients/eclipse-paho, + ] --- -[Eclipse Paho](https://www.eclipse.org/paho/) is an umbrella project on a mission to provide high quality implementations of tools and libraries for M2M communications. +[Eclipse Paho](https://www.eclipse.org/paho/) is an umbrella project on a mission to provide high quality implementations of tools and libraries for M2M communications. @@ -15,7 +19,7 @@ Follow this guide to learn how to connect to {{% tts %}} MQTT Server, to receive This document contains instructions to use [Eclipse Paho MQTT Python client library](https://www.eclipse.org/paho/index.php?page=clients/python/index.php), which implements MQTT v3.1 and v3.1.1 protocol. To compare this library with other Paho project implementations visit [Eclipse Paho Downloads page](https://www.eclipse.org/paho/index.php?page=downloads.php). To find more about the usage of the Python implementation, visit [this page](https://pypi.org/project/paho-mqtt/). -The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). ## Prerequisites @@ -25,7 +29,7 @@ The examples in this guide are suitable for {{% tts %}} Open Source deployment. ## Subscribing to Upstream Traffic -This section follows the example for subscribing to upstream traffic in [MQTT Server]({{< ref "/integrations/mqtt#subscribing-to-upstream-traffic" >}}) guide. +This section follows the example for subscribing to upstream traffic in [MQTT Server]({{< ref "/integrations/other-integrations/mqtt#subscribing-to-upstream-traffic" >}}) guide. To keep things simple, you can use the existing Python scripts from the **examples** folder contained in your installation folder and adjust them according to your setup. @@ -33,8 +37,8 @@ Enter the **examples** folder and create a new file named `subscribe.py`. Open the file you created, paste the code below and modify it to match your setup: -```bash -import context +```bash +import context import paho.mqtt.subscribe as subscribe m = subscribe.simple(topics=['#'], hostname="thethings.example.com", port=1883, auth={'username':"app1",'password':"NNSXS.VEEBURF3KR77ZR.."}, msg_count=2) @@ -55,13 +59,13 @@ To use TLS for security, change the port value to `8883` and pass the `tls` argu ## Publishing Downlink Messages -This section follows the example for publishing downlink messages in [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide. See [Publishing Downlink Messages]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) for a list of available topics. +This section follows the example for publishing downlink messages in [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide. See [Publishing Downlink Messages]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) for a list of available topics. Create a new file named `publish.py` in the **examples** folder. Open the file you created and paste the code below: -```bash +```bash import context import paho.mqtt.publish as publish diff --git a/doc/content/integrations/mqtt/mqtt-clients/hivemq/_index.md b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/hivemq/_index.md similarity index 78% rename from doc/content/integrations/mqtt/mqtt-clients/hivemq/_index.md rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/hivemq/_index.md index 64a95fe5b6..0109c9e77b 100644 --- a/doc/content/integrations/mqtt/mqtt-clients/hivemq/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/hivemq/_index.md @@ -1,23 +1,27 @@ --- title: "HiveMQ" description: "" -weight: -aliases: [/integrations/mqtt-clients/hivemq] +weight: +aliases: + [ + /integrations/other-integrations/mqtt-clients/hivemq, + /integrations/mqtt/mqtt-clients/hivemq, + ] --- -[HiveMQ](https://www.hivemq.com/) is an MQTT broker and a client based messaging platform which uses MQTT protocol for fast, reliable and efficient bi-directional data transfer to and from IoT devices. +[HiveMQ](https://www.hivemq.com/) is an MQTT broker and a client based messaging platform which uses MQTT protocol for fast, reliable and efficient bi-directional data transfer to and from IoT devices. HiveMQ provides its own client library, but it can be used with any MQTT compliant client library. It can be deployed on a private, hybrid or public cloud. You can integrate HiveMQ with existing enterprise systems thanks to its open API and a flexible extension framework. -HiveMQ also offers an open source tool called [MQTT CLI](https://github.com/hivemq/mqtt-cli), which provides a command line interface to interact with MQTT brokers. This tool can be used in a shell mode, allowing you to use multiple MQTT clients simultaneously. +HiveMQ also offers an open source tool called [MQTT CLI](https://github.com/hivemq/mqtt-cli), which provides a command line interface to interact with MQTT brokers. This tool can be used in a shell mode, allowing you to use multiple MQTT clients simultaneously. {{< note >}} HiveMQ broker is compliant with the MQTT 3.1, 3.1.1 and 5.0 protocol specifications, while the MQTT CLI tool supports 3.1.1 and 5.0 versions. {{}} -This guide contains the instructions to use HiveMQ CLI tool in a shell mode for subscribing and publishing to topics used by {{% tts %}} [MQTT Server]({{< ref "/integrations/mqtt" >}}). +This guide contains the instructions to use HiveMQ CLI tool in a shell mode for subscribing and publishing to topics used by {{% tts %}} [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). -The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). ## Prerequisites @@ -25,7 +29,7 @@ The examples in this guide are suitable for {{% tts %}} Open Source deployment. ## Connecting to MQTT Server in MQTT CLI Shell Mode -Learn how to connect to {{% tts %}} MQTT Server by reading the [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide. +Learn how to connect to {{% tts %}} MQTT Server by reading the [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide. Enter the HiveMQ MQTT CLI shell mode by typing the following command in your terminal: @@ -39,9 +43,9 @@ Once in shell mode, you can connect to {{% tts %}} MQTT Server by using the foll con -h -p -V 3 -u -pw ``` -Keep in mind that `password` is the value of the authentication API key. For more info, see [Creating an API Key]({{< ref "/integrations/mqtt#creating-an-api-key" >}}). +Keep in mind that `password` is the value of the authentication API key. For more info, see [Creating an API Key]({{< ref "/integrations/other-integrations/mqtt#creating-an-api-key" >}}). -The `-V 3` flag is used here because the {{% tts %}} MQTT Server supports the 3.1.1 MQTT protocol version, as mentioned in the [MQTT Server guide]({{< ref "/integrations/mqtt" >}}). For detailed descriptions of other parameters used with the `con` command, see the [official MQTT CLI documentation](https://hivemq.github.io/mqtt-cli/docs/shell/connect.html). +The `-V 3` flag is used here because the {{% tts %}} MQTT Server supports the 3.1.1 MQTT protocol version, as mentioned in the [MQTT Server guide]({{< ref "/integrations/other-integrations/mqtt" >}}). For detailed descriptions of other parameters used with the `con` command, see the [official MQTT CLI documentation](https://hivemq.github.io/mqtt-cli/docs/shell/connect.html). For example, you can connect to {{% tts %}} MQTT Server over its public address with the following command: @@ -55,7 +59,7 @@ Once you have successfully connected to {{% tts %}} MQTT Server, continue with s ## Subscribe to Upstream Traffic -Use the `sub` command to subscribe to topics and listen to messages being sent from your end device. +Use the `sub` command to subscribe to topics and listen to messages being sent from your end device. For example, if you want to listen to the uplink messages being sent from `dev1` device in `app1` application, use the following command: @@ -65,11 +69,11 @@ sub -t "v3/app1/devices/dev1/up" -s `-s` flag is used to subscribe with a context to the given topic, e.g. to stop the console being blocked by subscribing without a context. For detailed descriptions of all the available `sub` command parameters, see the [Subscribe](https://hivemq.github.io/mqtt-cli/docs/shell/subscribe.html) section of the HiveMQ MQTT CLI documentation. -See the [Subscribing to Upstream Traffic]({{< ref "/integrations/mqtt#subscribing-to-upstream-traffic" >}}) section of the MQTT Server guide for a full list of available topics you can subscribe to. +See the [Subscribing to Upstream Traffic]({{< ref "/integrations/other-integrations/mqtt#subscribing-to-upstream-traffic" >}}) section of the MQTT Server guide for a full list of available topics you can subscribe to. ## Schedule Downlink Messages -Use the `pub` command to publish to topics, e.g. to schedule downlink messages to be sent to your end device. +Use the `pub` command to publish to topics, e.g. to schedule downlink messages to be sent to your end device. For example, to push an unconfirmed downlink message with the hexadecimal payload `BE EF` on `FPort` 15 with normal priority to the `dev1` device, use the following command: @@ -81,4 +85,4 @@ pub -t "v3/app1/devices/dev1/down/push" -m '{"downlinks":[{"f_port": 15,"frm_pay For detailed descriptions of the `pub` command parameters, see the [Publish](https://hivemq.github.io/mqtt-cli/docs/shell/publish.html) section of the MQTT CLI documentation. -See the [Publishing Downlink Traffic]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) section to learn about using `/replace` instead of `/push`. +See the [Publishing Downlink Traffic]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) section to learn about using `/replace` instead of `/push`. diff --git a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/_index.md b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/_index.md similarity index 74% rename from doc/content/integrations/mqtt/mqtt-clients/mqttbox/_index.md rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/_index.md index 84e97d4f5d..6ed7ba9880 100644 --- a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/_index.md +++ b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/_index.md @@ -1,17 +1,17 @@ --- title: "MQTTBox" description: "" -weight: -aliases: [/integrations/mqtt-clients/mqttbox] +weight: +aliases: [/integrations/mqtt/mqtt-clients/mqttbox] --- -[MQTTBox](http://workswithweb.com/mqttbox.html) is a cross platform application that makes it simple to create MQTT clients, virtual device networks, and load test MQTT devices and brokers. +[MQTTBox](http://workswithweb.com/mqttbox.html) is a cross platform application that makes it simple to create MQTT clients, virtual device networks, and load test MQTT devices and brokers. -In this guide, we show how to create an MQTT client for subscribing or publishing to topics used by {{% tts %}} [MQTT Server]({{< ref "/integrations/mqtt" >}}). +In this guide, we show how to create an MQTT client for subscribing or publishing to topics used by {{% tts %}} [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}). -The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}). +The examples in this guide are suitable for {{% tts %}} Open Source deployment. If you are using a different {{% tts %}} deployment, make sure your read a [Note on Using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}). ## Prerequisites @@ -19,7 +19,7 @@ The examples in this guide are suitable for {{% tts %}} Open Source deployment. ## Configuring MQTTBox -This section follows the examples in the [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide. +This section follows the examples in the [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide. In the MQTTBox application, click the **Create MQTT Client** button on the left to add a new MQTT client. @@ -29,7 +29,7 @@ Choose **mqtt / tcp** from the **Protocol** drop down list, and enter the **Publ Fill in the **Username** and **Password** fields. -Keep in mind that password represents the value of the authentication API key. For more info, see [Creating an API Key]({{< ref "/integrations/mqtt#creating-an-api-key" >}}). +Keep in mind that password represents the value of the authentication API key. For more info, see [Creating an API Key]({{< ref "/integrations/other-integrations/mqtt#creating-an-api-key" >}}). {{< figure src="mqttbox-config.png" alt="MQTTBox client configuration" >}} @@ -39,9 +39,9 @@ If you want to enable TLS for security, choose **mqtt / tls** as **Protocol** an You may leave the other fields empty. Click **Save** to save the configuration. -If the MQTTBox client successfully connects to {{% tts %}} MQTT Server, the **Connected** status button will be visible in the upper right. You can also use this button do disconnect. +If the MQTTBox client successfully connects to {{% tts %}} MQTT Server, the **Connected** status button will be visible in the upper right. You can also use this button do disconnect. -Once connected, you can proceed with configuring the publishers or subscribers. +Once connected, you can proceed with configuring the publishers or subscribers. You can add multiple MQTT clients, as well as multiple publishers and subscribers within those clients. @@ -49,9 +49,9 @@ You can add multiple MQTT clients, as well as multiple publishers and subscriber To listen to messages being sent by your device and published by the {{% tts %}} MQTT Server, select **Add subscriber** and fill in the **Topic to subscribe** field with the name of topic you wish to subscribe to. -In this section, we use the `v3/{application id}/devices/{device id}/up` topic structure for listening to uplink messages. +In this section, we use the `v3/{application id}/devices/{device id}/up` topic structure for listening to uplink messages. -See [Subscribing to Upstream Traffic]({{< ref "/integrations/mqtt#subscribing-to-upstream-traffic" >}}) section of the MQTT Server guide for a list of available topics you can subscribe to. +See [Subscribing to Upstream Traffic]({{< ref "/integrations/other-integrations/mqtt#subscribing-to-upstream-traffic" >}}) section of the MQTT Server guide for a list of available topics you can subscribe to. Choose an appropriate **QoS** value from the list, click the **Subscribe** button and messages from {{% tts %}} will begin arriving shortly. @@ -59,11 +59,11 @@ Choose an appropriate **QoS** value from the list, click the **Subscribe** butto ## Schedule Downlink Messages -To send messages to your end device, you need to schedule a downlink message as described in the [Publishing Downlink Traffic]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) section of the MQTT Server guide. You can achieve this by adding and configuring a publisher in the MQTTBox application. +To send messages to your end device, you need to schedule a downlink message as described in the [Publishing Downlink Traffic]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) section of the MQTT Server guide. You can achieve this by adding and configuring a publisher in the MQTTBox application. Fill in the **Topic to publish** field with `v3/{application id}/devices/{device id}/down/push` and replace the variables with their values from the {{% tts %}} Console. -See the [Publishing Downlink Traffic]({{< ref "/integrations/mqtt#publishing-downlink-traffic" >}}) section to learn about using `/replace` instead of `/push`. +See the [Publishing Downlink Traffic]({{< ref "/integrations/other-integrations/mqtt#publishing-downlink-traffic" >}}) section to learn about using `/replace` instead of `/push`. Choose an appropriate **QoS** value from the drop down menu. @@ -73,11 +73,13 @@ To send an example downlink, paste the following content in the **Payload** fiel ```json { - "downlinks": [{ - "f_port": 15, - "frm_payload": "vu8=", - "priority": "NORMAL" - }] + "downlinks": [ + { + "f_port": 15, + "frm_payload": "vu8=", + "priority": "NORMAL" + } + ] } ``` diff --git a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/mqttbox-config.png b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/mqttbox-config.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-clients/mqttbox/mqttbox-config.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/mqttbox-config.png diff --git a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/mqttbox-tls-config.png b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/mqttbox-tls-config.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-clients/mqttbox/mqttbox-tls-config.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/mqttbox-tls-config.png diff --git a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/publish.png b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/publish.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-clients/mqttbox/publish.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/publish.png diff --git a/doc/content/integrations/mqtt/mqtt-clients/mqttbox/subscribe.png b/doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/subscribe.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-clients/mqttbox/subscribe.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-clients/mqttbox/subscribe.png diff --git a/doc/content/integrations/mqtt/mqtt-integration.png b/doc/content/integrations/other-integrations/mqtt/mqtt-integration.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-integration.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-integration.png diff --git a/doc/content/integrations/mqtt/mqtt-key-created.png b/doc/content/integrations/other-integrations/mqtt/mqtt-key-created.png similarity index 100% rename from doc/content/integrations/mqtt/mqtt-key-created.png rename to doc/content/integrations/other-integrations/mqtt/mqtt-key-created.png diff --git a/doc/content/integrations/node-red/_index.md b/doc/content/integrations/other-integrations/node-red/_index.md similarity index 58% rename from doc/content/integrations/node-red/_index.md rename to doc/content/integrations/other-integrations/node-red/_index.md index 4f85d87e1b..a147b67b10 100644 --- a/doc/content/integrations/node-red/_index.md +++ b/doc/content/integrations/other-integrations/node-red/_index.md @@ -2,14 +2,15 @@ title: "Node-RED" description: "" weight: 60 +aliases: [/integrations/node-red] --- [Node-RED](https://nodered.org/) is a free, JavaScript-based development tool for visual programming, developed to ease the process of wiring together hardware devices, APIs and online services. -The MQTT server that is exposed by {{% tts %}} can be connected to Node-RED. +The MQTT server that is exposed by {{% tts %}} can be connected to Node-RED. -This integration allows [setting up a Node-RED flow]({{< ref "/integrations/node-red/setup/" >}}) that [listens to events and uplink messages]({{< ref "/integrations/node-red/receive/" >}}), and it is also possible to [schedule downlink messages]({{< ref "/integrations/node-red/send/" >}}). +This integration allows [setting up a Node-RED flow]({{< ref "/integrations/other-integrations/node-red/setup/" >}}) that [listens to events and uplink messages]({{< ref "/integrations/other-integrations/node-red/receive/" >}}), and it is also possible to [schedule downlink messages]({{< ref "/integrations/other-integrations/node-red/send/" >}}). {{< figure src="demo_setup.png" alt="Demo setup" class="plain" >}} diff --git a/doc/content/integrations/node-red/demo_setup.png b/doc/content/integrations/other-integrations/node-red/demo_setup.png similarity index 100% rename from doc/content/integrations/node-red/demo_setup.png rename to doc/content/integrations/other-integrations/node-red/demo_setup.png diff --git a/doc/content/integrations/node-red/receive/_index.md b/doc/content/integrations/other-integrations/node-red/receive/_index.md similarity index 71% rename from doc/content/integrations/node-red/receive/_index.md rename to doc/content/integrations/other-integrations/node-red/receive/_index.md index 16e4582ef9..61e8fca788 100644 --- a/doc/content/integrations/node-red/receive/_index.md +++ b/doc/content/integrations/other-integrations/node-red/receive/_index.md @@ -2,17 +2,18 @@ title: "Receive Events and Messages" description: "" weight: 2 +aliases: [/integrations/node-red/receive] --- -This section follows the process of setting up a flow which subscribes and listens to the events and messages that are being published by the MQTT server. +This section follows the process of setting up a flow which subscribes and listens to the events and messages that are being published by the MQTT server. ## Configure MQTT In Node Place the **mqtt in** node on the dashboard. Double-click on the node to configure its properties. -In the **Server** dropdown menu, select **Add new mqtt-broker** and click on the button besides to edit it. +In the **Server** dropdown menu, select **Add new mqtt-broker** and click on the button besides to edit it. -In the **Connection** tab, under **Server**, provide the address of the MQTT server (without port) from {{% tts %}} Console (the address shown on the image at the bottom of the [Setup]({{< relref "host#setup" >}}) section). +In the **Connection** tab, under **Server**, provide the address of the MQTT server (without port) from {{% tts %}} Console (the address shown on the image at the bottom of the [Setup]({{< relref "enterprise#setup" >}}) section). Provide the port in the **Port** field next to it, to define if you want an insecure or a TLS-secured connection with the server. @@ -20,30 +21,30 @@ In this example, TLS-secured connection is to be established, so the **Port** va {{< figure src="mqtt_in_node_connection.png" alt="Configuring MQTT Server connection information" >}} -In the **Security** tab, enter the **Username** and **Password** according to the values in {{% tts %}} Console (the credentials shown on the image at the bottom of the [Setup]({{< relref "host#setup" >}}) section). +In the **Security** tab, enter the **Username** and **Password** according to the values in {{% tts %}} Console (the credentials shown on the image at the bottom of the [Setup]({{< relref "enterprise#setup" >}}) section). {{< figure src="mqtt_in_node_security.png" alt="Configuring MQTT Server credentials" >}} -Go back to **Properties** and set the **Topic** value to `#` (to subscribe to all topics). +Go back to **Properties** and set the **Topic** value to `#` (to subscribe to all topics). -A full list of topics that you can subscribe to can be found in [MQTT Server]({{< ref "/integrations/mqtt#mqtt-clients" >}}) guide. Instead of subscribing to all uplink topics, you can choose the ones you want to listen. For example, you can subscribe to `v3/{application_id}/devices/{device_id}/up` to only listen to uplink messages. +A full list of topics that you can subscribe to can be found in [MQTT Server]({{< ref "/integrations/other-integrations/mqtt#mqtt-clients" >}}) guide. Instead of subscribing to all uplink topics, you can choose the ones you want to listen. For example, you can subscribe to `v3/{application_id}/devices/{device_id}/up` to only listen to uplink messages. -Also, make sure to read a [note on using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}) in multi-tenant {{% tts %}} environments, because these topics can have a slightly different format. +Also, make sure to read a [note on using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}) in multi-tenant {{% tts %}} environments, because these topics can have a slightly different format. -Select the **QoS** value from the listed options and set **Output** parameter to **a parsed JSON object**. +Select the **QoS** value from the listed options and set **Output** parameter to **a parsed JSON object**. ## Configure Debug Nodes -Add two **debug** nodes and connect both to the **mqtt in** node. One debug node will listen to the events, while the other will listen to published messages. +Add two **debug** nodes and connect both to the **mqtt in** node. One debug node will listen to the events, while the other will listen to published messages. Set the **Output** parameters of these nodes to **complete msg object** and **msg.payload**. ## Deploy -Click on **Deploy** in the upper right corner. If the setup is correct, **connected** status will be reported below the **mqtt in** node. +Click on **Deploy** in the upper right corner. If the setup is correct, **connected** status will be reported below the **mqtt in** node. Click on **debug** icon in the upper right corner to see the published event messages and their payloads in JSON format. {{< figure src="receive_uplink_flow.png" alt="Final flow scheme" >}} -If you do not see any output in the **debug** window on the right, make sure you activated your debug nodes. \ No newline at end of file +If you do not see any output in the **debug** window on the right, make sure you activated your debug nodes. diff --git a/doc/content/integrations/node-red/receive/mqtt_in_node_connection.png b/doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_connection.png similarity index 100% rename from doc/content/integrations/node-red/receive/mqtt_in_node_connection.png rename to doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_connection.png diff --git a/doc/content/integrations/node-red/receive/mqtt_in_node_properties.png b/doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_properties.png similarity index 100% rename from doc/content/integrations/node-red/receive/mqtt_in_node_properties.png rename to doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_properties.png diff --git a/doc/content/integrations/node-red/receive/mqtt_in_node_security.png b/doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_security.png similarity index 100% rename from doc/content/integrations/node-red/receive/mqtt_in_node_security.png rename to doc/content/integrations/other-integrations/node-red/receive/mqtt_in_node_security.png diff --git a/doc/content/integrations/node-red/receive/receive_uplink_flow.png b/doc/content/integrations/other-integrations/node-red/receive/receive_uplink_flow.png similarity index 100% rename from doc/content/integrations/node-red/receive/receive_uplink_flow.png rename to doc/content/integrations/other-integrations/node-red/receive/receive_uplink_flow.png diff --git a/doc/content/integrations/node-red/send/_index.md b/doc/content/integrations/other-integrations/node-red/send/_index.md similarity index 77% rename from doc/content/integrations/node-red/send/_index.md rename to doc/content/integrations/other-integrations/node-red/send/_index.md index fdc6253dac..5bc598ec12 100644 --- a/doc/content/integrations/node-red/send/_index.md +++ b/doc/content/integrations/other-integrations/node-red/send/_index.md @@ -2,29 +2,30 @@ title: "Send Messages" description: "" weight: 3 +aliases: [/integrations/node-red/send] --- This section explains the process of setting up a flow which publishes messages to a certain topic that the MQTT server is subscribed to. -Doing this schedules downlink messages to be sent to your end device. This section follows the example for publishing downlink traffic in [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide. +Doing this schedules downlink messages to be sent to your end device. This section follows the example for publishing downlink traffic in [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide. ## Configure MQTT Out Node -Place the **mqtt out** node on the dashboard. +Place the **mqtt out** node on the dashboard. -Configure the **Server** options with the same settings as in the [Receive Events and Messages]({{< ref "/integrations/node-red#receive-events-and-messages" >}}) section. +Configure the **Server** options with the same settings as in the [Receive Events and Messages]({{< ref "/integrations/other-integrations/node-red#receive-events-and-messages" >}}) section. -Set **Topic** to `v3/{application_id}/devices/{device_id}/down/push` to schedule downlink messages (as stated in [MQTT Server]({{< ref "/integrations/mqtt" >}}) guide). +Set **Topic** to `v3/{application_id}/devices/{device_id}/down/push` to schedule downlink messages (as stated in [MQTT Server]({{< ref "/integrations/other-integrations/mqtt" >}}) guide). -Please make sure to read a [note on using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}) in multi-tenant {{% tts %}} environments, because these topics can have a slightly different format. +Please make sure to read a [note on using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}) in multi-tenant {{% tts %}} environments, because these topics can have a slightly different format. -Choose a **QoS** from listed options and state whether you want the MQTT Server to retain messages. +Choose a **QoS** from listed options and state whether you want the MQTT Server to retain messages. {{< figure src="mqtt_out_node_properties.png" alt="mqtt out node properties" >}} ## Configure Inject Node -Place the **inject** node on the dashboard. Double-click on the node to configure its properties. +Place the **inject** node on the dashboard. Double-click on the node to configure its properties. Choose **buffer** under **Payload** and enter the payload you wish to send. In this example, a downlink message with hexadecimal payload `00 2A FF 00` is to be sent, so here we define the **Payload** field as a corresponding array of byte values. diff --git a/doc/content/integrations/node-red/send/inject_node_properties.png b/doc/content/integrations/other-integrations/node-red/send/inject_node_properties.png similarity index 100% rename from doc/content/integrations/node-red/send/inject_node_properties.png rename to doc/content/integrations/other-integrations/node-red/send/inject_node_properties.png diff --git a/doc/content/integrations/node-red/send/mqtt_out_node_properties.png b/doc/content/integrations/other-integrations/node-red/send/mqtt_out_node_properties.png similarity index 100% rename from doc/content/integrations/node-red/send/mqtt_out_node_properties.png rename to doc/content/integrations/other-integrations/node-red/send/mqtt_out_node_properties.png diff --git a/doc/content/integrations/node-red/send/send_downlink_flow.png b/doc/content/integrations/other-integrations/node-red/send/send_downlink_flow.png similarity index 100% rename from doc/content/integrations/node-red/send/send_downlink_flow.png rename to doc/content/integrations/other-integrations/node-red/send/send_downlink_flow.png diff --git a/doc/content/integrations/node-red/setup/_index.md b/doc/content/integrations/other-integrations/node-red/setup/_index.md similarity index 75% rename from doc/content/integrations/node-red/setup/_index.md rename to doc/content/integrations/other-integrations/node-red/setup/_index.md index 866254f1ed..ce62d332e1 100644 --- a/doc/content/integrations/node-red/setup/_index.md +++ b/doc/content/integrations/other-integrations/node-red/setup/_index.md @@ -2,6 +2,7 @@ title: "Setup" description: "" weight: 1 +aliases: [/integrations/node-red/setup] --- This section describes how to setup a Node-RED server and prepare to connect it to {{% tts %}}. @@ -30,6 +31,6 @@ In {{% tts %}} Console, click **Applications** and choose the application you wa In this example, {{% tts %}} instance is installed on `localhost` and a built-in MQTT server is configured by default on port 1883 for insecure connections and on port 8883 for TLS-secured connections. -Please make sure to read a [note on using the tenant ID]({{< ref "/integrations/mqtt#note-on-using-the-tenant-id" >}}), because the MQTT server address and MQTT topics for multi-tenant {{% tts %}} deployments have a slightly different format. For example, to connect Node-RED to {{% ttss %}} (which is a multi-tenant environment) built-in MQTT server, the MQTT server address would be `eu1.cloud.thethings.network` instead of `localhost`, and the MQTT username would be `app-example@ttn` instead of `app-example`. +Please make sure to read a [note on using the tenant ID]({{< ref "/integrations/other-integrations/mqtt#note-on-using-the-tenant-id" >}}), because the MQTT server address and MQTT topics for multi-tenant {{% tts %}} deployments have a slightly different format. For example, to connect Node-RED to {{% ttss %}} (which is a multi-tenant environment) built-in MQTT server, the MQTT server address would be `eu1.cloud.thethings.network` instead of `localhost`, and the MQTT username would be `app-example@ttn` instead of `app-example`. In a later step, we will use this information to connect Node-RED to {{% tts %}}. diff --git a/doc/content/integrations/node-red/setup/console_info.png b/doc/content/integrations/other-integrations/node-red/setup/console_info.png similarity index 100% rename from doc/content/integrations/node-red/setup/console_info.png rename to doc/content/integrations/other-integrations/node-red/setup/console_info.png diff --git a/doc/content/integrations/node-red/setup/nodered_dashboard.png b/doc/content/integrations/other-integrations/node-red/setup/nodered_dashboard.png similarity index 100% rename from doc/content/integrations/node-red/setup/nodered_dashboard.png rename to doc/content/integrations/other-integrations/node-red/setup/nodered_dashboard.png diff --git a/doc/content/integrations/pubsub/_index.md b/doc/content/integrations/other-integrations/pubsub/_index.md similarity index 60% rename from doc/content/integrations/pubsub/_index.md rename to doc/content/integrations/other-integrations/pubsub/_index.md index ea87fa48d8..ed44cfa6f6 100644 --- a/doc/content/integrations/pubsub/_index.md +++ b/doc/content/integrations/other-integrations/pubsub/_index.md @@ -2,9 +2,10 @@ title: "Pub/Sub" description: "" weight: 40 +aliases: [/integrations/pubsub] --- -The Pub/Sub integration allows the Application Server to publish and subscribe to topics, using {{%tts%}} built-in [MQTT client]({{< ref "/integrations/pubsub/mqtt-client/" >}}) or [NATS client]({{< ref "/integrations/pubsub/nats-client/" >}}). +The Pub/Sub integration allows the Application Server to publish and subscribe to topics, using {{%tts%}} built-in [MQTT client]({{< ref "/integrations/other-integrations/pubsub/mqtt-client/" >}}) or [NATS client]({{< ref "/integrations/other-integrations/pubsub/nats-client/" >}}). diff --git a/doc/content/integrations/pubsub/message-types/_index.md b/doc/content/integrations/other-integrations/pubsub/message-types/_index.md similarity index 90% rename from doc/content/integrations/pubsub/message-types/_index.md rename to doc/content/integrations/other-integrations/pubsub/message-types/_index.md index 42e315c486..a391bcc03d 100644 --- a/doc/content/integrations/pubsub/message-types/_index.md +++ b/doc/content/integrations/other-integrations/pubsub/message-types/_index.md @@ -1,9 +1,11 @@ --- title: "Message Types" description: "" +aliases: [/integrations/pubsub/message-types] --- The Application Server can be configured to **publish** messages for any of the following events: + - Downlink ack - Downlink failed - Downlink nack @@ -15,10 +17,11 @@ The Application Server can be configured to **publish** messages for any of the - Uplink message The Application Server can be configured to **subscribe** to messages to schedule the following events: + - Downlink queue push - Downlink queue replace -JSON messages sent or received by the Application Server are defined in [Data Formats]({{< ref "/the-things-stack/concepts/data-formats" >}}). +JSON messages sent or received by the Application Server are defined in [Data Formats]({{< ref "/integrations/data-formats" >}}). Enabling event messaging also allows you to manually configure a **Sub topic** for that event. If no Sub topic is specified, events will be published to the configured **Base topic**. diff --git a/doc/content/integrations/pubsub/message-types/topics.png b/doc/content/integrations/other-integrations/pubsub/message-types/topics.png similarity index 100% rename from doc/content/integrations/pubsub/message-types/topics.png rename to doc/content/integrations/other-integrations/pubsub/message-types/topics.png diff --git a/doc/content/integrations/pubsub/mqtt-client/_index.md b/doc/content/integrations/other-integrations/pubsub/mqtt-client/_index.md similarity index 92% rename from doc/content/integrations/pubsub/mqtt-client/_index.md rename to doc/content/integrations/other-integrations/pubsub/mqtt-client/_index.md index 5b5f75a959..4d85508d7a 100644 --- a/doc/content/integrations/pubsub/mqtt-client/_index.md +++ b/doc/content/integrations/other-integrations/pubsub/mqtt-client/_index.md @@ -2,6 +2,7 @@ title: "MQTT Client" description: "" weight: 1 +aliases: [/integrations/pubsub/mqtt-client] --- This section explains how to configure a Pub/Sub integration using the built-in MQTT client. @@ -22,7 +23,7 @@ Select **MQTT** as provider. If using client certificates, enable **Secure**. You will be asked to upload the **Root CA certificate**, the **Client certificate**, and the **Client private key.** -Enter the endpoint of the MQTT server in the **Server URL** field, including the protocol and port. +Enter the endpoint of the MQTT server in the **Server URL** field, including the protocol and port. Enter the **Client ID** the Application Server should use to authenticate. @@ -53,11 +54,11 @@ You can schedule downlink messages by publishing to a topic. For example, using mosquitto_pub -h -p -t 'base-topic/push-subtopic' -m '{"end_device_ids":{"device_id":"dev1","application_ids":{"application_id":"app1"}},"downlinks":[{"f_port":1,"frm_payload":"AA==","priority":"NORMAL"}]}' ``` -will push a downlink to the end device `dev1` of the application `app1` with a base64 encoded payload of `AA==`, if ```push-subtopic```is configured as the Sub topic for Downlink queue push. +will push a downlink to the end device `dev1` of the application `app1` with a base64 encoded payload of `AA==`, if `push-subtopic`is configured as the Sub topic for Downlink queue push. This will also result in the following message being published by the Application Server: ```bash -# Received on [base-topic/downlink-queued-subtopic] : +# Received on [base-topic/downlink-queued-subtopic] : '{"end_device_ids":{"device_id":"dev1","application_ids":{"application_id":"app1"}},"correlation_ids":["as:downlink:01E84EAR5B4NM229NDKE0004J6"],"downlink_queued":{"f_port":1,"frm_payload":"AA==","priority":"NORMAL","correlation_ids":["as:downlink:01E84EAR5B4NM229NDKE0004J6"]}}' ``` diff --git a/doc/content/integrations/pubsub/mqtt-client/mqtt-config.png b/doc/content/integrations/other-integrations/pubsub/mqtt-client/mqtt-config.png similarity index 100% rename from doc/content/integrations/pubsub/mqtt-client/mqtt-config.png rename to doc/content/integrations/other-integrations/pubsub/mqtt-client/mqtt-config.png diff --git a/doc/content/integrations/pubsub/mqtt-client/mqtt.png b/doc/content/integrations/other-integrations/pubsub/mqtt-client/mqtt.png similarity index 100% rename from doc/content/integrations/pubsub/mqtt-client/mqtt.png rename to doc/content/integrations/other-integrations/pubsub/mqtt-client/mqtt.png diff --git a/doc/content/integrations/pubsub/nats-client/_index.md b/doc/content/integrations/other-integrations/pubsub/nats-client/_index.md similarity index 93% rename from doc/content/integrations/pubsub/nats-client/_index.md rename to doc/content/integrations/other-integrations/pubsub/nats-client/_index.md index 35cb72b8f3..14c3b584c6 100644 --- a/doc/content/integrations/pubsub/nats-client/_index.md +++ b/doc/content/integrations/other-integrations/pubsub/nats-client/_index.md @@ -2,6 +2,7 @@ title: "NATS Client" description: "" weight: 1 +aliases: [/integrations/pubsub/nats-client] --- This section explains how to configure a Pub/Sub integration using the built-in NATS client. @@ -52,11 +53,11 @@ You can schedule downlink messages by publishing to a topic. For example, using nats-pub -s nats://: base-topic.push-subtopic '{"end_device_ids":{"device_id":"dev1","application_ids":{"application_id":"app1"}},"downlinks":[{"f_port":1,"frm_payload":"AA==","priority":"NORMAL"}]}' ``` -will push a downlink to the end device `dev1` of the application `app1` with a base64 encoded payload of `AA==`, if ```push-subtopic```is configured as the Sub topic for **Downlink queue push**. +will push a downlink to the end device `dev1` of the application `app1` with a base64 encoded payload of `AA==`, if `push-subtopic`is configured as the Sub topic for **Downlink queue push**. This will also result in the following message being published by the Application Server: ```bash -# Received on [downlink-queued-subtopic] : +# Received on [downlink-queued-subtopic] : '{"end_device_ids":{"device_id":"dev1","application_ids":{"application_id":"app1"}},"correlation_ids":["as:downlink:01DAVNFG65NAMC5DMX0GFJ8CSK"],"downlink_queued":{"f_port":1,"frm_payload":"AQ==","priority":"NORMAL","correlation_ids":["as:downlink:01DAVNFG65NAMC5DMX0GFJ8CSK"]}}' ``` diff --git a/doc/content/integrations/pubsub/nats-client/nats-config.png b/doc/content/integrations/other-integrations/pubsub/nats-client/nats-config.png similarity index 100% rename from doc/content/integrations/pubsub/nats-client/nats-config.png rename to doc/content/integrations/other-integrations/pubsub/nats-client/nats-config.png diff --git a/doc/content/integrations/pubsub/nats-client/nats.png b/doc/content/integrations/other-integrations/pubsub/nats-client/nats.png similarity index 100% rename from doc/content/integrations/pubsub/nats-client/nats.png rename to doc/content/integrations/other-integrations/pubsub/nats-client/nats.png diff --git a/doc/content/integrations/payload-formatters/_index.md b/doc/content/integrations/payload-formatters/_index.md index a494e0d8d7..a8385695b5 100644 --- a/doc/content/integrations/payload-formatters/_index.md +++ b/doc/content/integrations/payload-formatters/_index.md @@ -1,14 +1,15 @@ --- title: "Payload Formatters" description: "" +weight: 4 --- Payload formatters allow you to process data going to and from end devices. This is useful for converting binary payloads to human readable fields, or for doing any other kind of data conversion on uplinks and downlinks. -This section explains how to set up payload formatters for a specific end device or an entire application. - +This section explains how to set up payload formatters for a specific end device or an entire application. + In addition to the written instructions linked below, a video with instructions for creating JavaScript and device repository payload formatters is available on [The Things Network YouTube channel](https://youtu.be/4tii7MiD-yM).
Show video @@ -37,7 +38,7 @@ Device repository payload formatters work right out of the box – no customizat Payload formatters can be applied to an entire application, or to a specific end device. Application payload formatters are useful if all devices use the same binary payload format, or as a fallback when no device specific payload formatter is set. -Device payload formatters allow you to specify a unique payload formatter for each device. +Device payload formatters allow you to specify a unique payload formatter for each device. {{< note >}} Device payload formatters override application payload formatters. {{}} diff --git a/doc/content/integrations/storage/_index.md b/doc/content/integrations/storage/_index.md index 03a63270dc..848c6a3772 100644 --- a/doc/content/integrations/storage/_index.md +++ b/doc/content/integrations/storage/_index.md @@ -2,8 +2,8 @@ title: Storage Integration description: "" summary: Persistent storage for upstream messages. -distributions: - ["Cloud", "Enterprise", "AWS Launcher", "Sandbox"] +distributions: ["Cloud", "Enterprise", "AWS Launcher", "Sandbox"] +weight: 6 --- The Storage Integration allows storing received upstream messages in a persistent database, and retrieving them at a later time. diff --git a/doc/content/integrations/storage/configuration.md b/doc/content/integrations/storage/configuration.md index 4c31304a35..ec31422150 100644 --- a/doc/content/integrations/storage/configuration.md +++ b/doc/content/integrations/storage/configuration.md @@ -11,10 +11,10 @@ This section contains instructions for configuring the Storage Integration on {{ The Storage Integration requires configuration for the underlying storage provider used, along with a few options for tuning performance and memory usage. -You can configure PostgreSQL, or any other PostgreSQL-compatible database (e.g. [TimescaleDB](https://www.timescale.com/)). A base-line configuration can be found below. Add the following section into your existing `ttn-lw-stack.yml` configuration file. See [Storage Integration Options]({{< ref "/reference/configuration/application-server#storage-integration-options" >}}) for more details. +You can configure PostgreSQL, or any other PostgreSQL-compatible database (e.g. [TimescaleDB](https://www.timescale.com/)). A base-line configuration can be found below. Add the following section into your existing `ttn-lw-stack.yml` configuration file. See [Storage Integration Options]({{< ref "/enterprise/management/configuration/application-server#storage-integration-options" >}}) for more details. {{< highlight yaml "linenos=table,linenostart=108" >}} -{{< readfile path="/content/the-things-stack/host/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=124 to=134 >}} +{{< readfile path="/content/enterprise/docker/configuration/ttn-lw-stack-docker-enterprise.yml" from=124 to=134 >}} {{< /highlight >}} {{< note >}} This will use the same database instance that is used for the Identity Server as well. In production deployments, this should be a different database. {{}} @@ -47,7 +47,7 @@ If you are using TimescaleDB, as mentioned in the [TimescaleDB Options]({{< ref --timescaledb.retention-days ``` -If you are using Docker Compose to run {{% tts %}} (as shown in [Installing {{% tts %}} guide]({{< ref "/the-things-stack/host/docker" >}})), initialize the configured database with: +If you are using Docker Compose to run {{% tts %}} (as shown in [Installing {{% tts %}} guide]({{< ref "/enterprise/docker" >}})), initialize the configured database with: ```bash docker compose run --rm stack storage-db init diff --git a/doc/content/integrations/storage/enable.md b/doc/content/integrations/storage/enable.md index 5db74cac5f..0a5bab8e68 100644 --- a/doc/content/integrations/storage/enable.md +++ b/doc/content/integrations/storage/enable.md @@ -5,11 +5,11 @@ summary: Enable Storage Integration for applications and end-devices. weight: 20 --- -The Storage Integration is implemented as an [Application Package]({{< ref "/reference/application-packages" >}}). +The Storage Integration is implemented as an [Application Package]({{< ref "/integrations/application-packages" >}}). {{< note >}} Enabling/disabling Storage Integration for applications can be done using {{% tts %}} Console or CLI. Enabling/disabling Storage Integration for individual end devices is available only via CLI. -Note that the instructions for CLI here are following generic instructions for [using the CLI]({{< ref "/reference/application-packages/using-the-cli" >}}) to manage application packages, just specified for the `storage-integration` application package. {{}} +Note that the instructions for CLI here are following generic instructions for [using the CLI]({{< ref "/integrations/application-packages/using-the-cli" >}}) to manage application packages, just specified for the `storage-integration` application package. {{}} {{< tabs/container "Console" "CLI" "HTTP (REST) API">}} diff --git a/doc/content/integrations/webhooks/_index.md b/doc/content/integrations/webhooks/_index.md index f4f511607c..63d217818b 100644 --- a/doc/content/integrations/webhooks/_index.md +++ b/doc/content/integrations/webhooks/_index.md @@ -1,6 +1,7 @@ --- title: "Webhooks" description: "" +weight: 5 --- The Webhooks feature allows {{% tts %}} to send application related messages to specific HTTP(S) endpoints. @@ -20,4 +21,4 @@ Webhooks can be used to build integrations between {{% tts %}} and any third par Webhooks access an HTTP(S) endpoint and pass relevant data as JSON. The third party service must expose this endpoint and listen for data, or post messages to {{% tts %}}. For uplinks, this is encrypted or unencrypted application data, metadata about gateways and signal strength, timestamps, etc. For downlinks, {{% tts %}} expects an application payload. -See [Data Formats]({{< ref "the-things-stack/concepts/data-formats" >}}) for examples of uplink and downlink JSON messages. +See [Data Formats]({{< ref "/integrations/data-formats" >}}) for examples of uplink and downlink JSON messages. diff --git a/doc/content/integrations/webhooks/creating-webhooks.md b/doc/content/integrations/webhooks/creating-webhooks.md index f4b1dbd090..a27bfa41f3 100644 --- a/doc/content/integrations/webhooks/creating-webhooks.md +++ b/doc/content/integrations/webhooks/creating-webhooks.md @@ -16,7 +16,7 @@ In addition to the written instructions linked below, a video with instructions Creating a webhook requires you to have an HTTP(S) endpoint available. If you don't have an endpoint available for testing, you can test with a free service like [Webhook.site](https://webhook.site). -In your application select the **Webhooks** submenu from the **Integrations** side menu. Clicking on the **+ Add Webhook** button will open the list of Webhook templates. +In your application select the **Webhooks** submenu from the **Integrations** side menu. Clicking on the **+ Add Webhook** button will open the list of Webhook templates. {{< figure src="../webhook-templates.png" alt="Webhook templates" >}} @@ -76,6 +76,6 @@ The paths are appended to the **Base URL**. In the example from the images above If no path is specified, messages of that type will be sent to the **Base URL**. -See [Data Formats]({{< ref "the-things-stack/concepts/data-formats" >}}) for examples of uplink and downlink JSON messages. +See [Data Formats]({{< ref "/integrations/data-formats" >}}) for examples of uplink and downlink JSON messages. Clicking the **Add Webhook** button will create the Webhook. diff --git a/doc/content/integrations/webhooks/webhook-templates/adding_webhook_templates.md b/doc/content/integrations/webhooks/webhook-templates/adding_webhook_templates.md index 824a8b7411..c7fb9d6290 100644 --- a/doc/content/integrations/webhooks/webhook-templates/adding_webhook_templates.md +++ b/doc/content/integrations/webhooks/webhook-templates/adding_webhook_templates.md @@ -6,7 +6,7 @@ weight: 4 {{% tts %}} uses Webhook templates from the [`lorawan-webhook-templates` Github repository](https://github.com/TheThingsNetwork/lorawan-webhook-templates/). -The `lorawan-webhook-templates` repository is open source, so users are free to submit pull requests to add new Webhook templates. Naturally, before submitting a new Webhook template in a pull request, one would want to test if the template is correct, i.e. if it yields an integration that is working as expected. A common way to test a newly built Webhook template is to deploy {{% tts %}} on a local machine (see [installation]({{< ref "/the-things-stack/host/docker" >}})), while configuring the deployment to use the locally stored Webhook templates. +The `lorawan-webhook-templates` repository is open source, so users are free to submit pull requests to add new Webhook templates. Naturally, before submitting a new Webhook template in a pull request, one would want to test if the template is correct, i.e. if it yields an integration that is working as expected. A common way to test a newly built Webhook template is to deploy {{% tts %}} on a local machine (see [installation]({{< ref "/enterprise/docker" >}})), while configuring the deployment to use the locally stored Webhook templates. Once you have created a new Webhook template with a proper [format]({{< ref "/integrations/webhooks/webhook-templates/format.md" >}}), follow these steps: @@ -16,13 +16,13 @@ Once you have created a new Webhook template with a proper [format]({{< ref "/in 3. Include your Webhook template in the pre-existing `templates.yml` file contained in the previously mentioned folder. -4. Include the following lines in [{{% tts %}} configuration file]({{< ref "/the-things-stack/host/docker/configuration" >}}) (`ttn-lw-stack.yml`): +4. Include the following lines in [{{% tts %}} configuration file]({{< ref "/enterprise/docker/configuration" >}}) (`ttn-lw-stack.yml`): ```yaml as: webhooks: templates: - directory: "/home/webhook-templates" # replace with a path to a local folder where you stored Webhook templates + directory: "/home/webhook-templates" # replace with a path to a local folder where you stored Webhook templates ``` Note that you can skip this step and use `--as.webhooks.templates.directory` command line option when running {{% tts %}} (step 5) instead. diff --git a/doc/content/reference/_index.md b/doc/content/reference/_index.md deleted file mode 100644 index ca591857f2..0000000000 --- a/doc/content/reference/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Reference" -description: "" -weight: 6 -menu: - main: - weight: 6 ---- - -This section contains reference information for {{% tts %}}. Here, you'll find API listings, component descriptions, data formats, a glossary of terms, and more. diff --git a/doc/content/reference/cli/index.md b/doc/content/reference/cli/index.md deleted file mode 100644 index 77851b4f66..0000000000 --- a/doc/content/reference/cli/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Command-Line Interface" -description: "" -type: "ttn-lw-cli" ---- - -This is the reference for the command-line interface of {{% tts %}}: `ttn-lw-cli`. - -Expand the command tree to the left to see information about commands. - - diff --git a/doc/content/reference/email-templates/_index.md b/doc/content/reference/email-templates/_index.md deleted file mode 100644 index c2a9e82603..0000000000 --- a/doc/content/reference/email-templates/_index.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Email Templates" -removed_in_version: "3.19" -description: "" ---- - -Email templates define the contents of the emails that {{% tts %}} sends to its users. They allow network operators to override the default contents of the emails with their own custom contents. - - - -This is the reference for Email Templates. - -It covers the available templates and shows how to override them. - -## Who is it for? - -Email templates are targeted at network operators that would like to customize the emails that {{% tts %}} sends to its users. - -### Typical use cases - -1. Adding additional styling to the default text-only emails that {{% tts %}} sends. -2. Translating the emails {{% tts %}} sends to its users (applies deployment-wide). - -## How does it work? - -Email templates override the default emails that {{% tts %}} sends by providing custom template files written in Go's [html/template](https://golang.org/pkg/html/template/) format. The templates are retrieved when {{% tts %}} sends the first email of a certain type, and then are cached until it is restarted. See [Available Templates]({{< relref "available.md" >}}) and [Overriding Default Templates]({{< relref "overriding.md" >}}). diff --git a/doc/content/reference/email-templates/available.md b/doc/content/reference/email-templates/available.md deleted file mode 100644 index aef77ffc0e..0000000000 --- a/doc/content/reference/email-templates/available.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Available Templates" -removed_in_version: "3.19" -description: "" -weight: 3 ---- - -The following email templates are currently used by {{% tts %}}: - -Full Name | Identifier | Scope | Additional fields -----------|------------|-------|------------------ -Tenant Created | `tenant_created` | Sent to the initial user of a tenant when it is first created. {{< distributions "Cloud" "Enterprise" >}} | `InitialPassword` -Invitation | `invitation` | Sent when inviting new users to the network. | `InvitationToken`, `TTL` -API Key changed | `api_key_changed` | Sent when the rights of an API Key have been changed. | `Key`, `Rights`, `ConsoleURL` -API Key created | `api_key_created` | Send when an API Key has been created. | `Key`, `Rights`, `ConsoleURL` -Collaborator changed | `collaborator_changed` | Sent when the rights of a collaborator have been changed. | `Collaborator`, `ConsoleURL` -Password changed | `password_changed` | Sent when the the password of a user has been changed. -Temporary password | `temporary_password` | Sent when a temporary password has been requested for an user. | `TemporaryPassword`, `TTL` -User Requested | `user_requested` | Sent to admins when a user is created and needs to be approved. | `ConsoleURL` -Email validation | `validate` | Sent when a user is added as a collaborator of an entity, in order to validate their email. | `ID`, `Token`, `TTL` -Entity State Changed | `entity_state_changed` | Sent when the approval state of an entity changed. | `State` - -{{< note >}}In templates that have `TTL`, you can also call `FormatTTL` to format the TTL as "in XX hours"{{}} - -The following fields can be used inside all of the email templates: - -Field | Description | Notes -------|-------------|------ -`User.ID` | The identifier of the user. | If the recipient is the contact of the target entity, the value will be empty. -`User.Name` | The full name of the user. | If the recipient is the contact of the target entity, the value will be `user`. -`User.Email` | The email of the user. | None. -`Network.Name` | The full name of the network running on the stack. | None. -`Network.IdentityServerURL` | The base URL of the Identity Server. | None. -`Network.ConsoleURL` | The base URL of the Console. | None. -`Entity.Type` | The type of the target entity, such as `application`, `client`, `gateway`, `organization` or `user`. | None. -`Enitity.ID` | The identifier of the target entity. | None. -`Contact.Type` | The contact type of the recipient, such as `technical`, `billing` or `abuse`. | Only used if the recipient is the contact of an entity. diff --git a/doc/content/reference/email-templates/overriding.md b/doc/content/reference/email-templates/overriding.md deleted file mode 100644 index f58f0fe0ff..0000000000 --- a/doc/content/reference/email-templates/overriding.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "Overriding Templates" -removed_in_version: "3.19" -description: "" -weight: 6 ---- - -{{< note >}} We recommend getting familiar with the [html/template](https://golang.org/pkg/html/template/) template format first. {{}} - -## Template Components - -An email template override has three components: - -1. The subject file, which contains the subject of the email and is named `.subject.txt`. -2. The text contents file, which contains the contents of the email in text format and is named `.txt`. -3. The HTML contents file, which contains the contents of the email in HTML format and is named `.html`. - - -## Creating the Overrides - -In order to override a template, one must provide all three files as part of the email templates repository and then provide them as part of the configuration. - -Let's consider that we want to override the email that a user receives once they register, the email validation email, which has the identifier `validate`. We need to create the following files: - - -- `validate.subject.txt` -```text -Please confirm your email address for {{.Network.Name}} -``` -- `validate.txt` -```text -Please confirm your email address for {{.Network.Name}}. -Your email address will be used as contact for {{.Entity.Type}} "{{.Entity.ID}}". - -Reference: {{.ID}} -Confirmation Token: {{.Token}} -``` -- `validate.html` -```html -Please confirm your email address for {{.Network.Name}}.
-Your email address will be used as contact for {{.Entity.Type}} "{{.Entity.ID}}".

- -Reference: {{.ID}}
-Confirmation Token: {{.Token}} -``` - -## Configuring the Location of the Overrides - -Once you have written your overrides, you can configure the Identity Server with their location. For details on the configuration options, see the [Identity Server configuration reference]({{< ref "/reference/configuration/identity-server.md#email-options" >}}). diff --git a/doc/content/reference/federated-auth/_index.md b/doc/content/reference/federated-auth/_index.md deleted file mode 100644 index 8226a1300d..0000000000 --- a/doc/content/reference/federated-auth/_index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Federated Authentication" -description: "" ---- - -Federated Authentication allows network administrators to use the already existing identity providers in order to authenticate users, instead of manually creating and managing the accounts in {{% tts %}}. - - - -This is the reference for Federated Authentication. - -It covers the available providers and how to configure them. - -## Who is it for? - -Federated Authentication is targeted at network operators that would like to use external authentication services. - -### Typical use cases - -1. Managing user access in an external identity provider. -2. Maintaining a unique identity registry, as opposed to having to manually manage users in {{% tts %}}. - -## How does it work? - -Federated Authentication delegates the task of authenticating the user to an external Authentication Provider, allowing the user to present an identity token back to the Identity Server after the procedure is done. The Identity Server then checks the validity of the token with the Authentication Provider and if the token is deemed valid, allows the user to login in {{% tts %}}. diff --git a/doc/content/reference/federated-auth/oidc/_index.md b/doc/content/reference/federated-auth/oidc/_index.md deleted file mode 100644 index bea927d2f1..0000000000 --- a/doc/content/reference/federated-auth/oidc/_index.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "OpenID Connect" -description: "" -distributions: ["Enterprise"] ---- - -[OpenID Connect](https://openid.net/connect/) 1.0 is a simple identity layer on top of the OAuth 2.0 protocol. It allows the Identity Server to verify the identity of the End-User based on the authentication performed by an Authorization Server, as well as to obtain basic profile information about the End-User in an interoperable and REST-like manner. - -## Requirements - -A new OAuth 2.0 client must be created in the provider and the client ID and client secret must be noted down. While creating the OAuth2 client, you will be asked to provide a redirect URL, which should have the following format: - -``` -https://thethings.example.com/oauth/login//callback -``` - -Replace `` with the ID that you have chosen for this OpenID Connect provider, for example `my-oidc-provider`. - -## Registering an Authentication Provider - -We first define some user parameters used below: - -```bash -OIDC_PROVIDER_ID="my-oidc-provider" -OIDC_PROVIDER_NAME="My OIDC Provider" -OIDC_CLIENT_ID="client123" -OIDC_CLIENT_SECRET="secret123" -OIDC_PROVIDER_URL="https://oidc.example.com" -``` - -Make sure you modify these according to your setup and use the following command to register the provider. - -```bash -$ tti-lw-cli ap create $OIDC_PROVIDER_ID \ - --name $OIDC_PROVIDER_NAME \ - --allow-registrations true \ - --configuration.provider.oidc.client-id $OIDC_CLIENT_ID \ - --configuration.provider.oidc.client-secret $OIDC_CLIENT_SECRET \ - --configuration.provider.oidc.provider-url OIDC_PROVIDER_URL -``` - -## Generating Usernames - -External users are being automatically registered when they login using the OpenID Connect provider. Their username is automatically generated based on the information provided by the provider. The following username variants are used: - -- The preferred username (`preferred_username` in the OIDC claim token). -- The email address local-part. This means that a user whose email is `j.doe@example.com` will receive the username `j-doe`. -- The concatenation of the given and family name. This means that a user called `John Doe` will receive the username `john-doe`. -- The email address local-part concatenated with the provider ID. Following the above example with the address `j.doe@example.com`, the resulting username is `j-doe-my-oidc-provider`. -- The concatenation of the given name, family name and the provider ID. Following the example with the user `John Doe`, the resulting username is `john-doe-my-oidc-provider`. - -Excepting the preferred username, the stack will attempt to concatenate up to 5 random characters at the end of the username in order to obtain a unique username. - -You may have also observed that the `.` used in the email addresses was converted into a `-`. This is intended, and is part of the normalization process of the stack, which ensures that generated usernames are valid. The procedure is as follows: - -- Turn every character into its lowercase variant. This means `John.Doe` becomes `john.doe`. -- Replace all of the non-alphanumeric characters with `-`. This means that `john.doe` becomes `john-doe`. -- Remove all of the duplicate `-`. This means that `john---doe` becomes `john-doe`. -- Remove any leading or trailing `-`. This means that `-john-` becomes `john`. diff --git a/doc/content/reference/federated-auth/oidc/google.md b/doc/content/reference/federated-auth/oidc/google.md deleted file mode 100644 index 87ba746b8d..0000000000 --- a/doc/content/reference/federated-auth/oidc/google.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: "Google Single Sign On" -description: "" -distributions: ["Enterprise"] ---- - -[Google's OAuth 2.0 APIs](https://developers.google.com/identity/openid-connect/openid-connect) are OpenID certified and can be used to log into {{% tts %}}. -This page guides you with the necessary steps to login to {{% tts %}} using your Google account. - - - -## Prerequisites - -1. A [Google Cloud](https://cloud.google.com/) account with access to create credentials. -2. A {{% tts %}} account with admin rights. -3. The Things Stack Enterprise command line interface (`tti-lw-cli`). -4. Choose a Provider ID (ex: `google`). It must be between 3 and 36 characters and can only contain lower-case alphanumeric letters and dashes. Multiple, leading and/or trailing dashes are not allowed. - -## Configuring the Provider in Google Cloud Console - -Log into the [Google Cloud Console](https://console.cloud.google.com) and switch to the the required project. - -Setup an [OAuth Consent Screen](https://console.cloud.google.com/apis/credentials/consent) if you don't have one already. Follow the instructions provided. Only the mandatory fields are required to be filled here. - -Create [API credentials](https://console.developers.google.com/apis/credentials) of type **Oauth Client ID**. The values are - -- **Application Type**: `Web Application`. -- **Name**: A descriptive name. -- **Redirect URL**: This should be of the form `https:///oauth/login//callback`. `server-address` is the address where {{% tts %}} is hosted. - -Once the client is created, Google will create a Client ID and Client Secret and will display that on the screen. Copy these values somewhere safely. You can also access these values at a later point - -We can now use this information to register the provider in {{% tts %}}. - -## Registering the Provider in The Things Stack - -Login to {{% tts %}} via the CLI. - -Register the provider. Set the following values - -```bash -OIDC_PROVIDER_ID="provider ID" # Provider ID from above. -OIDC_PROVIDER_NAME="My OIDC Provider" # Name used to display on the Console. -OIDC_CLIENT_ID="client123" # Client ID from the previous step. -OIDC_CLIENT_SECRET="secret123" # Client Secret from the previous step. -``` - -```bash -$ tti-lw-cli ap create $OIDC_PROVIDER_ID \ - --name $OIDC_PROVIDER_NAME \ - --allow-registrations true \ - --configuration.provider.oidc.client-id $OIDC_CLIENT_ID \ - --configuration.provider.oidc.client-secret $OIDC_CLIENT_SECRET \ - --configuration.provider.oidc.provider-url https://accounts.google.com -``` - -Note that the ` --configuration.provider.oidc.provider-url` is hardcoded to `https://accounts.google.com`. - -An example response is shown below. - -```bash -{ - "ids": { - "provider_id": "provider ID" - }, - "created_at": "2023-10-05T05:18:11.685215Z", - "updated_at": "2023-10-05T05:18:11.685215Z", - "name": "My OIDC Provider", - "allow_registrations": true, - "configuration": { - "oidc": { - "client_id": "client123", - "client_secret": "secret123", - "provider_url": "https://accounts.google.com" - } - } -} -``` - -Head to the Login page of {{% tts %}} console. A button **Login to \** should be present, where `` is the same as the `OIDC_PROVIDER_NAME`. - -Click on this button. This will redirect you to the Google Sign in page. You will be asked to authorize {{% tts %}} to read some basic user information. Select `Allow`. This is only for the first login attempt. - -If all your configuration is correct, you will now be redirected to {{% tts %}} console and you will be logged in. The username is chosen based on the rules explained in the [generating usernames]({{< ref "/reference/federated-auth/oidc#generating-usernames" >}}) section. diff --git a/doc/content/reference/interop-repository/_index.md b/doc/content/reference/interop-repository/_index.md deleted file mode 100644 index 6be217b1b3..0000000000 --- a/doc/content/reference/interop-repository/_index.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: "LoRaWAN Join Server Configuration" -description: "" ---- - -{{% tts %}} Network Server and Application Server can use LoRaWAN® Backend Interfaces 1.0 and 1.1 with LoRaWAN Join Servers. - - - -Network Server and Application Server use this configuration to contact LoRaWAN Join Servers. Learn how to configure [Network Server]({{< ref "/reference/configuration/network-server#interoperability-options" >}}) and [Application Server]({{< ref "/reference/configuration/application-server#interoperability-options" >}}) to use the interoperability client configuration. - -## Configuration Files - -{{% tts %}} reads configuration from a file system. The root should contain `config.yml`, which contains Join Servers. - -```yml -join-servers: - - file: './path/js.yml' # relative path to a file containing Join Server configuration - components: ['as', 'ns'] # optional selector for components (new in 3.21.0) - join-euis: # list of Join EUI prefixes the Join Server should handle - - '11AA000000000000/16' # in this example, the first 16 bits, so all JoinEUIs starting with 11AA -``` - -All paths are relative to the `config.yml` file they are defined in. - -{{% tts %}} Network Server always first tries the cluster-local Join Server. If the cluster-local Join Server does not accept the join-request, a Join Server is contacted via the LoRaWAN Backend Interfaces interoperability. - -In case `JoinEUI` prefixes overlap, the most specific prefix takes precedence. `0000000000000000/0` prefix matches all `JoinEUI`s. Use this prefix if you wish to define a Join Server interoperability configuration for all other join-requests. For example: - -```yml -join-servers: - - file: './fallback/js.yml' - join-euis: - - '0000000000000000/0' -``` - -The Join Server configuration provides means to configure how the components interact with the Join Server. The configuration supports multiple options: - -```yml -scheme: 'https' # URL scheme. Defaults to https -fqdn: 'thethings.example' # FQDN of the Join Server -port: 443 # port to connect at. Defaults to 443 -protocol: 'BI1.0' # Backend Interfaces protocol to use (BI1.0 or BI1.1) -paths: # custom URI paths to use for various requests. Defaults to / - join: 'some/path' # the URI path to use for JoinReq - rejoin: 'some/other/path' # the URI path to use for RejoinReq - app-s-key: 'other/path' # the URI path to use for AppSKeyReq - home-ns: 'somepath' # the URI path to use for HomeNSReq -sender-ns-id: '1122334455667788' # Backend Interfaces 1.1 NSID (overrides ns.interop.id) -basic-auth: # HTTP Basic Authentication (optional) - username: 'user' # HTTP Basic username - password: 'secret' # HTTP Basic password -tls: # TLS configuration to use (optional) - source: 'file' # TLS client certificate source (file or key-vault) - root-ca: 'path/to/clientca.pem' # path to CA file to verify TLS server certificate (optional) - certificate: 'path/to/clientcert.pem' # path to TLS client certificate - key: 'path/to/clientkey.pem' # path to TLS client key -headers: # HTTP headers to send, defined as key-value map - Some-Header: 'SomeValue' -``` - -If `tls.source` is set to `key-vault`, {{% tts %}} uses its [Key Vault]({{< ref "/reference/configuration/the-things-stack#key-vault" >}}) configuration to load the TLS client certificate. - -## Interoperability with The Things Join Server - -The Things Join Server is a stand-alone LoRaWAN Join Server that can be deployed by device makers, distributors and integrators. - -The Things Join Server operated by The Things Industries should be configured as follows: - -```yml -# config.yml -join-servers: - ... - - file: './tti/js.yml' - join-euis: - - '70B3D57ED0000000/64' - - 'EC656E0000000000/56' - ... -``` - -```yml -# tti/js.yml -fqdn: 'js.cloud.thethings.industries' -protocol: 'BI1.1' -tls: - source: 'key-vault' -``` - -Please contact [The Things Industries support](mailto:support@thethingsindustries.com) to gain access to The Things Join Server. - -## Interoperability with Semtech Join Server - -Semtech Join Server is a hosted LoRaWAN Join Server by Semtech for use with pre-provisioned LoRa Edge modems. - -Semtech Join Server should be configured as follows: - -```yml -# config.yml -join-servers: - ... - - file: './semtech/js.yml' - join-euis: - - '0016C00000000000/24' - ... -``` - -```yml -# semtech/js.yml -fqdn: 'js.loracloud.com' -port: 7009 -protocol: 'BI1.0' -paths: - join: 'api/v1/rens/rens-1::2/lbi_joinreq' # replace 'rens-1::1' by the RENS issued by Semtech -tls: - source: 'file' - root-ca: './ca.pem' # path to the CA issued by Semtech - certificate: './cert.pem' # path to the TLS client certificate issued by Semtech - key: './key.pem' # path to the TLS client key issued by Semtech -``` diff --git a/doc/content/the-things-stack/_index.md b/doc/content/the-things-stack/_index.md deleted file mode 100644 index 1c901c859b..0000000000 --- a/doc/content/the-things-stack/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "The Things Stack" -description: "" -weight: 4 -menu: - main: - weight: 4 -aliases: [] ---- diff --git a/doc/content/the-things-stack/cloud/_index.md b/doc/content/the-things-stack/cloud/_index.md deleted file mode 100644 index fb95cc1d35..0000000000 --- a/doc/content/the-things-stack/cloud/_index.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "The Things Stack Cloud" -description: "This section contains concepts specific to The Things Stack Cloud" -weight: 1 -aliases: [/guides/cloud-hosted/cloud-hosted, /getting-started/cloud-hosted] ---- - -The Things Industries offers {{% tts %}} as hosted software as a service (SaaS). - -This guide explains how to manage and customize your cloud account. - - - -## Tenants on Shared Infrastructure - -{{% tts %}} Cloud is a multi-tenant environment. This means that while each customer has their own isolated network, the underlying infrastructure is shared with other customers. - -After starting your {{% tts %}} Cloud subscription, you will receive an email with the details of your tenant and details of your admin user. - -## Clusters - -{{% tts %}} Cloud is a multi-cluster deployment. This means that while your account information is stored in a central location, you can connect your gateways to a closer cluster, and route all your IoT traffic in that cluster. This can significantly reduce latency because your traffic would not have to cross half the planet. - -{{% tts %}} Cloud currently has the following clusters: - -| **Cluster ID** | **Name** | **Location** | -| -------------- | --------------- | ----------------- | -| `au1` | Australia 1 | Sydney, Australia | -| `as1` | Asia 1 | Tokyo, Japan | -| `eu1` | Europe 1 | Dublin, Ireland | -| `eu2` | Europe 2 | London, UK | -| `nam1` | North America 1 | California, USA | - -If you navigate to [this link](https://console.cloud.thethings.industries), you can find out which {{% tts %}} Cloud clusters are recommended for your deployment based on the location of your devices and immediately log into its Console. - -{{< figure src="cluster-location.png" alt="Recommended clusters" >}} - -See the [Cloud Addresses]({{< ref "/the-things-stack/cloud/addresses" >}}) for details about cluster, Console, API endpoints and other {{% tts %}} Cloud addresses. - -## Status Page - -Visit [The Things Industries services status page](https://status.thethings.industries/) to check the current status of {{% tts %}} Cloud services. Be up do date with the recent {{% tts %}} Cloud upgrades, scheduled maintenances and reported incidents. diff --git a/doc/content/the-things-stack/cloud/cluster-location.png b/doc/content/the-things-stack/cloud/cluster-location.png deleted file mode 100644 index a822b55d48..0000000000 Binary files a/doc/content/the-things-stack/cloud/cluster-location.png and /dev/null differ diff --git a/doc/content/the-things-stack/concepts/architecture/_index.md b/doc/content/the-things-stack/concepts/architecture/_index.md deleted file mode 100644 index 39bd7b0126..0000000000 --- a/doc/content/the-things-stack/concepts/architecture/_index.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Architecture" -description: "This section explains the architecture and components of The Things Stack" -weight: 1 ---- - -{{% tts %}} follows a API driven microservice architecture, well suited for high availability and reliability. - -{{< figure src="tts-architecture.jpeg" alt="The Things Stack Architecture" >}} - -{{% tts %}} has the following main components. - -
- -|Component (Service)|Short|Description| -|---|---|---| -|Gateway Server|`GS`| Maintains connections with gateways supporting the Basic Station, UDP, MQTT and gRPC protocols. It forwards uplink traffic to Network Servers directly or indirectly, and schedules downlink traffic on gateways. | -|Network Server|`NS`| Handles the LoRaWAN® network layer, including MAC commands, regional parameters and adaptive data rate (ADR). | -|Application Server|`AS`| Handles the LoRaWAN application layer, including uplink data decryption and decoding, downlink queuing and downlink data encoding and encryption. | -|Identity Server|`IS`| Provides the registries that store entities such as applications with their end devices, gateways, users, organizations, OAuth clients and authentication providers. It also manages access control through memberships and API keys. | -|Join Server|`JS`| Handles the LoRaWAN join flow, including Network and Application Server authentication and session key generation. | -|Device Claiming Server|`DCS`| Allows users to claim devices and gateways in a secure manner. | -|Gateway Configuration Server|`GCS`| Generates configuration files for UDP gateways and manages gateway configuration and firmware updates for Basic Station and The Things Kickstarter gateways. | -|Packet Broker Agent|`PBA`| Connects The Things Stack with Packet Broker for exchanging traffic with other networks.| -|Network Operations Center|`NOC`| Provides aggregated insight in a network operated with The Things Stack. | -|Console| NA | Is the web application used to interact with The Things Stack.| - -
- -
-{{% tts %}} also has the following additional/supporting components. -
- -
- -|Component (Service)|Short|Description| -|---|---|---| -|Tenant Billing Server|`TBS`| Manages the creation, suspension and billing of tenants using different payment backends (only for {{% tts %}} cloud).| -|QR Generator |`QRG`| Generates QR codes for devices in various formats. These QR codes can be used for various purposes, including identification and device claiming to transfer ownership..| -|Device Template Converter|`DTC`| Converts data to device templates for migrating networks and importing vendor-specific data.| - -
- -If you want more detailed information on each component, check the [components reference]({{< relref "components" >}}) section. - -Now that the architecture is introduced, let's take a look at the various methods to interact with {{% tts %}}. diff --git a/doc/content/the-things-stack/host/aws/ami/deployment-guide/_index.md b/doc/content/the-things-stack/host/aws/ami/deployment-guide/_index.md deleted file mode 100644 index 21407b535e..0000000000 --- a/doc/content/the-things-stack/host/aws/ami/deployment-guide/_index.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: "Deployment Guide" -description: "" -weight: 1 -aliases: [/getting-started/aws/deployment-guide] ---- - -This section contains detailed information to help you setup {{% tts %}} on the AWS Marketplace. - - - -{{< figure src="ami-architecture.jpg" alt="AMI Architecture" class="plain" >}} - -### AWS Deployment Architecture - -The following image describes the architecture of the components that are deployed while using the **default parameters**. - -{{< figure src="ami-deployment-architecture.svg" alt="AMI deployment Architecture" class="plain" >}} - -{{< note >}} The public subnet is not fixed in to an Availability Zone (AZ) and hence is part of the default AZ of the VPC. {{}} - -## Preparation - -This section lists the preparatory steps necessary to successfully complete this guide. - -### Specialized Knowledge - -In order to follow this guide to deploy {{% tts %}}, it is recommended to be familiar with the following concepts: -- AWS EC2, AWS CloudFormation -- Shell and command line usage -- Basics of LoRaWAN® devices and gateways - -### Prerequisites - -The following are necessary to complete this guide: -1. An account with AWS with access to the AWS Marketplace. If you don't have one, create it by using the [Create an AWS account](https://portal.aws.amazon.com/billing/signup#/start) page. -2. An RSA Public-Private Key pair -3. Sufficient rights on your account to create IAM roles -4. A LoRaWAN® compliant Gateway -5. A LoRaWAN compliant End Device -6. Access to a name server for DNS mapping -7. (Optional) An AWS Secret containing TLS certificate data, if a custom TLS certificate is needed - -## Deployment using AWS Cloud Formation - -### Step 1: Prepare the Deployment - -1. Login to your AWS Marketplace and navigate to the [product page for {{% tts %}} for LoRaWAN](https://aws.amazon.com/marketplace/pp/B081HZKDJ4). -2. Choose the correct AWS Region in which to deploy your stack. Also choose the **Software Pricing Tier** that suits your needs. -3. Make sure to read the terms of usage and other information available. -4. If applicable, [request a service limit increase](https://console.aws.amazon.com/support/cases#/create?issueType=service-limit-increase&limitType=service-code-) for additional VPCs and/or Elastic IPs. -5. Click **Continue to Subscribe** and accept the terms and conditions once they are found satisfactory. -6. Now click **Continue to Configuration** to configure your deployment. - -### Step 2: Configure the Deployment - -The **Continue to Configuration** button will redirect you to the AWS CloudFormation page where the CloudFormation template is pre-loaded. -This template allows the user to customize the deployment. The following is a list of the supported parameters that are available to the user. - -#### Basic Configuration - -|Parameter|Description|Default| -|---|---|---| -|EC2 Instance Name|Name of the EC2 instance.|`the-things-enterprise-stack`| -|Domain|Domain name. You should be able to configure DNS for the domain. TLS certificates from Let's Encrypt will automatically be requested.|-| -|Network Title*|The title of your deployment.|`The Things Stack Enterprise for LoRaWAN`| -|CIDR block|CIDR block used by the VPC.|10.0.0.0/16| - -> \* Optional field - -#### Security Configuration - -|**Parameter**|**Description**|**Default**| -|---|---|---| -|Admin Username|Name of the admin user.|`admin`| -|Admin Email|Email address of the admin user.|`admin@mycompany.com`| -|Initial Admin Password|Initial admin password. Please choose a strong password. It is recommended to change this password upon first login.|-| -|Amazon RDS Database Username|Username of the relational database.|`postgres`| -|Amazon RDS Database Password|Password for the relational database. This password is used to access the Amazon RDS database.|-| -|SSH Key|Name of an existing EC2 KeyPair to enable SSH access to your instance.|-| -|SendGrid API Key*|API key for [SendGrid](https://sendgrid.com/) to send emails.|-| -|Amazon ElastiCache KMS Key ID*|Key used for Redis at-rest encryption. Leave empty to disable encryption. (Warning) A change to this field requires manual migration of the database.|-| -|Amazon ElastiCache Password*|Password used to access Redis. Leave empty to disable TLS connection. (Warning) A change to this field requires manual migration of the database.|-| -|TLS Certificate*|TLS certificate to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested.|-| -|TLS Certificate Key*|TLS certificate key to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested.|-| -|TLS Certificate CA*|TLS certificate CA to use. If left empty, TLS certificates from Let's Encrypt will automatically be requested.|-| -|ARN of an AWS Secret containing the TLS certificate data*|TLS certificate data specified as an AWS secret. If this secret is specified, TLSCertificate, TLSCertificateCA and TLSCertificateKey values will be ignored. The AWS secret must have 3 key/value pairs with the key names: cert, key, ca.|-| - -> \* Optional field - -#### External Connectivity - -|**Parameter**|**Description**| -|---|---| -|Restrict SSH Access to IP Range|The source IP address range that can be used to connect via SSH to the EC2 instances. Use 0.0.0.0/0 for global SSH access.| -|Restrict Service Access to IP Range|The source IP address range that can be used to connect to the deployed services. Use 0.0.0.0/0 for global access.| - -#### User Registration - -{{< note >}} All of the fields below are optional. {{}} - -|**Parameter**|**Description**|**Default**| -|---|---|---| -|Require Admin Approval|If set to true, administrator approval is needed for creating new accounts.|false| -|Require Email Validation|If set to true, validation of contact information is necessary to create new accounts.|false| -|Require User Invites| If set to true, email invites are necessary to create new accounts.|false| -|Minimum Length|Minimum length for user passwords.|8| -|Minimum Number of Digits|Minimum number of digits for user passwords.|1| -|Minimum Number of Special Characters|Minimum number of special characters for user passwords.|0| -|Minimum Number of Uppercase Letters|Minimum number of uppercase letters for user passwords.|1| - -#### Resource Settings - -{{< note >}} The fields in this section are for advanced users. A change to some of these parameters might incur additional costs. {{}} -{{< note >}} In order to provide failover, we recommend enabling Multi-AZ for Amazon RDS and Redis. {{}} - -|**Parameter**|**Description**|**Default**| -|---|---|---| -|EC2 Instance Type|EC2 Instance Type.|t3.small| -|Redis Backup Retention Period*|The retention period for daily Redis backups (days).|7| -|Redis Instance Type|The size of machine for the Redis instance.|cache.t2.small| -|Enable Multi-AZ for Redis| If true, replicas of Redis are created. If true, RedisNumCacheClusters property must be greater than 1.|false| -|Number of Redis Multi-AZ Instances|The number of replicas for this replication group. If RedisMultiAZSupport is true, this value must be greater than 1. Note that this multiplies the Amazon ElastiCache Redis instance costs.|1| -|Amazon RDS Database Name|Name of the relational database. (Warning) A change to this field requires manual migration of the database.|ttn_lorawan| -|Amazon RDS Instance Type|The instance type for the Amazon RDS database.|db.t3.small| -|Amazon RDS Backup Retention Period|The retention period for daily Amazon RDS backups (days). (Warning) A change to this field requires manual migration of the database.|7| -|Amazon RDS Postgres Version|PostgreSQL version for the Amazon RDS database.|11.4| -|Enable Multi-AZ for Amazon RDS| If true, a failover instance is created in case the primary instance fails. Note that this doubles the Amazon RDS instance costs.|false| - -#### LoRaWAN Network Server Settings - -{{< note >}} All of following parameters are optional. {{}} - -|**Parameter**|**Description**|**Default**| -|---|---|---| -|LoRaWAN JoinEUI Prefix|Prefix for the LoRaWAN JoinEUIs that are handled by this network.|0000000000000000/0| -|LoRaWAN DevAddr Prefix|Prefix for the LoRaWAN DevAddrs that are handled by this network.|00000000/7| -|LoRaWAN NetID|The LoRaWAN NetID that is assigned through [LoRa Alliance membership](https://lora-alliance.org/become-a-member). This is required if your network needs interoperability (e.g. roaming, peering, join flow) with other networks. If you do not have a NetID, please use 000000 or 000001.|000000| - -#### AWS IoT settings - -|**Parameter**|**Description**|**Default**| -|---|---|---| -|AWS IoT Telemetry|If set to true, publish all upstream messages to AWS IoT.|true| - -#### Update From Existing Deployment - -{{< note >}} The following parameters are exclusively meant for updating an existing deployment. {{}} - -|**Parameter**|**Description**| -|---|---| -|Amazon RDS Snapshot|The ARN (Amazon Resource Name) of the Amazon RDS snapshot to restore the database from.| -|Amazon ElastiCache Redis Snapshot|The name of the Redis snapshot to restore the database from.| -|S3 Profile Pictures Bucket Name|The name of the S3 bucket for profile pictures.| -|S3 End Device Pictures Bucket Name|The name of the S3 bucket for end device pictures.| - -### Step 3: Start the Deployment - -1. Once the parameters of {{% tts %}} are configured, click **Next** to configure options for the CloudFormation Stack. You may use the defaults in this page. -2. Click **Next** review the deployment. Select the **I acknowledge that AWS CloudFormation might create IAM resources.** checkbox and click **Create Stack** option. -3. If all the parameters were entered correctly, AWS CloudFormation triggers the creation of your CloudFormation stack. The stack is now in the `CREATE_IN_PROGRESS` state. On average, this process takes about 40 minutes. -4. You can monitor the status of your deployment by navigating to **CloudFormation** > **\** > **Events**. -5. Once the required resources are successfully deployed, the state of the CloudFormation stack is updated to `CREATE_COMPLETE`. - -Upon completion of these steps, please head over to the [Post Deployment Configuration guide]({{< relref "../post-deployment" >}}) to configure your deployment. diff --git a/doc/content/the-things-stack/interact/_index.md b/doc/content/the-things-stack/interact/_index.md deleted file mode 100644 index ee95f7dc7b..0000000000 --- a/doc/content/the-things-stack/interact/_index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Interact with The Things Stack" -description: "Guides on various methods to interact with The Things Stack" -weight: 3 ---- - -Users can interact with {{% tts %}} in the following ways: - -- [Console]({{< ref "/the-things-stack/interact/console/" >}}) -- [Command-line Interface]({{< ref "/the-things-stack/interact/cli/" >}}) -- [Using the API]({{< ref "/api" >}}) - -The topics discussed in this section is common for all distributions of {{% tts %}}, with a few exceptions available only on certain deployments. Check our [deployments guide](https://www.thethingsindustries.com/deployment/) for the difference. diff --git a/doc/content/the-things-stack/interact/cli/_index.md b/doc/content/the-things-stack/interact/cli/_index.md deleted file mode 100644 index 7dcc902e3e..0000000000 --- a/doc/content/the-things-stack/interact/cli/_index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Command-line Interface" -description: "" -aliases: [/guides/the-things-stack/interact/cli, /getting-started/cli] -weight: -2 ---- - -Although the web interface of {{% tts %}} (the Console) currently has support for all basic features of {{% tts %}}, for more advanced actions, you may need to use the Command-Line Interface (CLI). - -This section contains instructions for installing, configuring, and logging in with the CLI, so you can use it with your {{% tts %}} deployment. - - - -To use the CLI, you need to complete three steps: - -1. [Install the CLI]({{< relref "installing-cli" >}}) -2. [Configure the CLI]({{< relref "configuring-cli" >}}) -3. [Login with the CLI]({{< relref "login" >}}) - -If you need help with any CLI command, use the `--help` flag to get a list of subcommands, flags and their description and aliases. - -For a complete list of CLI commands, see the [CLI reference]({{< ref "reference/cli" >}}). - -For troubleshooting common CLI errors, see the [Troubleshooting CLI]({{< relref "troubleshooting" >}}) section. diff --git a/doc/content/the-things-stack/management/branding/_index.md b/doc/content/the-things-stack/management/branding/_index.md deleted file mode 100644 index 57b06a37ec..0000000000 --- a/doc/content/the-things-stack/management/branding/_index.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'Web UI Branding' -description: '' -aliases: [/reference/branding] ---- - -This reference gives details on how to customize the branding of the login pages and the Console. - - - -## Cloud Branding - -[{{% tts %}} Cloud]({{< ref "/the-things-stack/cloud" >}}) users can use a custom branding in {{% tts %}} Console. Branding customization is available for each {{% tts %}} Cloud tenant. - -See below for what's available to customize and what files are necessary. Users need to host these files on a CDN (e.g. an S3 bucket) and provide a link to it as shown in the [Tenant Settings guide]({{< ref "/the-things-stack/interact/console/tenant-settings#branding" >}}). - -## Title, Subtitle and Description - -The title, subtitle and description of the login pages and the Console can be changed using configuration options. For details, see the [Identity Server configuration reference]({{< ref "/reference/configuration/identity-server#oauth-ui-options" >}}) and the [Console configuration reference]({{< ref "/reference/configuration/console" >}}). - -## Logos - -Logos of the web UI can be rebranded by pointing the **Branding base URL** in the Console (as described in [Tenant Settings]({{< ref "/the-things-stack/interact/console/tenant-settings#branding" >}})) to a location that contains the following files: - -| **Filename** | **Size** | **Purpose** | -| ---------------------- | -------- | ----------- | -| console-favicon.svg | vector | The SVG logo for the console that is shown in browser tabs and bookmarks | -| console-favicon.png | multiple | The fallback favicon logo for the console in `PNG` format; recommended size 32x32 | -| console-favicon.ico | multiple | The fallback favicon logo for the console in `ICO` format; recommended size 32x32 | -| console-og-image.png | 1200x600 | The logo for the console that is shown when sharing links on social media | -| console-touch-icon.png | 400x400 | The logo for the console that is shown mobile devices | -| claim-favicon.svg {{< distributions "Cloud" "Enterprise" >}} | vector | The SVG logo for the device claiming frontend that is shown in browser tabs and bookmarks | -| claim-favicon.png {{< distributions "Cloud" "Enterprise" >}} | multiple | The fallback favicon logo for the device claiming frontend in `PNG` format; recommended size 32x32 | -| claim-favicon.ico {{< distributions "Cloud" "Enterprise" >}} | multiple | The fallback favicon logo for the device claiming frontend in `ICO` format; recommended size 32x32 | -| claim-og-image.png {{< distributions "Cloud" "Enterprise" >}} | 1200x600 | The logo for the device claiming frontend that is shown when sharing links on social media | -| claim-touch-icon.png {{< distributions "Cloud" "Enterprise" >}} | 400x400 | The logo for the device claiming frontend that is shown mobile devices | -| logo.svg | vector | The logo for the console that is shown in the menu bar of the console | -| oauth-favicon.svg | vector | The SVG logo for the login pages that is shown in browser tabs and bookmarks | -| oauth-favicon.png | multiple | The fallback favicon logo for the login pages in `PNG` format; recommended size 32x32 | -| oauth-favicon.ico | multiple | The fallback favicon logo for the login pages in `ICO` format; recommended size 32x32 | -| oauth-og-image.png | 1200x600 | The logo for the login pages that is shown when sharing links on social media | -| oauth-touch-icon.png | 400x400 | The logo for the login pages that is shown mobile devices | - -If the **Branding base URL** option is set, the `logo.svg` is used to display a secondary logo next to the logo of {{% tts %}} for LoRaWAN. It is recommended to use a logo with a wide (e.g. 5:1) or square (1:1) aspect ratio. Tall logos (e.g. 1:5; height larger than width) will be displayed very small, due to the limited height of the header bar. - -If you have your favicon as a PNG, use ImageMagick to convert it to ICO: - -```bash -convert console-favicon.png \ - -define icon:auto-resize=64,48,32,16 \ - console-favicon.ico -``` - -For the additional info about configuration options required to set a custom branding, see the [Identity Server configuration reference]({{< ref "/reference/configuration/identity-server#oauth-ui-options" >}}) and the [Console configuration reference]({{< ref "/reference/configuration/console" >}}). - -## Deployment Information and Disclaimers - -It is possible to highlight some deployment information and disclaimers in the header of the web UIs. E.g. you can highlight an SLA that applies or a support tier that is connected with the deployment. Please see the respective sections in the [Identity Server configuration reference]({{< ref "/reference/configuration/identity-server#oauth-ui-options" >}}) and [Console configuration reference]({{< ref "/reference/configuration/console#deployment-information-and-disclaimers" >}}). diff --git a/doc/content/the-things-stack/management/sso/_index.md b/doc/content/the-things-stack/management/sso/_index.md deleted file mode 100644 index 55f1047252..0000000000 --- a/doc/content/the-things-stack/management/sso/_index.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: "Single Sign-On" -description: "" -distributions: ["Cloud", "Enterprise"] -weight: 12 -aliases: [/getting-started/sso] ---- - -{{% tts %}} supports [OpenID Connect](https://openid.net/connect/) for single sign-on. This section contains instructions for connecting an OpenID provider to your {{% tts %}} deployment to allow users to sign in with their existing credentials. - - - -{{< cli-only >}} - -## Requirements - -1. Access to an OpenID Connect provider such as Google or Amazon Cognito -2. Administrator access to your {{% tts %}} deployment -3. [`tti-lw-cli`]({{< ref "the-things-stack/interact/cli" >}}) - -## Configure Your OpenID Connect Provider - -First, you must configure your OpenID Connect Provider to accept login requests from {{% tts %}} and to forward authentication to the callback address of your {{% tts %}} deployment. - -{{% tts %}} requires the following from the OpenID Connect Provider: - -- OpenID Discovery Address -- Client ID -- Client Secret - -And you must enter the following in the OpenID Connect Provider configuration: - -- Callback URL - -See instructions for configuring [Google]({{< relref "google" >}}) and [Amazon Cognito]({{< relref "cognito" >}}) OpenID Connect Providers. - -### Callback URL - -The callback URL (or Redirect URI in Google terminology) of your {{% tts %}} deployment is the [Server Address]({{< ref "the-things-stack/concepts/server-addresses" >}}) followed by the OAuth endpoint, which includes an **Authentication Provider ID** of your choosing: - -` -/oauth/login//callback -` - -You will actually create the Authentication Provider in {{% tts %}} using this Authentication Provider ID, so remember it. - -For example, with a tenant `tenant1` in the `eu1` cluster and an Authentication Provider ID of `auth-provider`, the OAuth Callback URL is: - -` -https://tenant1.eu1.cloud.thethings.industries/oauth/login/auth-provider/callback -` - -## Configure {{% tts %}} for SSO - -Once your OpenID Connect provider is configured, you can configure {{% tts %}}. - -Use the following command (note that Authentication Provider commands are only available in `tti-lw-cli`): - -```bash -$ tti-lw-cli authentication-providers create \ ---allow-registrations \ ---configuration.provider.oidc.client-id \ ---configuration.provider.oidc.client-secret \ ---configuration.provider.oidc.provider-url \ ---name -``` - -The `name` is what will appear on {{% tts %}} login screen. For example, to register a Google OpenID Authentication Provider, using the `id` goog and `name` Goog: - -```bash -$ tti-lw-cli authentication-providers create goog \ ---allow-registrations \ ---configuration.provider.oidc.client-id xxxxx-vq3v4e2ha7c1668mr92iiqu0bd1spct2.apps.googleusercontent.com \ ---configuration.provider.oidc.client-secret GOCSPX-Vxxxxxxx \ ---configuration.provider.oidc.provider-url https://accounts.google.com \ ---name Goog -``` - -A list of provider discovery URLs is available from AWS [here](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-oidc-idp.html#cognito-user-pools-oidc-idp-step-1). - -If succesful, `tti-lw-cli` will return a list of Authentication Providers. When you go to login, you will see the login option using the `name` you registered the Authentication Provider with. - -{{< figure src="login-screen.png" >}} - -## Troubleshooting - -### I get the `email not verified` error when logging in using SSO. - -{{% tts %}} checks if the email address included in the JWT token has been verified by the OIDC provider (e.g. The Things ID or SSO DB), so the JWT token that the OIDC provider provides should contain the `email_verified` field. If this field is not present, the user might face the following error upon logging in with SSO: - -``` -{ -"code": 7, -"message": "error:pkg/account/oidc:unverified_email (email not verified)", -"details": [ - { - "@type": "type.googleapis.com/ttn.lorawan.v3.ErrorDetails", - "namespace": "pkg/account/oidc", - "name": "unverified_email", - "message_format": "email not verified", - "correlation_id": "43c2ea63620d4487b64723d03195953e", - "code": 7 - }] -} -``` - -To fix this error, users should ask their OIDC provider to include the `email_verified` field in the JWT token to be used with {{% tts %}} SSO. diff --git a/doc/content/the-things-stack/migrating/configure-mac-settings.md b/doc/content/the-things-stack/migrating/configure-mac-settings.md deleted file mode 100644 index 9e6bf99eea..0000000000 --- a/doc/content/the-things-stack/migrating/configure-mac-settings.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Fine-tuning MAC Settings for End Devices -weight: 6 -aliases: - [ - /the-things-stack/migrating-from-v2/configure-mac-settings, - /getting-started/configure-mac-settings, - /getting-started/migrating/configure-mac-settings, - ] ---- - -MAC settings on {{% tts %}} are configurable per end device. See the [MAC settings guide]({{< ref "/devices/configuring-devices/mac-settings" >}}) for instructions. - -Devices migrated from {{% ttnv2 %}} (The Things Network V2 or The Things Industries V2) are configured with an RX1 delay of 1 second, by default. In all {{% tts %}} deployments, the recommended RX1 delay is 5 seconds to accommodate for high latency backhauls and/or [peering with Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}). diff --git a/doc/content/the-things-stack/migrating/gateway-migration.md b/doc/content/the-things-stack/migrating/gateway-migration.md deleted file mode 100644 index 37fe08b979..0000000000 --- a/doc/content/the-things-stack/migrating/gateway-migration.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Migrating Gateways -weight: 7 -aliases: - [ - /the-things-stack/migrating-from-v2/gateway-migration, - /getting-started/migrating/gateway-migration, - ] ---- - -Migrating gateways to {{% tts %}} is an easy, two step process. - -{{< note >}} Migrating **The Things Indoor Gateway (TTIG)** from {{% ttnv2 %}} to {{% tts %}} via CLI and Console is now fully supported! Do not follow the instructions below if you are using The Things Indoor Gateway, simply follow instructions for [Claiming The Things Indoor Gateway]({{< ref "/gateways/models/thethingsindoorgateway" >}}) and your TTIG will connect automatically. {{}} - -### Step 1 - -Add the Gateway in the {{% tts %}}. - -For detailed instructions on adding gateways to {{% tts %}} using the CLI or Console, see [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}). - -### Step 2 - -Update the server address in the gateway configuration settings. - -- When using the Semtech UDP Packet Forwarder, make sure to update the `server_address` in the gateway configuration settings to the address of the Gateway Server. For examples, see [The Things Network Addresses]({{< ref "/reference/ttn/addresses" >}}) if you are using {{% ttss %}}, or [Cloud Addresses]({{< ref "/the-things-stack/cloud/addresses" >}}) if you are using {{% tts %}} Cloud. See [Semtech UDP Packet Forwarder]({{< ref "/gateways/concepts/udp" >}}) documentation for more info. -- When using the LoRa Basics Station protocol, refer to the [LoRa Basics Station]({{< ref "gateways/concepts/lora-basics-station" >}}) documentation. - -Once your gateways are migrated, the traffic will be routed directly to {{% tts %}}. See [Troubleshooting Gateways]({{< ref "/gateways/troubleshooting" >}}) for common errors. - -If you migrated your end devices and gateways from The Things Industries {{% ttnv2 %}} (SaaS), their traffic might still end up in {{% ttnv2 %}}. If this occurs, disable the devices in {{% ttnv2 %}} by deleting their session keys, or deleting the application completely. diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/_index.md b/doc/content/the-things-stack/migrating/migrating-from-v2/_index.md deleted file mode 100644 index 3445dbf864..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/_index.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: "Migrating End Devices from V2" -description: "" -weight: 3 -aliases: - [ - "/getting-started/migrating-from-v2", - "/getting-started/migrating-from-v2/configure-ttnctl", - "/getting-started/migrating-from-v2/export-v2-devices", - "/getting-started/migrating/migrating-from-v2", - ] ---- - -This section documents the process of migrating end devices from {{% ttnv2 %}} to {{% tts %}}. - - - -Keep in mind that {{% ttnv2 %}} machines were shut down on December 1, 2021, so devices can no longer be migrated from there. It is only possible to register them from scratch on {{% tts %}}. However, it is still possible to migrate devices from private {{% ttnv2 %}} servers, which is described in this section. - -## Prerequisites - -1. User account on deprecated The Things Network {{% ttnv2 %}} or The Things Industries {{% ttnv2 %}}. -2. User account in {{% tts %}}. - -We recommend testing migration on a single end device or a small batch of end devices in order to make sure the migration process goes as expected. - -We **highly recommend** using {{% tts %}} version `3.12.0` or higher. Some of the features (like session migration) from this guide might not be available for prior versions. - -## Add Application in {{% tts %}} - -Since end devices are being created within applications, you first need to add a new application in {{% tts %}}. See [Adding Applications]({{< ref "/integrations/adding-applications" >}}) for detailed instructions. - -When adding an application in {{% tts %}}, the **Application ID** does not have to be the same as the one in {{% ttnv2 %}}. - -## Add Payload Formatters and Integrations in {{% tts %}} - -After creating an application, you need to add the associated elements like application-level payload formatters and integrations. - -The payload formatters can be uplink and downlink, and they are what was known in {{% ttnv2 %}} as encoders and decoders. In {{% tts %}}, it is also possible to add payload formatters per end device, which override application payload formatters. However, before devices are migrated to {{% tts %}} it is only possible to add a payload formatter per application. - -The format of {{% ttnv2 %}} payload encoders and decoders is still supported in {{% tts %}}. You only need to add one additional line to the function code used in {{% ttnv2 %}} to make it fully compatible with {{% tts %}}. For example, if your payload decoder function in {{% ttnv2 %}} was: - -```js -function Decoder(bytes) { - var temperature = bytes[0] | bytes[2]; - return { - temperature: temperature; - } -} -``` - -then your uplink payload formatter function in {{% tts %}} should be: - -```js -function decodeUplink(input) { - var bytes = input.bytes; - var temperature = bytes[0] | bytes[2]; - return { - temperature: temperature; - } -} -``` - -See [Payload Formatters]({{< ref "/integrations/payload-formatters" >}}) guide for detailed instructions on how to add payload formatters and which types are supported by {{% tts %}}. - -For detailed tutorials on the integrations that are available in {{% tts %}}, see [Integrations]({{< ref "/integrations/payload-formatters" >}}). - -## Migrate End Devices - -When you have added your application and elements associated with it, it is time to migrate your end device(s) from {{% ttnv2 %}} to {{% tts %}}. - -Since the {{% ttnv2 %}} machines were shut down, `ttn-lw-migrate` is no longer able to migrate devices from those servers. You can only add those entities in {{% tts %}}. - -However, devices can still be migrated from private {{% ttnv2 %}} servers to {{% tts %}}. There are two approaches for migrating devices, depending on how many end devices you intend to migrate and if you wish to migrate with or without active sessions, described in the following guides: - -- [Migrate using the Console]({{< relref "migrate-using-console" >}}) -- [Migrate using the Migration Tool]({{< ref "/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/" >}}) diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/major-changes.md b/doc/content/the-things-stack/migrating/migrating-from-v2/major-changes.md deleted file mode 100644 index 308ba0b93e..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/major-changes.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Major Changes In The Things Stack -weight: 1 -aliases: - [ - /getting-started/migrating-from-v2/major-changes, - /getting-started/migrating-from-v2/mqtt-api-comparison, - /getting-started/migrating/migrating-from-v2/major-changes, - ] ---- - -Before going in detail with the migration process, this section will give you a breakdown of differences between {{% ttnv2 %}} and {{% tts %}}, along with some guidelines to make the migration process easier to manage. - -## Architecture - -{{% tts %}} is made up of several components, which can be run redundantly and on distributed servers to improve scalability and robustness. See [Components]({{< ref "/reference/components" >}}) for a complete overview of the different components of {{% tts %}}. - -## LoRaWAN support - -{{% tts %}} brings full support for all LoRaWAN® versions, as well as modes to support class B and class C capabilities. - -{{% tts %}} requires the LoRaWAN version (MAC) and Regional Parameters version (LoRaWAN PHY version) to be set per end device. These default to LoRaWAN version **MAC V1.0.2** and LoRaWAN Regional Parameters version **PHY V1.0.2 Rev B** for end devices imported from {{% ttnv2 %}}, because this configuration is the most commonly used one. - -End devices also need to be set with a frequency plan. You will have to choose the frequency plan corresponding to your region. See [Frequency Plans]({{< ref "/reference/frequency-plans" >}}) for a list of supported Frequency Plans and their respective IDs. - -## RX1 Delay - -The RX1 delay is the time after which the first receive window (RX1) opens. In the receive window, the Network Server can schedule a downlink. The second receive window (RX2) opens exactly 1 second after the first one opens. In LoRaWAN, the RX1 delay can be between 1 and 15 seconds. - -Devices imported from {{% ttnv2 %}} are configured with an RX1 delay of 1 second. In all {{% tts %}} deployments, the recommended RX1 delay is 5 seconds to accommodate for high latency backhauls and/or [peering with Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}). - -See the [MAC settings guide]({{< ref "/devices/configuring-devices/mac-settings" >}}) for more information and instructions about configuring the RX1 delay. - -## MAC Commands - -{{% tts %}} expects that all end devices comply with the LoRaWAN specification by default, which means that the end devices should respond to Network Server MAC command requests accordingly. If a device fails to answer a MAC Command in a timely manner, there may be disruptions to the device uplink or downlink traffic. As mentioned in the LoRaWAN specification, the Network Server of {{% tts %}} will always prioritize MAC commands over application payloads on downlink. - -In case a device is not fully compliant with the LORaWAN specification, it can still work on {{% tts %}}, but it may require custom [MAC settings configuration]({{< ref "/devices/configuring-devices/mac-settings" >}}). - -### DevStatusReq - -The `DevStatusReq` MAC command is sent by the Network Server periodically to check the current status of the end device. Devices are expected to send a `DevStatusAns` reply. - -For end devices that ignore this MAC command, make sure to configure the `StatusTimePeriodicity` (time duration after which a `DevStatusReq` is issued by the Network Server) and `StatusCountPeriodicity` (number of frames after which a `DevStatusReq` is issued) of the device explicitly to `0`. - -{{< note >}} In the scope of [Migrating from The Things Network Stack V2]({{< ref "/the-things-stack/migrating/migrating-from-v2" >}}), devices exported with the `ttn-lw-migrate` tool have these MAC settings set to `0` by default. {{}} - -See the [MAC settings guide]({{< ref "/devices/configuring-devices/mac-settings" >}}) for more information. - -## Gateway Coverage - -[Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}) enables peering between networks, so traffic received by one network (The Things Network V2) but intended for a different network ({{% tts %}}) can be forwarded to and from that network. With Packet Broker enabled on both {{% tts %}} and The Things Network V2, you can receive traffic on {{% tts %}} without having to re-configure any of your gateways. - -Packet Broker is already enabled on The Things Network V2 and {{% tts %}} Cloud. For {{% tts %}} Enterprise or {{% tts %}} Open Source, see how to [Connect]({{< ref "/the-things-stack/packet-broker/connect">}}) to Packet Broker. - -For private {{% tts %}} deployments with Packet Broker disabled, you will need to re-configure your gateways to connect to {{% tts %}}, so that you can start receiving traffic from your end devices. - -In order to connect a gateway to {{% tts %}}, first follow instructions for [Adding Gateways]({{< ref "/gateways/concepts/adding-gateways" >}}),then reconfigure the gateway to connect to {{% tts %}}, and regenerate its API key (if required). See [Gateways]({{< ref "/gateways" >}}) for instructions on configuring popular LoRaWAN gateways with {{% tts %}}. - -## Application Data - -{{% tts %}} uses a different data format for uplink and downlink traffic than {{% ttnv2 %}}. - -For details on the data format of {{% ttnv2 %}}, see the documentation from [The Things Network](https://www.thethingsnetwork.org/docs/applications/mqtt/api.html). - -For details on the data format of {{% tts %}}, see [Data Formats]({{% ref "/the-things-stack/concepts/data-formats" %}}) section. It uses a different schema, different names, and has much richer metadata support. - -### Payload Formats - -{{% ttnv2 %}} has support for payload decoders, converters, validators (for uplink) and encoders (for downlink). These can be either CayenneLPP or Javascript functions. - -{{% tts %}} has support for an uplink payload formatter (similar to the payload decoder) and a downlink payload formatter (similar to the payload encoder). These can be set per application, and can even be overridden per end device. CayenneLPP and Javascript functions are still supported, and now payload formatters can also be fetched from the Device Repository. - -Migrating the {{% ttnv2 %}} payload encoder and decoder to an uplink and downlink payload formatter should be straightforward. - -See [Payload Formatters]({{< ref "/integrations/payload-formatters" >}}) for more details. - -### Integrations - -Read the full documentation dedicated to [Integrations]({{< ref "/integrations" >}}) supported by {{% tts %}}. - -#### MQTT Traffic - -{{% tts %}} has a new MQTT server address, so you will need to change this address in your application accordingly. You will also need to create API keys and update your MQTT credentials. - -Read more in the [MQTT Server]({{< ref "/integrations/mqtt" >}}) section. - -#### Webhooks - -The HTTP Integration is now called HTTP Webhooks. The payload format, downlink endpoints, paths and security settings have changed. - -Read more in the [HTTP Webhooks]({{< ref "/integrations/webhooks" >}}) section. - -#### Storage Integration - -{{% tts %}} supports a Storage Integration similar to {{% ttnv2 %}}. - -Read details in the [Storage Integration]({{< ref "/integrations/storage" >}}) section. - -## API Comparison - -{{% tts %}} provides multiple APIs. See the full [API documentation]({{< ref "/api/reference/grpc" >}}). - -For example, a comparison between The Things Industries V2 and The Things Stack MQTT API is given below. - -### MQTT Connection Details - -| **Category/Type** | **The Things Industries V2** | **The Things Stack** | -| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| MQTT Public Address | `{tenant_id}.thethings.industries:1883` | `https://thethings.example.com:1883` (replace with the URL of your deployment) | -| MQTT Public TLS Address | `{tenant_id}.thethings.industries:8883` (with using an appropriate TLS certificate) | `https://thethings.example.com:8883` | -| Username | `{application_id}` | `{application_id}@{tenant_id}` | -| Password | Application Access Key (with default rights) | Application API Key (with **Write downlink application traffic** and **Read application traffic (uplink and downlink)** rights) | -| Uplink topic (subscribe) | `{application_id}/devices/{device_id}/up` | `v3/{application id}@{tenant id}/devices/{device id}/up` | -| Downlink scheduling topic (pub) | `{application_id}/devices/{device_id}/downSchedule` (the downlink as the first or last item in a downlink queue using `schedule` key value in the payload) | Push downlink - `v3/{application id}@{tenant id}/devices/{device id}/down/push`,                                   Replace downlink queue - `v3/{application id}@{tenant id}/devices/{device id}/down/replace` | - -### Uplinks - -| **Category/Type** | **The Things Industries V2** | **The Things Stack** | -| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Overall Uplink Format |
Show example {
"app_id": "my-app-id",
"dev_id": "my-dev-id",
"hardware_serial": "0102030405060708",
"port": 1,
"counter": 2,
"is_retry": false,
"confirmed": false,
"payload_raw": "AQIDBA==",
"payload_fields": {
"temperature": 1.0,
"luminosity": 0.64
},,
"metadata": {
"airtime": 46336000,
"time": "1970-01-01T00:00:00.000000000Z",
"frequency": 868.1,
"modulation": "LORA",
"data_rate": "SF7BW125",
"coding_rate": "4/5",
"gateways": [
{
"gtw_id": "ttn-herengracht-ams",
"timestamp": 12345,
"time": "1970-01-01T00:00:00.000000000Z",
"channel": 2,
"rssi": -25,
"snr": 5,
"rf_chain": 0,
"latitude": 52.1234,
"longitude": 6.1234,
"altitude": 6
},
//...more if received by more gateways...
],
"latitude": 52.2345,
"longitude": 6.2345,
"altitude": 2
}
}
|
Show example {
"end_device_ids" : {
"device_id" : "my-dev-id",
"application_ids" : {
"application_id" : "my-app-id"
},
"dev_eui" : "0102030405060708",
"join_eui" : "0102030405060708",
"dev_addr" : "01020304"
},
"correlation_ids" : [
// …
],
"received_at" : "1970-01-01T00:00:00.000000000Z",
"uplink_message" : {
"session_key_id" : "AXA50tHUGUucuzS/bCGMNw==",
"f_cnt" : 1,
"frm_payload" : "AQIDBA==",
"decoded_payload" : {
"temperature": 1.0,
"luminosity": 0.64
},
"rx_metadata" : [ {
"gateway_ids" : {
"gateway_id" : "ttn-herengracht-ams",
"eui" : "9C5C8E00001A05C4"
},
"time" : "1970-01-01T00:00:00.000000000Z",
"timestamp" : 12345,
"rssi" : -25,
"channel_rssi" : -25,
"snr" : 5,
"uplink_token" : "ChIKEAoEZ3R3MRIInFyOAAAaBcQQ6L3Vlgk=",
"channel_index" : 2
} ],
"settings" : {
"data_rate" : {
"lora" : {
"bandwidth" : 125000,
"spreading_factor" : 7
}
},
"data_rate_index" : 5,
"coding_rate" : "4/5",
"frequency" : "868100000",
"timestamp" : 12345,
"time" : "1970-01-01T00:00:00.000000000Z"
},
"received_at" : "1970-01-01T00:00:00.000000000Z"
,"consumed_airtime": "0.051321s",
"locations": {
"user": {
"latitude": 37.97155556731436,
"longitude": 23.72678801175413,
"altitude": 10,
"source": "SOURCE_REGISTRY"
}
},}
}
| -| Gateway fields | `metadata.gateways` - This object includes gateway details | `uplink_message.rx_metadata` - This object includes gateway details | -| | `metadata.gateways.timestamp` - Timestamp when the gateway received the message (microseconds) | `uplink_message.rx_metadata.timestamp` - Gateway concentrator timestamp when the Rx finished (microseconds) | -| | `metadata.gateways.time` - Time when the gateway received the message | `uplink_message.rx_metadata.time` - Time when the gateway received the message | -| | `metadata.gateways.channel` - Channel where the gateway received the message | As an alternative `channel_index` is `available.uplink_message.rx_metadata.channel_index` - Index of the gateway channel that received the message | -| | `metadata.gateways.rssi` - Signal strength of the received message | `uplink_message.rx_metadata.rssi` - Signal strength of the received message | -| | `metadata.gateways.snr` - Signal to noise ratio of the received message | `uplink_message.rx_metadata.snr` - Signal to noise ratio of the received message | -| | `metadata.gateways.rf_chain` - RF chain where the gateway received the message | Not available | -| | `metadata.gateways.latitude` - Latitude of the gateway reported in its status updates | Not available | -| | `metadata.gateways.longitude` - Longitude of the gateway | Not available | -| | `metadata.gateways.altitude` - Altitude of the gateway | Not available | -| | Not available | `uplink_message.rx_metadata.channel_rssi` - Received signal strength indicator of the channel (dBm) | -| | Not available | `uplink_message.rx_metadata.uplink_token` - Uplink token injected by gateway, Gateway Server or Network Server | -| | | | -| Uplink Metadata | `metadata` - This object includes metadata | `uplink_message` - This object includes metadata | -| | `metadata.airtime` | `uplink_message.consumed_airtime` - Formatted as a string, with a suffix for the unit used (for example, `"0.051321s"` is 0.051321 seconds) | -| | `metadata.time` - Time when the server received the message | `uplink_message.received_at` - Server time when the Application Server received the message | -| | `metadata.frequency` - Frequency at which the message was sent | `uplink_message.settings.frequency` - Frequency (Hz) | -| | `metadata.modulation` - Modulation that was used (LoRa or FSK) | Not available, but as an alternative the modulation can be derived from `settings.data_rate` | -| | `metadata.data_rate` - Data rate that was used (LoRa only) | `uplink_message.settings.data_rate` - Data rate of LoRa or FSK | -| | `metadata.bit_rate` - Bit rate that was used (FSK only) | `uplink_message.settings.data_rate.fsk.bit_rate` - Bit rate that was used (FSK only) | -| | `metadata.coding_rate` - Coding rate that was used | `uplink_message.settings.coding_rate` - LoRa coding rate | -| | `metadata.latitude` | `uplink_message.locations.user.latitude` - Latitude of the device | -| | `metadata.longitude` | `uplink_message.locations.user.longitude` - Longitude of the device | -| | `metadata.altitude` | `uplink_message.locations.user.altitude` - Altitude of the device | -| | Not available | `uplink_message.locations.user.source` - Location source | -| | `metadata.data_rate_index` - Not available | `uplink_message.data_rate_index` - LoRaWAN data rate index | -| | `metadata.payload_raw` - Base64 encoded payload: [0x01, 0x02, 0x03, 0x04] | `uplink_message.frm_payload` - Frame payload (Base64) | -| | `port` - LoRaWAN FPort | `uplink_message.f_port` - LoRaWAN FPort | -| | `counter` - LoRaWAN frame counter | `uplink_message.f_cnt` - LoRaWAN frame counter | -| | Not available | `uplink_message.session_key_id` - Join Server issued identifier for the session keys used by this uplink | -| | | | -| Common fields | `app_id` | `end_device_ids.application_ids.application_id` | -| | `dev_id` | `end_device_ids.device_id` | -| | `hardware_serial` - In case of LoRaWAN: the `DevEUI` | `end_device_ids.dev_eui` | -| | `confirmed` - `true` if this message was a confirmed message | Not available | -| | Not available | `end_device_ids.join_eui` | -| | Not available | `end_device_ids.dev_addr` | -| | | | -| Uplink Payload fiedls | `payload_fields` - Object containing the results from the payload functions (left out when empty) | `uplink_message.decoded_payload` | -| Correlation IDs | Not available | `correlation_ids` | - -### Downlinks - -| **Category/Type** | **The Things Industries V2** | **The Things Stack** | -| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Downlink message overall format |
Show example{
"port": 1,
"confirmed": false,
"payload_raw": "AQIDBA==",
"schedule": "replace",
}

or use payload_fields instead

{
"port": 1,
"confirmed": false,
"payload_fields": {
"led": true
},
"schedule": "replace", // allowed values: "replace" (default), "first", "last"}
|
Show example {
"downlinks": [{
"f_port": 15,
"frm_payload": "vu8=",
"priority": "HIGH",
"confirmed": true,
"correlation_ids": ["my-correlation-id"]
}]
}
| -| Individual fields comparison | `port` | `f_port` | -| | `confirmed` | `confirmed` | -| | `payload_raw` | `frm_payload` | -| | `schedule` | Replace and push topics are available as an alternative | -| | Not available | `priority` - You can specify `LOWEST`, `LOW`, `BELOW_NORMAL`, `NORMAL`, `ABOVE_NORMAL`, `HIGH` and `HIGHEST` (`LOWEST` is a default if not specified) | -| | Not available | `correlation_ids` - You can add multiple custom correlation IDs, for example to reference events or identifiers of your application | -| | `payload_fields` | Not available | - -### References - -[The Things Industries V2 MQTT API Documentation](https://www.thethingsnetwork.org/docs/applications/mqtt/api.html) - -[The Things Stack MQTT API Documentation]({{< ref "/integrations/mqtt" >}}) diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-console.md b/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-console.md deleted file mode 100644 index 7c34a2cffe..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-console.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: "Migrate using the Console" -description: "" -weight: 2 -aliases: ["/getting-started/migrating/migrating-from-v2/migrate-using-console"] ---- - -This section describes migrating end devices to {{% tts %}} by using [{{% tts %}} Console]({{< ref "/the-things-stack/interact/console" >}}). - - - -Migrating your end devices using {{% tts %}} Console is simple, but devices must be migrated one-by-one, so it is convenient only for migrating a fewer number of devices. This method also does not support migrating active device sessions. To learn to export device sessions and groups of devices from {{% ttnv2 %}}, see [Migrate using the Migration Tool]({{< ref "/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool" >}}) guide. - -Follow the steps below to migrate your end device from {{% ttnv2 %}} to {{% tts %}} by using the Console. - -## Add an End Device in {{% tts %}} - -The first step is to add your end device in {{% tts %}}. See [Adding Devices]({{< ref "/devices/adding-devices" >}}) section for more details on adding devices in {{% tts %}}. - -There are two ways to add devices in {{% tts %}} Console - **Manually** and via the **LoRaWAN Device Repository**. - -Configuring settings for end devices depends on their type - OTAA or ABP. We strongly recommend using OTAA over ABP. Read [why using OTAA is better than ABP]({{< ref "/devices/concepts/abp-vs-otaa" >}}). - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -If you want to add an OTAA end device manually, follow these steps: - -- Select **Over the air actiovation (OTAA)** -- Choose **LoRaWAN version** `MAC V1.0.2` (this is the version used in {{% ttnv2 %}}) -- Create an **End device ID** (does not have to match the **Device ID** in {{% ttnv2 %}}) -- Enter your end device’s **AppEUI** and **DevEUI** (these have to be the same as the ones in {{% ttnv2 %}}, as this info is provided by the device manufacturer) -- Select your **Frequency plan** -- Select **Regional Parameters version** `PHY V1.0.2 REV B` (this is the version used in {{% ttnv2 %}}) -- Do not check the boxes **Supports class B/C** -- Keep the default Advanced settings as OTAA devices commonly negotiate about these with {{% tts %}} Network Server -- Enter your end device’s **AppKey** (see considerations below) - -The **AppKey** value can match the one used in {{% ttnv2 %}}, as this info is usually provided by the device manufacturer. The **AppKey** can also be generated in the Console as the last step of the OTAA device registration process. If you decide to generate it, do not forget to program your OTAA device to use the new **AppKey** issued by {{% tts %}}. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -If you still have a good reason to use ABP device, you can add it in {{% tts %}} by following next few steps: - -- Select **Activation by personalization (ABP)** - Choose **LoRaWAN version** `MAC V1.0.2` (this is the version used in {{% ttnv2 %}}) -- Create an **End device ID** (does not have to match the **Device ID** in {{% ttnv2 %}}) -- The **DevEUI** field is optional -- Select your **Frequency plan** -- Select **Regional Parameters version** `PHY V1.0.2 REV B` (this is the version used in {{% ttnv2 %}}) -- Do not check the boxes **Supports class B/C** -- Enter your device’s **DevAddr** and **NwkSKey** (see considerations below) -- Advanced settings must be set on registration (beware that changing these settings might not work later) - - Set **Frame counter width** to `32 bit` (this is the value used in {{% ttnv2 %}}) - - Set **RX1 Delay** to `1` (see considerations below) - - Set **RX1 Data Rate Offset** to `0` - - Your device probably resets frame counters, so check the **Resets Frame Counters** box - - Set **RX2 Data Rate Index** to `3` if your frequency plan is EU868 - - Set **RX2 Frequency** to `869525000` if your frequency plan is EU868 - - Set **Factory Preset Frequencies** for EU868 devices to `868100000, 868300000, 868500000` for all devices, or to `867100000, 867300000, 867500000, 867700000, 867900000, 868100000, 868300000, 868500000` for 8-channel devices - -The **DevAddr** and **RX1 Delay** values depend on your specific use case. - -If you want your end device traffic to be routed via Packet Broker to {{% tts %}}, [Packet Broker Requirements for End Device Migration]({{< ref "/the-things-stack/migrating/migrating-from-v2/packet-broker-requirements" >}}) need to be fulfilled. If you are migrating from **The Things Industries {{% ttnv2 %}}** to **{{% tts %}} Cloud**, you might be able to keep the existing **DevAddr** (please contact [The Things Industries support](mailto:support@thethingsindustries.com)). If the existing **DevAddr** is not routable by the Packet Broker (i.e. you are not migrating from **The Things Industries V2** to **The Things Stack Cloud**), you will need to auto-generate new **DevAddr** during device registration on {{% tts %}}, then re-program the device to assign it with the new **DevAddr**. Note that in both of these cases, you will have to adjust your device's **RX1 Delay** to 5 seconds using MAC commands, otherwise your device's traffic might not reach {{% tts %}} in time. - -Re-programming the ABP device to change **DevAddr** to the one issued by {{% tts %}} and **RX1 Delay** to 5 seconds is **recommended**. Re-programming the ABP device to do this might also be a good time to reconsider switching it to OTAA by flashing the firmware and adopting some [best practices]({{< ref "/devices/concepts/best-practices" >}}). [Check why using OTAA is recommended]({{< ref "/devices/concepts/abp-vs-otaa" >}}). - -If you do not want your traffic to be routed by the Packet Broker, i.e. you want to migrate your gateway to {{% tts %}} too, you do not have to re-program your device. You can keep the existing **DevAddr** and **RX1 Delay** of 1 second, and use these values when adding the device to {{% tts %}}. Be aware that if you are using a high-latency backhaul, keeping the **RX1 Delay** of 1 second still might cause latency issues, even if you migrate your gateway. - -For the **NwkSKey**, you can choose to keep the one used on {{% ttnv2 %}}, or to generate a new one in {{% tts %}} Console during the device registration process. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -If your end device is a part of the [LoRaWAN Device Repository]({{< ref "/integrations/payload-formatters/device-repo" >}}), you will need to select its **Brand**, **Model** and provide other device-specific information. - -## Prevent the End Device from Joining {{% ttnv2 %}} Network - -When your end device is registered in {{% tts %}}, it is necessary to prevent it from re-joining the {{% ttnv2 %}} network. - -{{< tabs/container "OTAA" "ABP">}} - -{{< tabs/tab "OTAA" >}} - -To prevent OTAA devices from re-joining {{% ttnv2 %}}, the recommended practice is to change the **AppKey** in {{% ttnv2 %}}. By changing the **AppKey**, the existing session on {{% ttnv2 %}} will not be terminated yet, but the end device will not be able to re-join because {{% ttnv2 %}} cluster will reject its new Join Requests. Swapping the last two bytes of the **AppKey** will prevent it from rejoining, and allow you to revert easily if you need to. - -## Let the OTAA End Device Join {{% tts %}} Network - -Next, your end device needs to join {{% tts %}} network. - -Some OTAA devices ocasionally perform new joins - with these end devices, you can only wait for them to do this on their own. Depending on the end device, you can also: - -- Send a downlink message from {{% ttnv2 %}} Console to trigger a new join -- Delete the end device from {{% ttnv2 %}} Console so it loses the connection to {{% ttnv2 %}} and triggers a re-join -- Power cycle the end device - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -ABP devices must be completely deleted from {{% ttnv2 %}}, especially if they are not re-programmed for a new **DevAddr**. Having the device registered in both {{% ttnv2 %}} and {{% tts %}} introduces serious conflicts, including race conditions for Joins and unpredictable, out-of-spec operation. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -## Next Step - Migrate Gateways - -{{< tabs/container "OTAA" "ABP">}} - -{{< tabs/tab "OTAA" >}} - -Since we assume you have not migrated your gateway from {{% ttnv2 %}} yet, new Join Requests sent by your OTAA device are still being received by the {{% ttnv2 %}} network. However, if you have prevented your device from joining {{% ttnv2 %}} network (as recommended above), these Join Requests are not going to be accepted by the {{% ttnv2 %}} Network Server. - -Instead, if your devices respect the previously mentioned Packet Broker requirements, these Join Requests are going to be routed to {{% tts %}} via Packet Broker and {{% tts %}} will accept them. Upon Join Request acceptance, your OTAA device will negotiate with {{% tts %}} Network Server to obtain a new **DevAddr**, channel settings and other MAC parameters. The traffic from your end device can from now on be routed to {{% tts %}} thanks to the newly assigned **DevAddr** and **RX1 Delay** of 5 seconds. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -ABP devices do not perform the join procedure, so they do not get assigned with a new **DevAddr**, **RX1 Delay** and some other parameters like OTAA devices do. These values must be coded in the device itself. - -As previously mentioned, routing traffic from your ABP devices to {{% tts %}} via Packet Broker will be possible only if Packet Broker requirements are met. If you want your traffic to be routed via Packet Broker, you will need to re-program your ABP device to use a **DevAddr** issued by {{% tts %}} and **RX1 Delay** of 5 seconds. Please note that this is a recommended practice. An exception to this rule is the case of migrating from **The Things Industries {{% ttnv2 %}}** to **{{% tts %}} Cloud** deployment - here you might be able to keep your device's **DevAddr**, but you will still have to adjust your device's **RX1 Delay** to 5 seconds. - -If you want to keep **DevAddr** and **RX1 Delay** as they were in {{% ttnv2 %}}, you will need to [migrate your gateway to {{% tts %}}]({{< ref "/the-things-stack/migrating/gateway-migration" >}}). Please note that this is not a recommended practice, because using an **RX1 Delay** of 1 second in a combination with high latency backhauls might cause your device's traffic to not reach {{% tts %}} in time, even if you migrate your gateway. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -Even if you manage to get your end device traffic routed to {{% tts %}} by Packet Broker, we still recommend to migrate your gateways as soon as possible. diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/_index.md b/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/_index.md deleted file mode 100644 index 3653b45e09..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/_index.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: "Migrate using the Migration Tool" -description: "" -weight: 2 -aliases: - [/getting-started/migrating/migrating-from-v2/migrate-using-migration-tool] ---- - -This section refers to migrating end devices to {{% tts %}} using [`ttn-lw-migrate` migration tool](https://github.com/TheThingsNetwork/lorawan-stack-migrate). - - - -## Prerequisites - -1. [`ttn-lw-migrate` tool](https://github.com/TheThingsNetwork/lorawan-stack-migrate) version `0.5.0` or higher installed on your system. See the [Migration Tool]({{< ref "/the-things-stack/migrating/migration-tool" >}}) guide for detailed installation instructions. - -## Configure the Environment - -First, you need to configure a few environmental variables. Navigate to the folder where you installed `ttn-lw-migrate` and execute the following, replacing `ttn-v2-application-ID`, `ttn-v2-application-access-key`, and the `FREQUENCY_PLAN_ID` value: - -```bash -export TTNV2_APP_ID="ttn-v2-application-ID" -export TTNV2_APP_ACCESS_KEY="ttn-v2-application-access-key" -export FREQUENCY_PLAN_ID="EU_863_870_TTN" -``` - -See the list of [supported Frequency Plans]({{< ref "/reference/frequency-plans" >}}). - -If using Windows OS Command Prompt, replace `export` with `set` and remove the double-quotes in commands above: - -```bash -set TTNV2_APP_ID=ttn-v2-application-ID -set TTNV2_APP_ACCESS_KEY=ttn-v2-application-access-key -set FREQUENCY_PLAN_ID=EU_863_870_TTN -``` - -Commands are slightly different if using Windows PowerShell, for example you could set the `TTNV2_APP_ID` variable as follows: - -```powershell -$env:TTNV2_APP_ID='ttn-v2-application-ID' -``` - -Since migration is still possible only from a private The Things Industries V2 (SaaS) cluster, you need to configure one extra environmental variable: - -```bash -export TTNV2_DISCOVERY_SERVER_ADDRESS=".thethings.industries:1900" -``` - -If the Discovery Server of your private The Things Industries V2 (SaaS) cluster does not use TLS, you will need to use `ttnv2.discovery-server-insecure` flag when running commands with the `ttn-lw-migrate` tool. - -## Export End Devices from {{% ttnv2 %}} - -Next, you can proceed with exporting one or more end devices, with or without their active session, from {{% ttnv2 %}} to a [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}). - -{{< note >}} Migrating end devices from {{% ttnv2 %}} to {{% tts %}} is a one-way process, since LoRaWAN® devices may be handled by only one Network Server at a time. {{}} - -Now, read the following subsections for detailed steps on how to migrate devices from {{% ttnv2 %}} to {{% tts %}} using `ttn-lw-migrate` tool: - -- [Without persisting active session]({{< relref "establish-new-session" >}}) (preferred migration path) -- [With persisting active session]({{< relref "migrate-active-session" >}}) diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/establish-new-session.md b/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/establish-new-session.md deleted file mode 100644 index af1b6d154a..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/establish-new-session.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: "Migrate without Persisting Active Sessions" -description: "" -weight: 1 -aliases: - [ - /getting-started/migrating/migrating-from-v2/migrate-using-migration-tool/establish-new-session, - ] ---- - -This section explains how to export one or more of your end devices from {{% ttnv2 %}} to a [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}), without persisting their session. - - - -We strongly recommend migrating end devices without persisting active sessions. - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -When migrating OTAA devices without persisting active sessions, a new join needs to be performed on {{% tts %}} to establish a new session. - -By establishing the new session with {{% tts %}}, an OTAA device gets assigned a new **DevAddr** and default values of some other parameters (like 5 seconds **RX1 Delay**). This ensures that the traffic sent by these end devices can be properly routed by the Packet Broker to and from {{% tts %}}. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -The **DevAddr** and some other parameters (like **RX1 Delay**) are hardcoded for ABP devices. If you do not re-program the device to change these values, you can migrate it to {{% tts %}} using the migration tool without its security keys, network parameters, etc. without its active session. - -If you want your end device traffic to be routed via Packet Broker to {{% tts %}}, the **DevAddr** must be routable by the Packet Broker and the **RX1 Delay** value must be 5 seconds. Note that the **DevAddr** is routable only if you are using **The Things Industries V2 (SaaS)** and migrating to **{{% tts %}} Cloud**, and even that is being achieved only on customer request by contacting [The Things Industries support](mailto:support@thethingsindustries.com). - -If you are not migrating from **The Things Industries V2 (SaaS)** to **{{% tts %}} Cloud**, Packet Broker will not be able to route your ABP device's traffic properly, so you will have to [migrate your gateway]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) to {{% tts %}} too. Be aware that in this case the **RX1 Delay** value of 1 second is persisted, and even if you do migrate your gateway, you could still be experiencing latency issues if your gateway has a high latency backhaul. - -{{< warning >}} This is **not a recommended practice**. We advise re-programming the ABP device to change the **DevAddr** to the one issued by The Things Stack and **RX1 Delay** to 5 seconds, even if you do not want your traffic to be routed by Packet Broker. - -In case you are able to re-program your ABP device, you will have to follow the [Migrate using the Console]({{< ref "/the-things-stack/migrating/migrating-from-v2/migrate-using-console" >}}) guide. The reason for this is that when you re-program your ABP device, its **DevAddr** and other parameters will no longer match the device description stored in {{% ttnv2 %}}, so you will not be able to export the current device description using the `ttn-lw-migrate` tool. {{}} - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -Before exporting end devices, you can first test the execution by appending the `--dry-run` and `--verbose` flags to the commands presented in the sections below. - -Use the `--ttnv2.resets-to-frequency-plan` flag to configure the factory preset frequencies of the device, so that it can keep working with {{% tts %}}. The list of uplink frequencies is inferred from the [Frequency Plan]({{< ref "/reference/frequency-plans" >}}). - -### Export a Single End Device - -To export a single end device from {{% ttnv2 %}}: - -```bash -ttn-lw-migrate device --source ttnv2 "v2-end-device-ID" --ttnv2.with-session=false > devices.json -``` - -### Export a Batch of End Devices - -First, create a text file `device_ids.txt`. This file needs to contain a {{% ttnv2 %}} `Device ID` for every end device you want to export from {{% ttnv2 %}}. - -The format of this file is one `Device ID` per one line, i.e.: - -``` -dev1 -dev2 -dev3 -``` - -To export a batch of end devices from {{% ttnv2 %}}: - -```bash -ttn-lw-migrate device --source ttnv2 --ttnv2.with-session=false < device_ids.txt > devices.json -``` - -### Export All End Devices Associated With {{% ttnv2 %}} Application - -To export all devices contained in {{% ttnv2 %}} application: - -```bash -ttn-lw-migrate application --source ttnv2 "ttn-v2-application-ID" --ttnv2.with-session=false > devices.json -``` - -## Prevent the End Device from Joining {{% ttnv2 %}} Network - -Exporting end devices without their active sessions does not clear root and session keys on {{% ttnv2 %}}. Hence, you need to prevent your devices from re-joining the {{% ttnv2 %}} network. - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -To prevent OTAA device from re-joining the {{% ttnv2 %}} network, the recommended practice is to change the **AppKey** in the {{% ttnv2 %}}. By changing the **AppKey**, the existing session on {{% ttnv2 %}} will not be terminated yet, but the end device will not be able to re-join because the {{% ttnv2 %}} cluster will reject its new Join Requests. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -ABP devices must be completely deleted from {{% ttnv2 %}}, especially if you have not re-programmed them with a new **DevAddr**. Having a device registered in {{% ttnv2 %}} and {{% tts %}} will cause a race condition and communication issues. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -## Add end devices in bulk in {{% tts %}} Application - -Now that you have exported one or more of your devices to a `devices.json` file, you can continue by importing this file in {{% tts %}} via Console or via CLI. See [add end devices in bulk in The Things Stack]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for detailed instructions on how to do this. - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -## Let the OTAA End Device Join {{% tts %}} Network - -Next, your OTAA end device needs to join {{% tts %}} network. Since you have not migrated your device with its active session, it will need to perform a new join. - -Some OTAA devices ocasionally perform new joins - with these end devices, you can only wait for them to do this on their own. - -You could also send a downlink message from the {{% ttnv2 %}} Console to trigger a new join if your device supports this - contact your device maker for detailed instructions. - -Some devices are also triggered when power cycled, or when deleted from {{% ttnv2 %}}. - -## Next Step - Migrate Gateways - -Since we assume that you have not migrated your gateway from {{% ttnv2 %}} yet, new Join Requests sent by your OTAA device are still being received by the {{% ttnv2 %}} network. However, if you have prevented your device from joining {{% ttnv2 %}} network (as recommended above), these Join Requests are not going to be accepted by the {{% ttnv2 %}} Network Server. - -Instead, these Join Requests are going to be routed to {{% tts %}} via Packet Broker and {{% tts %}} will accept them. Your OTAA device will negotiate with {{% tts %}} Network Server to obtain a new **DevAddr**, channel settings and other MAC parameters. The traffic from your end device can from now on be routed to {{% tts %}} thanks to the newly assigned **DevAddr** and **RX1 Delay** of 5 seconds, which fulfills the Packet Broker requirements. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -## Next Step - Migrate Gateways - -This section implies that you are keeping the **DevAddr** and **RX1 Delay** values from {{% ttnv2 %}}, which means Packet Broker will be able to route the traffic properly only if you are migrating from **The Things Industries {{% ttnv2 %}}** to **{{% tts %}} Cloud**. This can be only achieved on a customer request, so if this is the case please contact [The Things Industries support](mailto:support@thethingsindustries.com) for more information. - -If you are not migrating from **The Things Industries {{% ttnv2 %}}** to **{{% tts %}} Cloud**, please follow the guide to [migrate your gateway]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) to {{% tts %}}. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -Even if you manage to get your end device traffic routed to {{% tts %}} by Packet Broker, we recommend to migrate your gateways as soon as possible. diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session.md b/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session.md deleted file mode 100644 index fdcaa19283..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/migrate-using-migration-tool/migrate-active-session.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: "Migrate Active Sessions" -description: "" -weight: 2 -aliases: - [ - /getting-started/migrating/migrating-between-tts-distributions/migrate-active-session/, - ] ---- - -Starting from {{% tts %}} version `3.12.0`, it is possible to migrate end devices together with their active sessions using the `ttn-lw-migrate` tool. This section explains how to export one or more of your end devices from {{% ttnv2 %}} to a [JSON file]({{< ref "/devices/adding-devices/adding-devices-in-bulk/device-json" >}}), with persisting their active sessions. - - - -Active device sessions can be migrated via Packet Broker only from **The Things Industries V2 (SaaS)** to **{{% tts %}} Cloud**, and this is achievable only on a customer request. Contact [The Things Industries support](mailto:support@thethingsindustries.com) for more information. - -For all other scenarios, migrating active session is achievable only if you [migrate your gateway to {{% tts %}}]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) too. - -{{< note >}} We strongly recommend migrating end devices without persisting active sessions. {{}} - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -In the case of persisting active sessions during migration, OTAA devices do not need to perform a new join on {{% tts %}} network, but their existing session will be transferred from {{% ttnv2 %}}. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -The **DevAddr** and some other parameters (like **RX1 Delay**) are hardcoded for ABP devices. If you do not re-program the device to change these values, you can migrate it to {{% tts %}} with its active session. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -Remember that if you are not migrating specifically from **The Things Industries V2 (SaaS)** to **{{% tts %}} Cloud**, you will have to [migrate your gateway]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) to successfully migrate your end device with its active session. - -{{< warning >}} Exporting end devices with their active sessions will clear their root and session keys from {{% ttnv2 %}}, so these devices will automatically no longer work on {{% ttnv2 %}}. {{}} - -Before exporting end devices, you can first test the execution by appending the `--dry-run` and `--verbose` flags to the commands presented in the sections below. - -Use the `--ttnv2.resets-to-frequency-plan` flag to configure the factory preset frequencies of the device, so that it can keep working with {{% tts %}}. The list of uplink frequencies is inferred from the [Frequency Plan]({{< ref "/reference/frequency-plans" >}}). - -### Export a Single End Device - -To export a single end device from {{% ttnv2 %}} and clear its security keys: - -```bash -ttn-lw-migrate device --source ttnv2 "v2-end-device-ID" > devices.json -``` - -### Export a Batch of End Devices - -First, create a text file `device_ids.txt`. This file needs to contain a {{% ttnv2 %}} **Device ID** for every end device you want to export from {{% ttnv2 %}}. - -The format of this file is one **Device ID** per one line, i.e.: - -``` -dev1 -dev2 -dev3 -``` - -To export a batch of end devices from {{% ttnv2 %}} and clear their security keys: - -```bash -ttn-lw-migrate device --source ttnv2 < device_ids.txt > devices.json -``` - -### Export All End Devices Associated With {{% ttnv2 %}} Application - -To export all devices contained in {{% ttnv2 %}} application and clear their security keys: - -```bash -ttn-lw-migrate application --source ttnv2 "ttn-v2-application-ID" > devices.json -``` - -## Add end devices in bulk in {{% tts %}} Application - -Now that you have exported one or more of your devices to a `devices.json` file, you can continue by importing this file in {{% tts %}} via Console or via CLI. - -> See [add end devices in bulk in The Things Stack]({{< ref "/devices/adding-devices/adding-devices-in-bulk" >}}) for detailed instructions on how to do this. - -## Next Step - Migrate Gateways - -{{< tabs/container "OTAA" "ABP" >}} - -{{< tabs/tab "OTAA" >}} - -Migrating your OTAA device from **The Things Industries V2 (SaaS)** to **{{% tts %}} Cloud** with its active session means it will keep its **DevAddr**, channel settings and MAC parameters from {{% ttnv2 %}}. It will not send new Join Requests, but the uplink traffic from your device should automatically show up in {{% tts %}}, because it will be routed via Packet Broker thanks to preserving your device's existing session. - -{{< /tabs/tab >}} - -{{< tabs/tab "ABP" >}} - -Migrating your ABP device from {{% ttnv2 %}} to {{% tts %}} with its active session means it will keep its **DevAddr**, channel settings and MAC parameters from {{% ttnv2 %}}, i.e. the existing session will be preserved. - -{{< /tabs/tab >}} - -{{< /tabs/container >}} - -If you are migrating an end device with its active session via Packet Broker (from **The Things Industries V2** to **{{% tts %}} Cloud**), you might need to set the **RX1 Delay** of the device to 5 seconds by [configuring MAC settings]({{< ref "/the-things-stack/migrating/configure-mac-settings" >}}), otherwise the traffic might not reach {{% tts %}} in time via Packet Broker. - -In case you want to leave the **RX1 Delay** value as is (1 second from {{% ttnv2 %}}), you will need to [migrate your gateway to {{% tts %}}]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) too. - -Even if you manage to get your end device traffic routed to {{% tts %}} by Packet Broker, we recommend to migrate your gateways as soon as possible. - -{{< note >}} If you have migrated your device from {{% ttnv2 %}} to {{% tts %}} with an active session but cannot see any uplinks from the device on {{% tts %}}, see [Troubleshooting Devices]({{< ref "/devices/troubleshooting#i-can-see-some-received-uplinks-in-gateway-live-data-events-but-i-do-not-see-them-in-device-events" >}}). {{}} diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/migration-decision-tree.jpg b/doc/content/the-things-stack/migrating/migrating-from-v2/migration-decision-tree.jpg deleted file mode 100644 index 1baaa1c021..0000000000 Binary files a/doc/content/the-things-stack/migrating/migrating-from-v2/migration-decision-tree.jpg and /dev/null differ diff --git a/doc/content/the-things-stack/migrating/migrating-from-v2/packet-broker-requirements.md b/doc/content/the-things-stack/migrating/migrating-from-v2/packet-broker-requirements.md deleted file mode 100644 index a6a344d9c0..0000000000 --- a/doc/content/the-things-stack/migrating/migrating-from-v2/packet-broker-requirements.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Packet Broker Requirements for End Device Migration" -description: "" -weight: 1 -aliases: - ["/getting-started/migrating/migrating-from-v2/packet-broker-requirements"] ---- - -Read this section if you want to make use of [Packet Broker]({{< ref "/the-things-stack/packet-broker" >}}) to migrate your end devices and route traffic from {{% ttnv2 %}} to {{% tts %}}. - - - -When migrating your devices with active sessions, it is in most cases not possible to make use of Packet Broker. Read along to learn when you can and cannot make use of Packet Broker. - -| Migrate from | Migrate to | Possibility to use Packet Broker | -| ------------------------ | :--------------------- | :------------------------------------------------- | -| The Things Industries V2 | {{% ttss %}} | Only without persisting active device sessions | -| The Things Industries V2 | The Things Stack Cloud | With and without persisting active device sessions | - -Remember that {{% tts %}} Enterprise and {{% tts %}} Open Source can also be configured to connect to Packet Broker. If using those deployments, end devices can be migrated from {{% ttnv2 %}} via Packet Broker without persisting active sessions. - -## Devices Address (DevAddr) - -**{{% ttnv2 %}} DevAddr of your end device needs to be routable by Packet Broker.** - -OTAA devices migrated without an active session will acquire a new **DevAddr** from {{% tts %}} during the join procedure. Packet Broker will always be able to route the traffic with DevAddrs assigned by {{% ttss %}} or The Things Stack Cloud. - -When registering ABP devices on {{% tts %}}, it is possible to auto-generate new **DevAddr** which can be routed by Packet Broker. ABP devices can be re-programmed to use this new **DevAddr**. This implies breaking their existing session on {{% ttnv2 %}}. - -Migrating OTAA and ABP devices with their active sessions implies keeping their **DevAddr** values from {{% ttnv2 %}}. Packet Broker will be able to route traffic for these **DevAddr** values only if these devices were registered on **The Things Industries V2 (SaaS)** and you are migrating them to **{{% tts %}} Cloud**. If you are not using these deployments and you still want your traffic to be routed by Packet Broker, end devices can only be migrated without their active sessions. The alternative option is to migrate your gateway instead of using Packet Broker. - -## RX1 Delay - -**The **RX1 delay** value for your end device needs to be set to 5 seconds, which is a default for {{% tts %}} ({{% ttnv2 %}} is using 1 second).** - -The RX1 delay of OTAA devices migrated without their active session will be automatically set to 5 seconds without your intervention. - -However, this needs to be manually set for OTAA devices migrated with an active session by [configuring their MAC settings]({{< ref "/the-things-stack/migrating/configure-mac-settings" >}}). It is also possible to re-program ABP devices to enforce the **RX1 Delay** of 5 seconds (this basically implies starting a new ABP session, i.e. migrating ABP devices without their active session from {{% ttnv2 %}}). - -If devices keep on using an **RX1 Delay** of 1 second, downlinks routed via the Packet Broker will probably never reach the end device in time. The alternative solution to enable downlinks is to migrate your gateway to {{% tts %}} too. Remember that even if you migrate your gateways to {{% tts %}}, you might still experience issues if you are using a high-latency backhaul in a combination with an **RX1 Delay** of 1 second. - -If DevAddr and RX1 Delay conditions stated above are not met, it is likely that you will experience difficulties in communication between your end device and {{% tts %}} via Packet Broker. If you are using deployments that are not connected to Packet Broker, you will have to migrate your devices as well as [your gateways]({{< ref "/the-things-stack/migrating/gateway-migration" >}}) in order to receive the traffic from your end device on {{% tts %}}. - -{{< warning >}} We strongly recommend to migrate devices without their active sessions, to make sure Packet Broker can route the traffic properly and that it reaches {{% tts %}} in time. {{}} diff --git a/doc/content/whats-new/3.18.2.md b/doc/content/whats-new/3.18.2.md index 5292945fbe..1088ba59fd 100644 --- a/doc/content/whats-new/3.18.2.md +++ b/doc/content/whats-new/3.18.2.md @@ -6,7 +6,7 @@ title: "3.18.2" ### Added - Support for using Go templates to construct the Packet Broker Cluster ID from The Things Stack's Cluster ID using the `pba.cluster-id-template` setting. -- Support for importing end devices using a CSV file. See [documentation](https://www.thethingsindustries.com/docs/the-things-stack/concepts/data-formats/#csv) for the data format. +- Support for importing end devices using a CSV file. See [documentation](https://www.thethingsindustries.com/docs/integrations/data-formats/#csv) for the data format. - Support claiming end devices in an external Join Server (ex: The Things Join Server). ### Changed diff --git a/doc/content/whats-new/3.20.2.md b/doc/content/whats-new/3.20.2.md index 5dcf67db8d..e31c17ea97 100644 --- a/doc/content/whats-new/3.20.2.md +++ b/doc/content/whats-new/3.20.2.md @@ -5,7 +5,7 @@ title: "3.20.2" ### Added -- More fields were added to the csv end-device migration procedure. The details on which fields were added can be found [here](https://www.thethingsindustries.com/docs/devices/adding-devices/adding-devices-in-bulk/device-csv/). +- More fields were added to the csv end-device migration procedure. The details on which fields were added can be found [here](https://www.thethingsindustries.com/docs/hardware/devices/adding-devices/adding-devices-in-bulk/device-csv/). - Authorization management in the Account app. - Gateway remote address to gateway connection statistics. diff --git a/doc/content/whats-new/3.21.0.md b/doc/content/whats-new/3.21.0.md index 3ef36de021..8a000b1c21 100644 --- a/doc/content/whats-new/3.21.0.md +++ b/doc/content/whats-new/3.21.0.md @@ -33,7 +33,7 @@ title: "3.21.0" - Network Operations Center with gateway insight. This is a new component that you can access at your deployment domain under the `/noc` path. - This requires a database schema initialization (`tti-lw-stack noc-db init`). If you are currently using Postgres without TimescaleDB, [install the TimescaleDB extension](https://docs.timescale.com/install/latest/#install-timescaledb) before initializing the database. -- Component selector for Join Server interoperability configuration. This allows administrators to declare separate Network Server and Application Server configuration for the same JoinEUI ranges in the same interoperability configuration. See [documentation](https://www.thethingsindustries.com/docs/reference/interop-repository/). +- Component selector for Join Server interoperability configuration. This allows administrators to declare separate Network Server and Application Server configuration for the same JoinEUI ranges in the same interoperability configuration. See [documentation](https://www.thethingsindustries.com/docs/enterprise/join-server/interop-configuration/). - `BatchGetGatewayConnectionStats` RPC to fetch Gateway Connection Stats for a batch of gateways. - The ability to disable the downlink scheduling mechanism for individual end devices (`mac-settings.schedule-downlinks`). - This option is useful during a migration procedure in order to force the end device to join the new network. The Network Server will no longer schedule any data downlinks or MAC commands, and will stop answering potential join requests. diff --git a/doc/data/api/tts.swagger.json b/doc/data/api/tts.swagger.json index 2e9ae2ee19..ffa9968073 100644 --- a/doc/data/api/tts.swagger.json +++ b/doc/data/api/tts.swagger.json @@ -178984,54 +178984,7 @@ "format": "date-time" }, "last_failed_attempt_details": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } } @@ -179544,54 +179497,7 @@ "format": "date-time" }, "last_failed_attempt_details": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } } @@ -254082,7 +253988,7 @@ } } }, - "/gateways": { + "/hardware/gateways": { "get": { "description": "If no user or organization is given, this returns the gateways the caller\nhas access to.\nSimilar to Get, this selects the fields given by the field mask.\nMore or less fields may be returned, depending on the rights of the caller.", "tags": [ @@ -254562,7 +254468,7 @@ } } }, - "/gateways/batch": { + "/hardware/gateways/batch": { "delete": { "description": "This operation is atomic; either all gateways are deleted or none.\nThe caller must have delete rights on all requested gateways.", "tags": [ @@ -254609,7 +254515,7 @@ } } }, - "/gateways/filter": { + "/hardware/gateways/filter": { "post": { "description": "If no user or organization is given, this returns the gateways the caller\nhas access to.\nSimilar to Get, this selects the fields given by the field mask.\nMore or less fields may be returned, depending on the rights of the caller.", "tags": [ @@ -255112,7 +255018,7 @@ } } }, - "/gateways/rights/batch": { + "/hardware/gateways/rights/batch": { "get": { "description": "The check is successful if there are no errors.", "tags": [ @@ -255265,7 +255171,7 @@ } } }, - "/gateways/{gateway.ids.gateway_id}": { + "/hardware/gateways/{gateway.ids.gateway_id}": { "put": { "tags": [ "GatewayRegistry" @@ -256081,7 +255987,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}": { "get": { "description": "More or less fields may be returned, depending on the rights of the caller.", "tags": [ @@ -256522,7 +256428,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/api-keys": { + "/hardware/gateways/{gateway_ids.gateway_id}/api-keys": { "get": { "tags": [ "GatewayAccess" @@ -257051,7 +256957,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/api-keys/{api_key.id}": { "put": { "description": "This method can also be used to delete the API key, by giving it no rights.\nThe caller is required to have all assigned or/and removed rights.", "tags": [ @@ -257395,7 +257301,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/api-keys/{key_id}": { "get": { "tags": [ "GatewayAccess" @@ -257657,7 +257563,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborator/organization/{collaborator.organization_ids.organization_id}": { "get": { "description": "Pseudo-rights in the response (such as the \"_ALL\" right) are not expanded.", "tags": [ @@ -257870,7 +257776,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborator/user/{collaborator.user_ids.user_id}": { "get": { "description": "Pseudo-rights in the response (such as the \"_ALL\" right) are not expanded.", "tags": [ @@ -258083,7 +257989,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborators": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborators": { "get": { "tags": [ "GatewayAccess" @@ -258513,7 +258419,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborators/organization/{collaborator_ids.organization_ids.organization_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborators/organization/{collaborator_ids.organization_ids.organization_id}": { "delete": { "tags": [ "GatewayAccess" @@ -258593,7 +258499,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborators/search": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborators/search": { "get": { "tags": [ "EntityRegistrySearch" @@ -258718,7 +258624,7 @@ } } }, - "/gateways/{gateway_ids.gateway_id}/collaborators/user/{collaborator_ids.user_ids.user_id}": { + "/hardware/gateways/{gateway_ids.gateway_id}/collaborators/user/{collaborator_ids.user_ids.user_id}": { "delete": { "tags": [ "GatewayAccess" @@ -258798,7 +258704,7 @@ } } }, - "/gateways/{gateway_id}": { + "/hardware/gateways/{gateway_id}": { "delete": { "description": "This may not release the gateway ID for reuse, but it does release the EUI.", "tags": [ @@ -258860,7 +258766,7 @@ } } }, - "/gateways/{gateway_id}/purge": { + "/hardware/gateways/{gateway_id}/purge": { "delete": { "description": "This will release both gateway ID and EUI for reuse.\nThe gateway owner is responsible for clearing data from any (external) integrations\nthat may store and expose data by gateway ID.", "tags": [ @@ -258922,7 +258828,7 @@ } } }, - "/gateways/{gateway_id}/restore": { + "/hardware/gateways/{gateway_id}/restore": { "post": { "description": "This does not restore the EUI,\nas that was released when deleting the gateway.", "tags": [ @@ -258984,7 +258890,7 @@ } } }, - "/gateways/{gateway_id}/rights": { + "/hardware/gateways/{gateway_id}/rights": { "get": { "tags": [ "GatewayAccess" @@ -513303,54 +513209,7 @@ "format": "date-time" }, "last_failed_attempt_details": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } }, @@ -531934,54 +531793,7 @@ "format": "date-time" }, "last_failed_attempt_details": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } } @@ -532127,54 +531939,7 @@ "format": "date-time" }, "last_failed_attempt_details": { - "description": "Error details that are communicated over gRPC (and HTTP) APIs.\nThe messages (for translation) are stored as \"error:\u003cnamespace\u003e:\u003cname\u003e\".", - "type": "object", - "properties": { - "attributes": { - "description": "Attributes that should be filled into the message format. Any extra attributes\ncan be displayed as error details.", - "type": "object" - }, - "cause": { - "description": "The error that caused this error.", - "$ref": "#/definitions/v3ErrorDetails" - }, - "code": { - "description": "The status code of the error.", - "type": "integer", - "format": "int64" - }, - "correlation_id": { - "description": "The correlation ID of the error can be used to correlate the error to stack\ntraces the network may (or may not) store about recent errors.", - "type": "string" - }, - "details": { - "description": "The details of the error.", - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string" - } - }, - "additionalProperties": {} - } - }, - "message_format": { - "description": "The default (fallback) message format that should be used for the error.\nThis is also used if the client does not have a translation for the error.", - "type": "string" - }, - "name": { - "description": "Name of the error.", - "type": "string" - }, - "namespace": { - "description": "Namespace of the error (typically the package name in The Things Stack).", - "type": "string" - } - } + "$ref": "#/definitions/v3ErrorDetails" } } } diff --git a/doc/data/glossary.yml b/doc/data/glossary.yml index e1a695840a..f6c1ccf435 100644 --- a/doc/data/glossary.yml +++ b/doc/data/glossary.yml @@ -47,13 +47,13 @@ description: The Data Rate Offset shifts the device's DR Index allowing fine-tuning of transmission parameters, without changing the overall DR plan. A positive DR Offset increases the DR Index, resulting in faster data transmission but potentially reducing the range. A negative DR Offset decreses the Data Rate Index, sacrifising transmission speed for increased range. This parameter is utilized by ADR mechanism. link: https://lora-alliance.org/wp-content/uploads/2020/11/rp_2-1.0.1.pdf#page=27 abbr: - - DR Offset + - DR Offset - term: Data Rate Index description: The Data Rate Index is a numerical index which is a combination of the SF and Bandwidth used for transmitting data between end devices and gateways. link: https://lora-alliance.org/wp-content/uploads/2020/11/rp_2-1.0.1.pdf#page=25 abbr: - - DR Index + - DR Index - term: Packet Forwarder description: A Packet Forwarder is a program running on a Gateway that receives and transmits LoRa packets, and forwards these packets to and from a Network Server. @@ -177,7 +177,7 @@ - term: Adaptive Data Rate description: ADR is a mechanism that allows adjusting transmission data rate, bandwidth and power based on network conditions, resulting in optimized transmission range, battery life and enhanced network efficiency without needing manual intervention. The ultimate goal of this strategy is balancing between data delivery reliability and resource usage efficiency. ADR is advised to be enabled for stationary devices and disabled for moving ones (like asset trackers). - link: https://www.thethingsindustries.com/docs/reference/adr/ + link: https://www.thethingsindustries.com/docs/concepts/features/lorawan/adr/ abbr: - ADR @@ -218,12 +218,12 @@ - DevAddr - term: Application ID - description: A unique, human-readable identifier of your {{% tts %}} application. + description: A unique, human-readable identifier of your {{% tts %}} application. abbr: - AppID - term: JoinEUI - description: The JoinEUI (formerly called AppEUI) is a 64 bit extended identifier that uniquely identifies an application within a LoRaWAN network. It is one of the parameters that play a crucial role in routing and secure communication between the device and the LoRaWAN network. JoinEUI is usually provided by the device manufacturer for pre-provisioned devices, or by the owner of the Join Server used for joining the device on the network. + description: The JoinEUI (formerly called AppEUI) is a 64 bit extended identifier that uniquely identifies an application within a LoRaWAN network. It is one of the parameters that play a crucial role in routing and secure communication between the device and the LoRaWAN network. JoinEUI is usually provided by the device manufacturer for pre-provisioned devices, or by the owner of the Join Server used for joining the device on the network. link: https://lora-alliance.org/wp-content/uploads/2020/11/lorawan1.0.3.pdf#page=33 - term: AppEUI @@ -263,7 +263,7 @@ - ABP - term: Dwell Time - description: The time in which the end device is allowed to transmit data on a single frequency channel, imposed by regulatory authorities to prevent devices from occupying channels for extended time periods. Dwell Time restrictions are configurable; in some regions Dwell Time limitations are optional and in those regions they are disabled by default in {{% tts %}}. + description: The time in which the end device is allowed to transmit data on a single frequency channel, imposed by regulatory authorities to prevent devices from occupying channels for extended time periods. Dwell Time restrictions are configurable; in some regions Dwell Time limitations are optional and in those regions they are disabled by default in {{% tts %}}. - term: Frequency Band description: A Frequency Band is a range of frequencies divided either in to dynamic channels (i.e. EU868) or fixed channels (i.e. US902, AU915). LoRaWAN operates on different Frequency Bands depending on regional regulations and network deployment strategies. The LoRaWAN Regional Parameters define Frequency Bands distribution over geographical areas. Within a Frequency Band, there can be multiple complying Frequency Plans. Devices typically support one or more Frequency Bands in their hardware, and are configured for a particular Frequency Plan as part of activation. @@ -367,7 +367,7 @@ description: Run by The Things Industries, this is a cluster for non-commercial, small scale testing and experimentation, which powers the world's largest community based LoRaWAN network. - term: The Things Stack Open Source - description: For DIY'ers, the core of is The Things Stack is [open source](https://github.com/thethingsnetwork/lorawan-stack). If you want to get your hands dirty and understand how The Things Stack works, clone away and get hacking. + description: For DIY'ers, the core of is The Things Stack is [open source](https://github.com/thethingsnetwork/lorawan-stack). If you want to get your hands dirty and understand how The Things Stack works, clone away and get hacking. - term: The Things Network (TTN) description: TTN is [The Things Network](https://thethingsnetwork.org), which is a global collaborative Internet of Things ecosystem that creates networks, devices and solutions using LoRaWAN. The Things Network runs {{% ttss %}}, which is a crowdsourced, open and decentralized LoRaWAN network. diff --git a/doc/themes/the-things-stack/layouts/index.html b/doc/themes/the-things-stack/layouts/index.html index 89bd4bd7c2..9a6a65c8b7 100644 --- a/doc/themes/the-things-stack/layouts/index.html +++ b/doc/themes/the-things-stack/layouts/index.html @@ -12,8 +12,8 @@

The Things Stack Documentation

{{ $lorawanbasics := dict "link" "Get to know LoRaWAN®" "url" (.Site.GetPage "/getting-started/lorawan-basics").RelPermalink}} {{ $lorawannetwork := dict "link" "Set up your first LoRaWAN® network" "url" (.Site.GetPage "/getting-started/setup-first-network").RelPermalink}} - {{ $addgateways := dict "link" "Connect your first gateway" "url" (.Site.GetPage "/gateways/concepts/adding-gateways").RelPermalink}} - {{ $adddevice := dict "link" "Add your first device" "url" (.Site.GetPage "/devices/adding-devices").RelPermalink}} + {{ $addgateways := dict "link" "Connect your first gateway" "url" (.Site.GetPage "/hardware/gateways/concepts/adding-gateways").RelPermalink}} + {{ $adddevice := dict "link" "Add your first device" "url" (.Site.GetPage "/hardware/devices/adding-devices").RelPermalink}} {{ $certified := dict "link" "Get certified" "url" "https://www.thethingsnetwork.org/achievements"}} {{ $api := dict "link" "Explore The Things Stack API" "url" (.Site.GetPage "/api").RelPermalink}} {{ $list := slice $lorawanbasics $lorawannetwork $addgateways $adddevice $certified $api }} @@ -34,13 +34,13 @@

The Things Stack Documentation

{{ $gettingstarted := dict "url" (.Site.GetPage "getting-started").RelPermalink "title" "Getting Started" "text" "Get started with The Things Stack. If you're new to The Things Stack and/or LoRaWAN, this is the place to start." "bgcolor" "background-color: #002B9E"}} - {{ $devices := dict "url" (.Site.GetPage "devices").RelPermalink "title" "End Devices" "text" "Learn how to configure and manage LoRaWAN End Devices in The Things Stack." "bgcolor" "background-color: #1E5DFF"}} - {{ $gateways := dict "url" (.Site.GetPage "gateways").RelPermalink "title" "Gateways" "text" "Learn to connect and manage various LoRaWAN Gateways on The Things Stack." "bgcolor" "background-color: #4275FF" }} + {{ $concepts := dict "url" (.Site.GetPage "concepts").RelPermalink "title" "Concepts" "text" "Guides on basic concepts of working with The Things Stack." "bgcolor" "background-color: #1E5DFF"}} + {{ $cloud := dict "url" (.Site.GetPage "cloud").RelPermalink "title" "The Things Stack Cloud" "text" "Concepts specific to The Things Stack Cloud." "bgcolor" "background-color: #4275FF"}} + {{ $enterprise := dict "url" (.Site.GetPage "enterprise").RelPermalink "title" "The Things Stack Enterprise" "text" "Concepts specific to The Things Stack Enterprise." "bgcolor" "background-color: #001958"}} {{ $integrations := dict "url" (.Site.GetPage "integrations").RelPermalink "title" "Integrations" "text" "Learn how to work with End Device data on The Things Stack and how to integrate with external systems." "bgcolor" "background-color: #1F52D8" }} - {{ $tts := dict "url" (.Site.GetPage "the-things-stack").RelPermalink "title" "The Things Stack" "text" "Learn about the different flavours of The Things Stack and how to install/access them." "bgcolor" "background-color: #073DCB" }} - {{ $reference := dict "url" (.Site.GetPage "reference").RelPermalink "title" "Reference" "text" "Curated list of advanced topics for The Things Stack. Leverage the full customization capabilities of The Things Stack." "bgcolor" "background-color: #001958" }} + {{ $hardware := dict "url" (.Site.GetPage "cloud").RelPermalink "title" "Hardware" "text" "Concepts specific to LoRaWAN end devices and gateways" "bgcolor" "background-color: #001958"}} {{ $api := dict "url" (.Site.GetPage "api").RelPermalink "title" "API" "text" "Explore The Things Stack API" "bgcolor" "background-color: #1e47ff" }} - {{ $cards := slice $gettingstarted $devices $gateways $integrations $tts $reference $api }} + {{ $cards := slice $gettingstarted $concepts $cloud $enterprise $integrations $hardware $api }}

Browse by section

diff --git a/doc/themes/the-things-stack/layouts/shortcodes/cli-only.html b/doc/themes/the-things-stack/layouts/shortcodes/cli-only.html index fee112c1ec..1e23e3725b 100644 --- a/doc/themes/the-things-stack/layouts/shortcodes/cli-only.html +++ b/doc/themes/the-things-stack/layouts/shortcodes/cli-only.html @@ -8,6 +8,6 @@

Command-line interface only

The following commands are supported by tti-lw-cli CLI version only.

{{ end }}
diff --git a/doc/themes/the-things-stack/layouts/shortcodes/enterprise-cluster-selector.html b/doc/themes/the-things-stack/layouts/shortcodes/enterprise-cluster-selector.html new file mode 100644 index 0000000000..5a4e323f13 --- /dev/null +++ b/doc/themes/the-things-stack/layouts/shortcodes/enterprise-cluster-selector.html @@ -0,0 +1,60 @@ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + \ No newline at end of file diff --git a/doc/themes/the-things-stack/layouts/shortcodes/tenant-cluster-selector.html b/doc/themes/the-things-stack/layouts/shortcodes/tenant-cluster-selector.html index e3330f98bc..c85f6f740b 100644 --- a/doc/themes/the-things-stack/layouts/shortcodes/tenant-cluster-selector.html +++ b/doc/themes/the-things-stack/layouts/shortcodes/tenant-cluster-selector.html @@ -13,6 +13,7 @@ +
diff --git a/doc/themes/the-things-stack/layouts/shortcodes/term.html b/doc/themes/the-things-stack/layouts/shortcodes/term.html index cb27d7877d..02d7c43ab2 100644 --- a/doc/themes/the-things-stack/layouts/shortcodes/term.html +++ b/doc/themes/the-things-stack/layouts/shortcodes/term.html @@ -1 +1 @@ -{{ .Get 0 }} +{{ .Get 0 }} diff --git a/doc/themes/the-things-stack/layouts/ttn-lw-cli/list.html b/doc/themes/the-things-stack/layouts/ttn-lw-cli/list.html index 0cafecbfba..8bddad77eb 100644 --- a/doc/themes/the-things-stack/layouts/ttn-lw-cli/list.html +++ b/doc/themes/the-things-stack/layouts/ttn-lw-cli/list.html @@ -1,21 +1,20 @@ {{ define "main" }}
-
- -
- {{ partial "sidebar/command-side-navigation.html" . }} -
-
-
-
- {{ .Content }} -
- {{ partial "feedback" . }} -
+
+ +
+ {{ partial "sidebar/command-side-navigation.html" . }} +
+
+
+
{{ .Content }}
+ {{ partial "feedback" . }}
+
diff --git a/doc/themes/the-things-stack/layouts/ttn-lw-cli/single.html b/doc/themes/the-things-stack/layouts/ttn-lw-cli/single.html index 0cafecbfba..8bddad77eb 100644 --- a/doc/themes/the-things-stack/layouts/ttn-lw-cli/single.html +++ b/doc/themes/the-things-stack/layouts/ttn-lw-cli/single.html @@ -1,21 +1,20 @@ {{ define "main" }}
-
- -
- {{ partial "sidebar/command-side-navigation.html" . }} -
-
-
-
- {{ .Content }} -
- {{ partial "feedback" . }} -
+
+ +
+ {{ partial "sidebar/command-side-navigation.html" . }} +
+
+
+
{{ .Content }}
+ {{ partial "feedback" . }}
+