Merge branch 'main' into pr-webconsole

pull/2502/head
stefan-hoehn 2025-06-16 21:07:24 +02:00 committed by GitHub
commit c23fbff70e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 117 additions and 95 deletions

View File

@ -9,7 +9,7 @@ MD013: false
# Allow duplicate headers for different nesting # Allow duplicate headers for different nesting
MD024: MD024:
allow_different_nesting: true siblings_only: true
# Allow Multiple top level headers in the same document # Allow Multiple top level headers in the same document
MD025: false MD025: false

View File

@ -1,18 +0,0 @@
name: Check for broken links
# https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/
on:
push:
branches:
- main
jobs:
markdown-link-check:
name: Check for broken links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: gaurav-nelson/github-action-markdown-link-check@v1

40
.github/workflows/markdown.yml vendored Normal file
View File

@ -0,0 +1,40 @@
name: Check Markdown For Errors
on:
push:
branches:
- main
tags-ignore:
- '**'
pull_request:
branches:
- main
jobs:
markdownlint:
name: markdownlint
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
# pinning to SHA to mitigate possible supply chain attack
- name: Run markdownlint-cli
uses: nosborn/github-action-markdown-cli@58bcfd1af530d87a13d51b76e6713b52602e3613 # v3.4.0
with:
files: .
config_file: ".github/.markdownlint.yaml"
# markdown-link-check:
# name: Broken Links Check
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
#
# # pinning to SHA to mitigate possible supply chain attack
# - name: Check for broken links
# uses: tcort/github-action-markdown-link-check@a800ad5f1c35bf61987946fd31c15726a1c9f2ba # v1.1.0
# with:
# use-quiet-mode: 'yes' # only show errors in output
# use-verbose-mode: 'yes' # show detailed HTTP status for checked links

View File

@ -1,33 +0,0 @@
name: Checking Markdown For Errors
# https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/
on:
push:
branches:
- main
- 2.5.x
tags-ignore:
- '**'
pull_request:
branches:
- main
types:
- open
- synchronize
- reopen
jobs:
markdownlint:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Run markdownlint-cli
uses: nosborn/github-action-markdown-cli@v3
with:
files: .
config_file: ".github/.markdownlint.yaml"

View File

@ -75,12 +75,12 @@ Usage: openhab:send <item> <command> - sends a command for an item
### Links ### Links
| Command | Description | | Command | Description |
|---------------------------------------------------------|----------------------------------------------------------------------------------| |----------------------------------------------|----------------------------------------------------------------------------------|
| `openhab:links list` | lists all links | | `openhab:links list` | lists all links |
| `openhab:links link <itemName> <channelUID>` | links an item with to channel | | `openhab:links link <itemName> <channelUID>` | links an item with to channel |
| `openhab:links unlink <itemName> <thingUID>` | unlinks an item with to channel | | `openhab:links unlink <itemName> <thingUID>` | unlinks an item with to channel |
| `openhab:links clear` | removes all managed links | | `openhab:links clear` | removes all managed links |
| `openhab:links orphan <list|purge>` | lists/purges all orphaned - one missing element (either item or channel) - links | | `openhab:links orphan <list\|purge>` | lists/purges all orphaned - one missing element (either item or channel) - links |
### Audio ### Audio

View File

@ -308,6 +308,7 @@ If there is no `dayset-weekend` defined, calls to `isWeekend` will generate erro
Config file location: `$OH_CONF/services/ephemeris.cfg`. Config file location: `$OH_CONF/services/ephemeris.cfg`.
Fields: Fields:
Field | Description Field | Description
-|- -|-
`country` | Country to use to get the built in list of bank holidays, uses the standard two letter country code. `country` | Country to use to get the built in list of bank holidays, uses the standard two letter country code.

View File

@ -3,6 +3,7 @@ layout: documentation
title: Rules Blockly title: Rules Blockly
--- ---
<!-- markdownlint-disable MD036 --> <!-- markdownlint-disable MD036 -->
<!-- markdownlint-disable MD039 -->
# Blockly Reference # Blockly Reference

View File

@ -424,6 +424,7 @@ The default icon will be used for negative numbers, or above 100 i.e. the availa
Dimmer type Items work in the same way, being limited to 0-100 anyway. Dimmer type Items work in the same way, being limited to 0-100 anyway.
For a dimmable light (0-100%), you might provide icons as in the example: For a dimmable light (0-100%), you might provide icons as in the example:
| File name | Description | | File name | Description |
| ----------------- | ---------------------------------------------------- | | ----------------- | ---------------------------------------------------- |
| `mydimmer.svg` | Default icon (used in undefined states) | | `mydimmer.svg` | Default icon (used in undefined states) |

View File

@ -533,100 +533,128 @@ All parameters are Strings.
Read the JSR223 language specific documentation for examples of using these `TriggerType` objects. Read the JSR223 language specific documentation for examples of using these `TriggerType` objects.
::: details timer.DateTimeTrigger ::: details timer.DateTimeTrigger
| Parameter | Description | | Parameter | Description |
| ---------- | ---------------------- | |------------|------------------------|
| `itemName` | The name of the `Item` | | `itemName` | The name of the `Item` |
::: :::
::: details timer.GenericCronTrigger ::: details timer.GenericCronTrigger
| Parameter | Description | | Parameter | Description |
| ---------------- | ------------------- | |------------------|---------------------|
| `cronExpression` | The cron expression | | `cronExpression` | The cron expression |
::: :::
::: details timer.TimeOfDayTrigger ::: details timer.TimeOfDayTrigger
| Parameter | Description | | Parameter | Description |
| --------- | -------------------------- | |-----------|----------------------------|
| `time` | The time in "hh:mm" format | | `time` | The time in "hh:mm" format |
::: :::
::: details core.ItemCommandTrigger ::: details core.ItemCommandTrigger
| Parameter | Description | | Parameter | Description |
| ---------- | ------------------------ | |------------|--------------------------|
| `itemName` | The name of the `Item` | | `itemName` | The name of the `Item` |
| `command` | The `Command` (optional) | | `command` | The `Command` (optional) |
::: :::
::: details core.ItemStateUpdateTrigger ::: details core.ItemStateUpdateTrigger
| Parameter | Description | | Parameter | Description |
| ---------- | ---------------------- | |------------|------------------------|
| `itemName` | The name of the `Item` | | `itemName` | The name of the `Item` |
| `state` | The `State` (optional) | | `state` | The `State` (optional) |
::: :::
::: details core.ItemStateChangeTrigger ::: details core.ItemStateChangeTrigger
| Parameter | Description | | Parameter | Description |
| --------------- | ------------------------------- | |-----------------|---------------------------------|
| `itemName` | The name of the `Item` | | `itemName` | The name of the `Item` |
| `previousState` | The previous `State` (optional) | | `previousState` | The previous `State` (optional) |
| `state` | The `State` (optional) | | `state` | The `State` (optional) |
::: :::
::: details core.GroupCommandTrigger ::: details core.GroupCommandTrigger
| Parameter | Description | | Parameter | Description |
| ----------- | --------------------------- | |-------------|-----------------------------|
| `groupName` | The name of the `GroupItem` | | `groupName` | The name of the `GroupItem` |
| `command` | The `Command` (optional) | | `command` | The `Command` (optional) |
::: :::
::: details core.GroupStateUpdateTrigger ::: details core.GroupStateUpdateTrigger
| Parameter | Description | | Parameter | Description |
| ----------- | --------------------------- | |-------------|-----------------------------|
| `groupName` | The name of the `GroupItem` | | `groupName` | The name of the `GroupItem` |
| `state` | The `State` (optional) | | `state` | The `State` (optional) |
::: :::
::: details core.GroupStateChangeTrigger ::: details core.GroupStateChangeTrigger
| Parameter | Description | | Parameter | Description |
| --------------- | ------------------------------- | |-----------------|---------------------------------|
| `groupName` | The name of the `GroupItem` | | `groupName` | The name of the `GroupItem` |
| `previousState` | The previous `State` (optional) | | `previousState` | The previous `State` (optional) |
| `state` | The `State` (optional) | | `state` | The `State` (optional) |
::: :::
::: details core.ThingStatusUpdateTrigger ::: details core.ThingStatusUpdateTrigger
| Parameter | Description | | Parameter | Description |
| ---------- | ---------------------------- | |------------|------------------------------|
| `thingUID` | The `thingUID` | | `thingUID` | The `thingUID` |
| `status` | The `ThingStatus` (optional) | | `status` | The `ThingStatus` (optional) |
::: :::
::: details core.ThingStatusChangeTrigger ::: details core.ThingStatusChangeTrigger
| Parameter | Description | | Parameter | Description |
| ---------------- | ------------------------------------- | |------------------|---------------------------------------|
| `thingUID` | The `thingUID` | | `thingUID` | The `thingUID` |
| `previousStatus` | The previous `ThingStatus` (optional) | | `previousStatus` | The previous `ThingStatus` (optional) |
| `status` | The `ThingStatus` (optional) | | `status` | The `ThingStatus` (optional) |
::: :::
::: details core.ChannelEventTrigger ::: details core.ChannelEventTrigger
| Parameter | Description | | Parameter | Description |
| ------------ | ---------------------------------------- | |--------------|------------------------------------------|
| `channelUID` | The `ChannelUID` of the `Channel` | | `channelUID` | The `ChannelUID` of the `Channel` |
| `event` | The `Channel` trigger `Event` (optional) | | `event` | The `Channel` trigger `Event` (optional) |
::: :::
::: details core.GenericEventTrigger ::: details core.GenericEventTrigger
| Parameter | Description | | Parameter | Description |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `topic` | The topic to match, as a file-system style glob (*, **, ?, and {} operators).<br><br>Example filters:<br>Item events: "openhab/items/\*/"<br>Channel events: "openhab/channels/\*/triggered"<br>Thing events: "openhab/things/\*\*" | | `topic` | The topic to match, as a file-system style glob (*, **, ?, and {} operators).<br><br>Example filters:<br>Item events: "openhab/items/\*/"<br>Channel events: "openhab/channels/\*/triggered"<br>Thing events: "openhab/things/\*\*" |
| `source` | The object that triggered the event, such as `org.openhab.core.expire` | | `source` | The object that triggered the event, such as `org.openhab.core.expire` |
| `types` | `ItemCommandEvent`, `ItemStateEvent`, `ItemStateChangedEvent`, `GroupItemStateChangedEvent`, `ItemAddedEvent`, `ItemRemovedEvent`, `ThingAddedEvent`, `ThingRemovedEvent`, `ThingStatusInfoChangedEvent`, `ThingStatusInfoEvent`, `ThingUpdatedEvent`, etc. A non-exhaustive list can be found [in the Javadocs](https://www.openhab.org/javadoc/latest/org/openhab/core/events/event). | | `types` | `ItemCommandEvent`, `ItemStateEvent`, `ItemStateChangedEvent`, `GroupItemStateChangedEvent`, `ItemAddedEvent`, `ItemRemovedEvent`, `ThingAddedEvent`, `ThingRemovedEvent`, `ThingStatusInfoChangedEvent`, `ThingStatusInfoEvent`, `ThingUpdatedEvent`, etc. A non-exhaustive list can be found [in the Javadocs](https://www.openhab.org/javadoc/latest/org/openhab/core/events/event). |
| `payload` | Regex to match against the actual event data. | | `payload` | Regex to match against the actual event data. |
::: :::
::: details core.SystemStartlevelTrigger ::: details core.SystemStartlevelTrigger
| Parameter | Description | | Parameter | Description |
| ------------ | ----------------------- | |--------------|-------------------------|
| `startlevel` | The system `StartLevel` | | `startlevel` | The system `StartLevel` |
::: :::

View File

@ -93,12 +93,12 @@ It consists of bundles that implement all add-on services from the OSGi specific
Some of the core bundles are listed in the table below. Some of the core bundles are listed in the table below.
Some or all of these bundles must be included in your runtime configuration, if you want to use the services that they provide. Some or all of these bundles must be included in your runtime configuration, if you want to use the services that they provide.
Name | Bundle Symbolic Name | Description | Name | Bundle Symbolic Name | Description |
-------- | -------- | -------- |----------------------|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
Declarative Services | org.eclipse.equinox.ds | An implementation of the OSGi [Declarative Services](osgids.html) specification | Declarative Services | org.eclipse.equinox.ds | An implementation of the OSGi [Declarative Services](osgids.html) specification |
Event Admin Service | org.eclipse.equinox.event | OSGi Compendium Release 8 [Event Admin](https://osgi.org/javadoc/osgi.cmpn/8.0.0/org/osgi/service/event/EventAdmin.html) Service provides an inter-bundle communication mechanism based on an event publish and subscribe model | Event Admin Service | org.eclipse.equinox.event | OSGi Compendium Release 8 [Event Admin](https://osgi.org/javadoc/osgi.cmpn/8.0.0/org/osgi/service/event/EventAdmin.html) Service provides an inter-bundle communication mechanism based on an event publish and subscribe model |
Equinox Utilities | org.eclipse.equinox.util | A library of utility classes that are frequently used from the Equinox OSGi Service implementation bundles | Equinox Utilities | org.eclipse.equinox.util | A library of utility classes that are frequently used from the Equinox OSGi Service implementation bundles |
OSGi Services API | org.eclipse.osgi.service | This bundle contains the set of OSGi specified service APIs | OSGi Services API | org.eclipse.osgi.service | This bundle contains the set of OSGi specified service APIs |
Table 2. OSGi Bundles (Full list can be found at: <https://www.eclipse.org/equinox/bundles/>) Table 2. OSGi Bundles (Full list can be found at: <https://www.eclipse.org/equinox/bundles/>)

View File

@ -206,10 +206,10 @@ A component goes through several states in his lifecycle:
- **REGISTERED** - temporary state. Only *delayed- components go through this state; - **REGISTERED** - temporary state. Only *delayed- components go through this state;
- **ACTIVE** - the component is active and component instance is created. - **ACTIVE** - the component is active and component instance is created.
<img src="images/immediatecomponent.png" width="320" height="200" /> <img src="images/immediatecomponent.png" alt="Delayed component lifecycle" width="320" height="200" />
Fig.1 Immediate component lifecycle Fig.1 Immediate component lifecycle
<img src="images/delayedcomponent.png" width="400" height="200" /> <img src="images/delayedcomponent.png" alt="Delayed component lifecycle" width="400" height="200" />
Fig.2 Delayed component lifecycle Fig.2 Delayed component lifecycle
### States ### States

1
images/addons/matter.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="274.562" viewBox="0 0 338.667 72.644" xmlns:v="https://vecta.io/nano"><path d="M294.697 60.122c6.777 0 12.314-3.055 15.781-7.762l-3.725-2.121c-2.691 3.415-6.831 5.641-12.056 5.641-8.464 0-14.985-5.832-15.666-13.294h33.565c.024-.441.05-.881.05-1.293 0-10.397-8.482-18.831-18.854-18.831s-18.802 8.435-18.802 18.832 8.43 18.829 19.706 18.829zm-.877-33.419c7.068 0 13.213 5.068 14.568 11.796h-29.139c1.346-6.727 7.455-11.796 14.571-11.796zm-99.896-4.243c-10.398 0-18.83 8.435-18.83 18.833s8.432 18.83 18.83 18.83c6.281 0 11.468-3.078 14.59-7.806v7.082h4.24V23.184h-4.24v7.082c-3.122-4.728-8.309-7.806-14.59-7.806zm0 4.243c8.07 0 14.59 6.518 14.59 14.59s-6.52 14.587-14.59 14.587a14.57 14.57 0 0 1-14.587-14.587c0-8.072 6.517-14.59 14.587-14.59zM65.715 32.905c-7.996 2.19-15.164 7.406-19.636 15.152s-5.407 16.568-3.306 24.587l7.835-4.526a23.9 23.9 0 0 1 1.105-11.836l18.309 10.569 4.303-2.487v-4.967L56.016 48.829a23.92 23.92 0 0 1 9.699-6.879zm-57.108 0v9.045a23.91 23.91 0 0 1 9.699 6.879L0 59.398v4.967l4.303 2.487 18.306-10.569c1.39 3.868 1.726 7.938 1.108 11.836l7.832 4.526c2.101-8.02 1.167-16.841-3.306-24.587A32.52 32.52 0 0 0 8.607 32.905zM337.063 22.46c-8.542 0-15.466 6.448-15.466 15.47v21.469h4.243V37.93c0-6.68 5.025-11.227 11.223-11.227h1.604V22.46zm-213.131 0c-8.542 0-15.466 6.448-15.466 15.47v21.469h4.243V37.93c0-6.68 5.023-11.227 11.223-11.227s11.227 4.547 11.227 11.227v21.469h4.243V37.93c0-6.68 5.023-11.227 11.223-11.227s11.227 4.547 11.227 11.227v21.469h4.243V37.93c0-9.021-6.927-15.47-15.47-15.47-5.535 0-10.576 2.848-13.37 8.642-2.845-5.741-7.84-8.642-13.323-8.642zm108.531-11.636l-4.24 2.43v9.931h-5.691v4.087h5.691v23.847c0 4.605 3.621 8.279 8.225 8.279h6.307v-4.243h-6.307c-2.175 0-3.986-1.811-3.986-4.087V27.271h21.574v23.847c0 4.605 3.619 8.279 8.171 8.279h6.364v-4.243h-6.364c-2.12 0-3.929-1.811-3.929-4.087V27.271h10.293v-4.087H258.28v-12.36l-4.243 2.43v9.931h-21.574zM37.161 0l-4.303 2.484v21.138c-4.046-.731-7.736-2.476-10.804-4.961l-7.838 4.522c5.895 5.83 14 9.429 22.946 9.429s17.051-3.599 22.946-9.429l-7.835-4.522a23.92 23.92 0 0 1-10.807 4.961V2.484z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
images/addons/meross.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

1
images/addons/ring.svg Normal file
View File

@ -0,0 +1 @@
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 813.97 541.95"><defs><style>.st0 {fill: #007acc;}.st1, .st2 {fill: #000f30;}.st2 {fill-rule: evenodd;}</style></defs><path class="st1" d="M430.77,107.42c-63.99,0-115.99,51.03-115.99,116.95v172.16c0,2.25,1.76,4.01,4.01,4.01h55.99c2.25,0,4.01-1.76,4.01-4.01v-172.97c0-28.8,23.35-52.01,52.01-52.01s52.16,23.35,52.16,52.01v172.97c0,2.25,1.76,4.01,4.01,4.01h56c2.25,0,4.01-1.76,4.01-4.01v-172.16c0-65.92-52.16-116.95-116.17-116.95h-.03Z"></path><path class="st1" d="M275.37,396.7c0,2.25-1.76,4.01-4.01,4.01h-55.99c-2.25,0-4.01-1.76-4.01-4.01v-252.95c.32-17.44,14.55-31.52,32.01-31.52s31.69,14.08,32.01,31.52v252.95Z"></path><path class="st1" d="M153.43,181.51c-1.27,1.76-3.84,2.08-5.6.81-8.95-6.7-19.34-10.71-31.03-10.71-28.95-.49-52.79,23.67-52.79,52.79v172.16c0,2.25-1.76,4.01-4.01,4.01H4.01c-2.25,0-4.01-1.76-4.01-4.01v-172.16c0-65.14,52.01-117.29,116.15-117.29,26.26,0,51.2,10.24,69.93,23.03,1.91,1.27,2.23,3.84.96,5.6l-33.6,45.77Z"></path><circle class="st0" cx="243.4" cy="40.03" r="40.03"></circle><path class="st2" d="M813.65,226.11c-1.57-72.76-55.53-118.25-116-118.57-64.97-.49-118.08,53.6-118.08,118.57v61.91c0,64.8,52.48,117.27,117.27,117.27,20.32-.32,36.31-7.53,48.95-19.05,1.93-1.76,4.96-.49,4.96,2.08v31.37c0,15.36-6.24,29.93-16.65,40.81-6.09,7.04-16.65,12.15-23.67,14.08-38.88,11.2-59.52-7.19-85.12-28.17-1.93-1.59-4.65-1.12-6.09.81l-33.24,44.84c-1.12,1.44-.95,3.52.32,4.79,14.23,15.21,38.39,34.55,73.11,42.23,18.56,3.52,37.12,3.52,50.71,1.44,11.05-1.59,21.76-4.96,31.84-9.44,9.93-4.47,19.2-10.39,27.68-17.29,8.31-6.87,15.84-15.04,22.08-23.84,6.24-8.95,11.37-18.73,15.04-29.12,3.84-10.56,6.09-21.76,6.87-32.96.17-2.72.32-5.45.32-8.17l-.32-193.61ZM749.45,295.47c-3.7,26.02-26.17,46.03-53.05,46.03-25.07,0-46.31-17.41-52.05-40.86-.06-.24-.11-.48-.17-.74-.32-1.41-.6-2.84-.81-4.29-1.47-9.17-2.42-23.36-2.42-39.31s.95-30.14,2.42-39.31c.21-1.45.49-2.88.81-4.29.06-.25.11-.5.17-.74,5.75-23.45,26.98-40.86,52.05-40.86s44.65,16.09,51.31,38.16c.42,1.22.81,2.79,1.19,4.64,0,0,0,0,0,.01,1.78,8.88,2.96,24.51,2.96,42.32,0,15.91-.94,30.08-2.41,39.25Z"></path></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -18,7 +18,7 @@ h1.welcome {
} }
</style> </style>
<img src="/openhab-logo-square.svg" width="150" height="150" class="intro-logo" /> <img src="/openhab-logo-square.svg" width="150" height="150" class="intro-logo" alt="openHAB logo" />
<h1 class="welcome">Welcome!</h1> <h1 class="welcome">Welcome!</h1>

View File

@ -165,7 +165,7 @@ Currently, the supported commands are:
To leave out a parameter, leave a colon space empty, e.g. `notification:$text:$title:::$closeTimeout`. 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: 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:
<p align="center"><img style="max-width: 40%;" src="images/notification.png"/></p> <p align="center"><img style="max-width: 40%;" src="images/notification.png" alt="notification"/></p>
- `close`: - `close`:
Close all popups, popovers and sheets. Close all popups, popovers and sheets.
- `back`: - `back`:

View File

@ -48,12 +48,12 @@ Every openHAB deployment is unique.
Consequently, every administrator of an openHAB instance will need to create a custom interface for the users of their bespoke home automation system. Consequently, every administrator of an openHAB instance will need to create a custom interface for the users of their bespoke home automation system.
openHAB provides a number of options to support this in addition to MainUI Pages. openHAB provides a number of options to support this in addition to MainUI Pages.
Interface | Purpose | How the UI is Defined | Notes | Interface | Purpose | How the UI is Defined | Notes |
-|-|-|- |------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|
[Pages]({{base}}/ui/index.html) | Built into MainUI. Allows for a rich set of options to present your home automation. | Can be built automatically through the semantic model as well as customized which includes [Layout Pages]({{base}}/ui/layout-pages.html), [Map Pages]({{base}}/ui/map-pages.html), [Floorplan Pages]({{base}}/ui/floorplan-pages.html), [Tabbed Pages]({{base}}/ui/tabbed-pages.html) and [Chart Pages]({{base}}/ui/chart-pages.html). | [Pages]({{base}}/ui/index.html) | Built into MainUI. Allows for a rich set of options to present your home automation. | Can be built automatically through the semantic model as well as customized which includes [Layout Pages]({{base}}/ui/layout-pages.html), [Map Pages]({{base}}/ui/map-pages.html), [Floorplan Pages]({{base}}/ui/floorplan-pages.html), [Tabbed Pages]({{base}}/ui/tabbed-pages.html) and [Chart Pages]({{base}}/ui/chart-pages.html). | |
[Sitemaps]({{base}}/ui/sitemaps.html) | A simple declaritive way to define a simple user interface | Created using .sitemap files or through MainUI. | Used by BasicUI and the phone apps by default. | [Sitemaps]({{base}}/ui/sitemaps.html) | A simple declaritive way to define a simple user interface | Created using .sitemap files or through MainUI. | Used by BasicUI and the phone apps by default. |
[HABPanel]({{base}}/ui/habpanel/habpanel.html) | UI designed for fixed wall mounted tablets and similar touch screen displays using a blocks interface (e.g. the Windows 10 start menu) with a lot of customization options. | Built graphically though the browser. A number of custom widgets are defined and installable. | [HABPanel]({{base}}/ui/habpanel/habpanel.html) | UI designed for fixed wall mounted tablets and similar touch screen displays using a blocks interface (e.g. the Windows 10 start menu) with a lot of customization options. | Built graphically though the browser. A number of custom widgets are defined and installable. | |
[HABot]({{base}}/ui/habot/) | Provides a basic chatbot interface to interact with your home automation through natural langauge. | Requires the configuration of the semantic model. | [HABot]({{base}}/ui/habot/) | Provides a basic chatbot interface to interact with your home automation through natural langauge. | Requires the configuration of the semantic model. | |
Once installed, any non-Pages UI can be accessed in the "Other Apps" menu that pops up when clicking on the square icon in the upper right corner of the MainUI Overview page (the first page you see when first accessing openHAB). Once installed, any non-Pages UI can be accessed in the "Other Apps" menu that pops up when clicking on the square icon in the upper right corner of the MainUI Overview page (the first page you see when first accessing openHAB).