From 569c88680af5948a0bca3f9e02486ddd7e17959e Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Fri, 26 Jan 2024 13:40:06 +0100 Subject: [PATCH] Migrate docs from the UI section Signed-off-by: Florian Hotze --- mainui/about.md | 181 ++++++++++++++++++ mainui/developer/index.md | 33 ++++ mainui/developer/sidebar.md | 55 ++++++ .../images/about}/about-top-section.png | Bin .../images/about}/bg-gray-setting.png | Bin .../images/about}/bg-white-setting.png | Bin .../images/about}/dark-mode.png | Bin .../images/about}/navbar-style.png | Bin .../images/about}/notification.png | Bin .../images/about}/play-rule.png | Bin .../images/about}/simple-nav-off.png | Bin .../images/about}/simple-nav-on.png | Bin .../images/about}/webaudio-blockly.png | Bin mainui/index.md | 16 +- mainui/settings/index.md | 2 +- ui/aboutpage.md | 135 ------------- ui/images/settings-audio.png | Bin 13765 -> 0 bytes ui/mainui.md | 113 ----------- 18 files changed, 283 insertions(+), 252 deletions(-) create mode 100644 mainui/developer/sidebar.md rename {ui/images => mainui/images/about}/about-top-section.png (100%) rename {ui/images => mainui/images/about}/bg-gray-setting.png (100%) rename {ui/images => mainui/images/about}/bg-white-setting.png (100%) rename {ui/images => mainui/images/about}/dark-mode.png (100%) rename {ui/images => mainui/images/about}/navbar-style.png (100%) rename {ui/images => mainui/images/about}/notification.png (100%) rename {ui/images => mainui/images/about}/play-rule.png (100%) rename {ui/images => mainui/images/about}/simple-nav-off.png (100%) rename {ui/images => mainui/images/about}/simple-nav-on.png (100%) rename {ui/images => mainui/images/about}/webaudio-blockly.png (100%) delete mode 100644 ui/aboutpage.md delete mode 100644 ui/images/settings-audio.png delete mode 100644 ui/mainui.md diff --git a/mainui/about.md b/mainui/about.md index e69de29bb2..90973ca895 100644 --- a/mainui/about.md +++ b/mainui/about.md @@ -0,0 +1,181 @@ +--- +layout: documentation +title: Help & About Page +--- + +# Help & About Page + + +This page shows general information of your openHAB configuration and allows to configure some client related configuration, including: + +- UI appearance (theming, color scheme etc.) +- **Web Audio Sink** support +- Setting up the **UI Command Item** + + + +[[toc]] + +## Top Section + +![img.png](../images/about/about-top-section.png) + +- Version: shows the currently installed version of openHAB +- Links to the official openHAB Website, the openHAB Documentation and the Community Forum + +## Technical Information + +This section is collapsed by default and can be opened by clicking on it which then reveals the + +- Configuration folder on the server +- User data folder on the server +- Logs folder on the server +- Operating System openHAB is running on +- Java Runtime openHAB is running on +- number of processors and memory + +Clicking on View Details opens up a popup window that contains very detailed information like + +- Runtime information +- Locale (language) +- System information including memory information +- A list of all installed bindings +- Client information including device information, client settings (see also the below section), screen information, theme, user agent information. + +The content can be easily copied with the copy button on the top to provide it as additional information when asking questions in the community. + +## Appearance (for this device only) + +This section allows to have different appearance settings _per_ device. + +- **Theme**: Selects the theme for that device + - Auto: tries to detect the client type + - Android + - iOS + - Desktop + +![theme-selection.png](../images/about/theme-selection.png) + +- **Dark mode** setting + - Auto: uses the default mode + - Light-Mode + - Dark-Mode + +![dark-mode.png](../images/about/dark-mode.png) + +- **Navigation bars style**: inverts the colors in the navigation bar + +![navbar-style.png](../images/about/navbar-style.png) + +## Miscellaneous settings + +- **Simple navigation bar on home page**: When switching it on, it means the navigation bar will look the same even whether you're at the top of the page or not - you won't have the alternate look with the date. +The first image depicts the normal setting (off), the second image shows it switched off + +![simple-nav-off.png](../images/about/simple-nav-off.png) ![simple-nav-on.png](images/simple-nav-on.png) + +- **Standard home page background color**: This only relates to the light color scheme. +The background color will be the same as the regular pages you can show from e.g. the sidebar, which is a kind of gray instead of white. +The first image depicts the normal white setting (off), the second image shows it switched off with the gray setting. + +![bg-white-setting.png](../images/about/bg-white-setting.png) ![bg-gray-setting.png](images/bg-gray-setting.png) + +- **Disable card expansion animations**: Disables the animations when expanding a widget card. +- **Disable page transition animations**: Disables the transitions when switching from one page to the other. + +## Web Audio Sink + +Main UI implements a web audio sink which allows the openHAB server to play audio through the web browser. + +To enable web audio sink support for a client, turn on the **Enable Web Audio sink support** option on the **Help & About** page. +As it is setting specific to your browser environment, web audio support has to be enabled for every client where it should be used. + +Please note that due to limitations in Safari (and possibly Chrome as well), a user interaction is required after the first audio stream has been sent to actually play it. +This means, that after opening Main UI, the first audio that should be played on the web audio sink is only player after the user interacts with Main UI in any way (i.e. touching the screen is enough). +For subsequent audio playback, that is not required anymore and the audio is played immediately. + +Please also note that you cannot address a particular web audio-enabled device. +When you play a sound on web audio, it will be played on all devices where web audio is enabled. + +Web audio sinks can be used for example on wall-mounted tablets to make announcements using a [text-to-speech (TTS) engine]({{base}}/configuration/multimedia.html#text-to-speech) and play notification or alarm sounds. + +For more information about audio sinks as well as audio and voice actions, please refer to the [multimedia configuration docs]({{base}}/configuration/multimedia.html), where you will also find examples including UI-based rules and Blockly. + +### Testing Web Audio + +To test if it works play some static content that comes with openHAB in the /sounds dir using an openHAB console command. +Use [openHABs console]({{base}}/administration/console.html#using-the-console) or just run the following from the Linux shell: + +> openhab-cli console + +and then enter the following command: + +```text +openhab> audio play webaudio barking.mp3 +``` + +If you have a dog that gets triggered by barking you may opt for playing `doorbell.mp3` instead. +If you play `doorbell.mp3` your dog will then probably play its own barking audio sound. 😉 + +Here are some useful actions available to rules in which you can specify webaudio as sink, see: + +- [playSound]({{base}}/configuration/multimedia.html#actions-2) + +```text +playSound("webaudio", "barking.mp3") +``` + +- [say]({{base}}/configuration/multimedia.html#actions-3) + +```text +say("Hello world!", "voicerss:enUS", "webaudio") +``` + +You can also configure webaudio as sink when creating rules in the UI: + +![play-rule.png](../images/about/play-rule.png) + +or using it in a blockly rule: + +![webaudio-blockly.png](../images/about/webaudio-blockly.png) + +## UI Command Item + +Main UI can be controlled from the openHAB server by setting up a so-called UI command Item. + +Similarly to web audio support, this is a setting specific to your local browser environment, so you have to define the UI command Item for each client, which also allows you to different UI command Items for different clients. +To set up an Item as the UI command Item on your device, first create a particular Item of type `String`, then open the **Help & About** page from the menu and select an Item for the **Listen for UI command to** option. + +The command Item has to be a `String` Item. +The UI is listening for commands to that Item, and if an Item command is a valid command string, the UI executes the given command. + +Currently, the supported commands are: + +- `navigate:$path`: + Navigate to a given `$path`, e.g. `navigate:/locations` to navigate to the **Locations** tab of the home page or `navigate:/page/my_custom_page` to navigate to a page with the ID `my_custom_page`. + For example, you can use this to open a video camera page of the door automatically when the doorbell is rung. +- `popup:$target`, `popover:$target` and `sheet:$target`: + Open a `$target`, which can be a page (`$target` is `page:` + a page ID), a custom widget (`$target` is `widget:` + widget ID) or any [`oh-` component]({{base}}/ui/components/) (`$target` is the component name), in a popup, popover or sheet. + + For example, to open `oh-clock-card` inside a popup, send `popup:oh-clock-card` to the UI command Item. +- `notification:$text:$title:$subtitle:$titleRight:$closeTimeout`: + Display a notification inside the UI: + The `$text` parameter is mandatory, all other parameters are optional. + `$closeTimeout` is in milliseconds and defaults 5000, which means by default a notification will be closed after 5 seconds. + To leave out a parameter, leave a colon space empty, e.g. `notification:$text:$title:::$closeTimeout`. + + For example, send `notification:This is the text.:This is the title.:This is the subtitle.:This is the right title.` to the UI command Item to display the following notification: +

+- `close`: + Close all popups, popovers and sheets. +- `back`: + Navigate back. +- `reload`: + Reload the current page. + +## Reload + +Main UI is using caching and service workers to locally store ressources to reduce loading times. +A consequence of this is, that updates might not always be properly recognized. + +The reload buttons make Main UI to properly reload. diff --git a/mainui/developer/index.md b/mainui/developer/index.md index e69de29bb2..db0c235a30 100644 --- a/mainui/developer/index.md +++ b/mainui/developer/index.md @@ -0,0 +1,33 @@ +--- +layout: documentation +title: Developer Tools - Overview +--- + +# Developer Tools - Overview + + +The developer tools page is split into two tabs: + +- Expert Features +- Debugging Features: Test the SSE connection and test different implementations of an icon for different states. + +The expert features include: + +## Advanced Object Managment + +- [**Widgets**](widgets)
+ Develop custom widgets, that can be then used on your pages. Community made widgets can be installed from the **UI** tab of the add-on store. +- **Block Libraries**
+ Even though Blockly comes with a large [library of blocks]({{base}}/configuration/blockly/) out of the box, you can still extend it by developing your own Block libraries. +- **Add Items from textual definition**
+ Create or update Items and links in bulk by using the [`.items`-file syntax]({{base}}/configuration/items). + +## Maintenance Tools + +- **Developer Sidebar** + The [developer sidebar]({{base}}/mainui/developer/sidebar) is accessible from anywhere in the UI and provides both an integrated help and developer tools, like the universal search or the widget expression tester. + In fact does the integrated help render selected parts of the [Main UI documentation]({{base}}/mainui). + So if you read this from the website: You can also read this from inside the UI. +- **API Explorer** + Interactively discover and access the [REST API]({{base}}/configuration/restdocs), which is also used by Main UI to interact with the openHAB server. + diff --git a/mainui/developer/sidebar.md b/mainui/developer/sidebar.md new file mode 100644 index 0000000000..bf49c2d7e5 --- /dev/null +++ b/mainui/developer/sidebar.md @@ -0,0 +1,55 @@ +--- +layout: documentation +title: Developer Tools - Developer Sidebar +--- + +# Developer Tools - Developer Sidebar + + +Main UI provides a developer sidebar for administrator user(s), that is accessible from anywhere in the UI. +The developer sidebar is split into a "tools" section with several useful tools including a [universal search]({{base}}/mainui/developer/sidebar#developer-sidebar-search) across nearly all UI-configurable entities and a widget expression tester, +and a "help" section aiming at providing help and useful information regarding configuration and setup. + + + +If your device's screen is wide enough (it has to be at least 1280 pixels wide), you can open the developer side-panel by: + +- Opening the **Developer Tools** page from the menu and enabling the developer sidebar. +- Clicking on the help icon displayed in the upper right corner of most pages. +- Pressing the key combination AltShiftD on your keyboard. + +## Developer Sidebar Search + +As already mentioned, the developer sidebar provides a universal search across nearly all UI-configurable entities. +This means, you can search through most configuration available in Main UI, including Things, Items, pages. + +Imagine you need to find all usages of an Item. +You could start to open all rules, scenes and scripts, check persistence configuration and have a look at pages and sitemaps to find usages of that Item - Or you use the developer sidebar search. + +The developer sidebar search ignores case (so it doesn't matter whether you search `LivingRoom_Light` or `livingroom_light`) and searches inside the following entities: + +- Things + - UID + - label +- Items + - name + - label + - tags (requires exact match, i.e. if the Item has a tag `Lightbulb`, only the search query `Lightbulb` (case doesn't matter) will match) + - metadata +- Pages (including Sitemaps) + - uid + - label + - content (widgets, tabs, charts, etc. with their configuration)/slots +- Transformations + - uid + - label + - type +- Rules, Scenes & Scripts + - Item name & Thing UID of triggers, actions & conditions + - script code (e.g. Rules DSL, JavaScript, and even Blockly) + - script MIME types (requires exact match) + - Blockly scripts (using `block`, `blockly` or `blocksource` as search string, where case is ignored) + - tags (requires exact match) +- Persistence Configurations: + - label & service id of persistence service + - Items persisted by persistence service diff --git a/ui/images/about-top-section.png b/mainui/images/about/about-top-section.png similarity index 100% rename from ui/images/about-top-section.png rename to mainui/images/about/about-top-section.png diff --git a/ui/images/bg-gray-setting.png b/mainui/images/about/bg-gray-setting.png similarity index 100% rename from ui/images/bg-gray-setting.png rename to mainui/images/about/bg-gray-setting.png diff --git a/ui/images/bg-white-setting.png b/mainui/images/about/bg-white-setting.png similarity index 100% rename from ui/images/bg-white-setting.png rename to mainui/images/about/bg-white-setting.png diff --git a/ui/images/dark-mode.png b/mainui/images/about/dark-mode.png similarity index 100% rename from ui/images/dark-mode.png rename to mainui/images/about/dark-mode.png diff --git a/ui/images/navbar-style.png b/mainui/images/about/navbar-style.png similarity index 100% rename from ui/images/navbar-style.png rename to mainui/images/about/navbar-style.png diff --git a/ui/images/notification.png b/mainui/images/about/notification.png similarity index 100% rename from ui/images/notification.png rename to mainui/images/about/notification.png diff --git a/ui/images/play-rule.png b/mainui/images/about/play-rule.png similarity index 100% rename from ui/images/play-rule.png rename to mainui/images/about/play-rule.png diff --git a/ui/images/simple-nav-off.png b/mainui/images/about/simple-nav-off.png similarity index 100% rename from ui/images/simple-nav-off.png rename to mainui/images/about/simple-nav-off.png diff --git a/ui/images/simple-nav-on.png b/mainui/images/about/simple-nav-on.png similarity index 100% rename from ui/images/simple-nav-on.png rename to mainui/images/about/simple-nav-on.png diff --git a/ui/images/webaudio-blockly.png b/mainui/images/about/webaudio-blockly.png similarity index 100% rename from ui/images/webaudio-blockly.png rename to mainui/images/about/webaudio-blockly.png diff --git a/mainui/index.md b/mainui/index.md index 279cfac2be..c145178b75 100644 --- a/mainui/index.md +++ b/mainui/index.md @@ -6,8 +6,10 @@ title: Main UI # Main UI - Overview -Welcome to help for openHAB's MainUI. -This user interface is the primary system for management of your openHAB system as well as one of the available standard UIs. +Since openHAB 3.0, the so-called "Main UI" is the primary web user interface of openHAB. +It allows you to configure openHAB system, and provides a user interface for monitoring and control of your smart home. + +If you are new to openHAB, please refer to the [Getting Started guide]({{base}}/tutorial/), which is introducing you to Main UI by using it to set up openHAB. Users with the administrator role can use the left panel menu to access: @@ -16,7 +18,15 @@ Users with the administrator role can use the left panel menu to access: - [**Add-on Store**](addons)
openHAB can and has to be extended via add-ons. Add-ons include bindings, automation, persistence and much more. Visit the store to discover all available add-ons. - [**Developer Tools**](developer)
- Special functions including creation of custom widgets and block libraries. + Special functions including creation of custom widgets and block libraries as well as the developer sidebar. - [**Help & About**](about)
The about page shows general information of your openHAB configuration and allows to configure some client related configuration. + +## Special Features + +This section attempts to highlight some of Main UI's "special" features by linking to their respective documentation: + +- [Developer Sidebar Search]({{base}}/mainui/developer/sidebar#developer-sidebar-search), which is able to search across nearly all UI-configurable entities. +- [Web Audio Sink]({{base}}/mainui/about#web-audio-sink) support, which allows the openHAB server to play audio on Main UI clients. +- [UI Command Item]({{base}}/mainui/about#) diff --git a/mainui/settings/index.md b/mainui/settings/index.md index 13c4e25f66..455cbb336e 100644 --- a/mainui/settings/index.md +++ b/mainui/settings/index.md @@ -55,7 +55,7 @@ See [What's the Difference Between a Rule, Script, and Schedule?]({{base}}/tutor ## System Settings -This section lists openHAB's system settings, which e.g. included location or time zone setup. +This section lists openHAB's system settings, which e.g. includes regional, language, unit system and network settings. ## Add-on Settings diff --git a/ui/aboutpage.md b/ui/aboutpage.md deleted file mode 100644 index b804bad117..0000000000 --- a/ui/aboutpage.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -layout: documentation -title: Help & About Page ---- - -# Help & About Page - -The about page shows general information of your openHAB configuration and allows to configure some client related configuration. - - [[toc]] - -## Top Section - -![img.png](images/about-top-section.png) - -- Version: shows the currently installed version of openHAB -- Links to the official openHAB Website, the openHAB Documentation and the Community Forum - -## Technical Information - -This section is collapsed by default and can be opened by clicking on it which then reveals the - -- Configuration folder on the server -- User data folder on the server -- Logs folder on the server -- Operating System openHAB is running on -- Java Runtime openHAB is running on -- number of processors and memory - -Clicking on View Details opens up a popup window that contains very detailed information like - -- Runtime information -- Locale (language) -- System information including memory information -- A list of all installed bindings -- Client information including device information, client settings (see also the below section), screen information, theme, user agent information. - -The content can be easily copied with the copy button on the top to provide it as additional information when asking questions in the community. - -## Appearance (for this device only) - -This section allows to have different appearance settings _per_ device. - -- **Theme**: Selects the theme for that device - - Auto: tries to detect the client type - - Android - - iOS - - Desktop - -![theme-selection.png](images/theme-selection.png) - -- **Dark mode** setting - - Auto: uses the default mode - - Light-Mode - - Dark-Mode - -![dark-mode.png](images/dark-mode.png) - -- **Navigation bars style**: inverts the colors in the navigation bar - -![navbar-style.png](images/navbar-style.png) - -## Miscellaneous settings - -- **Simple navigation bar on home page**: When switching it on, it means the navigation bar will look the same even whether you're at the top of the page or not - you won't have the alternate look with the date. -The first image depicts the normal setting (off), the second image shows it switched off - -![simple-nav-off.png](images/simple-nav-off.png) ![simple-nav-on.png](images/simple-nav-on.png) - -- **Standard home page background color**: This only relates to the light color scheme. -The background color will be the same as the regular pages you can show from e.g. the sidebar, which is a kind of gray instead of white. -The first image depicts the normal white setting (off), the second image shows it switched off with the gray setting. - -![bg-white-setting.png](images/bg-white-setting.png) ![bg-gray-setting.png](images/bg-gray-setting.png) - -- **Disable card expansion animations**: Disables the animations when expanding a widget card. -- **Disable page transition animations**: Disables the transitions when switching from one page to the other. - -### Enable Web Audio sink support - -- This setting is also part of the miscellaneous settings. -- The intent of that option is to allow sending audio to that device, e.g. if that device is a tablet that is hanging on the wall in a room and a specific audio should be sent to that device for notification purposes. -- To activate audio output of that particular device, switch on this option. -In case you want to activate audio on multiple devices, each device needs to be activated by opening the about page on the device. -Technically, this information (and all the other miscellaneous settings) are stored in the local storage of the browser. -- For me information [see here](https://github.com/openhab/openhab-webui/pull/1422) - -To test if it works play some static content that comes with openHAB in the /sounds dir using an openHAB console command. -Use [openHABs console](docs/administration/console.html#using-the-console) or just run the following from the linux shell: - -> openhab-cli console - -and then enter the following command: - -```text -openhab> audio play webaudio barking.mp3 -``` - -If you have a dog that gets triggered by barking you may opt for playing doorbell.mp3 instead. -If you play doorbell.mp3 your dog will then probably play its own barking audio sound. 😉 -Note that most browsers block web pages from playing audio/video automatically nowadays (though some browsers have a setting to activate automatic play) - -Here are some useful actions available to rules in which you can specify webaudio as sink, see: - -- [playSound](/docs/configuration/multimedia.html#actions-2) - -```text -playSound("webaudio", "barking.mp3") -``` - -- [say](/docs/configuration/multimedia.html#actions-3) - -```text -say("Hello world!", "voicerss:enUS", "webaudio") -``` - -You can also configure webaudio as sink when creating rules in the UI: - -![play-rule.png](images/play-rule.png) - -or using it in a blockly rule: - -![webaudio-blockly.png](images/webaudio-blockly.png) - -It is important to understand that you cannot address one particular device. -When you play a sound on webaudio, it will be played on each device where webaudio is activated. - -If you really like webaudio, you can also make it the default sink in the "Audio" settings - see [Settings->Audio](/docs/settings/services_system.html#Audio). -Then you can omit the webaudio sink ID from commands/actions. - -![settings-audio.png](images/settings-audio.png) - -## Reload - -Reload the web page to reflect the selected changes. diff --git a/ui/images/settings-audio.png b/ui/images/settings-audio.png deleted file mode 100644 index b075003c5dd992a7e402de7a297110e7df61ec80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13765 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 Fe*vjx)rtTB diff --git a/ui/mainui.md b/ui/mainui.md deleted file mode 100644 index ebc7c591ed..0000000000 --- a/ui/mainui.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -layout: documentation -title: Main UI ---- - -# Main UI - -Since openHAB 3.0, the so-called "Main UI" is the main web user interface of openHAB. -Main UI allows the administrator (you) to set up and configure openHAB, and provides many types of pages to visualize data and control Items. - -This page aims at providing an overview over Main UI's "special" features, which means it does not try to document Main UI in general or provide a comprehensive overview over all its many capabilities and configuration pages. -If you are new to openHAB, please refer to the [Getting Started guide]({{base}}/tutorial/), which is introducing you to Main UI by using it to set up openHAB. - -[[toc]] - -## Developer Sidebar - -Main UI provides a developer sidebar for administrator user(s), that is accessible from anywhere in the UI. -The developer sidebar is split into a "tools" section with several useful tools including a universal search across nearly all UI-configurable entities and a widget expression tester, and a "help" section aiming at providing help and useful information regarding configuration and setup. - -If your device's screen is wide enough (it has to be at least 1280 pixels wide), you can open the developer side-panel by: - -- Opening the **Developer Tools** page from the menu and enabling the developer sidebar. -- Clicking on the help icon displayed in the upper right corner of most pages. -- Pressing the key combination AltShiftD on your keyboard. - -### Developer Sidebar Search - -As already mentioned, the developer sidebar provides a universal search across nearly all UI-configurable entities. -This means, you can search through most configuration available in Main UI, including Things, Items, pages. - -Imagine you need to find all usages of an Item. -You could start to open all rules, scenes and scripts, check persistence configuration and have a look at pages and sitemaps to find usages of that Item - Or you use the developer sidebar search. - -The developer sidebar search ignores case (so it doesn't matter whether you search `LivingRoom_Light` or `livingroom_light`) and searches inside the following entities: - -- Things - - UID - - label -- Items - - name - - label - - tags (requires exact match, i.e. if the Item has a tag `Lightbulb`, only the search query `Lightbulb` (case doesn't matter) will match) - - metadata -- Pages (including Sitemaps) - - uid - - label - - content (widgets, tabs, charts, etc. with their configuration)/slots -- Transformations - - uid - - label - - type -- Rules, Scenes & Scripts - - Item name & Thing UID of triggers, actions & conditions - - script code (e.g. Rules DSL, JavaScript, and even Blockly) - - script MIME types (requires exact match) - - Blockly scripts (using `block`, `blockly` or `blocksource` as search string, where case is ignored) - - tags (requires exact match) -- Persistence Configurations: - - label & service id of persistence service - - Items persisted by persistence service - -## Web Audio Sink - -Main UI implements a web audio sink which allows the openHAB server to play audio through the web browser. - -To enable web audio sink support for a client, open the **Help & About** page from the menu and turn on the **Enable Web Audio sink support** option. -As it is setting specific to your browser environment, web audio support has to be enabled for every client where it should be used. - -Please note that due to limitations in Safari (and possibly Chrome as well), a user interaction is required after the first audio stream has been sent to actually play it. -This means, that after opening Main UI, the first audio that should be played on the web audio sink is only player after the user interacts with Main UI in any way (i.e. touching the screen is enough). -For subsequent audio playback, that is not required anymore and the audio is played immediately. - -Please also note that you cannot address a particular web audio-enabled device. -When you play a sound on web audio, it will be played on all devices where web audio is enabled. - -Web audio sinks can be used for example on wall-mounted tablets to make announcements using a [text-to-speech (TTS) engine]({{base}}/configuration/multimedia.html#text-to-speech) and play notification or alarm sounds. - -For more information about audio sinks as well as audio and voice actions, please refer to the [multimedia configuration docs]({{base}}/configuration/multimedia.html), where you will also find examples including UI-based rules and Blockly. - -## UI Command Item - -Main UI can be controlled from the openHAB server by setting up a so-called UI command Item. - -Similarly to web audio support, this is a setting specific to your local browser environment, so you have to define the UI command Item for each client, which also allows you to different UI command Items for different clients. -To set up an Item as the UI command Item on your device, first create a particular Item of type `String`, then open the **Help & About** page from the menu and select an Item for the **Listen for UI command to** option. - -The command Item has to be a `String` Item. -The UI is listening for commands to that Item, and if an Item command is a valid command string, the UI executes the given command. - -Currently, the supported commands are: - -- `navigate:$path`: - Navigate to a given `$path`, e.g. `navigate:/locations` to navigate to the **Locations** tab of the home page or `navigate:/page/my_custom_page` to navigate to a page with the ID `my_custom_page`. - For example, you can use this to open a video camera page of the door automatically when the doorbell is rung. -- `popup:$target`, `popover:$target` and `sheet:$target`: - Open a `$target`, which can be a page (`$target` is `page:` + a page ID), a custom widget (`$target` is `widget:` + widget ID) or any [`oh-` component]({{base}}/ui/components/) (`$target` is the component name), in a popup, popover or sheet. - - For example, to open `oh-clock-card` inside a popup, send `popup:oh-clock-card` to the UI command Item. -- `notification:$text:$title:$subtitle:$titleRight:$closeTimeout`: - Display a notification inside the UI: - The `$text` parameter is mandatory, all other parameters are optional. - `$closeTimeout` is in milliseconds and defaults 5000, which means by default a notification will be closed after 5 seconds. - To leave out a parameter, leave a colon space empty, e.g. `notification:$text:$title:::$closeTimeout`. - - For example, send `notification:This is the text.:This is the title.:This is the subtitle.:This is the right title.` to the UI command Item to display the following notification: -

-- `close`: - Close all popups, popovers and sheets. -- `back`: - Navigate back. -- `reload`: - Reload the current page.