diff --git a/docs/introduction.md b/docs/10-introduction.md
similarity index 92%
rename from docs/introduction.md
rename to docs/10-introduction.md
index 50b025a3..ba4b9057 100644
--- a/docs/introduction.md
+++ b/docs/10-introduction.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Introduction
## Welcome to the OpenRemote documentation!
@@ -14,7 +10,7 @@ The core of the OpenRemote system is the [Manager](https://github.com/openremote
Rules can be written in Groovy, a Rules JSON, or Flow model, and dynamically deployed. Rules execute actions when matching asset state or sequence of events are detected. For example, when a mobile asset enters a geographic fence, or when your sensor is not updating anymore, you can notify a group of users via email and on their mobile devices.
-Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](user-guide/gateways-and-devices/edge-gateway.md), close to devices.
+Networked things and devices are connected to the manager via [Agents](https://github.com/openremote/openremote/tree/master/agent), they are the interface to 3rd party APIs and service protocols, using the services model. OpenRemote has many built-in protocols and it's easy to create new adapters. Co-locate your agents with the manager or install agents on [Edge gateways](./user-guide/080-gateways-and-devices/10-edge-gateway.md), close to devices.
The [Manager UI](https://github.com/openremote/openremote/tree/master/ui/app/manager) is configurable and suitable both for configuring your IoT system as well as monitoring the performance of your system. The Insight dashboard builder offers a quick way to create one page dashboard apps for your professional users who don't need access to the full manager.
@@ -24,7 +20,7 @@ The manager provides APIs for monitoring and administrating the system:
* WebSockets event API
* MQTT event API
-The OpenRemote [Frontend](developer-guide/working-on-ui-and-apps.md) simplifies the creation and deployment of user interfaces such as:
+The OpenRemote [Frontend](./developer-guide/110-working-on-ui-and-apps.md) simplifies the creation and deployment of user interfaces such as:
* Multi tenancy monitoring dashboard
* Home automation control panel
diff --git a/docs/quick-start.md b/docs/20-quick-start.md
similarity index 82%
rename from docs/quick-start.md
rename to docs/20-quick-start.md
index e13e8623..7ad73062 100644
--- a/docs/quick-start.md
+++ b/docs/20-quick-start.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Quick Start
Welcome to OpenRemote; an intuitive user-friendly 100% open source IoT platform. You can build a complete IoT device management solution including: device management and auto provisioning, customisation of asset types, automation via When-Then, Flow and Groovy rules, data analytics, connectivity via several protocol agents and manager APIs (e.g. MQTT broker, HTTP/REST, WS), Multi-tenancy (realms), Users and roles management, Edge gateway, Front-end UI web components and consoles, and an Insights dashboard builder.
@@ -48,12 +44,12 @@ cmd /C "set OR_HOSTNAME=192.168.1.1 && docker-compose -p openremote up -d"
## What next
Try creating assets, agents, rules, users, realms, etc. using the Manager UI, some things to try:
-- [Manager UI Guide](user-guide/manager-ui/manager-ui.md) - Learn more about the User Interface
-- [Creating an HTTP Agent tutorial](tutorials/open-weather-api-using-http-agent.md) - Connect to an online weather service
-- [Custom Deployment](user-guide/deploying/custom-deployment.md) - Style the Manager to your brand
-- [Setting up an IDE](developer-guide/setting-up-an-ide.md) - Set up your development environment
-- [Working on the UI](developer-guide/working-on-ui-and-apps.md) - Create a web application compatible with OpenRemote
-- [Creating a custom project](developer-guide/creating-a-custom-project.md) - Create a project with custom protocols, asset types and setup code
+- [Manager UI Guide](./user-guide/020-manager-ui/10-manager-ui.md) - Learn more about the User Interface
+- [Creating an HTTP Agent tutorial](./tutorials/020-open-weather-api-using-http-agent.md) - Connect to an online weather service
+- [Custom Deployment](./user-guide/010-deploying/10-custom-deployment.md) - Style the Manager to your brand
+- [Setting up an IDE](./developer-guide/020-setting-up-an-ide.md) - Set up your development environment
+- [Working on the UI](./developer-guide/110-working-on-ui-and-apps.md) - Create a web application compatible with OpenRemote
+- [Creating a custom project](./developer-guide/040-creating-a-custom-project.md) - Create a project with custom protocols, asset types and setup code
## Where's the data stored?
Persistent data is stored in a PostgreSQL DB which is stored in the `openremote_postgresql-data` Docker volume which is durably stored independently of the running containers (see all with `docker volume ls`).
@@ -63,7 +59,7 @@ See the [Developer Guide](developer-guide/system-administration#backuprestore) f
## Contributing to OpenRemote
-For information and how to set up a development environment, see the [Developer Guide](developer-guide/preparing-the-environment.md).
+For information and how to set up a development environment, see the [Developer Guide](./developer-guide/010-preparing-the-environment.md).
We work with Java, Groovy, TypeScript, Gradle, Docker, and a wide range of APIs and protocol implementations.
diff --git a/docs/architecture/overall-architecture.md b/docs/architecture/10-overall-architecture.md
similarity index 99%
rename from docs/architecture/overall-architecture.md
rename to docs/architecture/10-overall-architecture.md
index 9152dabc..1ba90ac2 100644
--- a/docs/architecture/overall-architecture.md
+++ b/docs/architecture/10-overall-architecture.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Overall architecture
At the heart of the manager, is the [Container](https://www.javadoc.io/doc/io.openremote/openremote-container/latest/org/openremote/container/Container.html) class that manages the life cycle of all the services, including loading and starting them at launch.
diff --git a/docs/architecture/manager-endpoints-and-file-paths.md b/docs/architecture/20-manager-endpoints-and-file-paths.md
similarity index 97%
rename from docs/architecture/manager-endpoints-and-file-paths.md
rename to docs/architecture/20-manager-endpoints-and-file-paths.md
index 5e0515bc..fe6050bf 100644
--- a/docs/architecture/manager-endpoints-and-file-paths.md
+++ b/docs/architecture/20-manager-endpoints-and-file-paths.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Manager endpoints and file paths
## Endpoints
@@ -17,7 +13,7 @@ The OpenRemote Manager exposes the following endpoints:
* `/auth` - Keycloak reverse proxy endpoint
* `/websocket` - WebSocket endpoint
* `/*` - Any other path is resolved against `$CUSTOM_APP_DOCROOT` (see paths below)
-* `/manager_config.json` - File that is loaded by the Manager UI to apply custom configuration to the Manager UI (white labelling, menu config, etc.) (loaded from `$CUSTOM_APP_DOCROOT`) (see [here](../user-guide/deploying/configuring-the-manager-ui.md) for more details)
+* `/manager_config.json` - File that is loaded by the Manager UI to apply custom configuration to the Manager UI (white labelling, menu config, etc.) (loaded from `$CUSTOM_APP_DOCROOT`) (see [here](../user-guide/010-deploying/20-configuring-the-manager-ui.md) for more details)
* `/locales` - Path used by Manager UI to find custom `i18n` locale files, each locale should be in it's own directory with a file named `app.json` (e.g. `/locales/en/app.json`) (loaded from `$CUSTOM_APP_DOCROOT`)
### App Realm
diff --git a/docs/architecture/security.md b/docs/architecture/30-security.md
similarity index 96%
rename from docs/architecture/security.md
rename to docs/architecture/30-security.md
index 91f2110c..6e4d6f6a 100644
--- a/docs/architecture/security.md
+++ b/docs/architecture/30-security.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# Security
## Realm clients
diff --git a/docs/architecture/asset-validation.md b/docs/architecture/40-asset-validation.md
similarity index 99%
rename from docs/architecture/asset-validation.md
rename to docs/architecture/40-asset-validation.md
index 3e6cadb5..7fa43141 100644
--- a/docs/architecture/asset-validation.md
+++ b/docs/architecture/40-asset-validation.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 4
----
-
# Asset Validation
This document summarises how asset validation is performed and how it relates to the asset type model.
diff --git a/docs/architecture/asset-location-tracking.md b/docs/architecture/50-asset-location-tracking.md
similarity index 99%
rename from docs/architecture/asset-location-tracking.md
rename to docs/architecture/50-asset-location-tracking.md
index 0cfe7d0d..c00e4a15 100644
--- a/docs/architecture/asset-location-tracking.md
+++ b/docs/architecture/50-asset-location-tracking.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 5
----
-
# Asset location tracking
## Terminology
diff --git a/docs/architecture/apps-and-consoles.md b/docs/architecture/60-apps-and-consoles.md
similarity index 99%
rename from docs/architecture/apps-and-consoles.md
rename to docs/architecture/60-apps-and-consoles.md
index 4da14432..1678c2df 100644
--- a/docs/architecture/apps-and-consoles.md
+++ b/docs/architecture/60-apps-and-consoles.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 6
----
-
# Apps and consoles
## Terminology
diff --git a/docs/architecture/esp32-device.md b/docs/architecture/70-esp32-device.md
similarity index 94%
rename from docs/architecture/esp32-device.md
rename to docs/architecture/70-esp32-device.md
index 3204480f..92ce5fd1 100644
--- a/docs/architecture/esp32-device.md
+++ b/docs/architecture/70-esp32-device.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 7
----
-
# ESP32 devices
Many IoT devices are or can be based on an ESP32 microcontroller.
@@ -39,7 +35,7 @@ The device communicates with OpenRemote over MQTTS, authenticated with a dedicat
In this typical use case, the device uses Wi-Fi for its internet connectivity.
To integrate a new device into the system, it needs to be provisioned.
-This can either be done automatically, see [User Guide Auto provisioning](/user-guide/gateways-and-devices/auto-provisioning.md)
+This can either be done automatically, see [User Guide Auto provisioning](../user-guide/080-gateways-and-devices/20-auto-provisioning.md)
or through a manual process performed by the end-user.
For the latter case, the workflow is as follows
@@ -102,6 +98,6 @@ sequenceDiagram
Communication between the Mobile Application and the Device is based on Espressif [Unified Provisioning](https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/provisioning/provisioning.html).
This mechanism is used to discover the device, then establish a secure communication channel over BLE.
Communication on this channel uses Protocol Buffer payloads, in addition to the messages defined by Espressif, OpenRemote uses messages defined in the following ProtoBuf spec: [ORConfigChannelProtocol](https://github.com/openremote/console-ios-lib/blob/7212bc905c7df34c2f3d62f801f0e4df7529a2f0/ORLib/ORConfigChannelProtocol.proto)
-OpenRemote includes the [ESP Provision provider](apps-and-consoles.md#esp-provision-provider-espprovision) to support the implementation of the mobile application side.
+OpenRemote includes the [ESP Provision provider](./60-apps-and-consoles.md#esp-provision-provider-espprovision) to support the implementation of the mobile application side.
On the backend, the project must implement a single `/rest/device` endpoint, see [Provision Device API](../provisioning-api/provision-device.api.mdx) for more details.
diff --git a/docs/developer-guide/preparing-the-environment.md b/docs/developer-guide/010-preparing-the-environment.md
similarity index 98%
rename from docs/developer-guide/preparing-the-environment.md
rename to docs/developer-guide/010-preparing-the-environment.md
index c88efdc0..56359240 100644
--- a/docs/developer-guide/preparing-the-environment.md
+++ b/docs/developer-guide/010-preparing-the-environment.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 00
----
-
# Preparing the environment
To build OpenRemote projects, you have to first prepare the environment on your developer workstation or build machine. Alternatively you can use a [Docker image with tooling](#runtime-tooling).
diff --git a/docs/developer-guide/setting-up-an-ide.md b/docs/developer-guide/020-setting-up-an-ide.md
similarity index 92%
rename from docs/developer-guide/setting-up-an-ide.md
rename to docs/developer-guide/020-setting-up-an-ide.md
index 0e996887..86d321e7 100644
--- a/docs/developer-guide/setting-up-an-ide.md
+++ b/docs/developer-guide/020-setting-up-an-ide.md
@@ -1,12 +1,8 @@
----
-sidebar_position: 10
----
-
# Setting up an IDE
-This guide helps you set up an environment with an IDE when you are done [Preparing the environment](preparing-the-environment.md), so you can work comfortably on the Manager backend services.
+This guide helps you set up an environment with an IDE when you are done [Preparing the environment](./010-preparing-the-environment.md), so you can work comfortably on the Manager backend services.
-This is not necessary if you prefer [Working on the UI](working-on-ui-and-apps.md) only, any file manager and text editor will suffice.
+This is not necessary if you prefer [Working on the UI](./110-working-on-ui-and-apps.md) only, any file manager and text editor will suffice.
If you have successfully cloned the OpenRemote repo or a custom project repo, you can run the Docker containers needed for development by running one of the following commands:
@@ -88,7 +84,7 @@ For custom working directory or launch settings, you may need to configure `.vsc
## Setting the working directory
-All Docker and Gradle commands **must be executed in the project root directory**. If you are working on the main OpenRemote repository, this means the root of the repository. If you are [Creating a custom project](creating-a-custom-project.md), this means the root of your project's repository.
+All Docker and Gradle commands **must be executed in the project root directory**. If you are working on the main OpenRemote repository, this means the root of the repository. If you are [Creating a custom project](./040-creating-a-custom-project.md), this means the root of your project's repository.
The working directory in your IDE must also always be set to your project root directory.
@@ -132,7 +128,7 @@ The web server binds to only localhost interface (i.e. `127.0.0.1`). You can ove
:::
-Go to [Working on the UI](working-on-ui-and-apps.md#working-on-an-app-eg-manager-ui) for more information.
+Go to [Working on the UI](./110-working-on-ui-and-apps.md#working-on-an-app-eg-manager-ui) for more information.
## Building
diff --git a/docs/developer-guide/docker-compose-profiles.md b/docs/developer-guide/030-docker-compose-profiles.md
similarity index 94%
rename from docs/developer-guide/docker-compose-profiles.md
rename to docs/developer-guide/030-docker-compose-profiles.md
index 28fa9738..2dd51e10 100644
--- a/docs/developer-guide/docker-compose-profiles.md
+++ b/docs/developer-guide/030-docker-compose-profiles.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 11
----
-
# Docker Compose profiles
## Docker services
@@ -67,7 +63,7 @@ docker-compose -f profile/dev-ui.yml up -d
* PostgreSQL DB: jdbc:postgresql://localhost:5432/openremote
### Full Stack Development / Running Tests (dev-testing.yml)
-This is for running tests or doing development work on the Manager (in an IDE), see the [Setting up an IDE](setting-up-an-ide.md) guide for running the Manager in an IDE.
+This is for running tests or doing development work on the Manager (in an IDE), see the [Setting up an IDE](./020-setting-up-an-ide.md) guide for running the Manager in an IDE.
#### Exposed Services
* Keycloak: http://localhost:8081/auth
@@ -76,7 +72,7 @@ This is for running tests or doing development work on the Manager (in an IDE),
### Full Stack Development with HTTPS Proxy (dev-proxy.yml)
This is the same as the Full Stack Development profile but also adds the proxy service to allow development/testing of the Manager running behind the reverse proxy with HTTPS (so development environment matches final deployment configuration).
-To use this proxy correctly you will need to set the correct environment variables for the manager running behind SSL proxy as described in [Setting up an IDE](setting-up-an-ide.md).
+To use this proxy correctly you will need to set the correct environment variables for the manager running behind SSL proxy as described in [Setting up an IDE](./020-setting-up-an-ide.md).
#### Exposed Services
* Manager: https://localhost
diff --git a/docs/developer-guide/creating-a-custom-project.md b/docs/developer-guide/040-creating-a-custom-project.md
similarity index 92%
rename from docs/developer-guide/creating-a-custom-project.md
rename to docs/developer-guide/040-creating-a-custom-project.md
index ab3fe318..5cbcd166 100644
--- a/docs/developer-guide/creating-a-custom-project.md
+++ b/docs/developer-guide/040-creating-a-custom-project.md
@@ -1,12 +1,8 @@
----
-sidebar_position: 12
----
-
# Creating a custom project
## Quickstart
-We have a repo which can be used as a template for a custom project; simply clone the [custom-project](https://github.com/openremote/custom-project) repo and start adding your custom code; see the [Endpoints and file paths](../architecture/manager-endpoints-and-file-paths.md) documentation to understand how to override the various parts of the system.
+We have a repo which can be used as a template for a custom project; simply clone the [custom-project](https://github.com/openremote/custom-project) repo and start adding your custom code; see the [Endpoints and file paths](../architecture/20-manager-endpoints-and-file-paths.md) documentation to understand how to override the various parts of the system.
## What is a custom project
@@ -39,7 +35,7 @@ A custom project always depends on the following released OpenRemote artefacts:
* Java modules - see [Maven Central](https://search.maven.org/search?q=g:io.openremote)
* UI components - see [npmjs](https://www.npmjs.com/~openremotedeveloper)
-The [Release Management](../user-guide/deploying/release-management.md) documentation describes how to update the OpenRemote version of these artefacts.
+The [Release Management](../user-guide/010-deploying/80-release-management.md) documentation describes how to update the OpenRemote version of these artefacts.
## Custom Project Template
@@ -63,7 +59,7 @@ This module is used to generate a `deployment` Docker image which can be volume
### Adding new modules
-Create directory with appropriate name and copy `/deployment/build.gradle` into it, customize this new `build.gradle` as required and start adding your code/files, ensuring that the `installDist` Gradle task copies any output into the appropriate location within the deployment Docker image build directory (see the [Manager endpoints and file paths](../architecture/manager-endpoints-and-file-paths.md)).
+Create directory with appropriate name and copy `/deployment/build.gradle` into it, customize this new `build.gradle` as required and start adding your code/files, ensuring that the `installDist` Gradle task copies any output into the appropriate location within the deployment Docker image build directory (see the [Manager endpoints and file paths](../architecture/20-manager-endpoints-and-file-paths.md)).
### Adding UI apps/components
diff --git a/docs/developer-guide/agent-protocol-spi.md b/docs/developer-guide/050-agent-protocol-spi.md
similarity index 96%
rename from docs/developer-guide/agent-protocol-spi.md
rename to docs/developer-guide/050-agent-protocol-spi.md
index f1fce3f2..052b092b 100644
--- a/docs/developer-guide/agent-protocol-spi.md
+++ b/docs/developer-guide/050-agent-protocol-spi.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 13
----
-
# Agent and protocol SPI
See the `HTTPProtocol.java` as an example as this will give you a good guide of what to do to build protocol:
diff --git a/docs/developer-guide/licensing-guidelines-for-contributors.md b/docs/developer-guide/060-licensing-guidelines-for-contributors.md
similarity index 98%
rename from docs/developer-guide/licensing-guidelines-for-contributors.md
rename to docs/developer-guide/060-licensing-guidelines-for-contributors.md
index e0e2fc80..43881d40 100644
--- a/docs/developer-guide/licensing-guidelines-for-contributors.md
+++ b/docs/developer-guide/060-licensing-guidelines-for-contributors.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 13
----
-
# Licensing guidelines for contributors
All projects should include a `LICENSE.txt` text file in the root folder. This file should also be in the root of any distributed archive/ZIP file.
diff --git a/docs/developer-guide/gateway-tunnelling-setup.md b/docs/developer-guide/070-gateway-tunnelling-setup.md
similarity index 99%
rename from docs/developer-guide/gateway-tunnelling-setup.md
rename to docs/developer-guide/070-gateway-tunnelling-setup.md
index 84c66225..f5099462 100644
--- a/docs/developer-guide/gateway-tunnelling-setup.md
+++ b/docs/developer-guide/070-gateway-tunnelling-setup.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 16
----
-
# Gateway tunnelling setup
This guide describes the steps necessary to setup the gateway tunnelling functionality which allows remote access to edge gateways using [SISH](https://github.com/antoniomika/sish)
diff --git a/docs/developer-guide/extensions.md b/docs/developer-guide/080-extensions.md
similarity index 98%
rename from docs/developer-guide/extensions.md
rename to docs/developer-guide/080-extensions.md
index 4e4db9f0..2f0bfd79 100644
--- a/docs/developer-guide/extensions.md
+++ b/docs/developer-guide/080-extensions.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 17
----
-
# Extensions
Extensions are a way to add project-specific or domain-specific functionality without adding that functionality directly to the OpenRemote core.
diff --git a/docs/developer-guide/external-services.md b/docs/developer-guide/090-external-services.md
similarity index 98%
rename from docs/developer-guide/external-services.md
rename to docs/developer-guide/090-external-services.md
index caea47cb..358fc665 100644
--- a/docs/developer-guide/external-services.md
+++ b/docs/developer-guide/090-external-services.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 17
----
-
# External Services
External services allow developers to extend the functionality of the OpenRemote platform by integrating their own applications directly into the OpenRemote Manager, giving users a seamless way to configure and manage them.
@@ -36,7 +32,7 @@ There are two types of external services in OpenRemote:
- Bound to a **specific realm** and only available within that realm (single-tenant)
- Simpler to implement when multi-tenancy is not required
-Both global and regular services must be registered by **Service Users**. Global services specifically require a Super User account in the master realm, while regular services can be registered with a realm-specific Service User. For more information on Service Users, see [Realm Users and Roles](../user-guide/identity-and-security/realms-users-and-roles.md) and [Security](../architecture/security.md).
+Both global and regular services must be registered by **Service Users**. Global services specifically require a Super User account in the master realm, while regular services can be registered with a realm-specific Service User. For more information on Service Users, see [Realm Users and Roles](../user-guide/070-identity-and-security/10-realms-users-and-roles.md) and [Security](../architecture/30-security.md).
---
diff --git a/docs/developer-guide/system-administration.md b/docs/developer-guide/100-system-administration.md
similarity index 99%
rename from docs/developer-guide/system-administration.md
rename to docs/developer-guide/100-system-administration.md
index faaf0d05..3b33ec14 100644
--- a/docs/developer-guide/system-administration.md
+++ b/docs/developer-guide/100-system-administration.md
@@ -1,13 +1,9 @@
----
-sidebar_position: 20
----
-
# System Administration
## Monitoring
Use `docker stats` to show CPU, memory, network read/writes, and total disk read/writes for running containers.
-Also use prometheus metrics to monitor individual container health (see: [Metrics](../user-guide/metrics.md)).
+Also use prometheus metrics to monitor individual container health (see: [Metrics](../user-guide/120-metrics.md)).
## JVM
diff --git a/docs/developer-guide/working-on-ui-and-apps.md b/docs/developer-guide/110-working-on-ui-and-apps.md
similarity index 95%
rename from docs/developer-guide/working-on-ui-and-apps.md
rename to docs/developer-guide/110-working-on-ui-and-apps.md
index 2342c29b..2e76a10e 100644
--- a/docs/developer-guide/working-on-ui-and-apps.md
+++ b/docs/developer-guide/110-working-on-ui-and-apps.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 30
----
-
# Working on UI and apps
## Overview
@@ -41,10 +37,10 @@ Doing development on the UI means working on any of:
* Front end components and their demos, shared between applications
* Keycloak theme(s) used in authentication screens
-You will need the standard tool chain (see [Preparing the environment](preparing-the-environment.md) to be able to build and run the components and apps. Working on the web applications and/or components will also generally require backend services to interact with, you can either:
+You will need the standard tool chain (see [Preparing the environment](./010-preparing-the-environment.md) to be able to build and run the components and apps. Working on the web applications and/or components will also generally require backend services to interact with, you can either:
-* Run a Manager instance in an IDE (refer to [Setting up an IDE](setting-up-an-ide.md))
-* Deploy the Manager using a Docker container (refer to [UI Development profile](docker-compose-profiles.md#ui-development-dev-uiyml))
+* Run a Manager instance in an IDE (refer to [Setting up an IDE](./020-setting-up-an-ide.md))
+* Deploy the Manager using a Docker container (refer to [UI Development profile](./030-docker-compose-profiles.md#ui-development-dev-uiyml))
If you want to create a new `component` or `app` then simply copy an existing one as a template (when creating a `component` then you may need to create a corresponding `demo` which acts as a development harness that can be served by webpack dev server - one demo may act as harness for multiple components).
@@ -96,7 +92,7 @@ backend webpack_backend
Components can be developed and tested in isolation (with dependencies on other components and/or public npm modules as required). Some components have no visuals and provide standard OpenRemote functionality e.g. `@openremote/core`, whilst others provide visuals that allow interaction with the Manager backend.
### Maps
-If you are working on a map component then please refer to the [working on maps](working-on-maps.md).
+If you are working on a map component then please refer to the [working on maps](./130-working-on-maps.md).
### Apps
Apps bring together components and/or public NPM modules and can be written using any framework/library etc that is
diff --git a/docs/developer-guide/adding-widgets-on-insights.md b/docs/developer-guide/120-adding-widgets-on-insights.md
similarity index 98%
rename from docs/developer-guide/adding-widgets-on-insights.md
rename to docs/developer-guide/120-adding-widgets-on-insights.md
index 593640b4..d7f610fc 100644
--- a/docs/developer-guide/adding-widgets-on-insights.md
+++ b/docs/developer-guide/120-adding-widgets-on-insights.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 35
----
-
# Adding Widgets on Insights
## Manager UI
@@ -19,7 +15,7 @@ Currently we have several built-in widgets available:
|| Chart with history and/or predicted data of unlimited attributes.
Uses data decimation algorithms, and supports multi-axis. |
|| Map with locations of all assets that correspond with the selected asset type.
Optionally it can show a color based on thresholds, or a label with the current value of an attribute. |
|| Table showing multiple attribute values of the assets you select.
It is very useful for gaining insights in a larger number of assets with a single look. |
-|| A button to setup a tunnel to a preconfigured target address & port via a gateway.
When protocol is set to HTTP(S), it will open a new tab to display the webcontent served on that location.
Requires an operational gateway tunneling setup, [see](./gateway-tunnelling-setup.md). |
+|| A button to setup a tunnel to a preconfigured target address & port via a gateway.
When protocol is set to HTTP(S), it will open a new tab to display the webcontent served on that location.
Requires an operational gateway tunneling setup, [see](./070-gateway-tunnelling-setup.md). |
We might add more widgets over time, so this list can become longer.
Feel free to develop new widgets yourself; there is functionality to create them with ease.
diff --git a/docs/developer-guide/working-on-maps.md b/docs/developer-guide/130-working-on-maps.md
similarity index 98%
rename from docs/developer-guide/working-on-maps.md
rename to docs/developer-guide/130-working-on-maps.md
index 4bf64ff8..feb4fb7e 100644
--- a/docs/developer-guide/working-on-maps.md
+++ b/docs/developer-guide/130-working-on-maps.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 40
----
-
# Working on maps
## MapLibre GL
@@ -63,7 +59,7 @@ json|{...}
The map component includes built-in geocoding support using [Nominatim](https://nominatim.org/) (OpenStreetMap's geocoding service) via the [`@maplibre/maplibre-gl-geocoder`](https://github.com/maplibre/maplibre-gl-geocoder) library. When enabled, a search box is shown on the map that supports both forward geocoding (address to coordinates) and reverse geocoding (coordinates to address).
-For configuring the geocode URL and setting up a self-hosted Nominatim instance, see the user guide: [Geocoding](../user-guide/manager-ui/geocoding.md).
+For configuring the geocode URL and setting up a self-hosted Nominatim instance, see the user guide: [Geocoding](../user-guide/020-manager-ui/40-geocoding.md).
### Enabling geocoding in `or-map`
diff --git a/docs/developer-guide/working-on-the-mobile-consoles.md b/docs/developer-guide/140-working-on-the-mobile-consoles.md
similarity index 99%
rename from docs/developer-guide/working-on-the-mobile-consoles.md
rename to docs/developer-guide/140-working-on-the-mobile-consoles.md
index 08a77441..d3693dbe 100644
--- a/docs/developer-guide/working-on-the-mobile-consoles.md
+++ b/docs/developer-guide/140-working-on-the-mobile-consoles.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 50
----
-
# Working on the mobile consoles
The OpenRemote mobile consoles load the web applications using a web view and provide bridging of native device functionality to provide a native app experience.
diff --git a/docs/developer-guide/create-docker-machine-on-aws-ec2.md b/docs/developer-guide/150-create-docker-machine-on-aws-ec2.md
similarity index 100%
rename from docs/developer-guide/create-docker-machine-on-aws-ec2.md
rename to docs/developer-guide/150-create-docker-machine-on-aws-ec2.md
diff --git a/docs/developer-guide/frontend-testing.md b/docs/developer-guide/160-frontend-testing.md
similarity index 100%
rename from docs/developer-guide/frontend-testing.md
rename to docs/developer-guide/160-frontend-testing.md
diff --git a/docs/tutorials/white-label-multi-tenant-iot-platform.md b/docs/tutorials/010-white-label-multi-tenant-iot-platform.md
similarity index 99%
rename from docs/tutorials/white-label-multi-tenant-iot-platform.md
rename to docs/tutorials/010-white-label-multi-tenant-iot-platform.md
index ece0f3a4..7798e92e 100644
--- a/docs/tutorials/white-label-multi-tenant-iot-platform.md
+++ b/docs/tutorials/010-white-label-multi-tenant-iot-platform.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# White-label your IoT platform with multi-tenant realms
This tutorial shows how to turn OpenRemote into a **white-label, multi-tenant IoT platform**: you will brand the Manager with your own logo and colours, give each customer (or distributor) their own isolated **realm**, and optionally serve it on a custom URL. This is exactly what device manufacturers (OEMs) and system integrators need when they want to resell an IoT solution under their own brand.
diff --git a/docs/tutorials/open-weather-api-using-http-agent.md b/docs/tutorials/020-open-weather-api-using-http-agent.md
similarity index 99%
rename from docs/tutorials/open-weather-api-using-http-agent.md
rename to docs/tutorials/020-open-weather-api-using-http-agent.md
index 443b122a..502e2cf4 100644
--- a/docs/tutorials/open-weather-api-using-http-agent.md
+++ b/docs/tutorials/020-open-weather-api-using-http-agent.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Using HTTP Agent for weather service
This tutorial explains how to use the generic [HTTP Agent](../user-guide/agents-protocols/http) with an example to connect to the [OpenWeatherMap](https://openweathermap.org/) API.
diff --git a/docs/tutorials/connect-your-mqtt-client.md b/docs/tutorials/030-connect-your-mqtt-client.md
similarity index 79%
rename from docs/tutorials/connect-your-mqtt-client.md
rename to docs/tutorials/030-connect-your-mqtt-client.md
index 49dd7fb2..e5366586 100644
--- a/docs/tutorials/connect-your-mqtt-client.md
+++ b/docs/tutorials/030-connect-your-mqtt-client.md
@@ -1,10 +1,6 @@
----
-sidebar_position: 3
----
-
# Connect your MQTT Client
-In this tutorial we will use the [MQTT API](../user-guide/manager-apis.md#mqtt-api-mqtt-broker) to subscribe to changes of asset attributes values and publish data to them from a MQTT Client. The OpenRemote Manager functions as the MQTT Broker. You can use a desktop MQTT client (e.g. [MQTT Explorer](https://mqtt-explorer.com/) or [MQTT X](https://mqttx.app/)) for this tutorial, or better yet the device you want to connect.
+In this tutorial we will use the [MQTT API](../user-guide/050-manager-apis.md#mqtt-api-mqtt-broker) to subscribe to changes of asset attributes values and publish data to them from a MQTT Client. The OpenRemote Manager functions as the MQTT Broker. You can use a desktop MQTT client (e.g. [MQTT Explorer](https://mqtt-explorer.com/) or [MQTT X](https://mqttx.app/)) for this tutorial, or better yet the device you want to connect.
## Step 1 - Create an asset with attributes
We will create a Thing asset, but feel free to use an AssetType that matches your physical device
@@ -36,7 +32,7 @@ In your MQTT client set up a new connection:
- clientId: `client123` (this can be anything you like but must be unique - Any existing connection with the same client ID will be replaced. Make sure this clientId remains identical.)
## Step 4 - Subscribe to attributes using the MQTT API
-In this tutorial we will be looking at specific attributes of a specific asset. There are [many more options](../user-guide/manager-apis.md#mqtt-api-mqtt-broker) of subscribing to (all) updates of assets and attributes. The asset attributes that you will be subscribing to can be written by the user, by rules, or can be a live value gathered through an Agent link with another device in the field. You can imagine this boolean value could toggle a function of the device subscribed to the attribute
+In this tutorial we will be looking at specific attributes of a specific asset. There are [many more options](../user-guide/050-manager-apis.md#mqtt-api-mqtt-broker) of subscribing to (all) updates of assets and attributes. The asset attributes that you will be subscribing to can be written by the user, by rules, or can be a live value gathered through an Agent link with another device in the field. You can imagine this boolean value could toggle a function of the device subscribed to the attribute
1. Get the ID of the Thing asset by navigating to its asset page and copying the ID in the URL (e.g. `http://localhost:9000/manager/#!assets/false/6xIa9MkpZuR7slaUGB6OTZ` => `6xIa9MkpZuR7slaUGB6OTZ`)
2. Create a subscription for the subscribeAttribute in your MQTT client with the topic: `{realm}/{clientId}/attribute/{attributeName}/{assetId}`. So in our case this will be `master/client123/attribute/subscribeAttribute/6xIa9MkpZuR7slaUGB6OTZ`
3. In the view mode of the Thing asset in the OpenRemote Manager, write a new value to the 'Subscribe attribute' by clicking the checkbox.
diff --git a/docs/tutorials/receive-lorawan-sensor-data-from-chirpstack.md b/docs/tutorials/040-receive-lorawan-sensor-data-from-chirpstack.md
similarity index 97%
rename from docs/tutorials/receive-lorawan-sensor-data-from-chirpstack.md
rename to docs/tutorials/040-receive-lorawan-sensor-data-from-chirpstack.md
index 26858b52..066e8dbd 100644
--- a/docs/tutorials/receive-lorawan-sensor-data-from-chirpstack.md
+++ b/docs/tutorials/040-receive-lorawan-sensor-data-from-chirpstack.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 4
----
-
# ChirpStack LoRaWAN Integration
[ChirpStack](https://www.chirpstack.io/) is an open source LoRaWAN network server stack. This tutorial explains how to receive LoRaWAN sensor data via ChirpStack using the [MQTT Agent](../user-guide/agents-protocols/mqtt). The tutorial is based on the [Dragino LHT65](https://www.dragino.com/products/temperature-humidity-sensor/item/151-lht65.html) LoRaWAN sensor device as an example.
@@ -10,8 +6,8 @@ sidebar_position: 4
This tutorial focuses on the **manual configuration** of MQTT agent links to provide a deeper understanding of the integration process.
For a more automated approach, please see the specific agent documentation:
-* **[ChirpStack](../user-guide/agents-protocols/chirpstack.md)**
-* **[The Things Stack (TTS)](../user-guide/agents-protocols/the-things-stack.md)**
+* **[ChirpStack](../user-guide/040-agents-protocols/030-chirpstack.md)**
+* **[The Things Stack (TTS)](../user-guide/040-agents-protocols/140-the-things-stack.md)**
:::
## Install and start ChirpStack
diff --git a/docs/tutorials/connect-modbus-devices.md b/docs/tutorials/050-connect-modbus-devices.md
similarity index 99%
rename from docs/tutorials/connect-modbus-devices.md
rename to docs/tutorials/050-connect-modbus-devices.md
index ea5a70fa..fdb7b599 100644
--- a/docs/tutorials/connect-modbus-devices.md
+++ b/docs/tutorials/050-connect-modbus-devices.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 5
----
-
# Connect Modbus TCP/Serial devices (PLCs, meters, inverters)
**Modbus** is everywhere in industrial and energy hardware - PLCs, energy meters, solar inverters, HVAC controllers. This tutorial shows how to connect Modbus devices to OpenRemote running as a gateway, using the **native Modbus agent**, mapping registers straight onto **asset attributes** over Ethernet (**Modbus TCP**) or serial (**Modbus Serial**).
diff --git a/docs/tutorials/enterprise-identity-sso-rbac.md b/docs/tutorials/060-enterprise-identity-sso-rbac.md
similarity index 99%
rename from docs/tutorials/enterprise-identity-sso-rbac.md
rename to docs/tutorials/060-enterprise-identity-sso-rbac.md
index a71d6617..2f6f3231 100644
--- a/docs/tutorials/enterprise-identity-sso-rbac.md
+++ b/docs/tutorials/060-enterprise-identity-sso-rbac.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 6
----
-
# Enterprise identity - SSO, RBAC and OAuth2
How does our platform handle **identity and access**? This tutorial covers the essentials: **single sign-on (SSO/OIDC)** through the built-in **Keycloak**, linking to **Active Directory/LDAP**, **role-based access control (RBAC)** with realms and restricted users, and **OAuth2 service accounts** for headless device and machine access.
diff --git a/docs/tutorials/edge-gateway-secure-tunnel.md b/docs/tutorials/070-edge-gateway-secure-tunnel.md
similarity index 99%
rename from docs/tutorials/edge-gateway-secure-tunnel.md
rename to docs/tutorials/070-edge-gateway-secure-tunnel.md
index 554ce9e7..45d8759a 100644
--- a/docs/tutorials/edge-gateway-secure-tunnel.md
+++ b/docs/tutorials/070-edge-gateway-secure-tunnel.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 7
----
-
# Deploy OpenRemote as an edge gateway with a secure tunnel
For sites with intermittent connectivity, local control loops or data-residency requirements, you want compute at the edge. This tutorial shows how to run OpenRemote as an **edge gateway**, link it to a **central** instance, and **remotely access** the on-site gateway through a **secure tunnel** - a hybrid **on-premise** plus cloud architecture.
diff --git a/docs/tutorials/auto-provision-devices-at-scale.md b/docs/tutorials/080-auto-provision-devices-at-scale.md
similarity index 99%
rename from docs/tutorials/auto-provision-devices-at-scale.md
rename to docs/tutorials/080-auto-provision-devices-at-scale.md
index 7883edca..053e7b69 100644
--- a/docs/tutorials/auto-provision-devices-at-scale.md
+++ b/docs/tutorials/080-auto-provision-devices-at-scale.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 8
----
-
# Auto-provision and onboard OEM devices at scale
If you build and distribute your own hardware, you do not want to register every unit by hand. This tutorial shows how **auto-provisioning** lets a device **self-register** the first time it connects: OpenRemote authenticates it, creates an **asset** of the type you defined, and links its **attributes** to the right MQTT topics - true **zero-touch device onboarding**.
diff --git a/docs/tutorials/ota-firmware-updates-with-hawkbit.md b/docs/tutorials/090-ota-firmware-updates-with-hawkbit.md
similarity index 99%
rename from docs/tutorials/ota-firmware-updates-with-hawkbit.md
rename to docs/tutorials/090-ota-firmware-updates-with-hawkbit.md
index f0f5abc0..52cbdb7a 100644
--- a/docs/tutorials/ota-firmware-updates-with-hawkbit.md
+++ b/docs/tutorials/090-ota-firmware-updates-with-hawkbit.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 9
----
-
# Over-the-air (OTA) firmware updates
Shipping hardware means shipping bugs you will need to fix later. This tutorial shows how to deliver **over-the-air (OTA) firmware updates** to a device fleet using OpenRemote's integration with **[Eclipse hawkBit](https://www.eclipse.org/hawkbit/)** - a dedicated software update server with managed **rollouts** and **campaigns**, not just a file drop.
diff --git a/docs/tutorials/simulating-data-in-attribute.md b/docs/tutorials/100-simulating-data-in-attribute.md
similarity index 95%
rename from docs/tutorials/simulating-data-in-attribute.md
rename to docs/tutorials/100-simulating-data-in-attribute.md
index 6d035777..906173e7 100644
--- a/docs/tutorials/simulating-data-in-attribute.md
+++ b/docs/tutorials/100-simulating-data-in-attribute.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 10
----
-
# Simulating data in attribute
If you don't have a data connection running yet or want to simulate the behaviour of an attribute, you can use the Simulator Agent to replay data. To do that, take the following steps:
diff --git a/docs/tutorials/change-celsius-to-fahrenheit-with-flow.md b/docs/tutorials/110-change-celsius-to-fahrenheit-with-flow.md
similarity index 97%
rename from docs/tutorials/change-celsius-to-fahrenheit-with-flow.md
rename to docs/tutorials/110-change-celsius-to-fahrenheit-with-flow.md
index d16519a8..cbb1d5e2 100644
--- a/docs/tutorials/change-celsius-to-fahrenheit-with-flow.md
+++ b/docs/tutorials/110-change-celsius-to-fahrenheit-with-flow.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 11
----
-
# Celsius to Fahrenheit with Flow
This tutorial offers an example for converting an attribute value, using the Flow editor. This example describes the conversion from temperature Celsius into Fahrenheit.
diff --git a/docs/tutorials/configure-mobile-app-behaviour.md b/docs/tutorials/120-configure-mobile-app-behaviour.md
similarity index 95%
rename from docs/tutorials/configure-mobile-app-behaviour.md
rename to docs/tutorials/120-configure-mobile-app-behaviour.md
index 36178a2f..636d55cf 100644
--- a/docs/tutorials/configure-mobile-app-behaviour.md
+++ b/docs/tutorials/120-configure-mobile-app-behaviour.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 12
----
-
# Configure mobile app behaviour
Here we will explain how to configure your apps to be used in the OpenRemote mobile app.
@@ -115,6 +111,6 @@ For example
```
## See Also
-- [Consoles](../user-guide/manager-ui/on-mobile.md)
-- [Working on the mobile consoles](../developer-guide/working-on-the-mobile-consoles.md)
-- [Architecture: Apps and consoles](../architecture/apps-and-consoles.md)
+- [Consoles](../user-guide/020-manager-ui/20-on-mobile.md)
+- [Working on the mobile consoles](../developer-guide/140-working-on-the-mobile-consoles.md)
+- [Architecture: Apps and consoles](../architecture/60-apps-and-consoles.md)
diff --git a/docs/user-guide/deploying/custom-deployment.md b/docs/user-guide/010-deploying/10-custom-deployment.md
similarity index 86%
rename from docs/user-guide/deploying/custom-deployment.md
rename to docs/user-guide/010-deploying/10-custom-deployment.md
index a49a95de..efda80ee 100644
--- a/docs/user-guide/deploying/custom-deployment.md
+++ b/docs/user-guide/010-deploying/10-custom-deployment.md
@@ -1,20 +1,16 @@
----
-sidebar_position: 1
----
-
# Custom deployment
You can use our [Custom project repository template](https://github.com/openremote/custom-project) as a starting point for your own project. A custom project is a way of extending OpenRemote to provide custom functionality without modifying the main OpenRemote code, thus the custom code can be separately version controlled possibly in a private repo. With it you can change the look of the Manager app, create your own asset types, change map settings, and set up realms, users, and asset on project initialization.
The template has the recommended project structure and readme files in various places to provide details on the customization of each part. If you do not want to use the Custom project template, you can set it up yourself following this [video](https://www.youtube.com/watch?v=_u2IgdioQR8).
-In this guide we will go through the first time setting up your [custom project](../../developer-guide/creating-a-custom-project.md) and give a short explanation of what you can customize.
+In this guide we will go through the first time setting up your [custom project](../../developer-guide/040-creating-a-custom-project.md) and give a short explanation of what you can customize.
## Follow these steps to run your custom project
-1. Prepare your [environment](../../developer-guide/preparing-the-environment.md)
+1. Prepare your [environment](../../developer-guide/010-preparing-the-environment.md)
2. Clone your repository from the [custom-project template](https://github.com/openremote/custom-project).\
This is easiest if you have an [SSH-key in your GitHub account](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
-3. [Set up your IDE](../../developer-guide/setting-up-an-ide.md). Note that Application run configurations are already prepared when using this template. \
+3. [Set up your IDE](../../developer-guide/020-setting-up-an-ide.md). Note that Application run configurations are already prepared when using this template. \
Use `docker-compose -f profile\dev-testing.yml up --build -d` and run the 'Custom Deployment' configuration. You should have two containers running in Docker, and the manager through your IDE.
4. Run the modelWatch gradle task to build the typescript model `./gradlew modelWatch`
5. Next we serve the Manager UI from the `/openremote/ui/app/manager` directory with `npm run serve "--" --env config=..\..\..\..\deployment\manager\app`.
@@ -33,7 +29,7 @@ Now you can make customizations to your custom deployment. Each section will hav
- [Custom domain](#custom-domain)
### Manager app configuration (/deployment/manager/app)
-The manager app can be customised to fit your brand. You can for example change the colours and logos (white labeling), exclude asset types from the Add asset dialog and Rules page, make map markers react to attribute changes, and rearrange attributes in separate panels on the Assets page. These settings are also available directly in the manager app, under 'settings/appearance'. For more details view ['Configuring the Manager UI'](configuring-the-manager-ui.md).
+The manager app can be customised to fit your brand. You can for example change the colours and logos (white labeling), exclude asset types from the Add asset dialog and Rules page, make map markers react to attribute changes, and rearrange attributes in separate panels on the Assets page. These settings are also available directly in the manager app, under 'settings/appearance'. For more details view ['Configuring the Manager UI'](./20-configuring-the-manager-ui.md).
:::note
@@ -45,7 +41,7 @@ Most of the changes made in the manager_config.json will not be visible to the d
Create your own asset type that fits your product. In the asset type you define its name, icon, and colour, and set its attributes with configuration items (called meta items in the code). If you need some inspiration, you can look at OpenRemote's [default asset types](https://github.com/openremote/openremote/tree/master/model/src/main/java/org/openremote/model/asset/impl).
### Agents & Protocols (/agent)
-Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected.
+Protocols are a main extension point of OpenRemote, they translate the messages from and to external systems into reads and writes of the assets and attribute values used by OpenRemote. When creating an [agent asset](../../developer-guide/050-agent-protocol-spi.md), you can create protocol configurations, which are a special type of attribute. Each agent attribute that is a protocol configuration then automatically gets its own instance of the protocol you have selected.
### Setup code (/setup)
Define which assets and rules should be present when you deploy your project. You can set attribute values and their configuration items, add realms and users, and create a structure of assets.\
@@ -53,12 +49,12 @@ The keycloaksetup is used to prepare realms and users. For inspiration see the [
The managersetup is used to prepare assets and attributes. For inspiration see the [manager setup](https://github.com/openremote/openremote/blob/master/setup/src/demo/java/org/openremote/setup/demo/ManagerDemoSetup.java) of the demo.
### Map (/deployment/map)
-You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/working-on-maps.md). \
+You can set your own map and its styling by adding them to the deployment directory. Read more about setting up your map: [Working on maps](../../developer-guide/130-working-on-maps.md). \
Once you have the map file, you can download and customize [mapsettings.json](https://github.com/openremote/openremote/blob/master/manager/src/map/mapsettings.json) to adjust the centerpoint, boundaries, zoomlevel and styling or you can change these directly in the manager app, under 'settings/appearance'. \
If you want to fully customize styling, you can use [Mapbox Studio](https://www.mapbox.com/mapbox-studio) to create your style and copy it into mapsettings.
### Apps (/ui/app)
-Here you can add your own custom applications. You can use the Manager app as a template to get started. View this page for more information on [working on the UI](../../developer-guide/working-on-ui-and-apps.md) and using components.
+Here you can add your own custom applications. You can use the Manager app as a template to get started. View this page for more information on [working on the UI](../../developer-guide/110-working-on-ui-and-apps.md) and using components.
### Setting environment variables and Docker volume mappings for services
The following Docker Compose file details all of the environment variables (e.g. for e-mail or push notifications) and common volume mappings that you may want to use:
diff --git a/docs/user-guide/010-deploying/20-configuring-the-manager-ui.md b/docs/user-guide/010-deploying/20-configuring-the-manager-ui.md
new file mode 100644
index 00000000..3368b7ad
--- /dev/null
+++ b/docs/user-guide/010-deploying/20-configuring-the-manager-ui.md
@@ -0,0 +1,5 @@
+# Configuring the Manager UI
+
+The settings option 'Appearance' can be used in a [custom deployment](./10-custom-deployment.md). You can use it to style your deployment and configure how the pages of the Manager display the assets and attributes in your system. Some of these settings can be changed visually in the user interface, others can be set when selecting the JSON editor. The configuration gets stored in the manager_config file.
+
+See [Manager UI - Appearance](../020-manager-ui/30-appearance.md) on how to configure the manager appearance.
diff --git a/docs/user-guide/deploying/aws-cloudformation.md b/docs/user-guide/010-deploying/30-aws-cloudformation.md
similarity index 99%
rename from docs/user-guide/deploying/aws-cloudformation.md
rename to docs/user-guide/010-deploying/30-aws-cloudformation.md
index 78da16e0..ca31739d 100644
--- a/docs/user-guide/deploying/aws-cloudformation.md
+++ b/docs/user-guide/010-deploying/30-aws-cloudformation.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# AWS CloudFormation
The CloudFormation template can be found at [cloudformation-create-vpc.yml](https://github.com/openremote/openremote/blob/master/.ci_cd/aws/cloudformation-create-vpc.yml).
diff --git a/docs/user-guide/deploying/aws-marketplace.md b/docs/user-guide/010-deploying/40-aws-marketplace.md
similarity index 99%
rename from docs/user-guide/deploying/aws-marketplace.md
rename to docs/user-guide/010-deploying/40-aws-marketplace.md
index 19bec02d..8be63c5a 100644
--- a/docs/user-guide/deploying/aws-marketplace.md
+++ b/docs/user-guide/010-deploying/40-aws-marketplace.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 4
----
-
# AWS Marketplace
This guide explains how to provision/configure OpenRemote via the AWS Marketplace.
diff --git a/docs/user-guide/deploying/kubernetes.md b/docs/user-guide/010-deploying/50-kubernetes.md
similarity index 98%
rename from docs/user-guide/deploying/kubernetes.md
rename to docs/user-guide/010-deploying/50-kubernetes.md
index abf8e1bc..de0fa48d 100644
--- a/docs/user-guide/deploying/kubernetes.md
+++ b/docs/user-guide/010-deploying/50-kubernetes.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 5
----
-
# Kubernetes
In addition to being deployed with docker compose, the containers making up an OpenRemote stack can also be deployed under kubernetes.
diff --git a/docs/user-guide/deploying/openremote-cli.md b/docs/user-guide/010-deploying/60-openremote-cli.md
similarity index 99%
rename from docs/user-guide/deploying/openremote-cli.md
rename to docs/user-guide/010-deploying/60-openremote-cli.md
index c918a509..0dd70680 100644
--- a/docs/user-guide/deploying/openremote-cli.md
+++ b/docs/user-guide/010-deploying/60-openremote-cli.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 6
----
-
# OpenRemote CLI
The `openremote-cli` (or `or` for short) is a command line tool that can be used for deploying the OpenRemote stack, note that this tool is still in `beta`.
diff --git a/docs/user-guide/deploying/balena-deployment.md b/docs/user-guide/010-deploying/70-balena-deployment.md
similarity index 99%
rename from docs/user-guide/deploying/balena-deployment.md
rename to docs/user-guide/010-deploying/70-balena-deployment.md
index f6891fbc..62bf86fa 100644
--- a/docs/user-guide/deploying/balena-deployment.md
+++ b/docs/user-guide/010-deploying/70-balena-deployment.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 7
----
-
# Balena Deployment
This README will give some basics of Balena and how to deploy an OpenRemote image to a Balena fleet.
diff --git a/docs/user-guide/deploying/release-management.md b/docs/user-guide/010-deploying/80-release-management.md
similarity index 96%
rename from docs/user-guide/deploying/release-management.md
rename to docs/user-guide/010-deploying/80-release-management.md
index 2c96b49e..914cf38a 100644
--- a/docs/user-guide/deploying/release-management.md
+++ b/docs/user-guide/010-deploying/80-release-management.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 8
----
-
# Release Management
Software releases are created to be able to run OpenRemote in a reproducible and controlled manner.
@@ -22,7 +18,7 @@ Besides the version tags you can also use the "latest" and "develop" tags which
## Custom Projects
-When using a [custom deployment](custom-deployment.md) you need to specify what OpenRemote version it customizes.
+When using a [custom deployment](./10-custom-deployment.md) you need to specify what OpenRemote version it customizes.
A custom project always depends on the following versioned OpenRemote Manager artifacts:
@@ -54,7 +50,7 @@ E.g. if the next version will be 1.3.0 use the following versions:
### Using ORLib
-Optionally you can also add a custom Android or iOS App using the [mobile consoles](../../developer-guide/working-on-the-mobile-consoles.md) to your custom project.
+Optionally you can also add a custom Android or iOS App using the [mobile consoles](../../developer-guide/140-working-on-the-mobile-consoles.md) to your custom project.
For this you can use the ORLib library which simplifies integrating OpenRemote into your App.
ORLib has its own release cycle because it is maintained in separate repositories and is only released when there are changes.
diff --git a/docs/user-guide/deploying/_category_.json b/docs/user-guide/010-deploying/_category_.json
similarity index 81%
rename from docs/user-guide/deploying/_category_.json
rename to docs/user-guide/010-deploying/_category_.json
index 0c28b8d3..f8427ecb 100644
--- a/docs/user-guide/deploying/_category_.json
+++ b/docs/user-guide/010-deploying/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Deploying",
- "position": 1,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/deploying/img/or-aws-marketplace-architecture.png b/docs/user-guide/010-deploying/img/or-aws-marketplace-architecture.png
similarity index 100%
rename from docs/user-guide/deploying/img/or-aws-marketplace-architecture.png
rename to docs/user-guide/010-deploying/img/or-aws-marketplace-architecture.png
diff --git a/docs/user-guide/manager-ui/manager-ui.md b/docs/user-guide/020-manager-ui/10-manager-ui.md
similarity index 84%
rename from docs/user-guide/manager-ui/manager-ui.md
rename to docs/user-guide/020-manager-ui/10-manager-ui.md
index 75fd2a91..e6c90a02 100644
--- a/docs/user-guide/manager-ui/manager-ui.md
+++ b/docs/user-guide/020-manager-ui/10-manager-ui.md
@@ -1,10 +1,10 @@
---
-sidebar_position: 1
+slug: /user-guide/manager-ui/
---
# Manager UI
-The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../identity-and-security/realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8).
+The Manager UI is the dashboard which gives you access to OpenRemote, and allows you to configure, monitor, and control your IoT platform. You can access it at `https://localhost` for the master realm, or at `https://localhost/manager/?realm=yourrealm`, for a specific [realm](../070-identity-and-security/10-realms-users-and-roles.md#realms). We'll explain the main features of the Manager UI, sometimes referring to examples from the [online Demo](https://openremote.io/demo/), for which you only have access in 'read' mode. To have full 'admin' access to all functionality you will first need to [install OpenRemote](https://github.com/openremote/openremote/blob/master/README.md). If you prefer watching a video, rather than reading, check out the [Introduction Videos](https://youtu.be/4MhxwfbOao8).
To access the Manager you will first need to login with the correct credentials (admin/secret for your local installation). Note that our account management and identity service includes features like a 'forgot password' flow. See [Realms](#realms), [Users and Roles](#users-and-access-configuration) for more details.
@@ -14,12 +14,12 @@ If you open the application you will get four main pages: [Map](#map), [Assets](
The `Map` page will show your map. You can pan, zoom, and tilt the map. On the map all assets are shown which have a location (disable it by setting the configuration item `show on dashboard` to `false`). Assets can have static or dynamic locations (e.g. a car, boat or plane). You will see the direction an asset is facing or moving to if the asset includes an attribute called 'direction'. When selecting an asset, a panel will show its attributes and values. The `Asset details` button in this panel will bring you to the respective Asset page.
-As part of the [configuring the manager UI](../deploying/configuring-the-manager-ui.md) you can also configure assets to change their colour based on an attribute value (number, boolean, or string) and show a label with or without units.
+As part of the [configuring the manager UI](../010-deploying/20-configuring-the-manager-ui.md) you can also configure assets to change their colour based on an attribute value (number, boolean, or string) and show a label with or without units.

_Figure 1. The Map view, here with the Demo Smart City, showing the map with different assets across the city as well as an additional map layer showing primary and secondary highways (GeoJSON). The ship is also showing its direction_
-For more see the [appearance page](./appearance.md#map-settings).
+For more see the [appearance page](./30-appearance.md#map-settings).
## Assets
@@ -56,12 +56,12 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op
| `Access public write` | Users can write without authentication |
| `Access restricted read` | Restricted users can read if they have read attribute access to the asset |
| `Access restricted write` | Restricted users can write if they have write attribute access to the asset |
-| `Agent link` | Define the Agent from which data is retrieved including data parsing, see [agent links](../agents-protocols/overview.md#agent-links) |
+| `Agent link` | Define the Agent from which data is retrieved including data parsing, see [agent links](../040-agents-protocols/010-overview.md#agent-links) |
| `Apply predicted data points` | Automatically apply predicted value as actual value when timestamp matches |
-| `Attribute links` | Filter and parse multiple values retrieved with an Agent link, see [example](../../tutorials/open-weather-api-using-http-agent.md#step-4---setting-multiple-attributes-with-one-agent-link) |
+| `Attribute links` | Filter and parse multiple values retrieved with an Agent link, see [example](../../tutorials/020-open-weather-api-using-http-agent.md#step-4---setting-multiple-attributes-with-one-agent-link) |
| `Constraints` | Value constraints applied to the value (size/length, regex, not empty, etc.) |
| `Data points max age days` | Time period for which data is stored |
-| `Forecast` | Adds [forecasting data](../rules-and-forecasting/forecasting.md), to be used in combination with 'Has predicted data points' |
+| `Forecast` | Adds [forecasting data](../060-rules-and-forecasting/50-forecasting.md), to be used in combination with 'Has predicted data points' |
| `Format` | Used for data parsing, see [format for available options](https://github.com/openremote/openremote/blob/201cc15451a2cd040a6ab9e699cbec5297821e80/model/src/main/java/org/openremote/model/value/ValueFormat.java#L37) |
| `Has predicted data points` | Enable the option to add forecasted values |
| `Label` | Add a friendly name, replacing the default name |
@@ -75,14 +75,14 @@ While in `Edit asset` mode you can expand each attribute, which gives you the op
| `Secret` | Marks the value as secret indicating clients to display this in a concealed manner |
| `Show on dashboard` | Used in combination with 'location' will display asset on the Map view |
| `Store data points` | Stores data points in the database, default for one month |
-| `Units` | Adds a unit to the attribute value, see [composition and options](../assets-agents-and-attributes.md#attribute-descriptor) |
-| `User connected` | Shows all restricted users which have access to this asset, see [Restricted user realm role](../identity-and-security/realms-users-and-roles.md#restricted-user-realm-role) |
+| `Units` | Adds a unit to the attribute value, see [composition and options](../030-assets-agents-and-attributes.md#attribute-descriptor) |
+| `User connected` | Shows all restricted users which have access to this asset, see [Restricted user realm role](../070-identity-and-security/10-realms-users-and-roles.md#restricted-user-realm-role) |
-See the documentation page [explaining all available configuration item options for assets and attributes, and references](../assets-agents-and-attributes.md#asset-type-model). Don't forget to save the asset after making changes.
+See the documentation page [explaining all available configuration item options for assets and attributes, and references](../030-assets-agents-and-attributes.md#asset-type-model). Don't forget to save the asset after making changes.
### Create an agent
-Agents are a specific type of asset used to connect to external sensors, actuators, gateways, or services using protocols. They are added in the same manner as assets by clicking the `+` in the header of the asset tree. This will open a modal that shows the available agent types at the top of the list. You will see the generic ones: [HTTP](../agents-protocols/http.md), [WebSocket](../agents-protocols/websocket-agent.md), [MQTT](../agents-protocols/mqtt.md), [TCP](../agents-protocols/tcp.md), [UDP](../agents-protocols/udp.md) and [SNMP](../agents-protocols/snmp.md); as well as more specific ones like [Z-Wave](../agents-protocols/z-wave), [KNX](../agents-protocols/knx) or [Velbus](../agents-protocols/velbus.md).
+Agents are a specific type of asset used to connect to external sensors, actuators, gateways, or services using protocols. They are added in the same manner as assets by clicking the `+` in the header of the asset tree. This will open a modal that shows the available agent types at the top of the list. You will see the generic ones: [HTTP](../040-agents-protocols/050-http.md), [WebSocket](../040-agents-protocols/170-websocket-agent.md), [MQTT](../040-agents-protocols/090-mqtt.md), [TCP](../040-agents-protocols/130-tcp.md), [UDP](../040-agents-protocols/150-udp.md) and [SNMP](../040-agents-protocols/110-snmp.md); as well as more specific ones like [Z-Wave](../agents-protocols/z-wave), [KNX](../agents-protocols/knx) or [Velbus](../040-agents-protocols/160-velbus.md).
Once you create an Agent, the agent page will display the relevant attributes, required to establish an actual connection to the external world.
Some Agents have auto discovery (e.g. Z-Wave) or use configuration files (e.g. KNX and Velbus). The Agent page will show a discovery button or a file selector. Once set correctly, the Agent will also create an additional asset/attribute structure for all discovered or configured assets.
@@ -95,7 +95,7 @@ Note that you can also connect to OpenRemote through the Manager APIs without us
### Link agents and assets
-If the Agent doesn't support discovery or configuration files, you will manually need to link data coming in through your agents to the attributes of your assets. We use [configuration items](../assets-agents-and-attributes.md) on attributes such as `Agent link` and `Attribute link` for that. See the tutorial for connecting to [OpenWeatherMap via an HTTP Agent to a Weather asset](../../tutorials/open-weather-api-using-http-agent.md).
+If the Agent doesn't support discovery or configuration files, you will manually need to link data coming in through your agents to the attributes of your assets. We use [configuration items](../030-assets-agents-and-attributes.md) on attributes such as `Agent link` and `Attribute link` for that. See the tutorial for connecting to [OpenWeatherMap via an HTTP Agent to a Weather asset](../../tutorials/020-open-weather-api-using-http-agent.md).
### Filtering assets and agents
@@ -132,18 +132,18 @@ The scheduler (right next to the name field of the rule) lets you set an occurre

_Figure 8. The Rules trigger frequency (right) as well as time scheduler (left) defines when rules are triggered and active. The scheduled example sets the rule to be active until June 20 2022, only on weekdays._
-See the [When-Then rules](../rules-and-forecasting/when-then-rules.md) documentation for more details.
+See the [When-Then rules](../060-rules-and-forecasting/20-when-then-rules.md) documentation for more details.
### Flow Rules
-Flow rules can be used to fill (new) attributes with processed other attributes. In the visual editor you can use `Input` (blue), `Processor` (green), and `Output` (purple) nodes, and wire them up. See the [Flow Rules](../rules-and-forecasting/flow-rules.md) documentation for more details.
+Flow rules can be used to fill (new) attributes with processed other attributes. In the visual editor you can use `Input` (blue), `Processor` (green), and `Output` (purple) nodes, and wire them up. See the [Flow Rules](../060-rules-and-forecasting/30-flow-rules.md) documentation for more details.

_Figure 9. Flow rules to process data_
### Groovy Rules
-Groovy rules are intended for more advanced processing and automation (see an example in figure 10). For more information see [Groovy Rules](../rules-and-forecasting/groovy-rules.md).
+Groovy rules are intended for more advanced processing and automation (see an example in figure 10). For more information see [Groovy Rules](../060-rules-and-forecasting/40-groovy-rules.md).

_Figure 10. Groovy rules for more advanced processing, logic or automation_
@@ -157,7 +157,7 @@ As an admin user of the system who can access all realms, you have the option to
Services are additional applications that work alongside OpenRemote to add extra features and tools to your system. You'll see them listed on the Services page, giving you access to additional functionality like for example advanced forecasting, device management tools, or custom integrations. Your administrator can add specific services to OpenRemote. OpenRemote also distributes generic services which are considered to have value to many users.
### Service ML forecasting with multiple regressors
-OpenRemote includes a [ML forecasting service](../services/service-ml-forecast.md), which can be used for time series forecasting with an expected dependency on multiple other variables. An example is forecasting the published energy tariffs on the EPEX Spot market, for which you expect a dependency on the amount of sun and wind.
+OpenRemote includes a [ML forecasting service](../100-services/20-service-ml-forecast.md), which can be used for time series forecasting with an expected dependency on multiple other variables. An example is forecasting the published energy tariffs on the EPEX Spot market, for which you expect a dependency on the amount of sun and wind.
## Insights
@@ -165,9 +165,9 @@ The Insights page (see figure 11) allows you to create multiple dashboards withi
* Define the dashboard behaviour for different screen sizes and optimise the design for a specific screen.
* Share dashboards with other users even as standalone app, or keep your dashboard private.
* Make dashboards public. Note this requires assets to be set as 'public' and attributes as 'public read'.
-* Share via the [iOS or Android console](on-mobile.md) and benefit push notifications (see figure 12).
-* Use nine types of widgets (or [extend with your own](../../developer-guide/adding-widgets-on-insights.md)): Line Chart, Bar Chart, KPI, Gauge, Image, Map, Table, Attribute (with control) and Gateway.
-* The gateway widget allows for opening the Manager UI of OpenRemote instances connected as gateways to this instance. See [Gateway tunnelling setup](../../developer-guide/gateway-tunnelling-setup.md) for the technical configuration.
+* Share via the [iOS or Android console](./20-on-mobile.md) and benefit push notifications (see figure 12).
+* Use nine types of widgets (or [extend with your own](../../developer-guide/120-adding-widgets-on-insights.md)): Line Chart, Bar Chart, KPI, Gauge, Image, Map, Table, Attribute (with control) and Gateway.
+* The gateway widget allows for opening the Manager UI of OpenRemote instances connected as gateways to this instance. See [Gateway tunnelling setup](../../developer-guide/070-gateway-tunnelling-setup.md) for the technical configuration.

_Figure 11. Example of an Insights dashboard, showing a dashboard with eight different types of widgets._
@@ -195,7 +195,7 @@ Admin users of the 'Master' realm see the Realm selector on the top right to swi
### Manager interconnect
You can link multiple instances of OpenRemote (as Gateways) to a single Central instance of OpenRemote by creating a Gateway asset in the central instance and linking the Gateway instance of OpenRemote, using the 'Manager interconnect' function. The Gateway in the central instances will show the assets of the linked Gateway instance of OpenRemote, as children of the Gateway asset and will enable bidirectional communication with its attributes. Moreover, to limit traffic, you can select and limit the attributes shown as well as the rate at which they are synchronised with the Central instance.
-See the [Edge Gateway documentation](../gateways-and-devices/edge-gateway.md) for more details.
+See the [Edge Gateway documentation](../080-gateways-and-devices/10-edge-gateway.md) for more details.

_Figure 14. Several OpenRemote instances can be interconnected, e.g. connecting multiple instances on edge gateways to one central cloud hosted instance. The Manager Interconnect page, used at the edge instances (left) uses the keys which are created on the central instance by adding Edge gateway Assets (right)._
@@ -205,7 +205,7 @@ _Figure 15. Next to interconnecting you can choose which asset attributes are ac
### Gateway tunnels
-On top of the 'Manager Interconnect' functionality, you can remotely access the full Manager UI of the Gateway instances of OpenRemote, by creating Gateway tunnels. See the [Edge Gateway documentation](../gateways-and-devices/edge-gateway.md) for more details.
+On top of the 'Manager Interconnect' functionality, you can remotely access the full Manager UI of the Gateway instances of OpenRemote, by creating Gateway tunnels. See the [Edge Gateway documentation](../080-gateways-and-devices/10-edge-gateway.md) for more details.

_Figure 16. Creating a gateway tunnel and opening the manager UI of the remote instance which is connected as a gateway._
@@ -245,7 +245,7 @@ _Figure 19. Creating users for a selected realm, assigning roles. In this exampl
### Roles
-With the correct permissions, you can create and edit roles. These roles define which parts of the system a user is allowed to Read or Write, e.g. system settings, assets, attributes, map, or rules. Also see the userguide: [Realms, users and roles](../identity-and-security/realms-users-and-roles.md).
+With the correct permissions, you can create and edit roles. These roles define which parts of the system a user is allowed to Read or Write, e.g. system settings, assets, attributes, map, or rules. Also see the userguide: [Realms, users and roles](../070-identity-and-security/10-realms-users-and-roles.md).

_Figure 20. Roles are made of a set of permissions_
@@ -259,11 +259,11 @@ You can create a realm by adding a `realmname` name (single word, lower case let

_Figure 21. Realms can be created to manage multiple independent projects within one OpenRemote instance_
-Also see the userguide: [Realms, users and roles](../identity-and-security/realms-users-and-roles.md).
+Also see the userguide: [Realms, users and roles](../070-identity-and-security/10-realms-users-and-roles.md).
### Auto provisioning of devices
-If you are an OEM, developing and producing your own hardware, you can provision your devices and OpenRemote to automatically have your devices connecting, once they get online. Using certificates (we currently support X.509) your devices will register and automatically generate and connect to an asset of a defined type in the OpenRemote Manager (see figure 22). For details, check out the documentation about ['Auto provisioning'](../gateways-and-devices/auto-provisioning.md).
+If you are an OEM, developing and producing your own hardware, you can provision your devices and OpenRemote to automatically have your devices connecting, once they get online. Using certificates (we currently support X.509) your devices will register and automatically generate and connect to an asset of a defined type in the OpenRemote Manager (see figure 22). For details, check out the documentation about ['Auto provisioning'](../080-gateways-and-devices/20-auto-provisioning.md).

_Figure 22. Auto provisioning of devices_
@@ -274,7 +274,7 @@ You can restyle any realm in OpenRemote as well as adjust the map views (go to s
You can change the logo's, use different colours, change the title and default language, set and change the menu items, and use multiple languages for notifications to support personal language preferences.
-For adding map layers you can add GeoJSON files (created e.g. with https://geojson.io/). More advanced settings like visible asset and agent types on the asset and rules page, can be configured directly in a JSON file. For the options available in the JSON file and an example, check out [Configuring the Manager UI](../deploying/configuring-the-manager-ui.md). For the maps you can set the center point, zoom levels and boundaries.
+For adding map layers you can add GeoJSON files (created e.g. with https://geojson.io/). More advanced settings like visible asset and agent types on the asset and rules page, can be configured directly in a JSON file. For the options available in the JSON file and an example, check out [Configuring the Manager UI](../010-deploying/20-configuring-the-manager-ui.md). For the maps you can set the center point, zoom levels and boundaries.

_Figure 23. Appearance settings allow white labeling of your OpenRemote manager_
@@ -297,9 +297,9 @@ The Manager API is composed of three APIs: HTTP, MQTT, and WebSocket:
* MQTT is a publish-subscribe API which allows connecting to our MQTT broker.
* WebSocket API is a publish-subscribe API that is event based.
-More information on these APIs regarding formats and authentication can be found in the documentation for [Manager APIs](../manager-apis.md)
+More information on these APIs regarding formats and authentication can be found in the documentation for [Manager APIs](../050-manager-apis.md)
## See Also
-- [Custom Deployment](../deploying/custom-deployment.md)
-- [Setting up an IDE](../../developer-guide/setting-up-an-ide.md)
-- [Working on the UI](../../developer-guide/working-on-ui-and-apps.md)
+- [Custom Deployment](../010-deploying/10-custom-deployment.md)
+- [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md)
+- [Working on the UI](../../developer-guide/110-working-on-ui-and-apps.md)
diff --git a/docs/user-guide/manager-ui/on-mobile.md b/docs/user-guide/020-manager-ui/20-on-mobile.md
similarity index 80%
rename from docs/user-guide/manager-ui/on-mobile.md
rename to docs/user-guide/020-manager-ui/20-on-mobile.md
index ea934049..23f6ab04 100644
--- a/docs/user-guide/manager-ui/on-mobile.md
+++ b/docs/user-guide/020-manager-ui/20-on-mobile.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# On mobile
The OpenRemote Manager including the Insights dashboards, are responsive and can be used on mobile devices. We have an OpenRemote app in the Apple and Google stores which can be used as well. To make use of the services of mobile devices (e.g. location service and push notifications) you have to build your own app, using the project source code.
@@ -14,7 +10,7 @@ OpenRemote includes consoles for iOS and Android. The current apps we are hostin
1. By default you can view two types of apps for your OpenRemote instance, the 'manager' app and the 'insights' app. The 'manager' app will display all Manager pages, except the 'rules'. The 'insights' page will only show the dashboards created on the Insights page. Basically it allows you to create a simple standalone dashboard app for your users.
-2. Before [deploying OpenRemote](../deploying/custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored.
+2. Before [deploying OpenRemote](../010-deploying/10-custom-deployment.md), you have the possibility to define which apps are ignored for the consoles. Apps reside in [the ui/app folder](https://github.com/openremote/openremote/tree/master/ui/app). By adding an empty `.appignore` file (like in the 'swagger' and 'console_loader' folders), these apps get ignored.
3. Once OpenRemote is deployed and you open the app, on first launch the app asks for 'App Domain', 'Select an app' and 'Enter the Realm'. If you are e.g. hosting an OpenRemote instance and Realm at https://yourhost.com/manager/?realm=yourrealm use the following: 'App Domain' is 'yourhost.com', App is 'manager' or 'insights' and 'Realm' is 'yourrealm'. Switching between domains, apps and realms can be done by long-pressing the app icon on your home screen.
@@ -32,6 +28,6 @@ Once you come to the login page, you are accessing the Manager UI or Insights da
As part of building your own app, using our library of web components, you can use the OpenRemote consoles to leverage functionality of mobile devices, e.g. enable push notifications, use the built-in QR reader, or use geofences. Check out the links below and the code itself if you want to know more.
## See Also
-- [Working on the mobile consoles](../../developer-guide/working-on-the-mobile-consoles.md)
-- [Architecture: Apps and consoles](../../architecture/apps-and-consoles.md)
-- [Configure the mobile app behaviour](../../tutorials/configure-mobile-app-behaviour.md)
+- [Working on the mobile consoles](../../developer-guide/140-working-on-the-mobile-consoles.md)
+- [Architecture: Apps and consoles](../../architecture/60-apps-and-consoles.md)
+- [Configure the mobile app behaviour](../../tutorials/120-configure-mobile-app-behaviour.md)
diff --git a/docs/user-guide/manager-ui/appearance.md b/docs/user-guide/020-manager-ui/30-appearance.md
similarity index 97%
rename from docs/user-guide/manager-ui/appearance.md
rename to docs/user-guide/020-manager-ui/30-appearance.md
index 217bd0b4..3615f2b5 100644
--- a/docs/user-guide/manager-ui/appearance.md
+++ b/docs/user-guide/020-manager-ui/30-appearance.md
@@ -1,12 +1,8 @@
----
-sidebar_position: 3
----
-
# Appearance Page
## Configuring the Manager UI
-The settings option 'Appearance' can be used in a [custom deployment](../deploying/custom-deployment.md). You can use it to style your deployment and configure how the pages of the Manager display the assets and attributes in your system. Some of these settings can be changed visually in the user interface, others can be set when selecting the JSON editor. The configuration gets stored in the manager_config file.
+The settings option 'Appearance' can be used in a [custom deployment](../010-deploying/10-custom-deployment.md). You can use it to style your deployment and configure how the pages of the Manager display the assets and attributes in your system. Some of these settings can be changed visually in the user interface, others can be set when selecting the JSON editor. The configuration gets stored in the manager_config file.
In this user guide we will use an example JSON manager_config and give a short description of each section you could include. Note that some pages have a default config that you can overwrite using the manager_config.
@@ -687,7 +683,7 @@ If you want to adjust the map styling. You can change the map under Map Settings
| Style JSON URL | Override the default map settings with a `style.json` URL (e.g. `https://api.example.com/maps/streets/style.json?key=your_key`) from a Map/Tile provider that supports MapLibre (see [providers](https://github.com/maplibre/awesome-maplibre?tab=readme-ov-file#maptile-providers)). | If you want to configure a different map quickly. |
| Map Layers | After configuring a Style JSON URL you can import it to include the layers allowing you to adjust the map styling. You may optionally configure a Tile server URL (to see more of a map). | If you want to be able to edit the map styling in OpenRemote, but also use an external map. |
| Realm Map Setting | You can set boundaries, zoom levels and center points, as well as add GeoJSON based points, lines and shapes from GeoJSON files. For creating GeoJSON files, you can use e.g. https://geojson.io/. For searching existing GeoJSON map layers, you can use https://overpass-turbo.eu/. | If you want to change focus of the map or add map layers per realm. |
-| Custom Deployment | Configure the map through [custom deployments](../deploying/custom-deployment.md#map-deploymentmap). | If you want full control over the configurations on the server (advanced usage). |
+| Custom Deployment | Configure the map through [custom deployments](../010-deploying/10-custom-deployment.md#map-deploymentmap). | If you want full control over the configurations on the server (advanced usage). |
:::note
OpenRemote picks how to render the map based on the configurations set in the following order: 1) `Style JSON URL` 2) `Import Style Settings` & `Realm Map Styling` 3) `Upload Custom .mbtiles` 4) `Custom Deployment`.
diff --git a/docs/user-guide/manager-ui/geocoding.md b/docs/user-guide/020-manager-ui/40-geocoding.md
similarity index 80%
rename from docs/user-guide/manager-ui/geocoding.md
rename to docs/user-guide/020-manager-ui/40-geocoding.md
index 275eed3a..6a6377a6 100644
--- a/docs/user-guide/manager-ui/geocoding.md
+++ b/docs/user-guide/020-manager-ui/40-geocoding.md
@@ -1,10 +1,6 @@
----
-sidebar_position: 4
----
-
# Geocoding
-OpenRemote includes geocoding support that allows you to search for addresses and locations directly on the map. When enabled, a search box appears in the top-left corner of the [Map](./manager-ui.md#map) page. As you type, results are fetched from the configured [Nominatim](https://nominatim.org/) service (OpenStreetMap's geocoding service) and displayed as suggestions. Selecting a result pans the map to that location.
+OpenRemote includes geocoding support that allows you to search for addresses and locations directly on the map. When enabled, a search box appears in the top-left corner of the [Map](./10-manager-ui.md#map) page. As you type, results are fetched from the configured [Nominatim](https://nominatim.org/) service (OpenStreetMap's geocoding service) and displayed as suggestions. Selecting a result pans the map to that location.
Geocoding provides two capabilities:
- **Forward geocoding** — search by address or place name to find coordinates
@@ -37,7 +33,7 @@ The `mapsettings.json` file is loaded by the manager from the first available lo
3. Docker volume: `/opt/map/mapsettings.json`
4. Default: `manager/src/map/mapsettings.json`
-For more details on map configuration, see [Working on maps](../../developer-guide/working-on-maps.md).
+For more details on map configuration, see [Working on maps](../../developer-guide/130-working-on-maps.md).
### Choosing a geocoding service
@@ -61,7 +57,7 @@ To disable geocoding for a realm, either remove the `geocodeUrl` property from t
:::note
-The geocoding search box only appears when both the `showGeoCodingControl` property on the map component is `true` **and** a valid `geocodeUrl` is present in the realm's map settings. In the Manager app, `showGeoCodingControl` is enabled by default. If you are building custom components, see [Working on maps — Geocoding](../../developer-guide/working-on-maps.md#geocoding) for how to enable it.
+The geocoding search box only appears when both the `showGeoCodingControl` property on the map component is `true` **and** a valid `geocodeUrl` is present in the realm's map settings. In the Manager app, `showGeoCodingControl` is enabled by default. If you are building custom components, see [Working on maps — Geocoding](../../developer-guide/130-working-on-maps.md#geocoding) for how to enable it.
:::
@@ -83,8 +79,8 @@ For more information on setting up Nominatim, see the [Nominatim installation gu
## See Also
-- [Map](./manager-ui.md#map)
-- [Appearance — Map Settings](./appearance.md#map-settings)
-- [Working on maps](../../developer-guide/working-on-maps.md)
-- [Working on maps — Geocoding](../../developer-guide/working-on-maps.md#geocoding)
-- [Custom deployment — Map](../deploying/custom-deployment.md#map-deploymentmap)
+- [Map](./10-manager-ui.md#map)
+- [Appearance — Map Settings](./30-appearance.md#map-settings)
+- [Working on maps](../../developer-guide/130-working-on-maps.md)
+- [Working on maps — Geocoding](../../developer-guide/130-working-on-maps.md#geocoding)
+- [Custom deployment — Map](../010-deploying/10-custom-deployment.md#map-deploymentmap)
diff --git a/docs/user-guide/manager-ui/_category_.json b/docs/user-guide/020-manager-ui/_category_.json
similarity index 81%
rename from docs/user-guide/manager-ui/_category_.json
rename to docs/user-guide/020-manager-ui/_category_.json
index ebec68f3..fd7e30ac 100644
--- a/docs/user-guide/manager-ui/_category_.json
+++ b/docs/user-guide/020-manager-ui/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Manager UI",
- "position": 2,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/manager-ui/img/add-attribute.png b/docs/user-guide/020-manager-ui/img/add-attribute.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/add-attribute.png
rename to docs/user-guide/020-manager-ui/img/add-attribute.png
diff --git a/docs/user-guide/manager-ui/img/alarms-overview.png b/docs/user-guide/020-manager-ui/img/alarms-overview.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/alarms-overview.png
rename to docs/user-guide/020-manager-ui/img/alarms-overview.png
diff --git a/docs/user-guide/manager-ui/img/appearance-settings.png b/docs/user-guide/020-manager-ui/img/appearance-settings.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/appearance-settings.png
rename to docs/user-guide/020-manager-ui/img/appearance-settings.png
diff --git a/docs/user-guide/manager-ui/img/assets-page.png b/docs/user-guide/020-manager-ui/img/assets-page.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/assets-page.png
rename to docs/user-guide/020-manager-ui/img/assets-page.png
diff --git a/docs/user-guide/manager-ui/img/auto-provisioning-of-devices.png b/docs/user-guide/020-manager-ui/img/auto-provisioning-of-devices.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/auto-provisioning-of-devices.png
rename to docs/user-guide/020-manager-ui/img/auto-provisioning-of-devices.png
diff --git a/docs/user-guide/manager-ui/img/create-agent1.png b/docs/user-guide/020-manager-ui/img/create-agent1.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/create-agent1.png
rename to docs/user-guide/020-manager-ui/img/create-agent1.png
diff --git a/docs/user-guide/manager-ui/img/create-agent2.png b/docs/user-guide/020-manager-ui/img/create-agent2.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/create-agent2.png
rename to docs/user-guide/020-manager-ui/img/create-agent2.png
diff --git a/docs/user-guide/manager-ui/img/create-asset.png b/docs/user-guide/020-manager-ui/img/create-asset.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/create-asset.png
rename to docs/user-guide/020-manager-ui/img/create-asset.png
diff --git a/docs/user-guide/gateways-and-devices/img/create-gateway-tunnel.png b/docs/user-guide/020-manager-ui/img/create-gateway-tunnel.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/create-gateway-tunnel.png
rename to docs/user-guide/020-manager-ui/img/create-gateway-tunnel.png
diff --git a/docs/user-guide/manager-ui/img/creating-dashboard-apps.png b/docs/user-guide/020-manager-ui/img/creating-dashboard-apps.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/creating-dashboard-apps.png
rename to docs/user-guide/020-manager-ui/img/creating-dashboard-apps.png
diff --git a/docs/user-guide/manager-ui/img/creating-service-users.png b/docs/user-guide/020-manager-ui/img/creating-service-users.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/creating-service-users.png
rename to docs/user-guide/020-manager-ui/img/creating-service-users.png
diff --git a/docs/user-guide/manager-ui/img/creating-users.png b/docs/user-guide/020-manager-ui/img/creating-users.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/creating-users.png
rename to docs/user-guide/020-manager-ui/img/creating-users.png
diff --git a/docs/user-guide/manager-ui/img/edit-account-change-password.png b/docs/user-guide/020-manager-ui/img/edit-account-change-password.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/edit-account-change-password.png
rename to docs/user-guide/020-manager-ui/img/edit-account-change-password.png
diff --git a/docs/user-guide/manager-ui/img/filtering-assets.png b/docs/user-guide/020-manager-ui/img/filtering-assets.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/filtering-assets.png
rename to docs/user-guide/020-manager-ui/img/filtering-assets.png
diff --git a/docs/user-guide/manager-ui/img/flow-rules.png b/docs/user-guide/020-manager-ui/img/flow-rules.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/flow-rules.png
rename to docs/user-guide/020-manager-ui/img/flow-rules.png
diff --git a/docs/user-guide/manager-ui/img/groovy-rules.png b/docs/user-guide/020-manager-ui/img/groovy-rules.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/groovy-rules.png
rename to docs/user-guide/020-manager-ui/img/groovy-rules.png
diff --git a/docs/user-guide/manager-ui/img/insights-dashboard.png b/docs/user-guide/020-manager-ui/img/insights-dashboard.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/insights-dashboard.png
rename to docs/user-guide/020-manager-ui/img/insights-dashboard.png
diff --git a/docs/user-guide/manager-ui/img/insights-view.png b/docs/user-guide/020-manager-ui/img/insights-view.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/insights-view.png
rename to docs/user-guide/020-manager-ui/img/insights-view.png
diff --git a/docs/user-guide/manager-ui/img/logs-page.png b/docs/user-guide/020-manager-ui/img/logs-page.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/logs-page.png
rename to docs/user-guide/020-manager-ui/img/logs-page.png
diff --git a/docs/user-guide/manager-ui/img/manager-interconnect-rate-limiting.png b/docs/user-guide/020-manager-ui/img/manager-interconnect-rate-limiting.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/manager-interconnect-rate-limiting.png
rename to docs/user-guide/020-manager-ui/img/manager-interconnect-rate-limiting.png
diff --git a/docs/user-guide/manager-ui/img/manager-interconnect.png b/docs/user-guide/020-manager-ui/img/manager-interconnect.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/manager-interconnect.png
rename to docs/user-guide/020-manager-ui/img/manager-interconnect.png
diff --git a/docs/user-guide/manager-ui/img/map-page.png b/docs/user-guide/020-manager-ui/img/map-page.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/map-page.png
rename to docs/user-guide/020-manager-ui/img/map-page.png
diff --git a/docs/user-guide/manager-ui/img/or-app-colors.jpg b/docs/user-guide/020-manager-ui/img/or-app-colors.jpg
similarity index 100%
rename from docs/user-guide/manager-ui/img/or-app-colors.jpg
rename to docs/user-guide/020-manager-ui/img/or-app-colors.jpg
diff --git a/docs/user-guide/manager-ui/img/realms.png b/docs/user-guide/020-manager-ui/img/realms.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/realms.png
rename to docs/user-guide/020-manager-ui/img/realms.png
diff --git a/docs/user-guide/manager-ui/img/role-with-permissions.png b/docs/user-guide/020-manager-ui/img/role-with-permissions.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/role-with-permissions.png
rename to docs/user-guide/020-manager-ui/img/role-with-permissions.png
diff --git a/docs/user-guide/manager-ui/img/time-scheduler-rules-trigger-frequency.png b/docs/user-guide/020-manager-ui/img/time-scheduler-rules-trigger-frequency.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/time-scheduler-rules-trigger-frequency.png
rename to docs/user-guide/020-manager-ui/img/time-scheduler-rules-trigger-frequency.png
diff --git a/docs/user-guide/manager-ui/img/use-app-to-view-demo.png b/docs/user-guide/020-manager-ui/img/use-app-to-view-demo.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/use-app-to-view-demo.png
rename to docs/user-guide/020-manager-ui/img/use-app-to-view-demo.png
diff --git a/docs/user-guide/manager-ui/img/when-then-example.png b/docs/user-guide/020-manager-ui/img/when-then-example.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/when-then-example.png
rename to docs/user-guide/020-manager-ui/img/when-then-example.png
diff --git a/docs/user-guide/assets-agents-and-attributes.md b/docs/user-guide/030-assets-agents-and-attributes.md
similarity index 98%
rename from docs/user-guide/assets-agents-and-attributes.md
rename to docs/user-guide/030-assets-agents-and-attributes.md
index c0a3e285..35148f05 100644
--- a/docs/user-guide/assets-agents-and-attributes.md
+++ b/docs/user-guide/030-assets-agents-and-attributes.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# Assets, Agents and Attributes
## Assets
@@ -17,7 +13,7 @@ You enable this by setting the `storeDataPoints` meta item on the attribute.
By default, the history is kept for one month but this can be configured using the `dataPointsMaxAgeDays` meta item.
Once enabled, on the asset page in the manager UI, you'll see a History panel, and you'll be able to select this attribute from a dropdown menu.
This displays a line graph of the attribute values over a configurable period of time.
-This also allows you to use that attribute in graphs in [Insights](manager-ui/manager-ui.md#insights) dashboards.
+This also allows you to use that attribute in graphs in [Insights](./020-manager-ui/10-manager-ui.md#insights) dashboards.
### Predicted Datapoints
@@ -31,7 +27,7 @@ If in addition, you set the `applyPredictedDataPoints` meta item on the attribut
As well as having a value an attribute can have configuration items (called 'meta items' in the code) which control the behaviour of the attribute (link it to an agent for read/write from/to external systems, link to another attribute, configure historical value storage, and much more). Each attribute can have one or more meta items which is essentially a well known named value (metadata) that can be used in various parts of the system to control behaviour of the associated attribute (e.g. an `agentLink` meta item is used to connect an attribute to an agent/protocol).
## Agents
-Agents are a special type of asset which link external services/devices with your OpenRemote system via protocols (HTTP/TCP/...). The agent itself holds the configuration parameters as attributes and this configuration is passed to an instance of the corresponding protocol; there is a one-to-one relationship between an agent and a protocol instance. [Read more about agents](agents-protocols/overview.md)
+Agents are a special type of asset which link external services/devices with your OpenRemote system via protocols (HTTP/TCP/...). The agent itself holds the configuration parameters as attributes and this configuration is passed to an instance of the corresponding protocol; there is a one-to-one relationship between an agent and a protocol instance. [Read more about agents](./040-agents-protocols/010-overview.md)
## Asset tree
Assets can be structured in a hierarchical tree to define some logical hierarchy for a particular use case (e.g. A city has buildings, which has floors, which have presence sensors).
diff --git a/docs/user-guide/agents-protocols/overview.md b/docs/user-guide/040-agents-protocols/010-overview.md
similarity index 99%
rename from docs/user-guide/agents-protocols/overview.md
rename to docs/user-guide/040-agents-protocols/010-overview.md
index f87f173e..38acc3b8 100644
--- a/docs/user-guide/agents-protocols/overview.md
+++ b/docs/user-guide/040-agents-protocols/010-overview.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Overview
[Agents](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/asset/agent/Agent.java) are a special type of asset which link external services/devices with your OpenRemote system via protocols; agents can be put into the following categories:
diff --git a/docs/user-guide/agents-protocols/bluetooth-mesh.md b/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md
similarity index 96%
rename from docs/user-guide/agents-protocols/bluetooth-mesh.md
rename to docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md
index 90b14116..526f3091 100644
--- a/docs/user-guide/agents-protocols/bluetooth-mesh.md
+++ b/docs/user-guide/040-agents-protocols/020-bluetooth-mesh.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Bluetooth Mesh
Connect to a Bluetooth Mesh network via a Bluetooth Mesh proxy. Note that only Linux Docker host systems with a `bluez` protocol stack is supported.
@@ -43,7 +39,7 @@ The following describes the supported agent configuration attributes:
| `sequenceNumber` | Bluetooth Mesh sequence number - if omitted default value is 1 | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | N |
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
diff --git a/docs/user-guide/agents-protocols/chirpstack.md b/docs/user-guide/040-agents-protocols/030-chirpstack.md
similarity index 98%
rename from docs/user-guide/agents-protocols/chirpstack.md
rename to docs/user-guide/040-agents-protocols/030-chirpstack.md
index 15c6a343..efe5d6a1 100644
--- a/docs/user-guide/agents-protocols/chirpstack.md
+++ b/docs/user-guide/040-agents-protocols/030-chirpstack.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
import AssetTypes from './_lorawan-asset-types.md';
# ChirpStack
@@ -123,4 +119,4 @@ a84043d8d1842176,Dragino LHT65 2,DraginoLHT65Asset,dragino,lht65,1.8
### Reference Documentation
-* **[Agent Link Overview](overview.md)**: Deep dive into generic OpenRemote attributes like filters and predicates.
\ No newline at end of file
+* **[Agent Link Overview](./010-overview.md)**: Deep dive into generic OpenRemote attributes like filters and predicates.
\ No newline at end of file
diff --git a/docs/user-guide/agents-protocols/email.md b/docs/user-guide/040-agents-protocols/040-email.md
similarity index 92%
rename from docs/user-guide/agents-protocols/email.md
rename to docs/user-guide/040-agents-protocols/040-email.md
index 679baf0a..3a8cd3bd 100644
--- a/docs/user-guide/agents-protocols/email.md
+++ b/docs/user-guide/040-agents-protocols/040-email.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 4
----
-
# E-mail
OpenRemote includes an e-mail client which can connect to your mail service. Through an e-mail agent you can receive e-mails and process the text into attribute values. Based on sending address and title data gets automatically linked to the correct asset in your instance.
diff --git a/docs/user-guide/agents-protocols/http.md b/docs/user-guide/040-agents-protocols/050-http.md
similarity index 97%
rename from docs/user-guide/agents-protocols/http.md
rename to docs/user-guide/040-agents-protocols/050-http.md
index 70c530f9..511dc579 100644
--- a/docs/user-guide/agents-protocols/http.md
+++ b/docs/user-guide/040-agents-protocols/050-http.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 5
----
-
# HTTP
Connect to a HTTP(S) Server.
@@ -32,7 +28,7 @@ The following describes the supported agent configuration attributes:
```
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
> For clarification; to inject a body into an HTTP request, you can use the `write value` field.
diff --git a/docs/user-guide/agents-protocols/knx.md b/docs/user-guide/040-agents-protocols/060-knx.md
similarity index 92%
rename from docs/user-guide/agents-protocols/knx.md
rename to docs/user-guide/040-agents-protocols/060-knx.md
index e45a1f5d..80148fc5 100644
--- a/docs/user-guide/agents-protocols/knx.md
+++ b/docs/user-guide/040-agents-protocols/060-knx.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 6
----
-
# KNX
Connect to a KNX network via a KNX IP Interface/Router.
@@ -18,7 +14,7 @@ The following describes the supported agent configuration attributes:
| `messageSourceAddress` | Source group address | Text (KNX Group Address e.g. `1.1.1`) | N (Default = `0.0.0`) |
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
@@ -29,7 +25,7 @@ For attributes linked to this agent, the following describes the supported agent
## Discovery and Import
-To understand discovery and import refer to [Agent and Asset Discovery/Import](overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
+To understand discovery and import refer to [Agent and Asset Discovery/Import](./010-overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
* Protocol Asset Import (`*.knxproj`)
diff --git a/docs/user-guide/agents-protocols/lora.md b/docs/user-guide/040-agents-protocols/070-lora.md
similarity index 88%
rename from docs/user-guide/agents-protocols/lora.md
rename to docs/user-guide/040-agents-protocols/070-lora.md
index c9a3bcd0..9481defb 100644
--- a/docs/user-guide/agents-protocols/lora.md
+++ b/docs/user-guide/040-agents-protocols/070-lora.md
@@ -1,17 +1,13 @@
----
-sidebar_position: 7
----
-
# LoRa
The documentation on this page focuses on custom protocol implementations built directly on top of the **LoRa PHY (Physical Layer)**, such as mesh networks, rather than standard LoRaWAN network server integrations.
:::note
For standard **LoRaWAN** network server support, please refer to the following protocol documentation:
-* **[ChirpStack](chirpstack.md)**
-* **[The Things Stack (TTS)](the-things-stack.md)**
+* **[ChirpStack](./030-chirpstack.md)**
+* **[The Things Stack (TTS)](./140-the-things-stack.md)**
-If you require a technical deep dive into manual configuration of MQTT agent links, see the **[Manual ChirpStack Tutorial](../../tutorials/receive-lorawan-sensor-data-from-chirpstack.md)**.
+If you require a technical deep dive into manual configuration of MQTT agent links, see the **[Manual ChirpStack Tutorial](../../tutorials/040-receive-lorawan-sensor-data-from-chirpstack.md)**.
:::
## Proof of concept for LoRa mesh network for GPS trackers
diff --git a/docs/user-guide/agents-protocols/modbus.md b/docs/user-guide/040-agents-protocols/080-modbus.md
similarity index 99%
rename from docs/user-guide/agents-protocols/modbus.md
rename to docs/user-guide/040-agents-protocols/080-modbus.md
index fa4f84f8..de1a373b 100644
--- a/docs/user-guide/agents-protocols/modbus.md
+++ b/docs/user-guide/040-agents-protocols/080-modbus.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 8
----
-
# Modbus
The Modbus TCP and RTU agents allow integration of Modbus devices into OpenRemote, enabling communication via Ethernet (TCP) or Serial (RTU).
diff --git a/docs/user-guide/agents-protocols/mqtt.md b/docs/user-guide/040-agents-protocols/090-mqtt.md
similarity index 91%
rename from docs/user-guide/agents-protocols/mqtt.md
rename to docs/user-guide/040-agents-protocols/090-mqtt.md
index a2ec9e73..18aacc8d 100644
--- a/docs/user-guide/agents-protocols/mqtt.md
+++ b/docs/user-guide/040-agents-protocols/090-mqtt.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 9
----
-
# MQTT
There is an MQTT Agent (Client) in OpenRemote that you can use to connect to an external MQTT Broker. First use the MQTT
@@ -10,7 +6,7 @@ the incoming/outgoing data, and give those attributes the configuration item 'Ag
your MQTT Agent and add the parameter Publish Topic or Subscription Topic. We have no extensive documentation yet,
and recommend to [check our forum](https://forum.openremote.io/t/mqtt-agents-publish-subscription/985).
-OpenRemote also has an [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker) (or MQTT API).
+OpenRemote also has an [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker) (or MQTT API).
## Connecting to an MQTT broker using (m)TLS, AWS IoT Core
@@ -64,10 +60,10 @@ The agent attempts to connect, and it successfully authenticates and connects to
## See also
-- [Agent overview](overview.md)
-- [MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker)
+- [Agent overview](./010-overview.md)
+- [MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker)
- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md)
-- [Manager UI Guide](../manager-ui/manager-ui.md)
-- [Custom Deployment](../deploying/custom-deployment.md)
-- [Setting up an IDE](../../developer-guide/setting-up-an-ide.md)
-- [Working on the UI](../../developer-guide/working-on-ui-and-apps.md)
+- [Manager UI Guide](../020-manager-ui/10-manager-ui.md)
+- [Custom Deployment](../010-deploying/10-custom-deployment.md)
+- [Setting up an IDE](../../developer-guide/020-setting-up-an-ide.md)
+- [Working on the UI](../../developer-guide/110-working-on-ui-and-apps.md)
diff --git a/docs/user-guide/agents-protocols/simulator.md b/docs/user-guide/040-agents-protocols/100-simulator.md
similarity index 98%
rename from docs/user-guide/agents-protocols/simulator.md
rename to docs/user-guide/040-agents-protocols/100-simulator.md
index b9b659b4..a56aa2fd 100644
--- a/docs/user-guide/agents-protocols/simulator.md
+++ b/docs/user-guide/040-agents-protocols/100-simulator.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 10
----
-
# Simulator
Simulate a connection to an external service, useful during development when the real service is un-available etc. It can also be used to automatically replay a fixed set of simulated values over a repeating 24h period, or configured with a custom schedule.
@@ -11,7 +7,7 @@ There is no configuration required on the agent for this protocol.
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
diff --git a/docs/user-guide/agents-protocols/snmp.md b/docs/user-guide/040-agents-protocols/110-snmp.md
similarity index 95%
rename from docs/user-guide/agents-protocols/snmp.md
rename to docs/user-guide/040-agents-protocols/110-snmp.md
index c01d628c..997bfc23 100644
--- a/docs/user-guide/agents-protocols/snmp.md
+++ b/docs/user-guide/040-agents-protocols/110-snmp.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 11
----
-
# SNMP
Connect to a SNMP server and listen to SNMP traps.
@@ -17,7 +13,7 @@ The following describes the supported agent configuration attributes:
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
diff --git a/docs/user-guide/agents-protocols/serial.md b/docs/user-guide/040-agents-protocols/120-serial.md
similarity index 83%
rename from docs/user-guide/agents-protocols/serial.md
rename to docs/user-guide/040-agents-protocols/120-serial.md
index d348e7a0..091a8241 100644
--- a/docs/user-guide/agents-protocols/serial.md
+++ b/docs/user-guide/040-agents-protocols/120-serial.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 12
----
-
# Serial
Connect to a Serial Server.
@@ -29,7 +25,7 @@ The following describes the supported agent configuration attributes:
| `serialPort` | Serial port device address (e.g. `COM1` or `/dev/ttyACM0`) | Text | Y |
| `serialBaudrate` | Serial port baudrate | Integer (Default = `38400`) | N |
-As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used.
+As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used.
## Agent link
-For attributes linked to this agent, the `Default` [Agent Link](overview.md#agent-links) should be used with a `type` value of `Default`.
+For attributes linked to this agent, the `Default` [Agent Link](./010-overview.md#agent-links) should be used with a `type` value of `Default`.
diff --git a/docs/user-guide/agents-protocols/tcp.md b/docs/user-guide/040-agents-protocols/130-tcp.md
similarity index 79%
rename from docs/user-guide/agents-protocols/tcp.md
rename to docs/user-guide/040-agents-protocols/130-tcp.md
index 538215c0..404074a8 100644
--- a/docs/user-guide/agents-protocols/tcp.md
+++ b/docs/user-guide/040-agents-protocols/130-tcp.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 13
----
-
# TCP
Connect to a TCP Server.
@@ -14,7 +10,7 @@ The following describes the supported agent configuration attributes:
| `host` | TCP server hostname or IP address | [Hostname or IP address](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L153) | Y |
| `port` | TCP server port | [Port number](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L148) | Y |
-As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](overview.md#generic-agents-io-agents) can also be used.
+As this is a generic IO Agent the optional attributes described in the [Generic Agent Overview](./010-overview.md#generic-agents-io-agents) can also be used.
## Agent link
-For attributes linked to this agent, the `Default` [Agent Link](overview.md#agent-links) should be used with a `type` value of `Default`.
+For attributes linked to this agent, the `Default` [Agent Link](./010-overview.md#agent-links) should be used with a `type` value of `Default`.
diff --git a/docs/user-guide/agents-protocols/the-things-stack.md b/docs/user-guide/040-agents-protocols/140-the-things-stack.md
similarity index 98%
rename from docs/user-guide/agents-protocols/the-things-stack.md
rename to docs/user-guide/040-agents-protocols/140-the-things-stack.md
index a7ad2ec8..d5de76a1 100644
--- a/docs/user-guide/agents-protocols/the-things-stack.md
+++ b/docs/user-guide/040-agents-protocols/140-the-things-stack.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 14
----
-
import AssetTypes from './_lorawan-asset-types.md';
# The Things Stack (TTS)
@@ -145,4 +141,4 @@ a84043d8d1842176,Dragino LHT65 2,DraginoLHT65Asset,dragino,lht65,1.8
### Reference Documentation
-* **[Agent Link Overview](overview.md)**: Deep dive into generic OpenRemote attributes like filters and predicates.
\ No newline at end of file
+* **[Agent Link Overview](./010-overview.md)**: Deep dive into generic OpenRemote attributes like filters and predicates.
\ No newline at end of file
diff --git a/docs/user-guide/agents-protocols/udp.md b/docs/user-guide/040-agents-protocols/150-udp.md
similarity index 90%
rename from docs/user-guide/agents-protocols/udp.md
rename to docs/user-guide/040-agents-protocols/150-udp.md
index 6d36b255..210806c2 100644
--- a/docs/user-guide/agents-protocols/udp.md
+++ b/docs/user-guide/040-agents-protocols/150-udp.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 15
----
-
# UDP
Connect to an UDP Server.
@@ -17,4 +13,4 @@ The following describes the supported agent configuration attributes:
## Agent link
-For attributes linked to this agent, the `Default` [Agent Link](overview.md#agent-links) should be used with a `type` value of `Default`.
+For attributes linked to this agent, the `Default` [Agent Link](./010-overview.md#agent-links) should be used with a `type` value of `Default`.
diff --git a/docs/user-guide/agents-protocols/velbus.md b/docs/user-guide/040-agents-protocols/160-velbus.md
similarity index 99%
rename from docs/user-guide/agents-protocols/velbus.md
rename to docs/user-guide/040-agents-protocols/160-velbus.md
index 2b05b04d..e68b35a9 100644
--- a/docs/user-guide/agents-protocols/velbus.md
+++ b/docs/user-guide/040-agents-protocols/160-velbus.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 16
----
-
# Velbus
Connect to a [Velbus](https://www.velbus.eu/) network using either of the following implementations:
@@ -31,7 +27,7 @@ The following describes the supported agent configuration attributes:
| `timeInjectionInterval` | Time injection interval (s) - as Velbus doesn't have RTC or support daylight saving time so this should be set to about 1hr | [Positive Integer](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/value/ValueType.java#L83) | Y |
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
@@ -40,7 +36,7 @@ For attributes linked to this agent, the following describes the supported agent
| `deviceValueLink` | The Velbus module value to link to | Text (see [below](#device-value-link)) | Y |
## Discovery and Import
-To understand discovery and import refer to [Agent and Asset Discovery/Import](overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
+To understand discovery and import refer to [Agent and Asset Discovery/Import](./010-overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
* Protocol Asset Import (`*.vlp`)
diff --git a/docs/user-guide/agents-protocols/websocket-agent.md b/docs/user-guide/040-agents-protocols/170-websocket-agent.md
similarity index 96%
rename from docs/user-guide/agents-protocols/websocket-agent.md
rename to docs/user-guide/040-agents-protocols/170-websocket-agent.md
index 36b2f5b0..8771d0f8 100644
--- a/docs/user-guide/agents-protocols/websocket-agent.md
+++ b/docs/user-guide/040-agents-protocols/170-websocket-agent.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 17
----
-
# WebSocket
Connect to a WebSocket (`ws`/`wss`) Server.
@@ -20,7 +16,7 @@ The subscription attribute allows a set of subscriptions to be made when the con
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
diff --git a/docs/user-guide/agents-protocols/z-wave.md b/docs/user-guide/040-agents-protocols/180-z-wave.md
similarity index 98%
rename from docs/user-guide/agents-protocols/z-wave.md
rename to docs/user-guide/040-agents-protocols/180-z-wave.md
index 3ceab5bd..b626bca8 100644
--- a/docs/user-guide/agents-protocols/z-wave.md
+++ b/docs/user-guide/040-agents-protocols/180-z-wave.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 18
----
-
# Z-Wave
Connect to a Z-Wave network via a USB stick (tested with [Aeotec Z-Stick Gen5](https://aeotec.com/z-wave-usb-stick)), this protocol requires a `device` mapping for the `manager` Docker container to provide access to the USB stick.
@@ -40,7 +36,7 @@ The following describes the supported agent configuration attributes:
| `serialPort` | Serial port address | Text (`/dev/ttyS0`) | Y |
## Agent link
-For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following describes the supported agent link fields which are in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Field | Description | Value type | Required |
| ------------- | ------------- | ------------- | ------------- |
@@ -50,7 +46,7 @@ For attributes linked to this agent, the following describes the supported agent
| `deviceValue` | The device value to link to this attribute | Text | Y |
## Discovery and Import
-To understand discovery and import refer to [Agent and Asset Discovery/Import](overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
+To understand discovery and import refer to [Agent and Asset Discovery/Import](./010-overview.md#agent-and-asset-discoveryimport). This protocol supports the following:
* Protocol Asset Discovery
diff --git a/docs/user-guide/agents-protocols/openweathermap.md b/docs/user-guide/040-agents-protocols/190-openweathermap.md
similarity index 96%
rename from docs/user-guide/agents-protocols/openweathermap.md
rename to docs/user-guide/040-agents-protocols/190-openweathermap.md
index 52078b3d..de651050 100644
--- a/docs/user-guide/agents-protocols/openweathermap.md
+++ b/docs/user-guide/040-agents-protocols/190-openweathermap.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 19
----
-
# OpenWeatherMap
This agent enables integration with [OpenWeatherMap](https://openweathermap.org/), providing access to weather data via the [One Call 3.0 API](https://openweathermap.org/api/one-call-3#current).
@@ -31,7 +27,7 @@ The following table describes the supported configuration attributes and their p
---
## Agent Link
-For attributes linked to this agent, the following table describes the supported **Agent Link** fields, in addition to the standard [Agent Link](overview.md#agent-links) fields:
+For attributes linked to this agent, the following table describes the supported **Agent Link** fields, in addition to the standard [Agent Link](./010-overview.md#agent-links) fields:
| Attribute | Description | Required | Default |
| ---------- | ------------ | -------- | -------- |
diff --git a/docs/user-guide/agents-protocols/partner-integrations.md b/docs/user-guide/040-agents-protocols/200-partner-integrations.md
similarity index 91%
rename from docs/user-guide/agents-protocols/partner-integrations.md
rename to docs/user-guide/040-agents-protocols/200-partner-integrations.md
index ecbe1c29..ed510865 100644
--- a/docs/user-guide/agents-protocols/partner-integrations.md
+++ b/docs/user-guide/040-agents-protocols/200-partner-integrations.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 20
----
-
# Partner Integrations
Below is a short list of companies who actively offer and maintain integrations with OpenRemote. We refer to their documentation and the original protocol it's based on.
@@ -15,7 +11,7 @@ As we are 100% open source we invite other companies to develop an integration.
Documentation:
- [Seeed Studio Wiki - Deploying OpenRemote on reComputer R1x Manage IoT Devices at the Edge](https://wiki.seeedstudio.com/openremote_r1x00/))
-- [OpenRemote Documentation - Manager APIs - MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker)
+- [OpenRemote Documentation - Manager APIs - MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker)
## Teltonika Networks

@@ -24,7 +20,7 @@ Documentation:
Documentation:
- [Teltonika Wiki - Integrating with OpenRemote](https://wiki.teltonika-networks.com/view/OpenRemote?utm_source=partner&utm_medium=referral&utm_campaign=teltonika-networks-openremote-wiki)
-- [OpenRemote Documentation - Manager APIs - MQTT Broker](../manager-apis.md#mqtt-api-mqtt-broker)
+- [OpenRemote Documentation - Manager APIs - MQTT Broker](../050-manager-apis.md#mqtt-api-mqtt-broker)
## Teltonika Vehicle Telematics

diff --git a/docs/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md b/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md
similarity index 94%
rename from docs/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md
rename to docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md
index 62c3c3dc..b607473d 100644
--- a/docs/user-guide/agents-protocols/disabled-protocols/artnet-dmx-agent.md
+++ b/docs/user-guide/040-agents-protocols/210-disabled-protocols/10-artnet-dmx-agent.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Artnet DMX
:::note
@@ -115,9 +111,9 @@ The structure of the import JSON will directly be translated to the structure of
## See also
-- [Agent overview](../overview.md)
+- [Agent overview](../010-overview.md)
- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md)
-- [Manager UI Guide](../../manager-ui/manager-ui.md)
-- [Custom Deployment](../../deploying/custom-deployment.md)
-- [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md)
-- [Working on the UI](../../../developer-guide/working-on-ui-and-apps.md)
+- [Manager UI Guide](../../020-manager-ui/10-manager-ui.md)
+- [Custom Deployment](../../010-deploying/10-custom-deployment.md)
+- [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md)
+- [Working on the UI](../../../developer-guide/110-working-on-ui-and-apps.md)
diff --git "a/docs/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md" "b/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md"
similarity index 88%
rename from "docs/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md"
rename to "docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md"
index 42d5f48e..c5839d65 100644
--- "a/docs/user-guide/agents-protocols/disabled-protocols/ikea-tr\303\245dfri-agent.md"
+++ "b/docs/user-guide/040-agents-protocols/210-disabled-protocols/20-ikea-tr\303\245dfri-agent.md"
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# IKEA TRÅDFRI
:::note
@@ -57,9 +53,9 @@ The protocol connection status changes to `CONNECTED` as soon as an IKEA TRÅDFR
## See also
-- [Agent overview](../overview.md)
+- [Agent overview](../010-overview.md)
- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md)
-- [Manager UI Guide](../../manager-ui/manager-ui.md)
-- [Custom Deployment](../../deploying/custom-deployment.md)
-- [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md)
-- [Working on the UI](../../../developer-guide/working-on-ui-and-apps.md)
+- [Manager UI Guide](../../020-manager-ui/10-manager-ui.md)
+- [Custom Deployment](../../010-deploying/10-custom-deployment.md)
+- [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md)
+- [Working on the UI](../../../developer-guide/110-working-on-ui-and-apps.md)
diff --git a/docs/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md b/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md
similarity index 97%
rename from docs/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md
rename to docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md
index fc0e3712..94b0f5f8 100644
--- a/docs/user-guide/agents-protocols/disabled-protocols/or-controller-2.5-agent.md
+++ b/docs/user-guide/040-agents-protocols/210-disabled-protocols/30-or-controller-2.5-agent.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# OR Controller 2.5
:::note
@@ -252,9 +248,9 @@ If you click on the 'Write' button, it'll send the configured command to the con
## See also
-- [Agent overview](../overview.md)
+- [Agent overview](../010-overview.md)
- [Quick Start](https://github.com/openremote/openremote/blob/master/README.md)
-- [Manager UI Guide](../../manager-ui/manager-ui.md)
-- [Custom Deployment](../../deploying/custom-deployment.md)
-- [Setting up an IDE](../../../developer-guide/setting-up-an-ide.md)
-- [Working on the UI](../../../developer-guide/working-on-ui-and-apps.md)
+- [Manager UI Guide](../../020-manager-ui/10-manager-ui.md)
+- [Custom Deployment](../../010-deploying/10-custom-deployment.md)
+- [Setting up an IDE](../../../developer-guide/020-setting-up-an-ide.md)
+- [Working on the UI](../../../developer-guide/110-working-on-ui-and-apps.md)
diff --git a/docs/user-guide/agents-protocols/disabled-protocols/_category_.json b/docs/user-guide/040-agents-protocols/210-disabled-protocols/_category_.json
similarity index 82%
rename from docs/user-guide/agents-protocols/disabled-protocols/_category_.json
rename to docs/user-guide/040-agents-protocols/210-disabled-protocols/_category_.json
index 890b6420..193782a3 100644
--- a/docs/user-guide/agents-protocols/disabled-protocols/_category_.json
+++ b/docs/user-guide/040-agents-protocols/210-disabled-protocols/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Disabled Protocols",
- "position": 21,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/agents-protocols/velbus-serial.md b/docs/user-guide/040-agents-protocols/220-velbus-serial.md
similarity index 78%
rename from docs/user-guide/agents-protocols/velbus-serial.md
rename to docs/user-guide/040-agents-protocols/220-velbus-serial.md
index 156d54b9..928f2782 100644
--- a/docs/user-guide/agents-protocols/velbus-serial.md
+++ b/docs/user-guide/040-agents-protocols/220-velbus-serial.md
@@ -12,5 +12,5 @@ unlisted: true
# See also
-- [Use UI components](../../developer-guide/working-on-ui-and-apps.md)
+- [Use UI components](../../developer-guide/110-working-on-ui-and-apps.md)
- [Get Started](https://openremote.io/get-started-manager/)
diff --git a/docs/user-guide/agents-protocols/_category_.json b/docs/user-guide/040-agents-protocols/_category_.json
similarity index 82%
rename from docs/user-guide/agents-protocols/_category_.json
rename to docs/user-guide/040-agents-protocols/_category_.json
index 11102ef7..0c208ff7 100644
--- a/docs/user-guide/agents-protocols/_category_.json
+++ b/docs/user-guide/040-agents-protocols/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Agents/Protocols",
- "position": 4,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/agents-protocols/_lorawan-asset-types.md b/docs/user-guide/040-agents-protocols/_lorawan-asset-types.md
similarity index 96%
rename from docs/user-guide/agents-protocols/_lorawan-asset-types.md
rename to docs/user-guide/040-agents-protocols/_lorawan-asset-types.md
index 8b456fc2..34684a0f 100644
--- a/docs/user-guide/agents-protocols/_lorawan-asset-types.md
+++ b/docs/user-guide/040-agents-protocols/_lorawan-asset-types.md
@@ -1,6 +1,6 @@
## LoRaWAN Asset Types
-When using LoRaWAN agents such as [ChirpStack](chirpstack.md) or [The Things Stack](the-things-stack.md), OpenRemote can automatically provision assets and their communication links.
+When using LoRaWAN agents such as [ChirpStack](./030-chirpstack.md) or [The Things Stack](./140-the-things-stack.md), OpenRemote can automatically provision assets and their communication links.
This automation relies on the use of specific **LoRaWAN Asset Types**. In these types, each attribute that is linked to a device data point must contain an `AGENT_LINK_CONFIG` meta item. This meta item acts as a blueprint, allowing the agent to automatically configure the underlying MQTT protocol agent links.
diff --git a/docs/user-guide/agents-protocols/img/aws-iot-mqtt-broker-download-links.png b/docs/user-guide/040-agents-protocols/img/aws-iot-mqtt-broker-download-links.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/aws-iot-mqtt-broker-download-links.png
rename to docs/user-guide/040-agents-protocols/img/aws-iot-mqtt-broker-download-links.png
diff --git a/docs/user-guide/agents-protocols/img/seeed-studio.jpg b/docs/user-guide/040-agents-protocols/img/seeed-studio.jpg
similarity index 100%
rename from docs/user-guide/agents-protocols/img/seeed-studio.jpg
rename to docs/user-guide/040-agents-protocols/img/seeed-studio.jpg
diff --git a/docs/user-guide/agents-protocols/img/simulator-chart.png b/docs/user-guide/040-agents-protocols/img/simulator-chart.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/simulator-chart.png
rename to docs/user-guide/040-agents-protocols/img/simulator-chart.png
diff --git a/docs/user-guide/agents-protocols/img/simulator-scheduler-occurr.png b/docs/user-guide/040-agents-protocols/img/simulator-scheduler-occurr.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/simulator-scheduler-occurr.png
rename to docs/user-guide/040-agents-protocols/img/simulator-scheduler-occurr.png
diff --git a/docs/user-guide/agents-protocols/img/simulator-scheduler-recurr.png b/docs/user-guide/040-agents-protocols/img/simulator-scheduler-recurr.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/simulator-scheduler-recurr.png
rename to docs/user-guide/040-agents-protocols/img/simulator-scheduler-recurr.png
diff --git a/docs/user-guide/agents-protocols/img/teltonika-networks.png b/docs/user-guide/040-agents-protocols/img/teltonika-networks.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/teltonika-networks.png
rename to docs/user-guide/040-agents-protocols/img/teltonika-networks.png
diff --git a/docs/user-guide/agents-protocols/img/teltonika-telematics.png b/docs/user-guide/040-agents-protocols/img/teltonika-telematics.png
similarity index 100%
rename from docs/user-guide/agents-protocols/img/teltonika-telematics.png
rename to docs/user-guide/040-agents-protocols/img/teltonika-telematics.png
diff --git a/docs/user-guide/manager-apis.md b/docs/user-guide/050-manager-apis.md
similarity index 98%
rename from docs/user-guide/manager-apis.md
rename to docs/user-guide/050-manager-apis.md
index 72ea3b54..10d9111c 100644
--- a/docs/user-guide/manager-apis.md
+++ b/docs/user-guide/050-manager-apis.md
@@ -1,10 +1,6 @@
----
-sidebar_position: 5
----
-
# Manager APIs
-The OpenRemote Manager API is composed of the following APIs, each API requires authentication (with the exception of `read`/`write` of public `asset` `attributes` see [Asset security](identity-and-security/asset-security.md)).
+The OpenRemote Manager API is composed of the following APIs, each API requires authentication (with the exception of `read`/`write` of public `asset` `attributes` see [Asset security](./070-identity-and-security/20-asset-security.md)).
To be able to authenticate you'll need to create a service user using the Manager UI (must be logged in as super user to access this functionality), please refer to the Manager UI user guide; access tokens can be obtained from the token endpoint using standard OAuth 2.0 techniques.
diff --git a/docs/user-guide/rules-and-forecasting/create-rules.md b/docs/user-guide/060-rules-and-forecasting/10-create-rules.md
similarity index 83%
rename from docs/user-guide/rules-and-forecasting/create-rules.md
rename to docs/user-guide/060-rules-and-forecasting/10-create-rules.md
index 317cec01..40531636 100644
--- a/docs/user-guide/rules-and-forecasting/create-rules.md
+++ b/docs/user-guide/060-rules-and-forecasting/10-create-rules.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Create Rules
OpenRemote has its own rules engine that can be utilized for a broad spectrum of tasks, ranging from simple attribute linking to complex algorithms, such as predictive models. There are three different types of rules you can choose from: When-Then Rules, Flow Rules and Groovy Rules. On this page you will find a brief description of each type, along with references to their dedicated pages for more details and examples.
@@ -14,19 +10,19 @@ Rules include a scheduler that allows rules to be scheduled and events to be rep
## When-Then Rules
-When-Then Rules are intended for application users to create event-based workflow rules, using a user-friendly UI. Users can select any (allowed) attribute for the left-hand side 'When' condition and right-hand side 'Then' action. Additionally, users can send notifications, utilize timers, and employ webhooks for actions. For more details, see [When-Then Rules](when-then-rules.md).
+When-Then Rules are intended for application users to create event-based workflow rules, using a user-friendly UI. Users can select any (allowed) attribute for the left-hand side 'When' condition and right-hand side 'Then' action. Additionally, users can send notifications, utilize timers, and employ webhooks for actions. For more details, see [When-Then Rules](./20-when-then-rules.md).
## Flow Rules
-Flow Rules are intended for application users to perform attribute value conversions. The main purpose is to enable the linking of attributes (e.g. a KNX switch with a Velbus light), or to process attributes to generate new 'virtual' attributes (e.g. calculating energy consumption as the sum of three individual sub-meters). For more details, see [Flow Rules](flow-rules.md).
+Flow Rules are intended for application users to perform attribute value conversions. The main purpose is to enable the linking of attributes (e.g. a KNX switch with a Velbus light), or to process attributes to generate new 'virtual' attributes (e.g. calculating energy consumption as the sum of three individual sub-meters). For more details, see [Flow Rules](./30-flow-rules.md).
## Groovy Rules
-The Groovy Rules scripting editor is available within the (Technical) manager and can be used for complex rules. They have the most flexibility, but also need a clear understanding of the Groovy language, especially to avoid mistakes. For more details, see [Groovy Rules](groovy-rules.md).
+The Groovy Rules scripting editor is available within the (Technical) manager and can be used for complex rules. They have the most flexibility, but also need a clear understanding of the Groovy language, especially to avoid mistakes. For more details, see [Groovy Rules](./40-groovy-rules.md).
## See Also
-- [When-Then Rules](when-then-rules.md)
-- [Flow Rules](flow-rules.md)
-- [Groovy Rules](groovy-rules.md)
-- [Manager UI](../manager-ui/manager-ui.md)
+- [When-Then Rules](./20-when-then-rules.md)
+- [Flow Rules](./30-flow-rules.md)
+- [Groovy Rules](./40-groovy-rules.md)
+- [Manager UI](../020-manager-ui/10-manager-ui.md)
diff --git a/docs/user-guide/rules-and-forecasting/when-then-rules.md b/docs/user-guide/060-rules-and-forecasting/20-when-then-rules.md
similarity index 95%
rename from docs/user-guide/rules-and-forecasting/when-then-rules.md
rename to docs/user-guide/060-rules-and-forecasting/20-when-then-rules.md
index d5f07e53..5acf05b4 100644
--- a/docs/user-guide/rules-and-forecasting/when-then-rules.md
+++ b/docs/user-guide/060-rules-and-forecasting/20-when-then-rules.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# When-Then Rules
When-Then rules are used in combination with the or-rules UI component. They are meant to be used to allow application users to define 'When this, then that' statements. For example "During weekdays, when it's cold, turn on the lights 5 minutes before sunset" or "send push notification to anybody who reaches the stadium".
@@ -17,7 +13,7 @@ On the left hand side you can have conditions for triggering:
On the right hand side you can trigger different types of actions:
- Update attribute values
-- Send push- and email notifications to users, assets, or users linked to the asset triggering the rule. Notifications support multi-language notification based on the users preferred language. For details see [Appearance page](../manager-ui/manager-ui.md#appearance).
+- Send push- and email notifications to users, assets, or users linked to the asset triggering the rule. Notifications support multi-language notification based on the users preferred language. For details see [Appearance page](../020-manager-ui/10-manager-ui.md#appearance).
##### Using Placeholders in Notifications
When configuring notifications in your rules, you can use the following placeholders to include dynamic information:
@@ -29,7 +25,7 @@ On the right hand side you can trigger different types of actions:
These placeholders are automatically replaced with actual values when the rule executes, making it easy to create dynamic, context-aware notifications.
-- Generate alarm, including assigned user, severity, status, title and message with linked assets. See more details in the [Alarms documentation](../manager-ui/manager-ui.md#alarms).
+- Generate alarm, including assigned user, severity, status, title and message with linked assets. See more details in the [Alarms documentation](../020-manager-ui/10-manager-ui.md#alarms).
- Link to an external system with webhooks. This can be used e.g. for connecting to your Maintenance or Messaging service, using your ERP or CRM system.
## Guide to setting up your first When-Then rule
@@ -88,5 +84,5 @@ Your rule is finished! Every weekday the rule will check if both conditions are
## See Also
-- [Create Rules](create-rules.md)
-- [Manager UI](../manager-ui/manager-ui.md)
+- [Create Rules](./10-create-rules.md)
+- [Manager UI](../020-manager-ui/10-manager-ui.md)
diff --git a/docs/user-guide/rules-and-forecasting/flow-rules.md b/docs/user-guide/060-rules-and-forecasting/30-flow-rules.md
similarity index 96%
rename from docs/user-guide/rules-and-forecasting/flow-rules.md
rename to docs/user-guide/060-rules-and-forecasting/30-flow-rules.md
index db99cf1f..580d9970 100644
--- a/docs/user-guide/rules-and-forecasting/flow-rules.md
+++ b/docs/user-guide/060-rules-and-forecasting/30-flow-rules.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# Flow Rules
Flow rules are mainly intended for attribute linking and processing existing attributes, translating them into new virtual attributes. They can also function as regular event rules. They're useful for users who want to create rules in a visual manner but also need to define rules more complex than is possible in the When-Then (JSON) rules UI editor.
@@ -40,5 +36,5 @@ A flow rule is generated backwards. The system goes through every output node an
## See Also
-- [Create Rules](create-rules.md)
-- [Manager UI](../manager-ui/manager-ui.md)
+- [Create Rules](./10-create-rules.md)
+- [Manager UI](../020-manager-ui/10-manager-ui.md)
diff --git a/docs/user-guide/rules-and-forecasting/groovy-rules.md b/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md
similarity index 96%
rename from docs/user-guide/rules-and-forecasting/groovy-rules.md
rename to docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md
index d05b0c19..3c0d8f61 100644
--- a/docs/user-guide/rules-and-forecasting/groovy-rules.md
+++ b/docs/user-guide/060-rules-and-forecasting/40-groovy-rules.md
@@ -1,10 +1,6 @@
----
-sidebar_position: 4
----
-
# Groovy Rules
-Groovy Rules are written in Groovy, a programming language that can seamlessly work together with Java. These rules are capable of performing any task that OpenRemote allows rules to do and are intended for scenarios too complex to be defined by [When-Then Rules](when-then-rules.md) or [Flow Rules](flow-rules.md). Users with programming experience may prefer to write rules in Groovy, regardless of their complexity.
+Groovy Rules are written in Groovy, a programming language that can seamlessly work together with Java. These rules are capable of performing any task that OpenRemote allows rules to do and are intended for scenarios too complex to be defined by [When-Then Rules](./20-when-then-rules.md) or [Flow Rules](./30-flow-rules.md). Users with programming experience may prefer to write rules in Groovy, regardless of their complexity.
Groovy Rules can be created in the technical manager and have to be written manually. The following sections give more information on how to create your own Groovy Rules.
@@ -114,5 +110,5 @@ Additional information:
## See Also
-- [Create Rules](create-rules.md)
-- [Manager UI](../manager-ui/manager-ui.md)
+- [Create Rules](./10-create-rules.md)
+- [Manager UI](../020-manager-ui/10-manager-ui.md)
diff --git a/docs/user-guide/rules-and-forecasting/forecasting.md b/docs/user-guide/060-rules-and-forecasting/50-forecasting.md
similarity index 91%
rename from docs/user-guide/rules-and-forecasting/forecasting.md
rename to docs/user-guide/060-rules-and-forecasting/50-forecasting.md
index b02b23d8..988cd571 100644
--- a/docs/user-guide/rules-and-forecasting/forecasting.md
+++ b/docs/user-guide/060-rules-and-forecasting/50-forecasting.md
@@ -1,12 +1,8 @@
----
-sidebar_position: 5
----
-
# Forecasting
OpenRemote includes two types of time series forecasting methods for attributes, one quick and simple, based on weighted exponential averaging, the other using a machine learning based non-linear regression model.
-Additional energy domain specific forecasting for power generation of solar panels and wind turbines are explained in the [Tutorial: Create your Energy Management System](../domains/create-your-energy-management-system.md).
+Additional energy domain specific forecasting for power generation of solar panels and wind turbines are explained in the [Tutorial: Create your Energy Management System](../090-domains/10-create-your-energy-management-system.md).

_Examples of time series forecasting which allows recognising patterns with a repetitive character, e.g per 24 hour or also per day of the week_
@@ -49,7 +45,7 @@ For "forecastPeriod" the representation for
## Time series with non-linear regeression model
-For more advanced time series forecasting where you expect a seasonal effect as well as (non) linear relations with other attributes. You can use the ML Forecasting service. An example is the amount of energy required for heating a building, as you would expect a dependancy on the outdor temperature and even the windspeed. For more information about this service, check the [ML Forecasting Service](../services/service-ml-forecast.md)
+For more advanced time series forecasting where you expect a seasonal effect as well as (non) linear relations with other attributes. You can use the ML Forecasting service. An example is the amount of energy required for heating a building, as you would expect a dependancy on the outdor temperature and even the windspeed. For more information about this service, check the [ML Forecasting Service](../100-services/20-service-ml-forecast.md)
## See Also
-- [Tutorial: Create your Energy Management System](../domains/create-your-energy-management-system.md)
+- [Tutorial: Create your Energy Management System](../090-domains/10-create-your-energy-management-system.md)
diff --git a/docs/user-guide/rules-and-forecasting/geojson-geofencing.md b/docs/user-guide/060-rules-and-forecasting/60-geojson-geofencing.md
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/geojson-geofencing.md
rename to docs/user-guide/060-rules-and-forecasting/60-geojson-geofencing.md
diff --git a/docs/user-guide/rules-and-forecasting/_category_.json b/docs/user-guide/060-rules-and-forecasting/_category_.json
similarity index 83%
rename from docs/user-guide/rules-and-forecasting/_category_.json
rename to docs/user-guide/060-rules-and-forecasting/_category_.json
index 7dc6ab7e..4419f17c 100644
--- a/docs/user-guide/rules-and-forecasting/_category_.json
+++ b/docs/user-guide/060-rules-and-forecasting/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Rules and Forecasting",
- "position": 6,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/rules-and-forecasting/img/flow-editor.png b/docs/user-guide/060-rules-and-forecasting/img/flow-editor.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/flow-editor.png
rename to docs/user-guide/060-rules-and-forecasting/img/flow-editor.png
diff --git a/docs/user-guide/rules-and-forecasting/img/groovy-group-control.png b/docs/user-guide/060-rules-and-forecasting/img/groovy-group-control.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/groovy-group-control.png
rename to docs/user-guide/060-rules-and-forecasting/img/groovy-group-control.png
diff --git a/docs/user-guide/rules-and-forecasting/img/group-summation-rule.png b/docs/user-guide/060-rules-and-forecasting/img/group-summation-rule.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/group-summation-rule.png
rename to docs/user-guide/060-rules-and-forecasting/img/group-summation-rule.png
diff --git a/docs/user-guide/rules-and-forecasting/img/rules-editor.png b/docs/user-guide/060-rules-and-forecasting/img/rules-editor.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/rules-editor.png
rename to docs/user-guide/060-rules-and-forecasting/img/rules-editor.png
diff --git a/docs/user-guide/rules-and-forecasting/img/rules-scheduler.png b/docs/user-guide/060-rules-and-forecasting/img/rules-scheduler.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/rules-scheduler.png
rename to docs/user-guide/060-rules-and-forecasting/img/rules-scheduler.png
diff --git a/docs/user-guide/rules-and-forecasting/img/timeseries-forecasting.png b/docs/user-guide/060-rules-and-forecasting/img/timeseries-forecasting.png
similarity index 100%
rename from docs/user-guide/rules-and-forecasting/img/timeseries-forecasting.png
rename to docs/user-guide/060-rules-and-forecasting/img/timeseries-forecasting.png
diff --git a/docs/user-guide/identity-and-security/realms-users-and-roles.md b/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md
similarity index 92%
rename from docs/user-guide/identity-and-security/realms-users-and-roles.md
rename to docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md
index b42087e0..19826794 100644
--- a/docs/user-guide/identity-and-security/realms-users-and-roles.md
+++ b/docs/user-guide/070-identity-and-security/10-realms-users-and-roles.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Realms, users and roles
Authentication and Authorization in the OpenRemote stack is powered by the [Keycloak](https://www.keycloak.org/) `OpenID Connect Provider` and utilises `OAuth 2.0`. Generally within an instance of the OpenRemote stack the Keycloak server is accessible at: `/auth` but should only be used by advanced users that know what they're doing as **you can completely break your instance**.
@@ -16,7 +12,7 @@ There are two basic types of user within OpenRemote, all can be managed within t
These are users that login interactively by filling in their username and password on the login page, in OAuth 2.0 terminology this is the `authorizationCode` grant type.
### Service users
-These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type.
+These are users that login programmatically using a client ID and secret. This is designed for confidential clients to connect to the [Manager APIs](../050-manager-apis.md) (i.e. MQTT, WebSockets and/or HTTP) without user interaction, in OAuth 2.0 terminology this is the `client_credentials` grant type.
## Roles
Roles (technically composite roles or role groups) can be defined by selecting the various 'read' and 'write' access rights for the various functions of the system. Each realm has its own set of roles and a user can be assigned zero or more of these roles within their realm and they are composite as they combine to form the overall authorization/permissions for a user. Roles used by OpenRemote are defined in [ClientRole](https://github.com/openremote/openremote/blob/master/model/src/main/java/org/openremote/model/security/ClientRole.java).
diff --git a/docs/user-guide/identity-and-security/asset-security.md b/docs/user-guide/070-identity-and-security/20-asset-security.md
similarity index 99%
rename from docs/user-guide/identity-and-security/asset-security.md
rename to docs/user-guide/070-identity-and-security/20-asset-security.md
index 60074398..06b72653 100644
--- a/docs/user-guide/identity-and-security/asset-security.md
+++ b/docs/user-guide/070-identity-and-security/20-asset-security.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Asset Security
The superuser has full access across all tenants (realms). An OpenRemote installation has only one superuser, and it's always named `admin` and it's always in the `master` realm. It cannot be renamed or deleted, just like the master realm. Any number of new realms and therefore tenants may be created.
diff --git a/docs/user-guide/identity-and-security/linking-to-active-directory.md b/docs/user-guide/070-identity-and-security/30-linking-to-active-directory.md
similarity index 99%
rename from docs/user-guide/identity-and-security/linking-to-active-directory.md
rename to docs/user-guide/070-identity-and-security/30-linking-to-active-directory.md
index e071b372..ce20e7da 100644
--- a/docs/user-guide/identity-and-security/linking-to-active-directory.md
+++ b/docs/user-guide/070-identity-and-security/30-linking-to-active-directory.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# Linking to Active Directory
Keycloak is the identity manager provider for the OpenRemote platform. By default, it uses its own Database with the Roles defined in the code for start up.
diff --git a/docs/user-guide/identity-and-security/_category_.json b/docs/user-guide/070-identity-and-security/_category_.json
similarity index 83%
rename from docs/user-guide/identity-and-security/_category_.json
rename to docs/user-guide/070-identity-and-security/_category_.json
index d38012c1..9c30d0f9 100644
--- a/docs/user-guide/identity-and-security/_category_.json
+++ b/docs/user-guide/070-identity-and-security/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Identity and Security",
- "position": 7,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/gateways-and-devices/edge-gateway.md b/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md
similarity index 96%
rename from docs/user-guide/gateways-and-devices/edge-gateway.md
rename to docs/user-guide/080-gateways-and-devices/10-edge-gateway.md
index 81fd0969..e717f57c 100644
--- a/docs/user-guide/gateways-and-devices/edge-gateway.md
+++ b/docs/user-guide/080-gateways-and-devices/10-edge-gateway.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# OpenRemote as Edge Gateway
## Overview
@@ -176,7 +172,7 @@ You can set advanced per-attribute synchronisation using the JSON editor. See [G
## Interaction with Gateway Manager UI via Gateway tunnels
-On top of the Interaction via the Gateway, you can remotely access the full Manager UI of the Gateway instances of OpenRemote, by creating Gateway tunnels. Note that you first have to [technically configure the (edge) gateway and central instance of OpenRemote to enable the tunnelling set-up](../../developer-guide/gateway-tunnelling-setup.md). Next you can access the Manager UI of the Gateway instance via the 'Gateway Tunnels' (Settings) or via a 'Gateway Widget' on the Insights dashboards.
+On top of the Interaction via the Gateway, you can remotely access the full Manager UI of the Gateway instances of OpenRemote, by creating Gateway tunnels. Note that you first have to [technically configure the (edge) gateway and central instance of OpenRemote to enable the tunnelling set-up](../../developer-guide/070-gateway-tunnelling-setup.md). Next you can access the Manager UI of the Gateway instance via the 'Gateway Tunnels' (Settings) or via a 'Gateway Widget' on the Insights dashboards.

_Creating a gateway tunnel and opening the manager UI of the remote instance which is connected as a gateway._
diff --git a/docs/user-guide/gateways-and-devices/auto-provisioning.md b/docs/user-guide/080-gateways-and-devices/20-auto-provisioning.md
similarity index 97%
rename from docs/user-guide/gateways-and-devices/auto-provisioning.md
rename to docs/user-guide/080-gateways-and-devices/20-auto-provisioning.md
index 17b59521..5abd09b6 100644
--- a/docs/user-guide/gateways-and-devices/auto-provisioning.md
+++ b/docs/user-guide/080-gateways-and-devices/20-auto-provisioning.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Auto provisioning devices and users
OpenRemote offers functionality for automatic client and asset provisioning. If you build and distribute your own hardware devices, you can use this mechanism to have your devices automatically register and connect to OpenRemote.
@@ -41,7 +37,7 @@ Jump to:
## Implementation
### Connect flow
-The following illustrates the connect process (through [MQTT topics](../manager-apis.md#mqtt-api-mqtt-broker)) which clients can use to auto provision a service user and optionally an asset whose ID is generated using a UNIQUE_ID provided by the client; the client is then authenticated and the asset is then returned to the client.
+The following illustrates the connect process (through [MQTT topics](../050-manager-apis.md#mqtt-api-mqtt-broker)) which clients can use to auto provision a service user and optionally an asset whose ID is generated using a UNIQUE_ID provided by the client; the client is then authenticated and the asset is then returned to the client.

diff --git a/docs/user-guide/gateways-and-devices/connect-esp32-or-esp8266-using-mqtt.md b/docs/user-guide/080-gateways-and-devices/30-connect-esp32-or-esp8266-using-mqtt.md
similarity index 96%
rename from docs/user-guide/gateways-and-devices/connect-esp32-or-esp8266-using-mqtt.md
rename to docs/user-guide/080-gateways-and-devices/30-connect-esp32-or-esp8266-using-mqtt.md
index 759def0a..dd4c6dcc 100644
--- a/docs/user-guide/gateways-and-devices/connect-esp32-or-esp8266-using-mqtt.md
+++ b/docs/user-guide/080-gateways-and-devices/30-connect-esp32-or-esp8266-using-mqtt.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 3
----
-
# Connect ESP32 or ESP8266 using MQTT
ESP32 and ESP8266 are some of the most popular and well established boards for devices by Espressif. ESP32 and ESP8266 (and other types) can be easily linked to an OpenRemote instance using our MQTT Broker. If you have larger numbers of devices connecting you might want to use the auto provisioning flow. This allows you to provision your devices in such a way that they automatically connect your devices to OpenRemote, create an asset of the type you have defined, and link the attributes over the right topics. ESP32 and ESP8266 are perfectly suitable to make use of it.
@@ -166,11 +162,11 @@ Important: Don't forget to add the PubSubClient to your Library https://github.c
## Auto provisioning ESP32 based devices
-OpenRemote supports auto provisioning which can also be applied with Espressif products. See the [User Guide Auto provisioning](auto-provisioning.md)
+OpenRemote supports auto provisioning which can also be applied with Espressif products. See the [User Guide Auto provisioning](./20-auto-provisioning.md)
Note you need to add a CA certificate and add the code to locate the appropriate CA certificate for the server, making a secure connection possible.
## See Also
-- [Tutorial: Connect your MQTT Client](../../tutorials/connect-your-mqtt-client.md)
-- [User Guide: Manager APIs](../manager-apis.md)
-- [User Guide: Auto Provisioning](../gateways-and-devices/auto-provisioning.md)
+- [Tutorial: Connect your MQTT Client](../../tutorials/030-connect-your-mqtt-client.md)
+- [User Guide: Manager APIs](../050-manager-apis.md)
+- [User Guide: Auto Provisioning](./20-auto-provisioning.md)
diff --git a/docs/user-guide/gateways-and-devices/firmware-updating-with-hawkbit.md b/docs/user-guide/080-gateways-and-devices/40-firmware-updating-with-hawkbit.md
similarity index 95%
rename from docs/user-guide/gateways-and-devices/firmware-updating-with-hawkbit.md
rename to docs/user-guide/080-gateways-and-devices/40-firmware-updating-with-hawkbit.md
index f120f8b0..6b28c11a 100644
--- a/docs/user-guide/gateways-and-devices/firmware-updating-with-hawkbit.md
+++ b/docs/user-guide/080-gateways-and-devices/40-firmware-updating-with-hawkbit.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 4
----
-
# Firmware updating with Hawkbit
OpenRemote integrates with Hawkbit, a framework for rolling out software updates to constrained edge devices. Currently we have the following features integrated and tested:
diff --git a/docs/user-guide/gateways-and-devices/mqtt-gateway-api.md b/docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md
similarity index 100%
rename from docs/user-guide/gateways-and-devices/mqtt-gateway-api.md
rename to docs/user-guide/080-gateways-and-devices/50-mqtt-gateway-api.md
diff --git a/docs/user-guide/gateways-and-devices/_category_.json b/docs/user-guide/080-gateways-and-devices/_category_.json
similarity index 83%
rename from docs/user-guide/gateways-and-devices/_category_.json
rename to docs/user-guide/080-gateways-and-devices/_category_.json
index 16944db9..c70d79b0 100644
--- a/docs/user-guide/gateways-and-devices/_category_.json
+++ b/docs/user-guide/080-gateways-and-devices/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Gateways and Devices",
- "position": 8,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/gateways-and-devices/img/auto-provisioning-connect-flow.png b/docs/user-guide/080-gateways-and-devices/img/auto-provisioning-connect-flow.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/auto-provisioning-connect-flow.png
rename to docs/user-guide/080-gateways-and-devices/img/auto-provisioning-connect-flow.png
diff --git a/docs/user-guide/manager-ui/img/create-gateway-tunnel.png b/docs/user-guide/080-gateways-and-devices/img/create-gateway-tunnel.png
similarity index 100%
rename from docs/user-guide/manager-ui/img/create-gateway-tunnel.png
rename to docs/user-guide/080-gateways-and-devices/img/create-gateway-tunnel.png
diff --git a/docs/user-guide/gateways-and-devices/img/get-asset-request.png b/docs/user-guide/080-gateways-and-devices/img/get-asset-request.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/get-asset-request.png
rename to docs/user-guide/080-gateways-and-devices/img/get-asset-request.png
diff --git a/docs/user-guide/gateways-and-devices/img/manager-asset-synchronisation.png b/docs/user-guide/080-gateways-and-devices/img/manager-asset-synchronisation.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/manager-asset-synchronisation.png
rename to docs/user-guide/080-gateways-and-devices/img/manager-asset-synchronisation.png
diff --git a/docs/user-guide/gateways-and-devices/img/manager-gateway-asset.png b/docs/user-guide/080-gateways-and-devices/img/manager-gateway-asset.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/manager-gateway-asset.png
rename to docs/user-guide/080-gateways-and-devices/img/manager-gateway-asset.png
diff --git a/docs/user-guide/gateways-and-devices/img/manager-interconnect-rate.png b/docs/user-guide/080-gateways-and-devices/img/manager-interconnect-rate.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/manager-interconnect-rate.png
rename to docs/user-guide/080-gateways-and-devices/img/manager-interconnect-rate.png
diff --git a/docs/user-guide/gateways-and-devices/img/manager-interconnect.png b/docs/user-guide/080-gateways-and-devices/img/manager-interconnect.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/manager-interconnect.png
rename to docs/user-guide/080-gateways-and-devices/img/manager-interconnect.png
diff --git a/docs/user-guide/gateways-and-devices/img/mqtt-gateway-communication-flow.png b/docs/user-guide/080-gateways-and-devices/img/mqtt-gateway-communication-flow.png
similarity index 100%
rename from docs/user-guide/gateways-and-devices/img/mqtt-gateway-communication-flow.png
rename to docs/user-guide/080-gateways-and-devices/img/mqtt-gateway-communication-flow.png
diff --git a/docs/user-guide/domains/create-your-energy-management-system.md b/docs/user-guide/090-domains/10-create-your-energy-management-system.md
similarity index 88%
rename from docs/user-guide/domains/create-your-energy-management-system.md
rename to docs/user-guide/090-domains/10-create-your-energy-management-system.md
index 1fcfac6e..f44a015d 100644
--- a/docs/user-guide/domains/create-your-energy-management-system.md
+++ b/docs/user-guide/090-domains/10-create-your-energy-management-system.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 1
----
-
# Energy Management
## Introduction
@@ -15,9 +11,9 @@ _Figure 1. Overview of Energy Management System and all the elements._
### Set up OpenRemote and customisation
-Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../manager-ui/manager-ui.md) to first familiarise yourself with OpenRemote.
+Before you start, we assume you have set up the latest version of OpenRemote. If not, check out the [Quick Start](https://github.com/openremote/openremote/blob/master/README.md) first. Also have a look at how to [use the Manager UI](../020-manager-ui/10-manager-ui.md) to first familiarise yourself with OpenRemote.
-To run a full Energy Management System you will need to set up a [Custom Deployment](../deploying/custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../deploying/custom-deployment.md) on how to do this.
+To run a full Energy Management System you will need to set up a [Custom Deployment](../010-deploying/10-custom-deployment.md). There are many items you can configure with the custom deployment but critical is to add the access keys for two external services: OpenWeather and Forecast.Solar. These services are used to forecast the generated power of your solar panels and wind turbine. For getting these access keys see the [Solar forecast service](#forecast-service) and the [Wind forecast service](#forecast-service-1). Once you have the keys, you need to add these as environment variables `OPEN_WEATHER_API_APP_ID` and `FORECAST_SOLAR_API_KEY` to your custom deployment and the Docker Compose file. Carefully read [Custom Deployment](../010-deploying/10-custom-deployment.md) on how to do this.
## Electricity assets and required agents
@@ -71,7 +67,7 @@ Another option is to turn on the attribute 'Set actual solar value with forecast
#### Wind Turbine
-Your wind turbine asset is configured in a similar manner. First connect the 'Power' (note the negative value) and 'Energy Total Export' to an Agent which connects to your wind turbine system. See the PV Solar Asset example above, or check the different [Agent Protocol options in the documentation](../agents-protocols/overview.md).
+Your wind turbine asset is configured in a similar manner. First connect the 'Power' (note the negative value) and 'Energy Total Export' to an Agent which connects to your wind turbine system. See the PV Solar Asset example above, or check the different [Agent Protocol options in the documentation](../040-agents-protocols/010-overview.md).
##### Forecast service
@@ -92,15 +88,15 @@ Another option is to turn on the attribute 'Set wind actual value with forecast'
### Electricity Consumer
-To connect electricity consuming devices. You can connect several energy meters by an 'Electricity Consumer Asset', as child of the Optimisation Asset. Similar as before you should connect the 'Power' and 'Energy Total Import' to your meters by using any of the existing [Agent Protocol options](../agents-protocols/overview.md).
+To connect electricity consuming devices. You can connect several energy meters by an 'Electricity Consumer Asset', as child of the Optimisation Asset. Similar as before you should connect the 'Power' and 'Energy Total Import' to your meters by using any of the existing [Agent Protocol options](../040-agents-protocols/010-overview.md).
##### Forecast service
-For the electricity consuming devices you also need the forecasted power. You can enable this in two ways. The simple one is by adding the configuration item 'Forecast'. This service will take an exponential weighted moving average, based on your preferences. See [Time series forecasting](../rules-and-forecasting/forecasting.md) for configuration. For more advanced forecasting you can use the ML forecasting service, which can take into account the influence of other attributes, e.g. weather. See [ML Forecasting](../services/service-ml-forecast.md).
+For the electricity consuming devices you also need the forecasted power. You can enable this in two ways. The simple one is by adding the configuration item 'Forecast'. This service will take an exponential weighted moving average, based on your preferences. See [Time series forecasting](../060-rules-and-forecasting/50-forecasting.md) for configuration. For more advanced forecasting you can use the ML forecasting service, which can take into account the influence of other attributes, e.g. weather. See [ML Forecasting](../100-services/20-service-ml-forecast.md).
### Electricity Battery
-One of the devices the optimisation can actively control is a static battery. You can add an 'Electricity Battery Asset' as child of the Optimisation Asset, and again link it up with an API of your battery system using any of the existing [Agent Protocol options](../agents-protocols/overview.md). To make the optimisation work, you will need to link at least the following attributes:
+One of the devices the optimisation can actively control is a static battery. You can add an 'Electricity Battery Asset' as child of the Optimisation Asset, and again link it up with an API of your battery system using any of the existing [Agent Protocol options](../040-agents-protocols/010-overview.md). To make the optimisation work, you will need to link at least the following attributes:
* Energy level
* Power setpoint
@@ -130,7 +126,7 @@ The charging of vehicles requires at least an 'Electric vehicle asset', as child
First let us explain how the optimisation will treat a vehicle. The optimisation will see the battery of the vehicle as a regular storage device which it can charge, and in some cases discharge. In addition you can set an 'Energy level schedule' on the vehicle (this is an optional attribute) to safeguard that your vehicle battery has enough energy at the time you need it.
-So to make the optimisation work the following attributes need to be connected for the Electric vehicle asset, using any of the existing [Agent Protocol options](../agents-protocols/overview.md):
+So to make the optimisation work the following attributes need to be connected for the Electric vehicle asset, using any of the existing [Agent Protocol options](../040-agents-protocols/010-overview.md):
* Energy level
* Power setpoint
@@ -144,7 +140,7 @@ There is a series of attributes on the vehicle you need or can use to make the o
* Energy level percentage min. If a vehicle gets connected with a lower level, it will immediately start charging until it reaches the minimum level. If not set it will assume 0%.
In some cases you also want to connect to your charger, and make the vehicle a child of the charger, e.g.:
-* In case you can't control the power setpoint on your vehicle. You will need to link the 'Power setpoint' of your charger to your charging system, using any of the existing [Agent Protocol options](../agents-protocols/overview.md). In addition you can use the 'Flow editor' to link the 'Power setpoint' of your vehicle to the 'Power setpoint' of your charger. The optimisation will now set the 'Power setpoint' of your vehicle, which will then be forwarded to the 'Power setpoint' of your charger.
+* In case you can't control the power setpoint on your vehicle. You will need to link the 'Power setpoint' of your charger to your charging system, using any of the existing [Agent Protocol options](../040-agents-protocols/010-overview.md). In addition you can use the 'Flow editor' to link the 'Power setpoint' of your vehicle to the 'Power setpoint' of your charger. The optimisation will now set the 'Power setpoint' of your vehicle, which will then be forwarded to the 'Power setpoint' of your charger.
* In case you want the optimisation to consider both the 'Power import max' of your charger as well of the vehicle, to take the lowest of the two for the 'Power setpoint'.

@@ -152,7 +148,7 @@ In some cases you also want to connect to your charger, and make the vehicle a c
_Figure 6. The Energy schedule is in a JSON format as shown. Each day of the week (seven days) specifies the required energy level percentage for each hour of the day, starting at midnight. So in the above example the vehicle battery needs to be charged to 90% at 8am on each day_
### Electricity Supplier
-The optimisation will also take into account the 'Tariff import' and 'Tariff export' for your electricity. To enable this, first add an 'Electricity supplier asset' as a child of the Optimisation asset. Note that the tariffs are defined as costs. So the 'Tariff import' is normally positive as you pay, while the 'Tariff export' is negative as you earn. You can either set a fixed value for both tariffs, or connect to an API of your supplier, using any of the existing [Agent Protocol options](../agents-protocols/overview.md). For electricity tariffs you can e.g. use EPEX Spot prices via the ENTSOE API https://transparency.entsoe.eu/ (for optimising on carbon footprint you can consider https://www.electricitymaps.com/ , see 'Optimisation' for a further explanation).
+The optimisation will also take into account the 'Tariff import' and 'Tariff export' for your electricity. To enable this, first add an 'Electricity supplier asset' as a child of the Optimisation asset. Note that the tariffs are defined as costs. So the 'Tariff import' is normally positive as you pay, while the 'Tariff export' is negative as you earn. You can either set a fixed value for both tariffs, or connect to an API of your supplier, using any of the existing [Agent Protocol options](../040-agents-protocols/010-overview.md). For electricity tariffs you can e.g. use EPEX Spot prices via the ENTSOE API https://transparency.entsoe.eu/ (for optimising on carbon footprint you can consider https://www.electricitymaps.com/ , see 'Optimisation' for a further explanation).
In this tutorial we just simulate values by adding a simulator profile. To do that, take the following steps:
* Add a 'Simulator Agent' at the root of your asset tree.
@@ -171,7 +167,7 @@ _Figure 8. An example for the 'Replay data' for the Export tariff you want to us
##### Forecast service with ML forecasting
-In case you need forecasted electricity tariffs beyond the time window of the published data by EPEX, you can use the ML forecasting service, which can take into account the historical time series data as well as the influence of forecasted wind speed and solar/cloud coverage. See [ML Forecasting](../services/service-ml-forecast.md) and the [Open WeatherMap Agent](../agents-protocols/openweathermap.md).
+In case you need forecasted electricity tariffs beyond the time window of the published data by EPEX, you can use the ML forecasting service, which can take into account the historical time series data as well as the influence of forecasted wind speed and solar/cloud coverage. See [ML Forecasting](../100-services/20-service-ml-forecast.md) and the [Open WeatherMap Agent](../040-agents-protocols/190-openweathermap.md).
## Optimisation
diff --git a/docs/user-guide/domains/fleet-management.md b/docs/user-guide/090-domains/20-fleet-management.md
similarity index 97%
rename from docs/user-guide/domains/fleet-management.md
rename to docs/user-guide/090-domains/20-fleet-management.md
index e666f8d2..ac07f61b 100644
--- a/docs/user-guide/domains/fleet-management.md
+++ b/docs/user-guide/090-domains/20-fleet-management.md
@@ -1,7 +1,3 @@
----
-sidebar_position: 2
----
-
# Fleet Management
**We have created a [OpenRemote custom project for fleet management](https://github.com/openremote/fleet-management/wiki)** which implements full support for fleet management features, like location tracking and session tracking, and also the industry-first **complete, automatic data recognition** from **any Teltonika Telematics device** model.
diff --git a/docs/user-guide/domains/_category_.json b/docs/user-guide/090-domains/_category_.json
similarity index 80%
rename from docs/user-guide/domains/_category_.json
rename to docs/user-guide/090-domains/_category_.json
index 3fff4031..6980b710 100644
--- a/docs/user-guide/domains/_category_.json
+++ b/docs/user-guide/090-domains/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Domains",
- "position": 9,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/domains/img/ems-asset-tree.png b/docs/user-guide/090-domains/img/ems-asset-tree.png
similarity index 100%
rename from docs/user-guide/domains/img/ems-asset-tree.png
rename to docs/user-guide/090-domains/img/ems-asset-tree.png
diff --git a/docs/user-guide/domains/img/energy-schedule-json-format.png b/docs/user-guide/090-domains/img/energy-schedule-json-format.png
similarity index 100%
rename from docs/user-guide/domains/img/energy-schedule-json-format.png
rename to docs/user-guide/090-domains/img/energy-schedule-json-format.png
diff --git a/docs/user-guide/domains/img/overview-ems.jpg b/docs/user-guide/090-domains/img/overview-ems.jpg
similarity index 100%
rename from docs/user-guide/domains/img/overview-ems.jpg
rename to docs/user-guide/090-domains/img/overview-ems.jpg
diff --git a/docs/user-guide/domains/img/replay-data-within-agent-link.png b/docs/user-guide/090-domains/img/replay-data-within-agent-link.png
similarity index 100%
rename from docs/user-guide/domains/img/replay-data-within-agent-link.png
rename to docs/user-guide/090-domains/img/replay-data-within-agent-link.png
diff --git a/docs/user-guide/domains/img/solar-agent-link.png b/docs/user-guide/090-domains/img/solar-agent-link.png
similarity index 100%
rename from docs/user-guide/domains/img/solar-agent-link.png
rename to docs/user-guide/090-domains/img/solar-agent-link.png
diff --git a/docs/user-guide/domains/img/solar-asset.png b/docs/user-guide/090-domains/img/solar-asset.png
similarity index 100%
rename from docs/user-guide/domains/img/solar-asset.png
rename to docs/user-guide/090-domains/img/solar-asset.png
diff --git a/docs/user-guide/domains/img/solaredge-http-agent.png b/docs/user-guide/090-domains/img/solaredge-http-agent.png
similarity index 100%
rename from docs/user-guide/domains/img/solaredge-http-agent.png
rename to docs/user-guide/090-domains/img/solaredge-http-agent.png
diff --git a/docs/user-guide/domains/img/supplier-tariff-export.png b/docs/user-guide/090-domains/img/supplier-tariff-export.png
similarity index 100%
rename from docs/user-guide/domains/img/supplier-tariff-export.png
rename to docs/user-guide/090-domains/img/supplier-tariff-export.png
diff --git a/docs/user-guide/domains/img/wind-asset.png b/docs/user-guide/090-domains/img/wind-asset.png
similarity index 100%
rename from docs/user-guide/domains/img/wind-asset.png
rename to docs/user-guide/090-domains/img/wind-asset.png
diff --git a/docs/user-guide/services/services.md b/docs/user-guide/100-services/10-services.md
similarity index 99%
rename from docs/user-guide/services/services.md
rename to docs/user-guide/100-services/10-services.md
index 2c040318..5db314e8 100644
--- a/docs/user-guide/services/services.md
+++ b/docs/user-guide/100-services/10-services.md
@@ -1,5 +1,5 @@
---
-sidebar_position: 1
+slug: /user-guide/services/
---
# Services
diff --git a/docs/user-guide/services/service-ml-forecast.md b/docs/user-guide/100-services/20-service-ml-forecast.md
similarity index 98%
rename from docs/user-guide/services/service-ml-forecast.md
rename to docs/user-guide/100-services/20-service-ml-forecast.md
index c7e29ed9..cc593836 100644
--- a/docs/user-guide/services/service-ml-forecast.md
+++ b/docs/user-guide/100-services/20-service-ml-forecast.md
@@ -1,13 +1,9 @@
----
-sidebar_position: 2
----
-
# ML Forecasting Service
The ML Forecasting Service is an **optional** service that applies machine learning and statistical models to time series forecasting. It lets you create forecast configurations for attributes with historical data. Currently, it supports [Prophet](https://facebook.github.io/prophet/), an additive regression model which is known for its ability to efficiently capture trends, seasonality and holidays effects. Additional models will be supported in future releases.
:::note
-This service is not installed by default. It can be installed by your administrator by following the instructions in the [External Services](../../developer-guide/external-services.md) page.
+This service is not installed by default. It can be installed by your administrator by following the instructions in the [External Services](../../developer-guide/090-external-services.md) page.
:::
## Features
diff --git a/docs/user-guide/services/_category_.json b/docs/user-guide/100-services/_category_.json
similarity index 80%
rename from docs/user-guide/services/_category_.json
rename to docs/user-guide/100-services/_category_.json
index 1ca65878..92f3e96c 100644
--- a/docs/user-guide/services/_category_.json
+++ b/docs/user-guide/100-services/_category_.json
@@ -1,6 +1,5 @@
{
"label": "Services",
- "position": 10,
"link": {
"type": "generated-index"
}
diff --git a/docs/user-guide/services/img/service-ml-forecast-config-list.png b/docs/user-guide/100-services/img/service-ml-forecast-config-list.png
similarity index 100%
rename from docs/user-guide/services/img/service-ml-forecast-config-list.png
rename to docs/user-guide/100-services/img/service-ml-forecast-config-list.png
diff --git a/docs/user-guide/services/img/service-ml-forecast-insights.png b/docs/user-guide/100-services/img/service-ml-forecast-insights.png
similarity index 100%
rename from docs/user-guide/services/img/service-ml-forecast-insights.png
rename to docs/user-guide/100-services/img/service-ml-forecast-insights.png
diff --git a/docs/user-guide/services/img/service-ml-forecast-tree.png b/docs/user-guide/100-services/img/service-ml-forecast-tree.png
similarity index 100%
rename from docs/user-guide/services/img/service-ml-forecast-tree.png
rename to docs/user-guide/100-services/img/service-ml-forecast-tree.png
diff --git a/docs/user-guide/anomaly-detection.md b/docs/user-guide/110-anomaly-detection.md
similarity index 97%
rename from docs/user-guide/anomaly-detection.md
rename to docs/user-guide/110-anomaly-detection.md
index 09ded219..c93f0373 100644
--- a/docs/user-guide/anomaly-detection.md
+++ b/docs/user-guide/110-anomaly-detection.md
@@ -37,7 +37,7 @@ If the attribute you are configuring already has predicted datapoints, this will

_Visualization of the limits generated by the Forecast method_
-This accuracy of this method is dependent on the quality of the predicted data. This can come from different sources like OpenRemote's build in [Forecasting service](rules-and-forecasting/forecasting.md)
+This accuracy of this method is dependent on the quality of the predicted data. This can come from different sources like OpenRemote's build in [Forecasting service](./060-rules-and-forecasting/50-forecasting.md)
# Setup
To get started with anomaly detection add the 'anomaly detection' configuration item to the attribute you want to monitor. This will add a panel where you can add different methods.
diff --git a/docs/user-guide/metrics.md b/docs/user-guide/120-metrics.md
similarity index 100%
rename from docs/user-guide/metrics.md
rename to docs/user-guide/120-metrics.md
diff --git a/docs/user-guide/deploying/configuring-the-manager-ui.md b/docs/user-guide/deploying/configuring-the-manager-ui.md
deleted file mode 100644
index 2dd41b66..00000000
--- a/docs/user-guide/deploying/configuring-the-manager-ui.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-sidebar_position: 2
----
-
-# Configuring the Manager UI
-
-The settings option 'Appearance' can be used in a [custom deployment](custom-deployment.md). You can use it to style your deployment and configure how the pages of the Manager display the assets and attributes in your system. Some of these settings can be changed visually in the user interface, others can be set when selecting the JSON editor. The configuration gets stored in the manager_config file.
-
-See [Manager UI - Appearance](../manager-ui/appearance) on how to configure the manager appearance.