diff --git a/.github/.markdownlint.yaml b/.github/.markdownlint.yaml index 7eb52a96f..273250e0e 100644 --- a/.github/.markdownlint.yaml +++ b/.github/.markdownlint.yaml @@ -2,14 +2,14 @@ default: true # Expect dash usage for unorderd lists MD004: - style: dash + style: dash # Allow long line lengths MD013: false # Allow duplicate headers for different nesting MD024: - allow_different_nesting: true + siblings_only: true # Allow Multiple top level headers in the same document MD025: false @@ -17,19 +17,19 @@ MD025: false # Allow trailing punctuation in headers MD026: false MD029: - style: one + style: one # Allow inline HTML MD033: false # Code block style MD046: - style: fenced + style: fenced # Emphasiszis in underscore MD049: - style: underscore - + style: underscore + # Strong in asterisk MD050: - style: asterisk + style: asterisk diff --git a/.github/workflows/brokenLinkCheck.yml b/.github/workflows/brokenLinkCheck.yml deleted file mode 100644 index f86aaef38..000000000 --- a/.github/workflows/brokenLinkCheck.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/markdown.yml b/.github/workflows/markdown.yml new file mode 100644 index 000000000..1c7aafb8e --- /dev/null +++ b/.github/workflows/markdown.yml @@ -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 diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml deleted file mode 100644 index 7314618e4..000000000 --- a/.github/workflows/markdownlint.yml +++ /dev/null @@ -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" diff --git a/administration/runtime.md b/administration/runtime.md index a8f73fc4b..d39da5e08 100644 --- a/administration/runtime.md +++ b/administration/runtime.md @@ -74,13 +74,13 @@ Usage: openhab:send - sends a command for an item ### Links -| Command | Description | -|---------------------------------------------------------|----------------------------------------------------------------------------------| -| `openhab:links list` | lists all links | -| `openhab:links link ` | links an item with to channel | -| `openhab:links unlink ` | unlinks an item with to channel | -| `openhab:links clear` | removes all managed links | -| `openhab:links orphan ` | lists/purges all orphaned - one missing element (either item or channel) - links | +| Command | Description | +|----------------------------------------------|----------------------------------------------------------------------------------| +| `openhab:links list` | lists all links | +| `openhab:links link ` | links an item with to channel | +| `openhab:links unlink ` | unlinks an item with to channel | +| `openhab:links clear` | removes all managed links | +| `openhab:links orphan ` | lists/purges all orphaned - one missing element (either item or channel) - links | ### Audio diff --git a/configuration/actions.md b/configuration/actions.md index f6af03fe5..4cd131fe2 100644 --- a/configuration/actions.md +++ b/configuration/actions.md @@ -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`. Fields: + Field | Description -|- `country` | Country to use to get the built in list of bank holidays, uses the standard two letter country code. diff --git a/configuration/blockly/index.md b/configuration/blockly/index.md index a520922cc..25a085852 100644 --- a/configuration/blockly/index.md +++ b/configuration/blockly/index.md @@ -3,6 +3,7 @@ layout: documentation title: Rules Blockly --- + # Blockly Reference diff --git a/configuration/items.md b/configuration/items.md index 200406990..108d0c4c8 100644 --- a/configuration/items.md +++ b/configuration/items.md @@ -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. For a dimmable light (0-100%), you might provide icons as in the example: + | File name | Description | | ----------------- | ---------------------------------------------------- | | `mydimmer.svg` | Default icon (used in undefined states) | diff --git a/configuration/jsr223.md b/configuration/jsr223.md index c082495cc..4972e0dd3 100644 --- a/configuration/jsr223.md +++ b/configuration/jsr223.md @@ -533,100 +533,128 @@ All parameters are Strings. Read the JSR223 language specific documentation for examples of using these `TriggerType` objects. ::: details timer.DateTimeTrigger + | Parameter | Description | -| ---------- | ---------------------- | +|------------|------------------------| | `itemName` | The name of the `Item` | + ::: ::: details timer.GenericCronTrigger + | Parameter | Description | -| ---------------- | ------------------- | +|------------------|---------------------| | `cronExpression` | The cron expression | + ::: ::: details timer.TimeOfDayTrigger + | Parameter | Description | -| --------- | -------------------------- | +|-----------|----------------------------| | `time` | The time in "hh:mm" format | + ::: ::: details core.ItemCommandTrigger + | Parameter | Description | -| ---------- | ------------------------ | +|------------|--------------------------| | `itemName` | The name of the `Item` | | `command` | The `Command` (optional) | + ::: ::: details core.ItemStateUpdateTrigger + | Parameter | Description | -| ---------- | ---------------------- | +|------------|------------------------| | `itemName` | The name of the `Item` | | `state` | The `State` (optional) | + ::: ::: details core.ItemStateChangeTrigger + | Parameter | Description | -| --------------- | ------------------------------- | +|-----------------|---------------------------------| | `itemName` | The name of the `Item` | | `previousState` | The previous `State` (optional) | | `state` | The `State` (optional) | + ::: ::: details core.GroupCommandTrigger + | Parameter | Description | -| ----------- | --------------------------- | +|-------------|-----------------------------| | `groupName` | The name of the `GroupItem` | | `command` | The `Command` (optional) | + ::: ::: details core.GroupStateUpdateTrigger + | Parameter | Description | -| ----------- | --------------------------- | +|-------------|-----------------------------| | `groupName` | The name of the `GroupItem` | | `state` | The `State` (optional) | + ::: ::: details core.GroupStateChangeTrigger + | Parameter | Description | -| --------------- | ------------------------------- | +|-----------------|---------------------------------| | `groupName` | The name of the `GroupItem` | | `previousState` | The previous `State` (optional) | | `state` | The `State` (optional) | + ::: ::: details core.ThingStatusUpdateTrigger + | Parameter | Description | -| ---------- | ---------------------------- | +|------------|------------------------------| | `thingUID` | The `thingUID` | | `status` | The `ThingStatus` (optional) | + ::: ::: details core.ThingStatusChangeTrigger + | Parameter | Description | -| ---------------- | ------------------------------------- | +|------------------|---------------------------------------| | `thingUID` | The `thingUID` | | `previousStatus` | The previous `ThingStatus` (optional) | | `status` | The `ThingStatus` (optional) | + ::: ::: details core.ChannelEventTrigger + | Parameter | Description | -| ------------ | ---------------------------------------- | +|--------------|------------------------------------------| | `channelUID` | The `ChannelUID` of the `Channel` | | `event` | The `Channel` trigger `Event` (optional) | + ::: ::: details core.GenericEventTrigger + | Parameter | Description | -| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `topic` | The topic to match, as a file-system style glob (*, **, ?, and {} operators).

Example filters:
Item events: "openhab/items/\*/"
Channel events: "openhab/channels/\*/triggered"
Thing events: "openhab/things/\*\*" | | `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). | | `payload` | Regex to match against the actual event data. | + ::: ::: details core.SystemStartlevelTrigger + | Parameter | Description | -| ------------ | ----------------------- | +|--------------|-------------------------| | `startlevel` | The system `StartLevel` | + ::: diff --git a/developers/osgi/equinox.md b/developers/osgi/equinox.md index 016fd3ac0..e71018d95 100644 --- a/developers/osgi/equinox.md +++ b/developers/osgi/equinox.md @@ -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 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 - -------- | -------- | -------- -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 -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 +| Name | Bundle Symbolic Name | Description | +|----------------------|---------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 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 | +| 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 | Table 2. OSGi Bundles (Full list can be found at: ) diff --git a/developers/osgi/osgids.md b/developers/osgi/osgids.md index 6b23510c5..151036d97 100644 --- a/developers/osgi/osgids.md +++ b/developers/osgi/osgids.md @@ -206,10 +206,10 @@ A component goes through several states in his lifecycle: - **REGISTERED** - temporary state. Only *delayed- components go through this state; - **ACTIVE** - the component is active and component instance is created. - +Delayed component lifecycle Fig.1 Immediate component lifecycle - +Delayed component lifecycle Fig.2 Delayed component lifecycle ### States diff --git a/introduction.md b/introduction.md index e982afc0b..91e60c7aa 100644 --- a/introduction.md +++ b/introduction.md @@ -18,7 +18,7 @@ h1.welcome { } - +

Welcome!

diff --git a/mainui/about.md b/mainui/about.md index b3fe85217..1d89cdbfd 100644 --- a/mainui/about.md +++ b/mainui/about.md @@ -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`. 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: -

+

notification

- `close`: Close all popups, popovers and sheets. - `back`: diff --git a/tutorials/getting_started/pages_intro.md b/tutorials/getting_started/pages_intro.md index 889454060..9c38abc11 100644 --- a/tutorials/getting_started/pages_intro.md +++ b/tutorials/getting_started/pages_intro.md @@ -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. openHAB provides a number of options to support this in addition to MainUI Pages. -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). -[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. -[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. +| 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). | | +| [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. | | +| [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).