Partial merge final -> final-stable (#1569)

This performs a selective merge of the current docs into the "stable" branch
that will hold the default docs for the 3.0.2 release (until they're
replaced with the current ones once 3.1 is released).

* Backport bindings docs that looked applicable to 3.0
* Revert UI components changes not in stable

Signed-off-by: Yannick Schaus <github@schaus.net>

Co-authored-by: openHAB Build Server <infrastructure@openhab.org>
Co-authored-by: stefan-hoehn <stefan.hoehn@aoe.com>
Co-authored-by: jimtng <2554958+jimtng@users.noreply.github.com>
Co-authored-by: Matt <lawrence.matt@gmail.com>
Co-authored-by: Jerome Luckenbach <github@luckenba.ch>
Co-authored-by: Kai Kreuzer <kai@openhab.org>
Co-authored-by: Felix Schneider <45742226+Trysupe@users.noreply.github.com>
Co-authored-by: Hilbrand Bouwkamp <hilbrand@h72.nl>
Co-authored-by: J-N-K <J-N-K@users.noreply.github.com>
Co-authored-by: Eiko Wagenknecht <eiko.wagenknecht@web.de>
Co-authored-by: Alexander Behring <github.com@alexander-behring.eu>
Co-authored-by: Matthew Skinner <matt@pcmus.com>
Co-authored-by: Christoph Weitkamp <github@christophweitkamp.de>
Co-authored-by: Patrick Fink <mail@pfink.de>
Co-authored-by: Gifford47 <49484063+Gifford47@users.noreply.github.com>
Co-authored-by: Seganku <seganku@users.noreply.github.com>
Co-authored-by: digitlength <62958838+digitlength@users.noreply.github.com>
Co-authored-by: Ross Kennedy <rossko@culzean.clara.co.uk>
Co-authored-by: Fabian Wolter <github@fabian-wolter.de>
Co-authored-by: Arjan Mels <43108771+arjanmels@users.noreply.github.com>
Co-authored-by: Jonathan Gilbert <github.10.jgilbert@xoxy.net>
Co-authored-by: Richard Koshak <rkoshak@users.noreply.github.com>
Co-authored-by: Wolfgang Schueschen <76775650+WolfgangSn@users.noreply.github.com>
Co-authored-by: Gareth Western <gareth@garethwestern.com>
Co-authored-by: Bob A <bobadair@users.noreply.github.com>
Co-authored-by: Sami Salonen <ssalonen@gmail.com>
Co-authored-by: Peter Schraffl <p.schraffl@gmx.at>
Co-authored-by: Georgios Moutsos <50378548+jossuar@users.noreply.github.com>
Co-authored-by: Markus Storm <markus.storm@gmx.net>
Co-authored-by: JensHoRi <47488279+JensHoRi@users.noreply.github.com>
Co-authored-by: Felix <24674809+fex01@users.noreply.github.com>
Co-authored-by: Koen Schockaert <54985218+QbusKoen@users.noreply.github.com>
Co-authored-by: Ethan Dye <mrtops03@gmail.com>
Co-authored-by: Senne Croughs <38940112+sencro@users.noreply.github.com>
Co-authored-by: Ben Clark <ben@benjyc.uk>
Co-authored-by: Sam Spencer <43712250+samsp99@users.noreply.github.com>
Co-authored-by: chingon007 <76529461+chingon007@users.noreply.github.com>
Co-authored-by: Wouter Born <github@maindrain.net>
Co-authored-by: mueller-ma <mueller-ma@users.noreply.github.com>
Co-authored-by: aurelio1 <aurelio@caliaro.net>
Co-authored-by: Bernd Weymann <bernd.weymann@gmail.com>
Co-authored-by: Martin Hogg <hoggm2@hotmail.co.uk>
pull/1580/head
Yannick Schaus 2021-05-15 15:11:12 +02:00 committed by GitHub
parent c6e247e639
commit c0eef8b525
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
738 changed files with 44608 additions and 7945 deletions

18
.github/workflows/brokenLinkCheck.yml vendored Normal file
View File

@ -0,0 +1,18 @@
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

33
.github/workflows/markdownlint.yml vendored Normal file
View File

@ -0,0 +1,33 @@
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@v2
- name: Run markdownlint-cli
uses: Confectrician/github-action-markdown-cli@v2.0.0
with:
files: .
config_file: ".markdownlint.yaml"

View File

@ -1,18 +0,0 @@
on:
issue_comment:
types: [created]
name: Automatic Rebase
jobs:
rebase:
name: Rebase
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
runs-on: ubuntu-latest
steps:
- name: Checkout the latest code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@ -22,3 +22,4 @@ project.pbxproj
docs
addons/integrations
vuepress
.DS_Store

27
.markdownlint.yaml Normal file
View File

@ -0,0 +1,27 @@
default: true
# Expect dash usage for unorderd lists
MD004:
style: dash
# Allow long line lengths
MD013: false
# Allow duplicate headers for different nesting
MD024:
allow_different_nesting: true
# Allow Multiple top level headers in the same document
MD025: false
# Allow trailing punctuation in headers
MD026: false
MD029:
style: one
# Allow inline HTML
MD033: false
# Code block style
MD046:
style: fenced

View File

@ -1,30 +1,34 @@
# This function will add placeholders for pages that are out of scope of the docs preview
def add_placeholder_pages()
puts ">>> Adding placeholder pages for preview"
[
"docs/configuration/iconsets/classic",
"docs/configuration/ui/habmin",
"docs/configuration/ui/habot",
"docs/configuration/ui/basic",
"docs/configuration/ui/classic",
"docs/ecosystem/alexa",
"docs/ecosystem/google-assistant",
"docs/ecosystem/ifttt",
"docs/ecosystem/mycroft",
"addons/integrations/homekit",
"docs/apps/android.md"
].each { |path|
puts " -> #{path}"
page = path
if (!(path =~ /\.md/)) then
FileUtils.mkdir_p(path)
page = path + "/readme.md"
end
File.open(page, "w+") { |f|
f.puts "# This content is unavailable"
f.puts ""
f.puts "This content is migrated from another repository, and is not included in this preview."
}
}
end
# This function will add placeholders for pages that are out of scope of the docs preview
def add_placeholder_pages()
puts ">>> Adding placeholder pages for preview"
[
"addons/integrations/homekit",
"addons/integrations/openhabcloud",
"docs/apps/android.md",
"docs/configuration/habpanel",
"docs/configuration/iconsets/classic",
"docs/ui/components",
"docs/ui/habpanel",
"docs/ui/habpanel/habpanel.md",
"docs/ui/habot",
"docs/ui/basic",
"docs/ecosystem/alexa",
"docs/ecosystem/google-assistant",
"docs/ecosystem/ifttt",
"docs/ecosystem/mycroft",
"docs/installation/openhabian.md"
].each { |path|
puts " -> #{path}"
page = path
if (!(path =~ /\.md/)) then
FileUtils.mkdir_p(path)
page = path + "/readme.md"
end
File.open(page, "w+") { |f|
f.puts "# This content is unavailable"
f.puts ""
f.puts "This content is migrated from another repository, and is not included in this preview."
}
}
end

View File

@ -7,7 +7,7 @@ module.exports = [
]
},
{
title: 'Beginner Tutorial',
title: 'Getting Started',
collapsable: false,
children: [
['tutorial/', 'Tutorial Overview'],
@ -17,6 +17,10 @@ module.exports = [
'tutorial/things_advanced',
'tutorial/model',
'tutorial/persistence',
'tutorial/pages_intro',
'tutorial/auto_overview',
'tutorial/item_widgets',
'tutorial/custom_widgets',
/*'tutorial/pages_intro',
'tutorial/pages_widgets',
'tutorial/pages_types',
@ -26,6 +30,22 @@ module.exports = [
'tutorial/example'*/
]
},
{
title: 'Installation Guide',
collapsable: false,
children: [
'installation/',
['installation/linux', 'Linux'],
['installation/windows', 'Windows'],
['installation/macos', 'macOS'],
'installation/openhabian',
'installation/armbian',
'installation/docker',
'installation/synology',
// 'installation/qnap', // Remove until we get feedback about the current package state
['installation/security', 'Security']
]
},
{
title: 'Concepts',
collapsable: false,
@ -38,32 +58,15 @@ module.exports = [
'concepts/units-of-measurement', // from v2.3 onwards
]
},
{
title: 'Installation Guide',
collapsable: false,
children: [
'installation/',
['installation/linux', 'Linux'],
['installation/windows', 'Windows'],
['installation/macos', 'macOS'],
'installation/openhabian',
'installation/rasppi',
'installation/armbian',
'installation/docker',
'installation/synology',
// 'installation/qnap', // Remove until we get feedback about the current package state
['installation/security', 'Security']
]
},
{
title: 'Configuration Guide',
collapsable: false,
children: [
['configuration/', 'Configuration Overview'],
'configuration/editors',
'configuration/addons',
'configuration/things',
'configuration/items',
'configuration/sitemaps',
'configuration/persistence',
'configuration/rules-dsl',
'configuration/transformations',
@ -72,25 +75,40 @@ module.exports = [
'configuration/jsr223',
'configuration/services',
'configuration/multimedia',
['configuration/restdocs', 'REST API'],
['configuration/apitokens', 'API Token Generation'],
['configuration/migration/', 'Migration from openHAB 2']
]
},
{
title: 'Interfaces and Ecosystem',
title: 'User Interface Guide',
collapsable: false,
children: [
'configuration/editors',
['configuration/ui/habot/', 'HABot'],
'configuration/habpanel',
['configuration/ui/basic/', 'Basic UI'],
'ui/',
'ui/sitemaps',
'ui/layout-pages',
'ui/map-pages',
'ui/floorplan-pages',
'ui/tabbed-pages',
'ui/chart-pages',
['ui/building-pages', 'Building Pages'],
['ui/components/', 'Component Reference'],
'ui/habpanel/habpanel',
['apps/android', 'Android App'],
'apps/ios',
'apps/windows',
'apps/windows'
]
},
{
title: 'Ecosystem',
collapsable: false,
children: [
['ecosystem/alexa/', 'Amazon Alexa'],
['ecosystem/google-assistant/', 'Google Assistant'], // from v2.3 onwards
['../addons/integrations/homekit/', 'Apple HomeKit'],
// ['ecosystem/ifttt/', 'IFTTT'], // Temporary remove until service gets reactivated
['ecosystem/mycroft/', 'Mycroft.AI'],
['../addons/integrations/openhabcloud/', 'openHAB Cloud'],
]
},
{

View File

@ -57,24 +57,18 @@ def process_file(indir, file, outdir, source)
addon_type = outdir_parts[1]
addon = file.split('/')[0]
source = ""
if addon == "habmin" then
puts " (add-on is habmin)"
source = "https://github.com/openhab/org.openhab.ui.habmin/blob/master/README.md"
elsif addon == "habpanel" then
if addon == "habpanel" then
puts " (add-on is habpanel)"
source = "https://github.com/openhab/org.openhab.ui.habpanel/blob/master/README.md"
source = "https://github.com/openhab/openhab-webui/blob/main/bundles/org.openhab.ui.habpanel/README.md"
elsif addon == "zigbee" then
puts " (add-on is zigbee)"
source = "https://github.com/openhab/org.openhab.binding.zigbee/blob/master/org.openhab.binding.zigbee/README.md"
source = "https://github.com/openhab/org.openhab.binding.zigbee/blob/main/org.openhab.binding.zigbee/README.md"
elsif addon == "zwave" && !(file =~ /things/) then
puts " (add-on is zwave)"
source = "https://github.com/openhab/org.openhab.binding.zwave/blob/master/README.md"
elsif $esh_features.include?("esh-#{addon_type}-#{addon.gsub('.', '-')}") then
puts " (add-on is from ESH)"
source = "https://github.com/eclipse/smarthome/blob/master/extensions/#{addon_type}/org.eclipse.smarthome.#{addon_type}.#{addon}/README.md"
source = "https://github.com/openhab/org.openhab.binding.zwave/blob/main/README.md"
elsif !(file =~ /things/) then
puts " (add-on is from openhab-addons)"
source = "https://github.com/openhab/openhab-addons/blob/master/addons/#{addon_type}/org.openhab.#{addon_type}.#{addon}/README.md"
source = "https://github.com/openhab/openhab-addons/blob/main/addons/#{addon_type}/org.openhab.#{addon_type}.#{addon}/README.md"
end
out.puts "source: #{source}" if source != ""

View File

@ -3,7 +3,7 @@ require_relative "./process_file.rb"
def process_main_docs(docs_source_dir)
puts ">>> Migrating the introduction article"
process_file(".", "introduction.md", "docs", "https://github.com/openhab/openhab-docs/blob/master/introduction.md")
process_file(".", "introduction.md", "docs", "https://github.com/openhab/openhab-docs/blob/main/introduction.md")
FileUtils.mv("docs/introduction.md", "docs/readme.md")
@ -95,15 +95,13 @@ def process_main_docs(docs_source_dir)
puts ">>> Migrating the UI section"
Dir.glob("#{docs_source_dir}/_addons_uis/**") { |path|
next if path =~ /habpanel/ || path =~ /paper/ # Those already have their own article, no need to include the readme...
addon = File.basename(path)
puts " -> #{addon}"
FileUtils.mkdir_p("docs/configuration/ui/" + addon)
process_file("#{docs_source_dir}/_addons_uis", addon + "/readme.md", "docs/configuration/ui", "")
puts " -> images (#{addon})"
FileUtils.cp_r("#{docs_source_dir}/_addons_uis/#{addon}/doc", "docs/configuration/ui/#{addon}") if Dir.exists?("#{docs_source_dir}/_addons_uis/#{addon}/doc")
Dir.glob("#{docs_source_dir}/ui/*.md") { |path|
file = File.basename(path)
puts " -> #{file}"
process_file("#{docs_source_dir}/ui", file, "docs/ui", "#{$docs_repo_root}/ui/#{file}")
}
puts " -> images"
FileUtils.cp_r("#{docs_source_dir}/ui/images", "docs/ui/images")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -1,12 +1,12 @@
# Contribution Guidelines
### Pull requests are always welcome
## Pull requests are always welcome
We are always thrilled to receive pull requests, and do our best to
process them as fast as possible. Not sure if that typo is worth a pull
request? Do it! We will appreciate it.
### Conventions
## Conventions
Fork the repo and make changes on your fork in a feature branch.
@ -28,7 +28,7 @@ comment.
Commits that fix or close an issue should include a reference like `Closes #XXX`
or `Fixes #XXX`, which will automatically close the issue when merged.
### Sign your work
## Sign your work
The sign-off is a simple line at the end of the explanation for the
patch, which certifies that you wrote it or otherwise have the right to
@ -36,7 +36,7 @@ pass it on as an open-source patch. The rules are pretty simple: if you
can certify the below (from
[developercertificate.org](https://developercertificate.org/)):
```
```text
Developer Certificate of Origin
Version 1.1
@ -77,19 +77,19 @@ By making a contribution to this project, I certify that:
then you just add a line to every git commit message:
Signed-off-by: Joe Smith <joe.smith@email.com>
`Signed-off-by: Joe Smith <joe.smith@email.com>`
using your real name (sorry, no pseudonyms or anonymous contributions.) and an
e-mail address under which you can be reached (sorry, no github noreply e-mail
addresses (such as username@users.noreply.github.com) or other non-reachable
addresses are allowed).
#### Small patch exception
### Small patch exception
There are several exceptions to the signing requirement. Currently these are:
* Your patch fixes spelling or grammar errors.
* Your patch is a single line change to documentation.
- Your patch fixes spelling or grammar errors.
- Your patch is a single line change to documentation.
## Community Guidelines
@ -97,22 +97,21 @@ We want to keep the openHAB community awesome, growing and collaborative. We
need your help to keep it that way. To help with this we've come up with some
general guidelines for the community as a whole:
* Be nice: Be courteous, respectful and polite to fellow community members: no
- Be nice: Be courteous, respectful and polite to fellow community members: no
regional, racial, gender, or other abuse will be tolerated. We like nice people
way better than mean ones!
* Encourage diversity and participation: Make everyone in our community
- Encourage diversity and participation: Make everyone in our community
feel welcome, regardless of their background and the extent of their
contributions, and do everything possible to encourage participation in
our community.
* Keep it legal: Basically, don't get us in trouble. Share only content that
- Keep it legal: Basically, don't get us in trouble. Share only content that
you own, do not share private or sensitive information, and don't break the
law.
* Stay on topic: Make sure that you are posting to the correct channel
- Stay on topic: Make sure that you are posting to the correct channel
and avoid off-topic discussions. Remember when you update an issue or
respond to an email you are potentially sending to a large number of
people. Please consider this before you update. Also remember that
nobody likes spam.

View File

@ -18,7 +18,7 @@ We will read about them later.
Correct, this is done in the original repository of the add-on.
You may want to know how to find the right file in all of those repos?
This is fairly easy:
on most of the documentation pages on https://openhab.org/,
on most of the documentation pages on <https://openhab.org/>,
you will find the following link at the bottom, which will point you directly to the file you want to improve.
![Contribution link to a specific page](./images/contribution_link.png)
@ -96,4 +96,4 @@ In short, the following has to be considered:
- Versions like "2.1.0" are marked by git tags.
- Based on tags branches like "2.1-patch" are created, to include later discovered changes (like fixed links).
When a version is tagged (or updated), a static version of the website has to be generated and copied into the correct sub-folder, this is currently a manual operation described succinctly here: https://github.com/openhab/website/issues/72
When a version is tagged (or updated), a static version of the website has to be generated and copied into the correct sub-folder, this is currently a manual operation described succinctly here: <https://github.com/openhab/website/issues/72>

View File

@ -3,7 +3,7 @@ id: groovyscripting
label: Groovy Scripting
title: Groovy Scripting - Automation
type: automation
description: "This add-on provides support for [Groovy](https://groovy-lang.org/) 3.x scripts in openHAB."
description: "This add-on provides support for [Groovy](https://groovy-lang.org/) 3.0.7 that can be used as a scripting language within automation rules and which eliminates the need to manually install Groovy."
since: 3x
install: auto
---
@ -14,4 +14,44 @@ install: auto
# Groovy Scripting
This add-on provides support for [Groovy](https://groovy-lang.org/) 3.x scripts in openHAB.
This add-on provides support for [Groovy](https://groovy-lang.org/) 3.0.7 that can be used as a scripting language within automation rules and which eliminates the need to manually install Groovy.
## Creating Groovy Scripts
When this add-on is installed, you can select Groovy as a scripting language when creating a script action within the rule editor of the UI.
Alternatively, you can create scripts in the `automation/jsr223` configuration directory.
If you create an empty file called `test.groovy`, you will see a log line with information similar to:
```text
... [INFO ] [.a.m.s.r.i.l.ScriptFileWatcher:150 ] - Loading script 'test.groovy'
```
To enable debug logging, use the [console logging]({{base}}/administration/logging.html) commands to enable debug logging for the automation functionality:
```text
log:set DEBUG org.openhab.core.automation
```
For more information on the available APIs in scripts see the [JSR223 Scripting]({{base}}/configuration/jsr223.html) documentation.
## Script Examples
Groovy scripts provide access to almost all the functionality in an openHAB runtime environment.
As a simple example, the following script logs "Hello, World!".
Note that `System.out.println` will usually not work since the output has no terminal to display the text.
The openHAB server uses the [SLF4J](https://www.slf4j.org/) library for logging.
```groovy
import org.slf4j.LoggerFactory
LoggerFactory.getLogger("org.openhab.core.automation.examples").info("Hello world!")
```
Depending on the openHAB logging configuration, you may need to prefix logger names with `org.openhab.core.automation` for them to show up in the log file (or you modify the logging configuration).
The script uses the [LoggerFactory](https://www.slf4j.org/apidocs/org/slf4j/Logger.html) to obtain a named logger and then logs a message like:
```text
... [INFO ] [.openhab.core.automation.examples:-2 ] - Hello world!
```

View File

@ -3,7 +3,7 @@ id: jythonscripting
label: Jython Scripting
title: Jython Scripting - Automation
type: automation
description: "This addon provides a [Jython](https://www.jython.org/) 2.7.2 for use with scripted automation and eliminates the need to download Jython and create `EXTRA_JAVA_OPTS` entries for `bootclasspath`, `python.home` and `python.path`."
description: "This add-on provides [Jython](https://www.jython.org/) 2.7.2 that can be used as a scripting language within automation rules and which eliminates the need to download Jython and create `EXTRA_JAVA_OPTS` entries for `bootclasspath`, `python.home` and `python.path`."
since: 3x
install: auto
---
@ -14,6 +14,57 @@ install: auto
# Jython Scripting
This addon provides a [Jython](https://www.jython.org/) 2.7.2 for use with scripted automation and eliminates the need to download Jython and create `EXTRA_JAVA_OPTS` entries for `bootclasspath`, `python.home` and `python.path`.
The `python.home` System property will be set to the path of the add-on.
The `python.path` System property will be set to `$OPENHAB_CONF/automation/lib/python`, but any existing `python.path` will be appended to it.
This add-on provides [Jython](https://www.jython.org/) 2.7.2 that can be used as a scripting language within automation rules and which eliminates the need to download Jython and create `EXTRA_JAVA_OPTS` entries for `bootclasspath`, `python.home` and `python.path`.
The `python.home` system property is set to the path of the add-on.
The `python.path` system property is set to `$OPENHAB_CONF/automation/lib/python`, but any existing `python.path` will be appended to it.
## Creating Jython Scripts
When this add-on is installed, you can select Jython as a scripting language when creating a script action within the rule editor of the UI.
Alternatively, you can create scripts in the `automation/jsr223` configuration directory.
If you create an empty file called `test.py`, you will see a log line with information similar to:
```text
... [INFO ] [.a.m.s.r.i.l.ScriptFileWatcher:150 ] - Loading script 'test.py'
```
To enable debug logging, use the [console logging]({{base}}/administration/logging.html) commands to
enable debug logging for the automation functionality:
```text
log:set DEBUG org.openhab.core.automation
```
## Script Examples
Jython scripts provide access to almost all the functionality in an openHAB runtime environment.
As a simple example, the following script logs "Hello, World!".
Note that `print` will usually not work since the output has no terminal to display the text.
The openHAB server uses the [SLF4J](https://www.slf4j.org/) library for logging.
```python
from org.slf4j import LoggerFactory
LoggerFactory.getLogger("org.openhab.core.automation.examples").info("Hello world!")
```
Jython can [import Java classes](https://jython.readthedocs.io/en/latest/ModulesPackages/).
Depending on the openHAB logging configuration, you may need to prefix logger names with `org.openhab.core.automation` for them to show up in the log file (or you modify the logging configuration).
::: tip Note
Be careful with using wildcards when importing Java packages (e.g., `import org.slf4j.*`).
This will work in some cases, but it might not work in some situations.
It is best to use explicit imports with Java packages.
For more details, see the Jython documentation on
[Java package scanning](https://jython.readthedocs.io/en/latest/ModulesPackages/#java-package-scanning).
:::
The script uses the [LoggerFactory](https://www.slf4j.org/apidocs/org/slf4j/Logger.html)
to obtain a named logger and then logs a message like:
```text
... [INFO ] [.openhab.core.automation.examples:-2 ] - Hello world!
```

View File

@ -3,7 +3,7 @@ id: alarmdecoder
label: Alarm Decoder
title: Alarm Decoder - Bindings
type: binding
description: "The [Alarm Decoder](http://www.alarmdecoder.com) from Nu Tech Software Solutions is a hardware adapter that interfaces with Ademco/Honeywell and DSC alarm panels."
description: "The [Alarm Decoder](https://www.alarmdecoder.com) from Nu Tech Software Solutions is a hardware adapter that interfaces with Ademco/Honeywell and DSC alarm panels."
since: 3x
logo: images/addons/alarmdecoder.png
install: auto
@ -15,10 +15,10 @@ install: auto
# Alarm Decoder Binding
The [Alarm Decoder](http://www.alarmdecoder.com) from Nu Tech Software Solutions is a hardware adapter that interfaces with Ademco/Honeywell and DSC alarm panels.
The [Alarm Decoder](https://www.alarmdecoder.com) from Nu Tech Software Solutions is a hardware adapter that interfaces with Ademco/Honeywell and DSC alarm panels.
It acts essentially like a keypad, reading and writing messages on the serial bus that connects keypads with the main panel.
There are several versions of the adapter available:
There are several versions of the adapter available:
* *AD2PI* or *AD2PHAT* - A board that plugs into a Raspberry Pi and offers network-based TCP connectivity
* *AD2SERIAL* - Attaches to a host via a serial port
@ -27,8 +27,6 @@ There are several versions of the adapter available:
This binding allows openHAB to access the state of wired or wireless contacts and motion detectors connected to supported alarm panels, as well as the state of attached keypads and the messages send to attached LRR devices.
Support is also available for sending keypad commands, including special/programmable keys supported by your panel.
For those upgrading from the OH1 version of the binding, the [original OH1 README](https://www.openhab.org/v2.5/addons/bindings/alarmdecoder1/) file is available for reference.
## Supported Things
The binding supports the following thing types:
@ -191,8 +189,8 @@ Thing config file example:
### lrr
The `lrr` thing reports messages sent to a Long Range Radio (LRR) or emulated LRR device.
These are normally specifically formatted messages as described in the [SIA DC-05-1999.09](http://www.alarmdecoder.com/wiki/index.php/File:SIA-ContactIDCodes_Protocol.pdf) standard for Contact ID reporting.
They can also, depending on configuration, be other types of messages as described [here](http://www.alarmdecoder.com/wiki/index.php/LRR_Support).
These are normally specifically formatted messages as described in the [SIA DC-05-1999.09](https://www.alarmdecoder.com/wiki/index.php/File:SIA-ContactIDCodes_Protocol.pdf) standard for Contact ID reporting.
They can also, depending on configuration, be other types of messages as described [here](https://www.alarmdecoder.com/wiki/index.php/LRR_Support).
For panels that support multiple partitions, the partition for which a given lrr thing will receive messages can be defined.
* `partition` (default = 0) Partition for which to receive LRR events (0 = All)
@ -326,3 +324,7 @@ The alarmdecoder device cannot query the panel for the state of individual zones
For this reason, the binding puts contacts into the "unknown" state (UNDEF), *until the panel goes into the READY state*.
At that point, all contacts for which no update messages have arrived are presumed to be in the CLOSED state.
In other words: to get to a clean slate after an openHAB restart, close all doors/windows such that the panel is READY.
## Reference Information
The protocol used to communicate with the Alarm Decoder is described [here](https://www.alarmdecoder.com/wiki/index.php/Protocol).

View File

@ -33,7 +33,7 @@ If there is need for another architecture/platform, please open a [ticket on Git
## Supported Things
All AllPlay compatible speakers are supported by this binding.
This includes for example the [Panasonic ALL series](http://www.panasonic.com/uk/consumer/home-entertainment/wireless-speaker-systems.html).
This includes for example the [Panasonic ALL series](https://www.panasonic.com/uk/consumer/home-entertainment/wireless-speaker-systems.html).
All AllPlay speakers are registered as an audio sink in the framework.
## Discovery

View File

@ -90,9 +90,9 @@ A few known operating systems are:
## Setup Dash Button
Setting up your Dash Button is as simple as following the instructions provided by [Amazon](https://www.amazon.com/Dash-Buttons/b?node=10667898011) **EXCEPT FOR THE LAST STEP**.
Follow the instructions to set up the Dash Button in their mobile app.
When you get to the step where it asks you to pick which product you want to map it to, just quit the setup process.
Amazon itself doesn't support Dash Buttons anymore.
Instructions how to use them without having to rely on Amazon's servers can be found at https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/ - at least for some firmware versions.
Take care to block internet access for the button or it will be bricked.
{: #no-phonehome}
## Preventing Communication with Amazon Servers

View File

@ -180,7 +180,7 @@ It will be configured at runtime by using the save channel to store the current
| radioStationId | String | R/W | echo, echoshow, echospot, wha | Start playing of a TuneIn radio station by specifying its id or stops playing if an empty string was provided
| radio | Switch | R/W | echo, echoshow, echospot, wha | Start playing of the last used TuneIn radio station (works after the radio station started after the openHAB start)
| amazonMusicTrackId | String | R/W | echo, echoshow, echospot, wha | Start playing of an Amazon Music track by its id or stops playing if an empty string was provided
| amazonMusicPlayListId | String | W | echo, echoshow, echospot, wha | Write Only! Start playing of an Amazon Music playlist by specifying its id or stops playing if an empty string was provided. Selection will only work in PaperUI
| amazonMusicPlayListId | String | W | echo, echoshow, echospot, wha | Write Only! Start playing of an Amazon Music playlist by specifying its id or stops playing if an empty string was provided.
| amazonMusic | Switch | R/W | echo, echoshow, echospot, wha | Start playing of the last used Amazon Music song (works after at least one song was started after the openHAB start)
| remind | String | R/W | echo, echoshow, echospot | Write Only! Speak the reminder and sends a notification to the Alexa app (Currently the reminder is played and notified two times, this seems to be a bug in the Amazon software)
| nextReminder | DateTime | R | echo, echoshow, echospot | Next reminder on the device
@ -363,7 +363,7 @@ sitemap amazonechocontrol label="Echo Devices"
// Change the <YOUR_DEVICE_MAC> Place holder with the MAC address shown, if Alexa is connected to the device
Selection item=Echo_Living_Room_BluetoothMAC mappings=[ ''='Disconnected', '<YOUR_DEVICE_MAC>'='Bluetooth Device 1', '<YOUR_DEVICE_MAC>'='Bluetooth Device 2']
// These are only view of the possible options. Enable ShowIDsInGUI in the binding configuration and look in drop-down-box of this channel in the Paper UI Control section
// These are only view of the possible options.
Selection item=Echo_Living_Room_PlayAlarmSound mappings=[ ''='None', 'ECHO:system_alerts_soothing_01'='Adrift', 'ECHO:system_alerts_atonal_02'='Clangy']
Switch item=Echo_Living_Room_Bluetooth
@ -444,7 +444,7 @@ sitemap flashbriefings label="Flash Briefings"
## Smart Home Devices
Note: the cannels of smartHomeDevices and smartHomeDeviceGroup will be created dynamically based on the capabilities reported by the amazon server. This can take a little bit of time.
Note: the channels of smartHomeDevices and smartHomeDeviceGroup will be created dynamically based on the capabilities reported by the amazon server. This can take a little bit of time.
The polling interval configured in the Account Thing to get the state is specified in minutes and has a minimum of 10. This means it takes up to 10 minutes to see the state of a channel. The reason for this low interval is, that the polling causes a big server load for the Smart Home Skills.
#### Supported Things
@ -461,11 +461,11 @@ The polling interval configured in the Account Thing to get the state is specifi
|--------------------------|---------------------------------------------------------------------------|
| id | The id of the device or device group |
The only possibility to find out the id is by using the discover function in the PaperUI. You can use then the id, if you want define the Thing in a file.
The only possibility to find out the id is by using the discover function in the UI. You can use then the id, if you want define the Thing in a file.
#### Channels
The channels of the smarthome devices will be generated at runtime. Check in the paperUI thing configurations, which channels are created.
The channels of the smarthome devices will be generated at runtime. Check in the UI thing configurations, which channels are created.
| Channel Type ID | Item Type | Access Mode | Thing Type | Description
|--------------------------|-----------|-------------|-------------------------------|------------------------------------------------------------------------------------------
@ -520,7 +520,7 @@ Switch Arm_State "State" { channel="amazonechocontrol:smartHomeDevice:account1:s
Switch Group_State "On/Off" { channel="amazonechocontrol:smartHomeDeviceGroup:account1:smartHomeDeviceGroup1:powerState" }
```
The only possibility to find out the id for the smartHomeDevice and smartHomeDeviceGroup Things is by using the discover function in the PaperUI.
The only possibility to find out the id for the smartHomeDevice and smartHomeDeviceGroup Things is by using the discover function.
#### smarthome.sitemap:

View File

@ -16,12 +16,12 @@ install: auto
# Autelis Pool Control Binding
Autelis manufactures a network enabled pool interface for many popular pool systems.
See [the Autelis website](https://www.autelis.com) and the [Autelis Command Protocol](http://www.autelis.com/wiki/index.php?title=Pool_Control_(PI)_HTTP_Command_Reference) for more information.
See [the Autelis website](https://www.autelis.com) and the [Autelis Command Protocol](https://www.autelis.com/wiki/index.php?title=Pool_Control_(PI)_HTTP_Command_Reference) for more information.
This binding supports:
* Jandy and Pentair models
* Read circuit, auxiliary, temperature, pump, chemistry and system values
* Read circuit, auxiliary, temperature, pump, chemistry and system values
* Control circuit, auxiliary lighting scenes, and temperature set points

View File

@ -46,7 +46,7 @@ In the event that any of this information is changed on the device, the thing co
### Manual Thing Creation
Fans and lights can be manually created in the *Paper UI* or *HABmin*, or by placing a *.things* file in the *conf/things* directory.
Fan and light things can be manually created using the *UI*, or by placing a *.things* file in the *conf/things* directory.
See example below.
## Device Discovery

View File

@ -71,4 +71,4 @@ demo.items:
```
Dimmer Light_LivingRoom { channel="milight:rgbLed:milight2:4:ledbrightness", channel="bluetooth:ptm215b:bluegiga0:rocker_livingroom:rocker1" [profile="rawrocker-to-on-off"], channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker1" [profile="rawrocker-to-on-off"] } // We have a combined kitchen / livingroom, so we control the living room lights with switches from the living room and from the kitchen
Switch Light_Kitchen { channel="hue:group:1:kitchen-bulbs:switch", channel="bluetooth:ptm215b:bluegiga0:rocker_kitchen:rocker2" [profile="rawrocker-to-on-off"] }
```
```

View File

@ -87,4 +87,4 @@ sitemap demo label="Main Menu"
See also the following extensions for further examples:
<!--list-subs-->
<!--list-subs-->

View File

@ -3,8 +3,9 @@ id: bsblan
label: BSB-LAN
title: BSB-LAN - Bindings
type: binding
description: "This binding uses the REST API of [BSB-LPB-PPS-LAN](https://github.com/fredlcore/bsb_lan) to obtain data from the device."
description: "This binding uses the REST API of [BSB-LPB-PPS-LAN](https://github.com/fredlcore/BSB-LAN) to obtain data from the device."
since: 3x
logo: images/addons/bsblan.png
install: auto
---
@ -14,7 +15,7 @@ install: auto
# BSB-LAN Binding
This binding uses the REST API of [BSB-LPB-PPS-LAN](https://github.com/fredlcore/bsb_lan) to obtain data from the device.
This binding uses the REST API of [BSB-LPB-PPS-LAN](https://github.com/fredlcore/BSB-LAN) to obtain data from the device.
## Supported Things

View File

@ -5,6 +5,7 @@ title: BTicinoSmarther - Bindings
type: binding
description: "The BTicino Smarther binding implements a bridge to the Legrand/BTicino Smarther v2.0 API and allows you to control your BTicino Smarther chronothermostat units with openHAB, making it possible to discover Smarther units connected to your Legrand/BTicino Smarther account."
since: 3x
logo: images/addons/bticinosmarther.png
install: auto
---
@ -126,7 +127,7 @@ If you want to later receive push notifications (device status) from Legrand for
![Tutorial 3](doc/images/tutorial-3.png)
Now that you have got your bridge _ONLINE_ it is time to discover your devices! Go to Paper UI Inbox and search for **"BTicino Smarther Chronothermostat"** things.
Now that you have got your bridge _ONLINE_ it is time to discover your devices! Go to Inbox in the UI and search for **"BTicino Smarther Chronothermostat"** things.
Any BTicino Smarther Chronothermostat device currently available on your account should show up immediately.
If no devices show up you may have to trigger the openHAB discovery several times as bridge will only find active devices known by the Smarther API at the time the discovery is triggered.

View File

@ -34,7 +34,7 @@ No auto-discovery is currently possible.
## Configuration of the thing
The configuration can be done via the Paper UI web interface, or manually by adding a Thing to your `.things` file:
The configuration can be done by adding a Rain Forecast Thing using the UI, or by adding it to a `.things` file:
```
Thing buienradar:rain_forecast:home [ location="52.198864211111925,5.4192629660193585" ]

View File

@ -361,4 +361,4 @@ then
actions.bypass()
end
```
```

View File

@ -3,7 +3,7 @@ id: cbus
label: C-Bus
title: C-Bus - Bindings
type: binding
description: "This is the binding for the [Clipsal C-Bus System](http://www2.clipsal.com/cis/technical/product_groups/cbus)."
description: "This is the binding for the [Clipsal C-Bus System](https://www.clipsal.com/products/c-bus-control-and-management-system)."
since: 3x
install: auto
---
@ -14,36 +14,41 @@ install: auto
# C-Bus Binding
This is the binding for the [Clipsal C-Bus System](http://www2.clipsal.com/cis/technical/product_groups/cbus).
This is the binding for the [Clipsal C-Bus System](https://www.clipsal.com/products/c-bus-control-and-management-system).
This binding allows you to view and control groups on C-Bus networks from openHAB.
## Configuration
This binding connects to C-Gate software which can be downloaded from the [Clipsal Downloads Site](https://updates.clipsal.com/ClipsalSoftwareDownload/mainsite/cis/technical/index.html). There is information about setting up the C-Gate software in the [CBus Forums](https://www.cbusforums.com/forums/c-bus-toolkit-and-c-gate-software.4). Make sure that the config/access.txt file allows a connection from computer running openHAB.
This binding connects to C-Gate software which can be downloaded from the [Clipsal Downloads Site](https://updates.clipsal.com/ClipsalSoftwareDownload/mainsite/cis/technical/index.html).
There is information about setting up the C-Gate software in the [CBus Forums](https://www.cbusforums.com/forums/c-bus-toolkit-and-c-gate-software.4).
Make sure that the config/access.txt file allows a connection from computer running openHAB.
Whilst all versions of C-Gate should work 2.11.2 contained a fix for handling Indicator Kill messages for trigger groups. Without that they will remain on the last value set and wont match what is shown on CBus devices.
Whilst all versions of C-Gate should work 2.11.2 contained a fix for handling Indicator Kill messages for trigger groups.
Without that they will remain on the last value set and wont match what is shown on CBus devices.
First the CGate Connection bridge needs to be configured with the ip address of the computer running the C-Gate software.
After this a Bridge is creaed for each network configured on the CBus Network. The CBus Project Name and the network Id for that network
After this a Bridge is creaed for each network configured on the CBus Network. The CBus Project Name and the network Id for that network
## Supported Things
This binding support 6 different things types
| Thing | Type | Description |
|----------------|---------|-----------------------------------|
| cgate | Bridge | This connects to a C-Bus CGate instance to |
| network | Bridge | This connects to a C-Bus Network via a CGate bridge |
| light | Thing | This is for C-Bus lighting groups |
| temperature | Thing | This is for C-Bus temperature groups |
| trigger | Thing | This is for C-Bus trigger groups |
| dali | Thing | This is for C-Bus DALI dimming groups |
| Thing | Type | Description |
|-------------|--------|-----------------------------------------------------|
| cgate | Bridge | This connects to a C-Bus CGate instance to |
| network | Bridge | This connects to a C-Bus Network via a CGate bridge |
| light | Thing | This is for C-Bus lighting groups |
| temperature | Thing | This is for C-Bus temperature groups |
| trigger | Thing | This is for C-Bus trigger groups |
| dali | Thing | This is for C-Bus DALI dimming groups |
When a discovery scan is started in the UI, Things are discovered for the groups that are found on the CBus network.
The scan within Paper UI will find all the groups on the CBus network and allow Things to be creaed for them.
##Channels
At startup the binding will scan the network for the values of all the groups and set those on the appropriate channels. It is not possible to fetch the value of a Trigger Group so those values will only be updated when a trigger is set on the CBus network.
At startup the binding will scan the network for the values of all the groups and set those on the appropriate channels.
It is not possible to fetch the value of a Trigger Group so those values will only be updated when a trigger is set on the CBus network.
### Lights
@ -121,6 +126,3 @@ sitemap cbusdemo label="CBus Binding Demo"
}
}
```

View File

@ -5,6 +5,7 @@ title: ComfoAir - Bindings
type: binding
description: "This binding allows to monitor and control Zehnder ComfoAir serial controlled ventilation systems via RS232 serial connection."
since: 3x
logo: images/addons/comfoair.png
install: auto
---
@ -18,6 +19,8 @@ This binding allows to monitor and control Zehnder ComfoAir serial controlled ve
Though the binding is developed based on the protocol description for Zehnder ComfoAir devices it should also work for mostly identical systems from different manufacturers, like StorkAir WHR930, Wernig G90-380 and Paul Santos 370 DC.
It was also successfully tested on a Wernig G90-160.
**NOTE:** This binding does not work with the ComfoAir Q-series (e.g. Q350 or Q450). These ventilation units use a CAN bus for communication and a different protocol.
### Limitations
* Either the ComfoAir binding or the CCEase Comfocontrol can be active, but not together.

View File

@ -61,12 +61,13 @@ These are the available configuration parameters:
### Things
Suppose your autodiscovered air unit is identified by the id "danfossairunit:airunit:-1062731769" (see section "Discovery").
Suppose your autodiscovered air unit is identified by the id "danfossairunit:airunit:myairunit" (see section "Discovery").
The channel will then be identified by `<air unit id>:<channel group>#<channel>`
You can also manually configure your air unit in case you don't want to use autodiscovery
(e. g. if you want to have a portable configuration):
Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder:
Create a new file, e. g. `danfoss.things`, in your _things_ configuration folder:
```
Thing danfossairunit:airunit:myairunit [host="192.168.0.7",
refreshInterval=5,
@ -76,12 +77,12 @@ updateUnchangedValuesEveryMillis=30000]
### Items
```
Dimmer Lueftung_Drehzahl_Manuell "Drehzahl Lüftung %" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:main#manual_fan_speed"}
Number Lueftung_Drehzahl_Supply "Drehzahl Lüftung Zuluft (rpm)" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:main#supply_fan_speed"}
Number Lueftung_Drehzahl_Extract "Drehzahl Lüftung Abluft (rpm)" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:main#extract_fan_speed"}
String Lueftung_Mode "Betriebsart Lüftung" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:main#mode"}
Switch Lueftung_Boost "Stoßlüftung" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:main#boost"}
Switch Lueftung_Bypass "Lüftung Bypass" (All,Lueftung) {channel = "danfossairunit:airunit:-1062731769:recuperator#bypass"}
Dimmer Lueftung_Drehzahl_Manuell "Drehzahl Lüftung %" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:main#manual_fan_speed"}
Number Lueftung_Drehzahl_Supply "Drehzahl Lüftung Zuluft (rpm)" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:main#supply_fan_speed"}
Number Lueftung_Drehzahl_Extract "Drehzahl Lüftung Abluft (rpm)" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:main#extract_fan_speed"}
String Lueftung_Mode "Betriebsart Lüftung" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:main#mode"}
Switch Lueftung_Boost "Stoßlüftung" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:main#boost"}
Switch Lueftung_Bypass "Lüftung Bypass" (All,Lueftung) {channel = "danfossairunit:airunit:myairunit:recuperator#bypass"}
```
### Sitemap
@ -93,4 +94,4 @@ Text item=Lueftung_Drehzahl_Extract
Selection item=Lueftung_Mode mappings=[DEMAND="Bedarfslüftung", OFF="Aus", PROGRAM="Programm", MANUAL="manuell"]
Switch item=Lueftung_Boost
Switch item=Lueftung_Bypass
```
```

View File

@ -58,7 +58,7 @@ The DenonMarantz AVR supports the following channels (some channels are model sp
| Channel Type ID | Item Type | Description |
|-------------------------|--------------|--------------|
| *General* | |
| general#power | Switch (RW) | Power on/off
| general#power | Switch (RW) | Power on/off
| general#surroundProgram | String (R) | current surround program (e.g. STEREO)
| general#artist | String (R) | artist of current track
| general#album | String (R) | album of current track
@ -82,7 +82,7 @@ The DenonMarantz AVR supports the following channels (some channels are model sp
| zone3#volumeDB | Number (RW) | Zone 3 volume in dB (-80 offset)
| zone3#mute | Switch (RW) | Zone 3 mute
| zone3#input | String (RW) | Zone 3 input
| *Zone 4* | |
| *Zone 4* | |
| zone4#power | Switch (RW) | Zone 4 power on/off
| zone4#volume | Dimmer (RW) | Zone 4 volume
| zone4#volumeDB | Number (RW) | Zone 4 volume in dB (-80 offset)
@ -136,5 +136,4 @@ These resources can be useful to learn what to send using the `command`channel:
- [AVR-X2000/E400](http://www2.aerne.com/Public/dok-sw.nsf/0c6187bc750a16fcc1256e3c005a9740/96a2ba120706d10dc1257bdd0033493f/$FILE/AVRX2000_E400_PROTOCOL(10.1.0)_V04.pdf)
- [AVR-X4000](https://usa.denon.com/us/product/hometheater/receivers/avrx4000?docname=AVRX4000_PROTOCOL(10%203%200)_V03.pdf)
- [AVR-3311CI/AVR-3311/AVR-991](https://www.awe-europe.com/documents/Control%20Docs/Denon/Archive/AVR3311CI_AVR3311_991_PROTOCOL_V7.1.0.pdf)
- [CEOL Piccolo DRA-N5/RCD-N8](http://www.audioproducts.com.au/downloadcenter/products/Denon/CEOLPICCOLOBK/Manuals/DRAN5_RCDN8_PROTOCOL_V.1.0.0.pdf)
- [Marantz Control Protocol (2014+)](http://m.us.marantz.com/DocumentMaster/US/Marantz%202014%20NR%20Series%20-%20SR%20Series%20RS232%20IP%20Protocol.xls)
- [Denon/Marantz Control Protocol] (https://assets.eu.denon.com/DocumentMaster/DE/AVR1713_AVR1613_PROTOCOL_V8.6.0.pdf)

View File

@ -3,7 +3,7 @@ id: digiplex
label: Digiplex/EVO
title: Digiplex/EVO - Bindings
type: binding
description: "This binding provides integration with Digiplex/EVO alarm systems from [Paradox](http://paradox.com)."
description: "This binding provides integration with Digiplex/EVO alarm systems from [Paradox](https://paradox.com)."
since: 3x
install: auto
---
@ -14,14 +14,14 @@ install: auto
# Digiplex/EVO Binding
This binding provides integration with Digiplex/EVO alarm systems from [Paradox](http://paradox.com).
It utilizes [PRT3 module](http://www.paradox.com/Products/default.asp?CATID=7&SUBCATID=75&PRD=234) for serial communication.
This binding provides integration with Digiplex/EVO alarm systems from [Paradox](https://paradox.com).
It utilizes [PRT3 module](https://www.paradox.com/Products/default.asp?CATID=7&SUBCATID=75&PRD=234) for serial communication.
## Supported Things
### PRT3 Module
Before the binding can be used, a serial adapter must be added manually. Select `PRT3 Module` and enter serial port parameters.
Before the binding can be used, a serial adapter must be added manually. Select `PRT3 Module` and enter serial port parameters.
Please refer to PRT3 module manual for instructions how to modify baudrate (default setting is 2400)
## Discovery

View File

@ -18,7 +18,7 @@ install: auto
The DSC PowerSeries Alarm System is a popular do-it-yourself home security system, which can be monitored and controlled remotely through a standard web-browser or mobile device.
This is the binding for the DSC PowerSeries Alarm System, utilizing either the EyezOn Envisalink 4/3/2DS interface or the DSC IT-100 RS-232 interface.
It provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 4/3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface.
It provides connectivity to the DSC Alarm panel via a TCP socket connection to the EyesOn Envisalink 4/3/2DS interface or a RS-232 serial connection to the DSC IT-100 interface.
Additionally, their is provision to connect to the DSC IT-100 interface through a TCP serial server.
## Supported Things
@ -42,16 +42,16 @@ Most settings are through thing configuration parameters.
## Discovery
The DSC Alarm binding incorporates a discovery modes in order to find DSC Alarm systems.
The DSC Alarm binding incorporates a discovery modes in order to find DSC Alarm systems.
There is the Envisalink bridge discovery mode which performs a network query for any Envisalink adapters and adds them to the discovery inbox.
This bridge discovery mode is started manually through Paper UI.
This bridge discovery mode is started manually through the UI.
After a bridge is discovered and available to openHAB, the binding will attempt to discover DSC Alarm things and add them to the discovery inbox.
The TCP Server bridge does not implement bridge discovery but will utilize thing discovery once it is online.
Note:
The Envisalink Bridge discovery does a TCP scan across your local network to find the interface.
This may create issues on the network so it is suggested that caution be used when trying this discovery.
The recommended method would be to manually add and configure the bridge through the 'dscalarm.thing' file or the Paper UI.
The recommended method would be to manually add and configure the bridge through the 'dscalarm.thing' file or the UI.
And then allow the binding to discover the DSC Alarm things.
## Thing Configuration
@ -70,8 +70,8 @@ The following table shows the available configuration parameters for each thing.
<tr><td>keypad</td><td>No parameters</td></tr>
</table>
The binding can be configured manually if discovery is not used.
A thing configuration file in the format 'bindingName.things' would need to be created, and placed in the 'conf/things' folder.
The binding can be configured manually if discovery is not used.
A thing configuration file in the format 'bindingName.things' would need to be created, and placed in the 'conf/things' folder.
Here is an example of a thing configuration file called 'dscalarm.things':
```perl
@ -190,7 +190,7 @@ DSC Alarm things support a variety of channels as seen below in the following ta
1=ON<br/>
2=Flashing<br/></td></tr>
<tr><td>keypad_lcd_update</td><td>String</td><td>Text Changes of the IT-100 LCD Menu.</td></tr>
<tr><td>keypad_lcd_cursor</td><td>String</td><td>LCD Cursor Position for The IT-100</td></tr>
<tr><td>keypad_lcd_cursor</td><td>String</td><td>LCD Cursor Position for The IT-100</td></tr>
</table>
##Example

View File

@ -166,7 +166,7 @@ Bridge dsmr:dsmrBridge:myDSMRDevice [serialPort="/dev/ttyUSB0"] {
#### Item configuration
Paper UI. Item configuration can be done in the regular way.
Item configuration can be done in the regular way.
Manual configuration:
The following channels are supported:
@ -350,7 +350,7 @@ Number:Energy MeterDeliveryTariff1 "Total electricity delivered to the resident
## Determine M-Bus channel
By manually trigger the discovery process, e.g. via PaperUI, you can use the logging to find out a M-Bus channel. Look for the following logfile line:
By manually trigger the discovery process, you can use the logging to find out a M-Bus channel. Look for the following logfile line:
`<Timestamp> [INFO ] [<class>] - New compatible meter: [Meter type: M3_V5_0, channel: 1, Meter type: ELECTRICITY_V5, channel: 0]`
Here you find the ThingTypeID (it is stated only in capitals) and the M-Bus channel. The above example would lead to the following Thing definition

View File

@ -40,9 +40,9 @@ This can be used for `region` things you may add manually.
### Region
| Parameter | Default | Required | Description |
| ---------- | :-----: | :------: | -------------------------------------------------------------------------------------------------------- |
| `regionID` | - | yes | In PaperUI just select the region you want to display data for. For files-configuration see table below. |
| Parameter | Default | Required | Description |
| ---------- | :-----: | :------: | ------------------------------------------------------------------- |
| `regionID` | - | yes | The id of the region. The available options are in the table below. |
#### Manual region or partregion selection ####

View File

@ -3,7 +3,7 @@ id: folding
label: Folding@home
title: Folding@home - Bindings
type: binding
description: "Binding for the [Folding@home](https://folding.stanford.edu/) distributed computing"
description: "Binding for the [Folding@home](https://folding.stanford.edu/) distributed computing software."
since: 3x
logo: images/addons/folding.png
install: auto
@ -15,27 +15,19 @@ install: auto
# Folding@home Binding
Binding for the [Folding@home](https://folding.stanford.edu/) distributed computing
software.
Binding for the [Folding@home](https://folding.stanford.edu/) distributed computing software.
This binding can control multiple Folding@home clients and slots, using the TCP
interface.
Clients are modeled as bridges, and support adding any number of slots
(though, usually CPU and GPU).
This binding can control multiple Folding@home clients and slots, using the TCP interface.
Clients are modeled as bridges, and support adding any number of slots (though, usually CPU and GPU).
The binding provides control over Run / Pause and Finish.
It polls for the status of the client, updates the run / pause state, and
provides a basic description of the slot.
It polls for the status of the client, updates the run / pause state, and provides a basic description of the slot.
The clients must be added manually in the Paper UI, but the slots for that
client will then appear using auto-discovery.
The clients must be added manually in the UI, but the slots for a client will then appear using auto-discovery.
## Requirements (network access to F@H)
The Folding@home TCP interface is enabled only on localhost by default, without
a password.
In order to allow control of Folding on other machines than the one
running openHAB, it is necessary to configure the Folding client to accept commands
from a non-localhost address.
The Folding@home TCP interface is enabled only on localhost by default, without a password.
In order to allow control of Folding on other machines than the one running openHAB, it is necessary to configure the Folding client to accept commands from a non-localhost address.
Here is how to do it in the FAHControl application:
- Open FAHControl on the client to be added

View File

@ -29,7 +29,7 @@ Successfully tested are internet radios:
* [TechniSat DIGITRADIO 350 IR and 850](https://www.technisat.com/en_XX/DAB+-Radios-with-Internetradio/352-10996/)
* [TTMicro AS Pinell Supersound](https://www.ttmicro.no/radio)
* [Revo SuperConnect](https://revo.co.uk/products/)
* [Sangean WFR-28C](http://sg.sangean.com.tw/products/product_category.asp?cid=2)
* [Sangean WFR-28C](https://sg.sangean.com.tw/products/product_category.asp?cid=2)
* [Roku SoundBridge M1001](https://soundbridge.roku.com/soundbridge/index.php)
* [Dual IR 3a](https://www.dual.de/produkte/digitalradio/radio-station-ir-3a/)
* [Teufel 3sixty](https://www.teufel.de/stereo/radio-3sixty-p16568.html)
@ -49,7 +49,7 @@ If your radio is not discovered, please try to access its API via: `http://<radi
If you get a 404 error, maybe a different port than the standard port 80 is used by your radio; try scanning the open ports of your radio.<br/>
If you get a result like `FS_OK 1902014387`, your radio is supported.
If this is the case, please [add your model to this documentation](https://github.com/openhab/openhab-addons/edit/master/bundles/org.openhab.binding.fsinternetradio/README.md) and/or provide discovery information in [this thread](https://community.openhab.org/t/internet-radio-i-need-your-help/2131).
If this is the case, please [add your model to this documentation](https://github.com/openhab/openhab-addons/edit/main/bundles/org.openhab.binding.fsinternetradio/README.md) and/or provide discovery information in [this thread](https://community.openhab.org/t/internet-radio-i-need-your-help/2131).
## Binding Configuration
@ -82,7 +82,7 @@ All devices support some of the following channels:
The radio mode depends on the internet radio model (and its firmware version!).
This list is just an example how the mapping looks like for some of the devices, please try it out and adjust your sitemap for your particular radio.
| Radio Mode | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
| Radio Mode | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
|--------------------------|----------------|-------------------------|-----------|--------------|-----------|----------|--------------|--------------|-----------|-----------|--------|
| Hama IR110 | Internet Radio | Spotify | Player | AUX in | - | - | - | - | - | - |- |
| Medion MD87180 | Internet Radio | Music Player (USB, LAN) | DAB Radio | FM Radio | AUX in | - | - | - | - | - |- |

View File

@ -127,7 +127,7 @@ parameters for **baud rate**, **flow control**, and **parity** to match the conf
### Manual Thing Creation
Devices can be created in the *Paper UI* or *HABmin*, or by placing a *.things* file in the *conf/things* directory.
Devices can be created in the *UI*, or by placing a *.things* file in the *conf/things* directory.
See example below.
### Binding Dependencies
@ -147,7 +147,7 @@ discovery.globalcache:background=false
```
Note that automatic device discovery **will not work** with GC-100's running firmware earlier than v3.0 as those versions do not emit announcement beacons on the multicast address.
GC-100's running firmware earlier than v3.0 must be configured manually, either through *Paper UI* or using a *.things* file.
GC-100's running firmware earlier than v3.0 must be configured manually, either through the *UI* or using a *.things* file.
See below.
## Channels and Channel Types
@ -212,7 +212,7 @@ Other settings, such as *Sensor In*, *Sensor Notify*, and *LED Lighting*, may be
## Contact Closure (CC) Channel
A *Contact Closure channel* activates the contact closure (relay) on the iTach or GC-100 device.
A *Contact Closure channel* activates the contact closure (relay) on the iTach or GC-100 device.
For example, the following item links to the module 1, connector 1 channel on an iTach CC device.
```
@ -227,7 +227,7 @@ String MyRelay "My Relay [%s]" (gRelays) { channel="globalcache:itachFlex
## Serial (SL) Channel
An *SL channel* sends serial command strings out the serial connector on the device.
An *SL channel* sends serial command strings out the serial connector on the device.
For example, the following item links to the module 1 connector 1 channel on a GC-100-6 device.
```

View File

@ -48,9 +48,9 @@ __Important!__
Please note that only one bridge is required to establish a connection.
Adding a second bridge can cause trouble with the connection.
It is recommended to use the Paper UI to setup the system and add all players and groups.
It is recommended to use the UI to setup the system and add all players and groups.
The bridge is discovered through UPnP in the local network.
Once it is added the players and groups are discovered via the bridge and placed in the Paper UI Inbox.
Once it is added the players and groups are discovered via the bridge and placed in the Inbox.
## Binding Configuration
@ -94,7 +94,7 @@ Thing heos:player:player1 "name" [pid="123456789"]
PID behind the heos:player:--- should be changed as required.
It is recommended to use the Player PID.
If the PID isn't known it can be discovered by establishing a Telnet connection (port 1255) to one player and search for available players (Command: heos://player/get_players) within the network.
Another way is to use Paper UI to discover the Player via the bridge and get the PID.
Another way is to use the UI to discover the Player via the bridge and get the PID.
For further details refer to the [HEOS CLI](https://rn.dmglobal.com/euheos/HEOS_CLI_ProtocolSpecification.pdf) specification.
### Group Configuration
@ -105,8 +105,9 @@ Player have the following configuration parameter
|----------------- |------------------------------------------------------------------------------------- | --------- |
| members | The members of the groups. These are the player IDs. IDs have to be separated by ";" | yes |
If you use Paper UI to manage your Things (which is the preferred way), you can also set up your group automatically from Paper UI.
Groups will automatically appear in the Inbox if that Group is active. To do this, build your Group from the HEOS app, then the group will appear in the Inbox.
Groups will automatically appear in the Inbox if that Group is active.
To do this, build your Group from the HEOS app, then the group will appear in the Inbox.
```
Thing heos:group:group1 "name" [members="45345634;35534567"]
```

View File

@ -83,7 +83,7 @@ Bridge icloud:account:myaccount [appleId="mail@example.com", password="secure",
}
```
The device ID can be found in the Paper UI inbox.
The device ID can be found in the Inbox after it has been discovered.
The information *@ "World"* is optional.
### icloud.items

View File

@ -120,7 +120,7 @@ When `invert` is `true` than `0` on innogy is `UP` and `100` is `DOWN`.
### Configuring the SmartHome Controller (SHC)
The SmartHome Controller (SHC) can be configured in the Paper UI as follows:
The SmartHome Controller (SHC) can be configured in the UI as follows:
After the "innogy SmartHome Controller" is added via the Inbox, edit the controller and add the "Authorization code" by following the hints in the description.
Save your changes.
@ -131,7 +131,7 @@ Be sure it is connected to the Internet.
Authorization is done as oauth2 workflow with the innogy API.
To receive the auth-code, go to one of the following URLs depending on your brand and login with your credentials (you can find this link also in the SHC thing in Paper UI, if you edit it):
To receive the auth-code, go to one of the following URLs depending on your brand and login with your credentials (you can find this link also in the SHC thing in the UI, if you edit it):
https://auth.services-smarthome.de/AUTH
* [innogy SmartHome authorization page](https://auth.services-smarthome.de/AUTH/authorize?response_type=code&client_id=24635748&redirect_uri=https%3A%2F%2Fwww.openhab.org%2Foauth%2Finnogy%2Finnogy-smarthome.html&scope&lang=de-DE)
* [SmartHome Austria authorization page](https://auth.services-smarthome.de/AUTH/authorize?response_type=code&client_id=24635749&redirect_uri=https%3A%2F%2Fwww.openhab.org%2Foauth%2Finnogy%2Fsmarthome-austria.html&scope&lang=de-DE)
@ -153,9 +153,9 @@ All devices bound to the bridge are found by the discovery service once the SHC
As device discovery is not implemented as a background service, you should start it manually in the Inbox to find all devices.
Now you can add all devices from your Inbox as things.
### Manual configuration
### File based configuration
As an alternative to the automatic discovery process and graphical configuration using Paper UI, innogy things can be configured manually.
As an alternative to using automatic discovery, innogy things can be configured using .things files.
The innogy SmartHome Controller (SHC) can be configured using the following syntax:
```
@ -178,7 +178,7 @@ All other innogy devices can be added using the following syntax:
Thing WDS <thing-id> "<thing-name>" @ "<room-name>" [ id="<the-device-id>" ]
```
The device ID (e.g. e9a74941a3807b57332214f346fb1129) can be found in the Paper UI inbox, as you find it below all things there in the form `innogysmarthome:<device-type>:<bridge-id>:<the-device-id>` (example: `innogysmarthome:WSC2:SMARTHOME01:e9a74941a3807b57332214f346fb1129`).
The device ID (e.g. e9a74941a3807b57332214f346fb1129) can be found in the Inbox, as you find it below all things there in the form `innogysmarthome:<device-type>:<bridge-id>:<the-device-id>` (example: `innogysmarthome:WSC2:SMARTHOME01:e9a74941a3807b57332214f346fb1129`).
However, a full example .things configuration look like this:
@ -242,7 +242,7 @@ end
## Resolving certificate issues
If the bridge stays offline with the following status shown in the Paper UI, the reason could be an expired certificate:
If the bridge stays offline with the following status shown in the UI, the reason could be an expired certificate:
`OFFLINE - COMMUNICATION_ERROR sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`

View File

@ -18,7 +18,7 @@ install: auto
Insteon is a home area networking technology developed primarily for connecting light switches and loads.
Insteon devices send messages either via the power line, or by means of radio frequency (RF) waves, or both (dual-band.
A considerable number of Insteon compatible devices such as switchable relays, thermostats, sensors etc are available.
More about Insteon can be found on [Wikipedia](http://en.wikipedia.org/wiki/Insteon).
More about Insteon can be found on [Wikipedia](https://en.wikipedia.org/wiki/Insteon).
This binding provides access to the Insteon network by means of either an Insteon PowerLinc Modem (PLM), a legacy Insteon Hub 2242-222 or the current 2245-222 Insteon Hub.
The modem can be connected to the openHAB server either via a serial port (Model 2413S) or a USB port (Model 2413U.
@ -373,7 +373,7 @@ Switch fOutBot "Front Outlet Bottom" <socket> { channel="insteon:device:home:AAB
```
This will give you individual control of each outlet.
### Mini Remotes
Link the mini remote to be a controller of the modem by using the set button.
@ -495,7 +495,7 @@ Put something like this into your .items file:
Switch doorLock "Front Door [MAP(lock.map):%s]" { channel="insteon:device:home:AABBCC:switch" }
```
and create a file "lock.map" in the transforms directory with these entries:
and create a file "lock.map" in the transforms directory with these entries:
```
ON=Lock
@ -710,7 +710,7 @@ See the example below:
**Items**
```
```
Number:Power iMeterWatts "iMeter [%d watts]" { channel="insteon:device:home:AABBCC:watts" }
Number:Energy iMeterKwh "iMeter [%.04f kWh]" { channel="insteon:device:home:AABBCC:kWh" }
Switch iMeterUpdate "iMeter Update" { channel="insteon:device:home:AABBCC:update" }
@ -835,7 +835,7 @@ See [logging in openHAB](https://www.openhab.org/docs/administration/logging.htm
### Device Permissions / Linux Device Locks
When openHAB is running as a non-root user (Linux/OSX) it is important to ensure it has write access not just to the PLM device, but to the os lock directory.
Under openSUSE this is `/run/lock` and is managed by the **lock** group.
Under openSUSE this is `/run/lock` and is managed by the **lock** group.
Example commands to grant openHAB access (adjust for your distribution):
@ -866,7 +866,7 @@ Where the `my_own_devices.xml` file defines a new device like this:
</xml>
```
Finding the Insteon product key can be tricky since Insteon has not updated the product key table (http://www.insteon.com/pdf/insteon_devcats_and_product_keys_20081008.pdf) since 2008.
Finding the Insteon product key can be tricky since Insteon has not updated the product key table (https://www.insteon.com/pdf/insteon_devcats_and_product_keys_20081008.pdf) since 2008.
If a web search does not turn up the product key, make one up, starting with "F", like: F00.00.99.
Avoid duplicate keys by finding the highest fake product key in the `device_types.xml` file, and incrementing by one.

View File

@ -23,19 +23,19 @@ It is possible to receive and send parameters like string or float values.
This binding supports 11 different things types
| Thing | Paper UI Only | Description |
| ---------------- | ------------- |---------------------------------------------------------- |
| `appliance` | | The appliance (The heater inside of this heating system). |
| `dhwCircuit` | | A hot water circuit. |
| `gateway` | | The gateway. (The connected KM200/100/50 device). |
| `heatingCircuit` | | A heating circuit. |
| `heatSource` | | The heat source. |
| `holidayMode` | | The holiday modes configuration. |
| `sensor` | | The sensors. |
| `solarCircuit` | | A solar circuit. |
| `system` | | The system without sensors and appliance. |
| `notification` | | The notifications. |
| `switchProgram` | X | A switch program. |
| Thing | UI Only | Description |
|------------------|:-------:|-----------------------------------------------------------|
| `appliance` | | The appliance (The heater inside of this heating system). |
| `dhwCircuit` | | A hot water circuit. |
| `gateway` | | The gateway. (The connected KM200/100/50 device). |
| `heatingCircuit` | | A heating circuit. |
| `heatSource` | | The heat source. |
| `holidayMode` | | The holiday modes configuration. |
| `sensor` | | The sensors. |
| `solarCircuit` | | A solar circuit. |
| `system` | | The system without sensors and appliance. |
| `notification` | | The notifications. |
| `switchProgram` | X | A switch program. |
### KM 50/100/200
@ -61,9 +61,9 @@ The *kmdevice* bridge requires the following configuration parameters:
### Channels
This binding creates the channels depending on the connected heating system fully automatically.
These channels depend on the connected heating system.
You can see the complete list of supported channels of the thing in the Paper UI.
This binding creates the channels depending on the connected heating system fully automatically.
These channels depend on the connected heating system.
You can see the complete list of supported channels of the thing in the UI.
There is no official documentation for the parameters available from Buderus, so the names of the channels is all that reflects their purpose.
## Full Examples

View File

@ -16,7 +16,7 @@ install: auto
# KNX Binding
The openHAB KNX binding allows to connect to [KNX Home Automation](https://www.knx.org/) installations.
The openHAB KNX binding allows to connect to [KNX Home Automation](https://www.knx.org/) installations.
Switching lights on and off, activating your roller shutters or changing room temperatures are only some examples.
To access your KNX bus you either need a gateway device which is connected to the KNX bus and allows computers to access the bus communication.
@ -32,7 +32,7 @@ There is an *ip* bridge to connect to KNX IP Gateways, and a *serial* bridge for
## Binding Configuration
The binding itself does not require any special configuration.
The binding itself does not require any special configuration.
## Bridges
@ -224,11 +224,11 @@ Only add parameters to the Bridge and Thing configuration if you know exactly wh
knx.things:
```xtend
Bridge knx:ip:bridge [
Bridge knx:ip:bridge [
type="ROUTER",
autoReconnectPeriod=60 //optional, do not set <30 sec.
] {
Thing device knx_device "knx_device_name" @ "knx_device_group_in_paperui" [
Thing device knx_device "knx_device_name" @ "knx_device_group" [
//readInterval=3600 //optional, only used if reading values are present
] {
//Items configurations
@ -241,12 +241,12 @@ Bridge knx:ip:bridge [
knx.things:
```xtend
Bridge knx:ip:bridge [
Bridge knx:ip:bridge [
type="TUNNEL",
ipAddress="192.168.0.111",
autoReconnectPeriod=60 //optional, do not set <30 sec.
] {
Thing device knx_device "knx_device_name" @ "knx_device_group_in_paperui" [
Thing device knx_device "knx_device_name" @ "knx_device_group" [
//readInterval=3600 //optional, only used if reading values are present
] {
//Items configurations
@ -258,14 +258,14 @@ Bridge knx:ip:bridge [
```xtend
//TUNNEL
Bridge knx:ip:bridge [
type="TUNNEL",
ipAddress="192.168.0.10",
portNumber=3671,
Bridge knx:ip:bridge [
type="TUNNEL",
ipAddress="192.168.0.10",
portNumber=3671,
localIp="192.168.0.11",
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
autoReconnectPeriod=60,
localSourceAddr="0.0.0"
] {
@ -286,14 +286,14 @@ Bridge knx:ip:bridge [
}
//ROUTER
Bridge knx:ip:bridge [
type="ROUTER",
ipAddress="224.0.23.12",
portNumber=3671,
Bridge knx:ip:bridge [
type="ROUTER",
ipAddress="224.0.23.12",
portNumber=3671,
localIp="192.168.0.11",
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
autoReconnectPeriod=60,
localSourceAddr="0.0.0"
] {}
@ -323,7 +323,7 @@ sitemap knx label="KNX Demo Sitemap" {
Slider item=demoDimmer
Text item=demoString
Text item=demoDatetime
}
}
}
```
@ -333,11 +333,11 @@ sitemap knx label="KNX Demo Sitemap" {
control.things:
```xtend
Bridge knx:serial:bridge [
serialPort="/dev/ttyAMA0",
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
Bridge knx:serial:bridge [
serialPort="/dev/ttyAMA0",
readingPause=50,
responseTimeout=10,
readRetriesLimit=3,
autoReconnectPeriod=60
] {
Thing device generic {
@ -350,9 +350,9 @@ Bridge knx:serial:bridge [
}
}
Bridge hue:bridge:bridge "Philips Hue Bridge" [
ipAddress="...",
userName="..."
Bridge hue:bridge:bridge "Philips Hue Bridge" [
ipAddress="...",
userName="..."
] {
Thing 0210 1 "Color Lamp" [ lightId="1" ]
}

View File

@ -140,7 +140,7 @@ They exist as one-way communication only.
## How Tos
The following configuration examples assume the device was added with the thing id `lametrictime:device:demo`.
Replace the thing id in all the configurations with your real thing id which can be looked up via Paper UI.
Replace the thing id in all the configurations with your real thing id which can be looked up the UI.
### Notifications

View File

@ -3,7 +3,7 @@ id: lcn
label: LCN
title: LCN - Bindings
type: binding
description: "[Local Control Network (LCN)](http://www.lcn.eu) is a building automation system for small and very large installations."
description: "[Local Control Network (LCN)](https://www.lcn.eu) is a building automation system for small and very large installations."
since: 3x
logo: images/addons/lcn.png
install: auto
@ -15,11 +15,11 @@ install: auto
# LCN Binding
[Local Control Network (LCN)](http://www.lcn.eu) is a building automation system for small and very large installations.
[Local Control Network (LCN)](https://www.lcn.eu) is a building automation system for small and very large installations.
It is capable of controlling lights, shutters, access control etc. and can process data from several sensor types.
It has been introduced in 1992.
A broad range of glass key panels, displays, remote controls, sensors and in- and outputs exist.
A broad range of glass key panels, displays, remote controls, sensors and in- and outputs exist.
The system can handle up to 30,000 bus members, called modules.
LCN modules are available for DIN rail and in-wall mounting and feature versatile interfaces. The bus modules and most of the accessories are developed, manufactured and assembled in Germany.
@ -58,7 +58,7 @@ Examples for PCK gateways are the *LCN-PCHK* software running on Windows or Linu
For each LCN bus, interfaced to openHAB, a PCK gateway needs to be added to openHAB as a *Thing*.
Several PCK gateways can be added to openHAB to control multiple LCN busses in distinct locations.
Several PCK gateways can be added to openHAB to control multiple LCN busses in distinct locations.
The minimum recommended version is LCN-PCHK 2.8 (older versions will also work, but lack some functionality).
Visit [https://www.lcn.eu](https://www.lcn.eu) for updates.
@ -212,7 +212,7 @@ The binary sensor Channels provide the boolean parameter `invertState`, which ca
LCN transponder readers or fingerprint readers can be integrated in openHAB e.g. for access control.
The transponder function must be enabled in the module's I-port properties within *LCN-PRO*.
Example: When the transponder card with the ID "12ABCD" is seen by the reader connected to LCN module "S000M011", the item "M10_Relay7" is switched on:
```
@ -311,7 +311,7 @@ When no *ramp* parameter is specified or no profile is configured, the ramp is 0
The ramp parameter is not available for Color *Item*s.
```
// Dim output 2 in 0.25s
// Dim output 2 in 0.25s
Switch M10_Output2 {channel="lcn:module:b827ebfea4bb:S000M010:output#2"[profile="lcn:output", ramp=0.25]} // with ramp of 0.25s (smallest value)
// Dim output 3 in 486s
Dimmer M10_Output3 {channel="lcn:module:b827ebfea4bb:S000M010:output#3"[profile="lcn:output", ramp=486]} // with ramp of 486s (biggest value)
@ -401,7 +401,7 @@ This action has also effect, if the given output is off. The output will be dimm
```
rule "Flicker output 1 when window opens"
when
Item M10_BinarySensor5 changed to OPEN
Item M10_BinarySensor5 changed to OPEN
then
val actions = getActions("lcn","lcn:module:b827ebfea4bb:S000M010")
// output=1, depth=2=100%, ramp=0=2s, count=3
@ -422,7 +422,7 @@ When programming a "Relay Timer" *Action*, the following parameters need to be s
```
rule "Start relay timer for led driver when dummy switch changed"
when
Item Dummy_Switch changed
Item Dummy_Switch changed
then
val actions = getActions("lcn","lcn:module:b827ebfea4bb:17B4196847")
// relayNumber=3, duration=90
@ -444,7 +444,7 @@ Config `.things`
```
Bridge lcn:pckGateway:myPCHK [ hostname="192.168.123.123", port=4114, username="myUser", password="myPassword", mode="native200" ] {
Thing module M99 "M99 MyModule" [ moduleId=99, segmentId=0 ] {
Channels:
Channels:
Rollershutter : rollershutterrelay#1 "My twisted rollershutter relay" [ invertUpDown = true ]
Contact : binarysensor#6 [ invertState=true ]
Number : rvarsetpoint#1 [ unit="temperature" ]
@ -470,7 +470,7 @@ Dimmer M10_OutputAll3 {channel="lcn:module:b827ebfea4bb:S000M010:output#1"[profi
Dimmer M10_Outputs12b {channel="lcn:module:b827ebfea4bb:S000M010:output#1"[profile="lcn:output", controlOutputs12=true, ramp=0.25]}
// Dimmer Outputs: RGB Control
Color M10_Color {channel="lcn:module:b827ebfea4bb:S000M010:output#color"[profile="lcn:output"]}
Color M10_Color {channel="lcn:module:b827ebfea4bb:S000M010:output#color"[profile="lcn:output"]}
// Roller Shutter on Output 1+2
Rollershutter M10_RollershutterOutput1 {channel="lcn:module:b827ebfea4bb:S000M010:rollershutteroutput#1"}
@ -535,39 +535,39 @@ sitemap lcn label="My home automation" {
Default item=M10_Output1 label="Output 1"
Default item=M10_Output2 label="Output 2"
Default item=M10_Output3 label="Output 3"
// Dimmer Outputs: Control all simultaneously. Status of Output 1 is visualized.
Default item=M10_OutputAll1 label="All Outputs ramp=0 since firmware 180501"
Default item=M10_OutputAll2 label="All Outputs ramp=250ms all firmwares"
Default item=M10_OutputAll3 label="All Outputs ramp>=500ms since firmware 180501"
// Dimmer Outputs: Control outputs 1+2 simultaneously. Status of Output 1 is visualized. Only ramps of 0s or 0.25s are supported.
Default item=M10_Outputs12a label="Outputs 1+2 Ramp=0"
Default item=M10_Outputs12b label="Outputs 1+2 Ramp=0.25s"
// Dimmer Outputs: RGB Control
Colorpicker item=M10_Color
// Roller Shutter on Outputs 1+2
Default item=M10_RollershutterOutput1 label="Roller Shutter on Output 1+2"
// Relays
Default item=M10_Relay1 label="Relay 1"
// Roller Shutter on Relays
Default item=M10_RollershutterRelay1 label="Roller Shutter on Relay 1-2"
// LEDs
Switch item=M10_LED1 label="LED 1" mappings=[ON=ON, OFF=OFF] // Don't display "Blink" or "Flicker"
Switch item=M10_LED2 label="LED 2"
// Logic Operations (legacy name: "Sums")
Default item=M10_Logic1 label="Logic Operation 1"
Default item=M10_Logic2 label="Logic Operation 2"
// Binary Sensors (Channels 1-3 of LCN-B3I are mapped to BinarySensor6, BinarySensor7, BinarySensor8)
Default item=M10_BinarySensor1 label="Binary Sensor 1"
Default item=M10_BinarySensor1 label="Binary Sensor 1"
// Variables
Setpoint item=M10_Variable1 label="Variable 1"
Default item=M10_Variable2 label="Variable 2"
@ -580,21 +580,21 @@ sitemap lcn label="My home automation" {
Default item=M10_Variable9 label="Variable 9"
Default item=M10_Variable10 label="Variable 10"
Default item=M10_Variable11 label="Variable 11"
// Regulators
Setpoint item=M10_R1VarSetpoint label="R1Var Setpoint" step=1 minValue=-10.0
Default item=M10_R1VarLock label="R1Var Lock" // Lock state of R1Var
// Thresholds
Setpoint item=M10_ThresholdRegister1_Threshold1 label="Threshold Register 1 Threshold 1"
Setpoint item=M10_ThresholdRegister4_Threshold2 label="Threshold Register 4 Threshold 2"
// S0 Counters
Default item=M10_S0Counter1 label="S0 Counter 1"
// Key Locks
Default item=M10_KeyLockA1 label="Locked State Key A1"
Default item=M10_KeyLockD5 label="Locked State Key D5"
}
}
}
```

View File

@ -38,7 +38,6 @@ Tested and developed with :
## Discovery
No discovery supported, manual configuration is required.
The things may be configured through the Paper UI.
## Thing Configuration
@ -152,6 +151,6 @@ Here's a list of all the LG TV commands added to the binding, in channel type id
[4] <https://github.com/suan/libLGTV_serial>
[5] Manual LV series, LK series, PW series and PZ series <http://gscs-b2c.lge.com/downloadFile?fileId=ujpO8yH69djwNZzwuavqpQ>
[5] Manual LV series, LK series, PW series and PZ series <https://gscs-b2c.lge.com/downloadFile?fileId=ujpO8yH69djwNZzwuavqpQ>
[6] Manual for LD series, LE series, LX series and PK series <http://gscs-b2c.lge.com/downloadFile?fileId=76If0tKDLOUizuoXikllgQ>
[6] Manual for LD series, LE series, LX series and PK series <https://gscs-b2c.lge.com/downloadFile?fileId=76If0tKDLOUizuoXikllgQ>

View File

@ -3,7 +3,7 @@ id: lirc
label: LIRC
title: LIRC - Bindings
type: binding
description: "This binding integrates infrared transceivers through [LIRC](http://www.lirc.org) or [WinLIRC](http://winlirc.sourceforge.net)."
description: "This binding integrates infrared transceivers through [LIRC](https://www.lirc.org) or [WinLIRC](http://winlirc.sourceforge.net)."
since: 3x
logo: images/addons/lirc.png
install: auto
@ -15,7 +15,7 @@ install: auto
# LIRC Binding
This binding integrates infrared transceivers through [LIRC](http://www.lirc.org) or [WinLIRC](http://winlirc.sourceforge.net).
This binding integrates infrared transceivers through [LIRC](https://www.lirc.org) or [WinLIRC](http://winlirc.sourceforge.net).
A list of remote configuration files for LIRC is available [here](http://lirc-remotes.sourceforge.net/remotes-table.html).

View File

@ -113,15 +113,15 @@ rule "LogReader"
end
```
Use the rules with your Telegram Bot (need openHAB Telegram Action installed and configured)
Use the rules with your Telegram Bot (need openHAB Telegram Binding installed and configured)
```xtend
rule "LogReader"
when
Channel 'logreader:reader:openhablog:newErrorEvent' triggered
then
// do something
sendTelegram("bot3", "*ERROR* LogReader Event!\n%s Errors are in the log! Here is the last row of it:\n`%s`", logreaderErrors.state.toString, logreaderLastError.state.toString)
val telegramAction = getActions("telegram","telegram:telegramBot:myBot")
telegramAction.sendTelegram("*ERROR* LogReader Event!\n%s Errors are in the log! Here is the last row of it:\n`%s`", logreaderErrors.state.toString, logreaderLastError.state.toString)
end
```

View File

@ -14,7 +14,7 @@ install: auto
# MagentaTV Binding
This binding allows controlling the Deutsche Telekom Magenta TV Media Receiver series MR4xx and MR2xx (Telekom NGTV / Huawei Envision platform).
This binding allows controlling the Deutsche Telekom Magenta TV Media Receiver series MR4xx and MR2xx (Telekom NGTV / Huawei Envision platform).
The binding does NOT support MR3xx/1xx (old Entertain system based on Microsoft technology)!
Media Receivers are automatically discovered.
@ -50,7 +50,7 @@ The binding uses the network settings in openHAB's system configuration to deter
The device can't be discovered if the openHAB system and receiver are not on the same network (IP/Netmask).
In this case you need to add the Thing manually or use textual configuration (.things).
If you are running openHAB in a Docker container you need to make sure that UPnP discovery is available and network interfaces
If you are running openHAB in a Docker container you need to make sure that UPnP discovery is available and network interfaces
## Receiver Standby Mode
@ -63,10 +63,10 @@ The Media receiver has 3 different standby modes, which can be selected in the r
|Shutdown |Powering off shuts down the receiver, so that it can be awakened only with the power button.|
`Standby` provides the best results, because the binding can wake up the receiver (Power On/Off).
`Suspend/Resume` requires a Wake-on-LAN packet, which can take longer.
`Suspend/Resume` requires a Wake-on-LAN packet, which can take longer.
`Shutdown` turns the receiver off, which requires a manual power-on.
There is no way to detect the "display status" of the receiver.
There is no way to detect the "display status" of the receiver.
The binding detects Power-Off with the MR401B/MR201 by listening to UPnP events, but can't verify the status when started.
You need to take care on the current status if you power on/off the receiver from scenes.
Check the current status before sending the POWER button, because POWER is a toggle, not ON or OFF (see sample rules).
@ -77,7 +77,7 @@ Check the current status before sending the POWER button, because POWER is a tog
|----------------|----------------------------------------------------------------------------------------------------------------|
|accountName |Login Name (email), should be the registered e-mail address for the Telekom Kundencenter |
|accountPassword |Account password (same as for the Kundencenter) |
|userId |The technical userId required for the pairing process, see section "Retrieving userId" |
|userId |The technical userId required for the pairing process, see section "Retrieving userId" |
|ipAddress |IP address of the receiver, usually discovered by UPnP |
|port |Port to reach the remote service, usually 8081 for the MR401/MR201 or 49152 for MR400/200 |
|udn |UPnP Unique Device Name - a hex ID, which includes the 12 digit MAC address at the end (parsed by the binding) |
@ -109,13 +109,13 @@ Edit thing configuration and copy this value to the field userId
```
On successful login the console will show the User ID value. Copy&amp;Paste this value to the Thing configuration (parameter `userId`) of the receiver.
If you have multiple receivers under the same MagentaTV subscription you can use this value for all of them.
If you have multiple receivers under the same MagentaTV subscription you can use this value for all of them.
2. Provide your credentials in the UI
If you do not want to use the openHAB console, you can also setup the credentials in the Thing configuration
If you do not want to use the openHAB console, you can also setup the credentials in the Thing configuration
- Account Name (`accountName`) is your Login Name for the Telekom Kundencenter (registered email address)
- Account Name (`accountName`) is your Login Name for the Telekom Kundencenter (registered email address)
- Account Password (`accountPassword`) is the corresponding password.
The binding uses these credentials to login to your account, retrieves the `userId` parameter and sets it in the Thing configuration.
@ -131,12 +131,12 @@ For security reasons the credentials are automatically deleted from the thing co
| |key |String |Send key code to the receiver (see code table below) |
| |mute |Switch |Mute volume (mute the speaker) |
|status |playMode |String |Current play mode - this info is not reliable |
| |channelCode |Number  |The channel code from the EPG. |
| |channelCode |Number |The channel code from the EPG. |
|program |title |String |Title of the running program or video being played |
| |text |String |Some description (as reported by the receiver, could be empty) |
| |start |DateTime |Time when the program started |
| |position |Number |Position in minutes within a movie. |
| |duration |Number |Remaining time in minutes, usually not updated for TV program |
| |duration |Number |Remaining time in minutes, usually not updated for TV program |
Please note:
@ -144,6 +144,7 @@ Please note:
The binding tries to detect and maintain the correct state, but due to device limitations this is not always possible.
Make sure the receiver's and binding's state are in sync when OH is restarted (binding assumes state is OFF).
- Channels receiving event information get updated when changing the channel or playing a video.
There is no way to read the current status, therefore they don't get initialized on startup nor being updated in real-time.
The player channel supports the following actions:
@ -193,8 +194,8 @@ The player channel supports the following actions:
| MUTE | Mute speakers |
| CHUP | Channel up |
| CHDOWN | Channel down |
| PLAY | Play |
| PAUSE | Play |
| PLAY | Play |
| PAUSE | Play |
| STOP | Stop playing |
| RECORD | Start recording |
| REWIND | Rewind |
@ -206,7 +207,7 @@ The player channel supports the following actions:
| PAIR | Re-pair with the receiver |
In addition you could send any key code in the 0xHHHH format., refer to
[Key Codes for Magenta/Huawei Media Receiver](http://support.huawei.com/hedex/pages/DOC1100366313CEH0713H/01/DOC1100366313CEH0713H/01/resources/dsv_hdx_idp/DSV/en/en-us_topic_0094619112.html)
[Key Codes for Magenta/Huawei Media Receiver](https://support.huawei.com/hedex/pages/DOC1100366313CEH0713H/01/DOC1100366313CEH0713H/01/resources/dsv_hdx_idp/DSV/en/en-us_topic_0094619112.html)
## Full Configuraton Example
@ -215,7 +216,7 @@ In addition you could send any key code in the 0xHHHH format., refer to
```
Thing magentatv:receiver:XXXXXXXXXXX "MagentaTV" [
udn="XXXXXXXXXXX",
ipAddress="xxx.xxx.xxx.xxx",
ipAddress="xxx.xxx.xxx.xxx",
accountName="xxxxxx.xxxx@t-online.de",
accountPassword="xxxxxxxxxx"
]
@ -331,7 +332,7 @@ Beginning with models 401/201 and new the binding is able to detect the Power-OF
}
```
to switch it ON and
to switch it ON and
```
if (MagentaTV_Power.state != OFF) {

View File

@ -3,7 +3,7 @@ id: max
label: MAX!
title: MAX! - Bindings
type: binding
description: "This is the binding for the [eQ-3 MAX! Home Solution](http://www.eq-3.de/)."
description: "This is the binding for the [eQ-3 MAX! Home Solution](https://www.eq-3.de/)."
since: 3x
logo: images/addons/max.png
install: auto
@ -15,7 +15,7 @@ install: auto
# MAX! Binding
This is the binding for the [eQ-3 MAX! Home Solution](http://www.eq-3.de/).
This is the binding for the [eQ-3 MAX! Home Solution](https://www.eq-3.de/).
This binding allows you to integrate, view and control the MAX! Thermostats, Ecoswitch and Shuttercontact things.
## Supported Things
@ -37,7 +37,7 @@ If for any reason you need to manually define the Things and you are not exactly
## Discovery
When the bindings discovery is triggered, the network is queried for the existence of a MAX! Cube LAN gateway.
When the Cube is found, it will become available in the inbox.
When the Cube is found, it will become available in the inbox.
After the Cube `bridge` is available in openHAB, all the devices connected to it are discovered and added to the inbox.

View File

@ -70,7 +70,7 @@ Thing coffeemachine coffeemachine [uid="001d63fffe020505#190"]
## Channels
The definition of the channels in use can best be checked in the [source repository](https://github.com/openhab/openhab-addons/tree/master/bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing).
The definition of the channels in use can best be checked in the [source repository](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.miele/src/main/resources/OH-INF/thing).
## Example

View File

@ -3,8 +3,9 @@ id: modbus.e3dc
label: E3DC
title: E3DC - Bindings
type: binding
description: "<img align='right' src='./doc/E3DC_logo.png'/>"
description: "Integrates the Home Power Plants from E3/DC GmbH into openHAB."
since: 3x
logo: images/addons/modbus.e3dc.png
install: manual
---
@ -14,8 +15,6 @@ install: manual
# E3DC
<img align="right" src="./doc/E3DC_logo.png"/>
Integrates the Home Power Plants from E3/DC GmbH into openHAB.
See [E3DC Website](https://www.e3dc.com/) to find more informations about the device.
The Power Plant handles all your Electrical Energy Resources like Photovoltaic Producers, Battery Storage, Wallbox Power Supply, Household Consumption and even more.
@ -99,32 +98,32 @@ The E3DC device offers quite an amount of channels. For clustering 4 Channel Gro
### Channel Group _Power Block_
| Channel Label | Channel Group ID | Channel ID | Type | Description |
|-------------------------------|-------------------|------------------------------|------------------------|------------------------------|
| PV Output | power | pv-power-supply | Number:Power | Photovoltaic Power Production |
| Battery Discharge | power | battery-power-supply | Number:Power | Battery discharges and provides Power |
| Battery Charge | power | battery-power-consumption | Number:Power | Battery charges and consumes Power |
| Household Consumption | power | household-power-consumption | Number:Power | Household consuming Power |
| Grid Power Consumption | power | grid-power-consumption | Number:Power | Grid Power is needed in order to satisfy your overall Power consumption |
| Grid Power Supply | power | grid-power-supply | Number:Power | More Photovoltaic Power is produced than needed. Additional Power is provided towards the Grid |
| External Power Supply | power | external-power-supply | Number:Power | Power produced by an external device which is attached to your E3DC device |
| Wallbox Power Consumption | power | wallbox-power-consumption | Number:Power | Power consumption of attached Wallboxes |
| Wallbox PV Power Consumption | power | wallbox-pv-power-consumption | Number:Power | Photovoltaic Power consumption (PV plus Battery) of attached Wallboxes |
| Autarky | power | autarky-channel | Number:Dimensionless | Your current Autarky Level in Percent |
| Self Consumption | power | self-consumption | Number:Dimensionless | Your current Photovoltaic Self Consumption Level in Percent |
| Battery State Of Charge | power | battery-soc | Number:Dimensionless | Charge Level of your attached Battery in Percent |
| Channel Label | Channel Group ID | Channel ID | Type | Description |
|-------------------------------|-------------------|------------------------------|------------------------|----------------------------------------------------------------------------------------|
| PV Output | power | pv-power-supply | Number:Power | Photovoltaic Power Production |
| Battery Discharge | power | battery-power-supply | Number:Power | Battery discharges and provides Power |
| Battery Charge | power | battery-power-consumption | Number:Power | Battery charges and consumes Power |
| Household Consumption | power | household-power-consumption | Number:Power | Household consuming Power |
| Grid Power Consumption | power | grid-power-consumption | Number:Power | More Photovoltaic Power is produced than needed. Additional Power is consumed by Grid |
| Grid Power Supply | power | grid-power-supply | Number:Power | Grid Power is needed in order to satisfy your overall Power consumption |
| External Power Supply | power | external-power-supply | Number:Power | Power produced by an external device which is attached to your E3DC device |
| Wallbox Power Consumption | power | wallbox-power-consumption | Number:Power | Power consumption of attached Wallboxes |
| Wallbox PV Power Consumption | power | wallbox-pv-power-consumption | Number:Power | Photovoltaic Power consumption (PV plus Battery) of attached Wallboxes |
| Autarky | power | autarky-channel | Number:Dimensionless | Your current Autarky Level in Percent |
| Self Consumption | power | self-consumption | Number:Dimensionless | Your current Photovoltaic Self Consumption Level in Percent |
| Battery State Of Charge | power | battery-soc | Number:Dimensionless | Charge Level of your attached Battery in Percent |
### Channel Group _String Details Block_
| Channel Label | Channel Group ID | Channel ID | Type | Description |
|-----------------------|------------------|--------------------|---------------------------|------------------------------|
| String 1 Potential | strings | string1-dc-voltage | Number:ElectricPotential | Voltage on String 1 |
| String 2 Potential | strings | string2-dc-voltage | Number:ElectricPotential | Voltage on String 2 |
| String 3 Potential | strings | string3-dc-voltage | Number:ElectricPotential | Voltage on String 3 |
| String 1 Current | strings | string1-dc-current | Number:ElectricCurrent | Current on String 1 |
| String 2 Current | strings | string2-dc-current | Number:ElectricCurrent | Current on String 2 |
| String 3 Current | strings | string3-dc-current | Number:ElectricCurrent | Current on String 3 |
| Channel Label | Channel Group ID | Channel ID | Type | Description |
|-----------------------|------------------|--------------------|---------------------------|----------------------------|
| String 1 Potential | strings | string1-dc-voltage | Number:ElectricPotential | Voltage on String 1 |
| String 2 Potential | strings | string2-dc-voltage | Number:ElectricPotential | Voltage on String 2 |
| String 3 Potential | strings | string3-dc-voltage | Number:ElectricPotential | Voltage on String 3 |
| String 1 Current | strings | string1-dc-current | Number:ElectricCurrent | Current on String 1 |
| String 2 Current | strings | string2-dc-current | Number:ElectricCurrent | Current on String 2 |
| String 3 Current | strings | string3-dc-current | Number:ElectricCurrent | Current on String 3 |
| String 1 Power | strings | string1-dc-output | Number:Power | Power produced by String 1 |
| String 2 Power | strings | string2-dc-output | Number:Power | Power produced by String 2 |
| String 3 Power | strings | string3-dc-output | Number:Power | Power produced by String 3 |
@ -189,18 +188,18 @@ String E3DC_ModelName "E3DC Model" (e3dc)
String E3DC_Firmware "E3DC Modbus ID" (e3dc) { channel="modbus:e3dc:device:powerplant:info#firmware-release" }
String E3DC_SerialNumber "E3DC Modbus ID" (e3dc) { channel="modbus:e3dc:device:powerplant:info#serial-number" }
Number:Power E3DC_PVPower "E3DC PV Power" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#pv-power-supply" }
Number:Power E3DC_BatteryDischarge "E3DC Battery Discharge" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-power-supply" }
Number:Power E3DC_BatteryCharge "E3DC Battery Charge" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-power-consumption" }
Number:Power E3DC_Household "E3DC Household Consumption" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#household-power-consumption" }
Number:Power E3DC_GridConsumption "E3DC Grid Consumption" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#grid-power-consumption" }
Number:Power E3DC_GridSupply "E3DC Grid Supply " (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#grid-power-supply" }
Number:Power E3DC_ExternalSupply "E3DC External Supply" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#external-power-supply" }
Number:Power E3DC_WallboxConsumption "E3DC Wallbox Consumption" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#wallbox-power-consumption" }
Number:Power E3DC_WallboxPVConsumption "E3DC Wallbox PV Consumption" (e3dc) { channel="modbus:e3dc:device:powerplant:power#wallbox-pv-power-consumption" }
Number:Dimensionless E3DC_AutarkyLevel "E3DC Autarky Level" (e3dc) { channel="modbus:e3dc:device:powerplant:power#autarky" }
Number:Dimensionless E3DC_SelfConsumptionLevel "E3DC Self Consumption Level" (e3dc) { channel="modbus:e3dc:device:powerplant:power#self-consumption" }
Number:Dimensionless E3DC_BatterySOC "E3DC Battery SOC" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-soc" }
Number:Power E3DC_PVPower "E3DC PV Power" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#pv-power-supply" }
Number:Power E3DC_BatteryDischarge "E3DC Battery Discharge" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-power-supply" }
Number:Power E3DC_BatteryCharge "E3DC Battery Charge" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-power-consumption" }
Number:Power E3DC_Household "E3DC Household Consumption" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#household-power-consumption" }
Number:Power E3DC_GridConsumption "E3DC Power to Grid" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#grid-power-consumption" }
Number:Power E3DC_GridSupply "E3DC Power from Grid" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#grid-power-supply" }
Number:Power E3DC_ExternalSupply "E3DC External Supply" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#external-power-supply" }
Number:Power E3DC_WallboxConsumption "E3DC Wallbox Consumption" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#wallbox-power-consumption" }
Number:Power E3DC_WallboxPVConsumption "E3DC Wallbox PV Consumption" (e3dc) { channel="modbus:e3dc:device:powerplant:power#wallbox-pv-power-consumption" }
Number:Dimensionless E3DC_AutarkyLevel "E3DC Autarky Level" (e3dc) { channel="modbus:e3dc:device:powerplant:power#autarky" }
Number:Dimensionless E3DC_SelfConsumptionLevel "E3DC Self Consumption Level" (e3dc) { channel="modbus:e3dc:device:powerplant:power#self-consumption" }
Number:Dimensionless E3DC_BatterySOC "E3DC Battery SOC" (e3dc,persist) { channel="modbus:e3dc:device:powerplant:power#battery-soc" }
Switch E3DC_WB_Available "E3DC WB available" (e3dc) { channel="modbus:e3dc-wallbox:device:powerplant:wallbox0:wb-available" }
Switch E3DC_WB_Sunmode "E3DC WB Sunmode" (e3dc) { channel="modbus:e3dc-wallbox:device:powerplant:wallbox0:wb-sunmode" }
@ -346,7 +345,7 @@ I like the Grafana approach and I used the [InfluxDB & Grafana Tutorial](https:/
from the Community to set this up.
I prepared my machine and I'm quite pleased with the results.
<img style="float: right;" src="doc/GrafanaPV.png">
<img align="right" src="./doc/GrafanaPV.png"/>
In the above picture there are two graphs
@ -382,6 +381,6 @@ Items {
Having these values in the timeline you're able to cross check how the forecast influences the Photovoltaic Production.
<img style="float: right;" src="doc/GrafanaCloudiness.png">
<img align="right" src="./doc/GrafanaCloudiness.png"/>
I personally would like to have more steering control of the E3DC to react on such forecast e.g. "stop charging the car if it gets too cloudy"

View File

@ -123,7 +123,7 @@ This group contains summarized values for the power meter over all phases.
| ac-total-reactive-power | Number:Power | Total Reactive Power over all phases (W) |
| ac-average-power-factor | Number:Dimensionless | Average AC Power Factor over all phases (%) |
| ac-total-exported-real-energy | Number:Energy | Total Real Energy Exported over all phases (Wh) |
| ac-total-imported-real-energy | Number:Energy | Total Real Energy Imported over all phases (Wh) |
| ac-total-imported-real-energy | Number:Energy | Total Real Energy Imported over all phases (Wh) |
| ac-total-exported-apparent-energy | Number:Energy | Total Apparent Energy Exported over all phases (VAh) |
| ac-total-imported-apparent-energy | Number:Energy | Total Apparent Energy Imported over all phases (VAh) |
| ac-total-imported-reactive-energy-q1 | Number:Energy | Total Reactive Energy Imported Quadrant 1 over all phases (VARh) |
@ -148,7 +148,7 @@ acPhaseC: available only for inverter-three-phase type inverters.
| Channel ID | Item Type | Description |
|----------------------|--------------------------|---------------------------------------------------------------------|
| ac-phase-current | Number:ElectricCurrent | Actual current over this phase in Watts |
| ac-phase-current | Number:ElectricCurrent | Actual current over this phase in Ampere |
| ac-voltage-to-next | Number:ElectricPotential | Voltage of this phase relative to the next phase, or to the ground in case of single phase inverter. Note: some single phase SolarEdge inverters incorrectly use this value to report the voltage to neutral value|
| ac-voltage-to-n | Number:ElectricPotential | Voltage of this phase relative to the ground |

View File

@ -3,7 +3,7 @@ id: mpd
label: MPD
title: MPD - Bindings
type: binding
description: "[Music Player Daemon (MPD)](http://www.musicpd.org/) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol."
description: "[Music Player Daemon (MPD)](https://www.musicpd.org/) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol."
since: 3x
install: auto
---
@ -14,7 +14,7 @@ install: auto
# MPD Binding
[Music Player Daemon (MPD)](http://www.musicpd.org/) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol.
[Music Player Daemon (MPD)](https://www.musicpd.org/) is a flexible, powerful, server-side application for playing music. Through plugins and libraries it can play a variety of sound files while being controlled by its network protocol.
With the openHAB MPD binding you can control Music Player Daemons.

View File

@ -5,7 +5,6 @@ title: MQTT Things and Channels - Bindings
type: binding
description: "MQTT is one of the most commonly used protocols in IoT (Internet of Things) projects. It stands for Message Queuing Telemetry Transport."
since: 3x
logo: images/addons/mqtt.generic.png
install: manual
---
@ -57,7 +56,7 @@ binding can unfortunately not provide any auto-discovery means.
If you use an open source IoT device, the chances are high,
that it has the MQTT convention Homie or HomeAssistant implemented. Those conventions specify the topic
topology and allow auto discovery. Please have a look at the specific openHAB bindings.
## Supported Things
Because of the very generic structure of MQTT, this binding allows you to add an arbitrary number
@ -86,15 +85,15 @@ You can add the following channels:
## Channel Configuration
* __stateTopic__: The MQTT topic that represents the state of the thing. This can be empty, the thing channel will be a state-less trigger then. You can use a wildcard topic like "sensors/+/event" to retrieve state from multiple MQTT topics.
* __transformationPattern__: An optional transformation pattern like [JSONPath](http://goessner.net/articles/JsonPath/index.html#e2) that is applied to all incoming MQTT values.
* __transformationPatternOut__: An optional transformation pattern like [JSONPath](http://goessner.net/articles/JsonPath/index.html#e2) that is applied before publishing a value to MQTT.
* __stateTopic__: The MQTT topic that represents the state of the thing. This can be empty, the thing channel will be a state-less trigger then. You can use a wildcard topic like "sensors/+/event" to retrieve state from multiple MQTT topics.
* __transformationPattern__: An optional transformation pattern like [JSONPath](https://goessner.net/articles/JsonPath/index.html#e2) that is applied to all incoming MQTT values.
* __transformationPatternOut__: An optional transformation pattern like [JSONPath](https://goessner.net/articles/JsonPath/index.html#e2) that is applied before publishing a value to MQTT.
* __commandTopic__: The MQTT topic that commands are send to. This can be empty, the thing channel will be read-only then. Transformations are not applied for sending data.
* __formatBeforePublish__: Format a value before it is published to the MQTT broker. The default is to just pass the channel/item state. If you want to apply a prefix, say "MYCOLOR,", you would use "MYCOLOR,%s". Currently only "%s" is supported.
* __postCommand__: If `true`, the received MQTT value will not only update the state of linked items, but command it.
The default is `false`.
You usually need this to be `true` if your item is also linked to another channel, say a KNX actor, and you want a received MQTT payload to command that KNX actor.
* __retained__: The value will be published to the command topic as retained message. A retained value stays on the broker and can even be seen by MQTT clients that are subscribing at a later point in time.
You usually need this to be `true` if your item is also linked to another channel, say a KNX actor, and you want a received MQTT payload to command that KNX actor.
* __retained__: The value will be published to the command topic as retained message. A retained value stays on the broker and can even be seen by MQTT clients that are subscribing at a later point in time.
* __qos__: QoS of this channel. Overrides the connection QoS (defined in broker connection).
* __trigger__: If `true`, the state topic will not update a state, but trigger a channel instead.
@ -117,7 +116,7 @@ If you always require an integer, please use the formatter.
You can connect this channel to a Number item.
### Channel Type "dimmer"
* __on__: An optional string (like "ON"/"Open") that is recognized as minimum.
* __off__: An optional string (like "OFF"/"Close") that is recognized as maximum.
* __min__: A required minimum value.
@ -181,16 +180,16 @@ The channel expects values on the corresponding MQTT topic to be in this format
You can connect this channel to a Location item.
The channel will publish the location as comma separated list to the MQTT broker,
e.g. "112,54,123" for latitude, longitude, altitude. The altitude is optional.
e.g. "112,54,123" for latitude, longitude, altitude. The altitude is optional.
The channel expects values on the corresponding MQTT topic to be in this format as well.
The channel expects values on the corresponding MQTT topic to be in this format as well.
### Channel Type "image"
You can connect this channel to an Image item. This is a read-only channel.
The channel expects values on the corresponding MQTT topic to contain the binary
data of a bmp, jpg, png or any other format that the installed java runtime supports.
data of a bmp, jpg, png or any other format that the installed java runtime supports.
### Channel Type "datetime"
@ -199,7 +198,7 @@ You can connect this channel to a DateTime item.
The channel will publish the date/time in the format "yyyy-MM-dd'T'HH:mm"
for example 2018-01-01T12:14:00. If you require another format, please use the formatter.
The channel expects values on the corresponding MQTT topic to be in this format as well.
The channel expects values on the corresponding MQTT topic to be in this format as well.
### Channel Type "rollershutter"
@ -280,19 +279,19 @@ Here are a few examples:
- For an output of *May 23, 1995* use "%1$**tb** %1$**te**,%1$**tY**".
- For an output of *23.05.1995* use "%1$**td**.%1$**tm**.%1$**tY**".
- For an output of *23:15* use "%1$**tH**:%1$**tM**".
Default pattern applied for each type:
| Type | Parameter | Pattern | Comment |
| ---------------- | --------------------------------- | ------------------- | ------- |
| __string__ | String | "%s" |
| __number__ | BigDecimal | "%f" | The default will remove trailing zeros after the decimal point.
| __dimmer__ | BigDecimal | "%f" | The default will remove trailing zeros after the decimal point.
| __contact__ | String | -- | No pattern supported. Always **on** and **off** strings.
| __switch__ | String | -- | No pattern supported. Always **on** and **off** strings.
| __string__ | String | "%s" |
| __number__ | BigDecimal | "%f" | The default will remove trailing zeros after the decimal point.
| __dimmer__ | BigDecimal | "%f" | The default will remove trailing zeros after the decimal point.
| __contact__ | String | -- | No pattern supported. Always **on** and **off** strings.
| __switch__ | String | -- | No pattern supported. Always **on** and **off** strings.
| __colorRGB__ | BigDecimal, BigDecimal, BigDecimal| "%1$d,%2$d,%3$d" | Parameters are **red**, **green** and **blue** components.
| __colorHSB__ | BigDecimal, BigDecimal, BigDecimal| "%1$d,%2$d,%3$d" | Parameters are **hue**, **saturation** and **brightness** components.
| __location__ | BigDecimal, BigDecimal | "%2$f,%3$f,%1$f" | Parameters are **altitude**, **latitude** and **longitude**, altitude is only in default pattern, if value is not '0'.
| __image__ | -- | -- | No publishing supported.
| __image__ | -- | -- | No publishing supported.
| __datetime__ | ZonedDateTime | "%1$tY-%1$tm-%1$tdT%1$tH:%1$tM:%1$tS.%1$tN" | Trailing zeros of the nanoseconds are removed.
| __rollershutter__| String | "%s" | No pattern supported. Always **up**, **down**, **stop** string or integer percent value.
@ -301,4 +300,4 @@ Any outgoing value transformation will **always** result in a __string__ value.
## Troubleshooting
* If you get the error "No MQTT client": Please update your installation.
* If you use the Mosquitto broker: Please be aware that there is a relatively low setting for retained messages. At some point messages will just not being delivered anymore: Change the setting.
* If you use the Mosquitto broker: Please be aware that there is a relatively low setting for retained messages. If at some point messages stop being delivered change the setting.

View File

@ -21,8 +21,7 @@ install: auto
MQTT is a server/client architecture.
A server, also called broker is not provided within this binding.
You can use any of the freely available MQTT Brokers like [Mosquitto](https://mosquitto.org/)
or [Moquette](https://moquette-io.github.io/moquette/) or install the [included Moquette broker](https://www.openhab.org/addons/integrations/mqttembeddedbroker/) as add-on.
You can use any of the freely available MQTT Brokers like [Mosquitto](https://mosquitto.org/).
This particular binding allows to configure connections to brokers via openHAB Things.
This binding does NOT allow you to link Channels to MQTT topics or perform auto-discovery of available
@ -85,7 +84,4 @@ Configuration parameters are:
* __stateTopic__: This channel will trigger on this MQTT topic. This topic can contain wildcards like + and # for example "all/in/#" or "sensors/+/config".
* __payload__: An optional condition on the value of the MQTT topic that must match before this channel is triggered.
## Legacy MQTT1-Binding
This binding is not supposed to run in parallel to the old mqtt1-binding.
Please uninstall the old binding before installing this binding.
Note for new users - direct broker Bridge channels are rarely needed. You almost certainly will want to be using one of the binding extensions, or the generic Things and Channels features for most devices or services.

View File

@ -22,7 +22,7 @@ The Netatmo binding integrates the following Netatmo products:
- *Indoor Camera / Welcome*. Reports last event and persons at home, consult picture and video from event/camera.
- *Outdoor Camera / Presence*. Reports last event, consult picture and video from event/camera.
See http://www.netatmo.com/ for details on their product.
See https://www.netatmo.com/ for details on their product.
Please note, recent Netatmo thermostats are not supported because they require the Energy API which is not yet implemented in the binding.
Only older Netatmo thermostats compatible with the Thermostat API are supported.
@ -84,7 +84,7 @@ You will define here public way to access your openHAB server:
http(s)://xx.yy.zz.ww:8080
```
Your Netatmo App will be configured automatically by the bridge to the endpoint :
Your Netatmo App will be configured automatically by the bridge to the endpoint :
```
http(s)://xx.yy.zz.ww:8080/netatmo/%id%/camera
@ -102,7 +102,7 @@ First login with your user.
Then some examples of the documentation contain the **real results** of your weather station.
In order to try the examples, you need the `device_id` of your Netatmo station.
You can find it in the configuration menu of the app (android or apple).
Get the IDs of your devices (indoor, outdoor, rain gauge)
Get the IDs of your devices (indoor, outdoor, rain gauge)
[here](https://dev.netatmo.com/resources/technical/reference/weather/getstationsdata).
`main_device` is the ID of the "main device", the indoor sensor.
@ -231,7 +231,7 @@ All these channels are read only.
### Weather Station Outdoor module
Example item for the **outdoor module**
Example item for the **outdoor module**
```
Number Netatmo_Outdoor_Temperature "Temperature" { channel = "netatmo:NAModule1:home:outside:Temperature" }
@ -283,7 +283,7 @@ All these channels are read only.
### Weather Station Additional Indoor module
Example item for the **indoor module**
Example item for the **indoor module**
```
Number Netatmo_Indoor2_Temperature "Temperature" { channel = "netatmo:NAModule4:home:insidesupp:Temperature" }
@ -783,7 +783,7 @@ sitemap netatmo label="Netatmo" {
Text item=Indoor_Location
Text item=Indoor_LastStatusStore
}
Frame label="Outdoor" {
Frame label="Outdoor" {
Text item=Outdoor_Temperature
Text item=Outdoor_TempTrend
Text item=Outdoor_Humidity
@ -813,7 +813,7 @@ sitemap netatmo label="Netatmo" {
If you want to evaluate this binding but have not got a Netatmo station yourself
yet, you can add the Netatmo office in Paris to your account:
http://www.netatmo.com/en-US/addguest/index/TIQ3797dtfOmgpqUcct3/70:ee:50:00:02:20
https://www.netatmo.com/en-US/addguest/index/TIQ3797dtfOmgpqUcct3/70:ee:50:00:02:20
# Icons

View File

@ -16,7 +16,7 @@ install: auto
# Nibe Heatpump Binding
The Nibe Heatpump binding is used to get live data from Nibe heat pumps without using an expensive MODBUS40 adapter.
This binding is compatible with the F750, F1145, F1245, F1155, F1255 and F470 heat pump models.
This binding is compatible with the F750, F1145, F1245, F1155, F1255, F470 and SMO40 heat pump models.
The binding supports data telegrams (containing a maximum of 20 registers) from the heat pump.
The binding can also read other registers from the pump.
@ -45,6 +45,9 @@ This binding supports direct serial port connection (RS-485 adapter needed) to h
| f470-serial | Serial port connected F470 Heat Pumps |
| f470-udp | UDP connected Nibe F470 Heat Pumps |
| f470-simulator | Simulator for Nibe F470 Heat Pumps |
| smo40-serial | Serial port connected SMO40 controller |
| smo40-udp | UDP connected Nibe SMO40 controller |
| smo40-simulator | Simulator for Nibe SMO40 controller |
## Discovery
@ -74,7 +77,7 @@ An Arduino-based solution has been tested with Arduino uno + RS485 and Ethernet
The [ProDiNo](https://www.kmpelectronics.eu/en-us/products/prodinoethernet.aspx) NetBoards are also supported.
A ProDiNo has an Ethernet and RS-485 port on the board.
Arduino code is available [here](https://github.com/openhab/openhab-addons/tree/master/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/Arduino/NibeGW).
Arduino code is available [here](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/Arduino/NibeGW).
Arduino code can be build via Arduino IDE.
For more details see [www.arduino.cc](https://www.arduino.cc/en/Main/Software).
@ -82,7 +85,7 @@ NibeGW configuration (such IP addresses, ports, etc) can be adapted directly by
### Raspberry Pi (or other Linux/Unix based boards)
C code is available [here](https://github.com/openhab/openhab-addons/tree/master/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/RasPi).
C code is available [here](https://github.com/openhab/openhab-addons/tree/main/bundles/org.openhab.binding.nibeheatpump/contrib/NibeGW/RasPi).
To build the C code use:
@ -1911,3 +1914,12 @@ This binding currently supports following channels for F1x55 pump models:
| 49380 | Switch | 0 | 1 | Setting | External ERS 3 accessory bypass at heat | |
| 49381 | Switch | 0 | 1 | Setting | External ERS 2 accessory bypass at heat | |
| 49430 | Number | 0 | 255 | Setting | AUX ERS Fire Place Guard | |
### SMO40
To keep this documentation light, all parameters are documented in the NIBE ModbusManager except of:
| Channel Type ID | Item Type | Min | Max | Type | Description | Values |
|-----------------|-----------|-------------|------------|---------|----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 45780 | Number | 0 | 120 | Setting | Silent Mode Frequency 1 (defined in the service-menu) | |
| 49806 | Number | 0 | 120 | Setting | Silent Mode Frequency 2 (defined in the service-menu) | |

View File

@ -307,7 +307,7 @@ Bridge nikohomecontrol:bridge2:nhc2 [ addr="192.168.0.70", port=8884, password="
dimmer 3 "DiningRoom" [ actionId="abcdef01-abcd-1234-ab98-abcdef012345", step=5 ]
blind 4 [ actionId="abcdef01-abcd-1234-ab98-abcdefabcdef" ]
thermostat 5 [ thermostatId="abcdef01-abcd-1234-ab98-012345abcdef", overruleTime=10 ]
electricitymeter 6 [ energyMeterId="abcdef01-abcd-1234-cd56-ffee34567890" ]
energymeter 6 [ energyMeterId="abcdef01-abcd-1234-cd56-ffee34567890" ]
}
Bridge nikohomecontrol:bridge:nhc3 [ addr="192.168.0.110" ] {

View File

@ -108,7 +108,7 @@ sitemap nuki label="Nuki Smart Lock" {
Switch item=Frontdoor_Lock
}
Frame label="Channel State used for lock actions" {
Switch item=Frontdoor_State mappings=[2="Unlock", 7="Unlatch", 1002="LnGo", 1007="LnGoU", 4="Lock"]
Switch item=Frontdoor_LockState mappings=[2="Unlock", 7="Unlatch", 1002="LnGo", 1007="LnGoU", 4="Lock"]
}
Frame label="Channel State" {
Text item=Frontdoor_LockState label="Lock State [MAP(nukilockstates.map):%s]"

View File

@ -75,7 +75,7 @@ This example shows how to configure the OJElecttronics binding.
### demo.things
```
Binding ojelectronics:ojcloud:myCloud "My Cloud" @ "My Home" [ userName="MyUserName" password="MyPassword" apiKey="The Key" ] {
Bridge ojelectronics:ojcloud:myCloud "My Cloud" @ "My Home" [ userName="MyUserName", password="MyPassword", apiKey="The Key" ] {
Thing owd5 myThermostat [ serialNumber="123" ]
}
```
@ -83,8 +83,8 @@ Binding ojelectronics:ojcloud:myCloud "My Cloud" @ "My Home" [ userName="MyUserN
### demo.items
```
Number Bath_Floor_Temperature "Bathroom: Floor Temperature" {channel="ojelectronics:owd5:myThermostat:floorTemperature"}
String Bath_Mode "Bathroom: Mode" {channel="ojelectronics:owd5:myThermostat:regulationMode"}
Number Bath_Floor_Temperature "Bathroom: Floor Temperature" {channel="ojelectronics:owd5:myCloud:myThermostat:floorTemperature"}
String Bath_Mode "Bathroom: Mode" {channel="ojelectronics:owd5:myCloud:myThermostat:regulationMode"}
```
### demo.sitemap

View File

@ -33,19 +33,15 @@ The `owserver` is the bridge that connects to an existing OWFS installation.
### Things
There are different types of things: the simple one (`basic`), multisensors built around the DS1923/DS2438 chip (`ms-tx`) and more advanced sensors from Elaborated Networks (www.wiregate.de) (`ams`, `bms`), Embedded Data System (www.embeddeddatasystems.com)(`edsenv`) and Brain4Home (www.brain4home.eu) (`bae091x`).
** Important: Breaking Change **
The thing types `ms-th`, `ms-tv`, `counter2`, `digitalio`, `digitalio2`, `digitalio8`, `ibutton`, `temperature` have been removed.
There are different types of things: the simple one (`basic`), multisensors built around the DS1923/DS2438 chip (`ms-tx`) and more advanced sensors from Elaborated Networks (www.wiregate.de) (`ams`, `bms`), Embedded Data System (www.embeddeddatasystems.com)(`edsenv`) and Brain4Home (`bae091x`).
## Discovery
Discovery is supported for things. You have to add the bridges manually.
Discovery is supported for things. You have to add the bridges manually.
## Thing Configuration
It is strongly recommended to use discovery and Paper UI for thing configuration.
It is strongly recommended to add things using discovery and configure them using the UI.
Please note that:
* All things need a bridge.
@ -64,7 +60,7 @@ The `address` parameter is used to denote the location of the owserver instance.
It supports both, a hostname or an IP address.
The `port` parameter is used to adjust non-standard OWFS installations.
It defaults to `4304`, which is the default of each OWFS installation.
It defaults to `4304`, which is the default of each OWFS installation.
Bridges of type `owserver` are extensible with channels of type `owfs-number` and `owfs-string`.

View File

@ -58,7 +58,7 @@ The thing has the following configuration parameters:
| Address | host | Host name or IP address of the Oppo player or serial over IP device. | host name or ip |
| Port | port | Communication port for using serial over IP. Leave blank if using direct IP connection to the player. | ip port number |
| Serial Port | serialPort | Serial port to use for directly connecting to the Oppo player | a comm port name |
| Verbose Mode | verboseMode | (Optional) If true, the player will send time updates every second. If set false, the binding polls the player every 15 seconds. | Boolean; default false |
| Verbose Mode | verboseMode | (Optional) If true, the player will send time updates every second. If set false, the binding polls the player every 10 seconds. | Boolean; default false |
Some notes:
@ -68,9 +68,10 @@ Some notes:
* The UDP-20x series should be fully functional over direct IP connection but this was not able to be tested by the developer.
* As previously noted, when using verbose mode, the player will send time code messages once per second while playback is ongoing.
* Be aware that this could cause performance impacts to your openHAB system.
* In non-verbose (the default), the binding will poll the player every 15 seconds to update play time, track and chapter information instead.
* In non-verbose (the default), the binding will poll the player every 10 seconds to update play time, track and chapter information instead.
* In order for the direct IP connection to work while the player is turned off, the Standby Mode setting must be set to "Quick Start" in the Device Setup menu.
* Likewise if the player is turned off, it may not be discoverable by the Binding's discovery scan.
* If the player is switched off when the binding first starts up or if power to the player is ever interrupted, up to 30 seconds may elapse before the binding begins to update when the player is switched on.
* If you experience any issues using the binding, first ensure that the player's firmware is up to date with the latest available version (especially on the older models).
* For the older models, some of the features in the control API were added after the players were shipped.
* Available HDMI modes for BDP-83 & BDP-9x: AUTO, SRC, 1080P, 1080I, 720P, SDP, SDI

View File

@ -61,6 +61,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
|communicationState | Shows the communication status to Paradox. Different from Bridge status. Bridge may be online and able to receive commands but communication may be offline due to various reasons. Possible values [Offline, Online] |
#### Communication command channel allowed values
| Value | Description |
|--------|------------------------------------------------------------------------------------|
| LOGOUT | Logs out and disconnects from Paradox alarm system |
@ -75,6 +76,7 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
| disarmEnabled | Optional boolean flag. Valid for partitions. When set to true the command DISARM will be allowed for the partition where the flag is enabled. CAUTION: Enabling DISARM command can be dangerous. If attacker can gain access to your openHAB (via API or UI), this command can be used to disarm your armed partition (area) |
### Panel channels:
| Channel | Type | Description |
|--------------------------|----------------------------|-------------------------------------------------------------------------------------------|
| state | String | Overall panel state |
@ -188,11 +190,13 @@ Currently binding supports the following panels: EVO192, EVO48(not tested), EVO9
}
}
```
## Acknowledgements
This binding would not be possible without the reverse engineering of the byte level protocol and the development by other authors in python, C# and other languages. Many thanks to the following authors and their respective GitHub repositories for their development that helped in creating this binding:
João Paulo Barraca - https://github.com/ParadoxAlarmInterface/pai
Jean Henning - repository not available
Tertuish - https://github.com/Tertiush/ParadoxIP150v2 / https://github.com/Tertiush/ParadoxIP150
Tertuish - https://github.com/Tertiush/ParadoxIP150v2 / https://github.com/Tertiush/ParadoxIP150

View File

@ -3,7 +3,7 @@ id: robonect
label: Robonect
title: Robonect - Bindings
type: binding
description: "Robonect is a piece of hardware which has to be put into your Husqvarna, Gardena and other branded automower and makes"
description: "Robonect is a piece of hardware which has to be put into your Husqvarna, Gardena and other branded automower and makes it accessible in your internal network."
since: 3x
install: auto
---
@ -14,16 +14,14 @@ install: auto
# Robonect Binding
Robonect is a piece of hardware which has to be put into your Husqvarna, Gardena and other branded automower and makes
it accessible in your internal network.
Robonect is a piece of hardware which has to be put into your Husqvarna, Gardena and other branded automower and makes it accessible in your internal network.
More details about the Robonect module can be found at [robonect.de](https://forum.robonect.de/)
This binding integrates mowers having the robonect module installed as a thing into the home automation solution, allowing to
control the mower and react on mower status changes in rules.
This binding integrates mowers having the robonect module installed as a thing into the home automation solution, allowing to control the mower and react on mower status changes in rules.
## Supported Things
The binding exposes just one Thing type which is the `mower`.
The binding supports one Thing type which is the `mower`.
Tested mowers
@ -37,11 +35,11 @@ Tested mowers
## Discovery
Robonect does not support automatic discovery. So the thing has to be added manually either via Paper UI or things configuration.
Automatic discovery is not supported.
## Thing Configuration
following configuration settings are supported for the `mower` thing.
The following configuration settings are supported for the `mower` thing.
| parameter name | mandatory | description |
|----------------|-----------|---------------------------------------------------------------------------------------------------|
@ -53,7 +51,7 @@ following configuration settings are supported for the `mower` thing.
| timezone | no | the timezone as configured in Robonect on the robot (default: Europe/Berlin) |
An example things configuration might look like
An example things configuration might look like:
```java
Thing robonect:mower:automower "Mower" @ "Garden" [ host="192.168.2.1", pollInterval="5", user="gardener", password = "cutter"]
@ -85,7 +83,7 @@ Thing robonect:mower:automower "Mower" @ "Garden" [ host="192.168.2.1", pollInte
### Offline Trigger Channel
This channel s triggered if the mower is longer than the configured `offlineTriggerTimeout` offline.
This channel s triggered if the mower is longer than the configured `offlineTriggerTimeout` offline.
This may indicate that the mower may stuck somewhere in error state but does not have a signal.
## Full Example

View File

@ -141,4 +141,4 @@ Text label="Power Grid"{
Default item=SenecLiveGridExport
}
}
```
```

View File

@ -70,4 +70,4 @@ The following channels are supported by the binding. Note that specific weather
Bridge somfymylink:mylink:mylink1 "myLink Bridge" @ "Office" [ ipAddress="192.168.1.1", systemId="mysystemidhere" ] {
Thing shade shade1 "Living Room" [ targetId="CC114A21.1" ]
}
```
```

View File

@ -191,7 +191,7 @@ OSHI project has a good support and regularly updates the library with fixes to
In order to update the version used in the binding, follow these easy steps:
- Go to the [OSHI GitHub repo](https://github.com/oshi/oshi) and download the newest version available of the module oshi-core or download the jar from the [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Coshi-). Check if the versions of the OSHI dependencies as well (jna and jna-platform) are changed;
- Go to the [OSHI GitHub repo](https://github.com/oshi/oshi) and download the newest version available of the module oshi-core or download the jar from the [Maven Central](https://search.maven.org/#search%7Cga%7C1%7Coshi-). Check if the versions of the OSHI dependencies as well (jna and jna-platform) are changed;
- Replace the jars in lib folder;
- Modify the .classpath file with the new versions of the jars;
- Modify the header Bundle-ClassPath in the META-INF/MANIFEST.MF.

View File

@ -16,15 +16,15 @@ install: auto
Touchwand Wanderfull™ Hub basic is a plug & play Z-Wave based controller that uses Wi-Fi and Bluetooth to easily connect all smart home components.
TouchWand products are compatible with most major Z-Wave products, IP controlled devices and KNX devices, providing the ideal solution for building all-inclusive full-featured smart homes.
[TouchWand.com](http://www.touchwand.com)
[TouchWand.com](https://www.touchwand.com)
![Touchwand Wanderfull™ Hub](http://www.touchwand.com/wp-content/uploads/2017/12/hub-toch-1.png)
![Touchwand Wanderfull™ Hub](https://www.touchwand.com/wp-content/uploads/2017/12/hub-toch-1.png)
## Supported Things
This binding supports switches, shutters dimmers alarm sensors and wall controllers configured in Touchwand Wanderfull™ Hub Controller.
## Control and Status
## Control and Status
1. **switch** - control - ON/OFF
2. **shutter** - control - UP/DOWN/STOP
@ -38,7 +38,7 @@ After adding TouchWand Hub the auto discovery will add all switches dimmers alar
## Bridge Configuration
**Touchwand Wanderfull™** Hub Controller need to be added manually by IP address. The controller requires **username** and **password**
**Touchwand Wanderfull™** Hub Controller need to be added manually by IP address. The controller requires **username** and **password**
| Parameter | Description | Units | required |
|-------------------|-----------------------------------------------------------------------|---------|----------|
@ -55,13 +55,13 @@ After adding TouchWand Hub the auto discovery will add all switches dimmers alar
No thing configuration is needed
## Channels
## Channels
note **Touchwand Wanderfull™** supports various types of alarm sensors such as water leak, door/window sensor and motion sensor.
Alarm Sensor thing represents a generic sensor, relevant sensor channels will be displayed once a sensor is added as a Thing.
| Channel Type ID | Item Type | Description
| Channel Type ID | Item Type | Description
|-------------------|--------------------|-----------------------------------------------------------------------|
| switch | Switch | This channel supports switching the device on and off. |
| shutter | Rollershutter | This channel controls the shutter position |
@ -82,9 +82,9 @@ Alarm Sensor thing represents a generic sensor, relevant sensor channels will be
### touchwand.things
Things can be defined manually
The syntax for touchwand this is
Things can be defined manually
The syntax for touchwand this is
```xtend
Thing <binding_id>:<type_id>:<thing_id> "Label" @ "Location"
```

View File

@ -5,6 +5,7 @@ title: UPB - Bindings
type: binding
description: "Universal Powerline Bus (UPB) is a protocol for communication over household electrical wiring."
since: 3x
logo: images/addons/upb.png
install: auto
---

View File

@ -3,7 +3,7 @@ id: venstarthermostat
label: Venstar Thermostat
title: Venstar Thermostat - Bindings
type: binding
description: "The Venstar Thermostat binding supports an interface to WiFi enabled ColorTouch and Explorer thermostats manufactured by [Venstar](http://www.venstar.com)."
description: "The Venstar Thermostat binding supports an interface to WiFi enabled ColorTouch and Explorer thermostats manufactured by [Venstar](https://www.venstar.com)."
since: 3x
install: auto
---
@ -14,32 +14,32 @@ install: auto
# Venstar Thermostat Binding
The Venstar Thermostat binding supports an interface to WiFi enabled ColorTouch and Explorer thermostats manufactured by [Venstar](http://www.venstar.com).
The Venstar Thermostat binding supports an interface to WiFi enabled ColorTouch and Explorer thermostats manufactured by [Venstar](https://www.venstar.com).
Venstar WiFi enabled thermostats provide a local API that this binding uses
to communicate with the thermostat. This binding does not require "cloud"
to communicate with the thermostat. This binding does not require "cloud"
access and may be used independently of Venstar's Skyport cloud services.
The Local API is not enabled by default, so you will need to set up your
The Local API is not enabled by default, so you will need to set up your
thermostat by configuring its WiFi connection and enabling the Local API. In
order for the binding to connect, you will need to enable HTTPS support and
order for the binding to connect, you will need to enable HTTPS support and
set a username and password. While it is possible to enable the Local API
without HTTPS and authentication, the binding doesn't support it, in an effort
to provide as secure an installation as possible.
When you've set the username and password, make a note of these, as you'll need
to enter them in the thermostat configuration in openHAB.
to enter them in the thermostat configuration in openHAB.
## Supported Things
| Thing Type | Description |
|----------------------|-----------------------------------------------------------------------------------|
| colorTouchThermostat | A Venstar [ColorTouch](http://www.venstar.com/thermostats/colortouch/) thermostat |
| colorTouchThermostat | A Venstar [ColorTouch](https://www.venstar.com/thermostats/colortouch/) thermostat |
## Discovery
Once the binding is installed it will attempt to auto discovery Venstar thermostats located on the local network.
These will appear as Things in the system Inbox.
These will appear as Things in the system Inbox.
After adding the Inbox item, enter the user name and password from the physical thermostat in the Thing's configuration.
## Thing Configuration
@ -70,7 +70,7 @@ After adding the Inbox item, enter the user name and password from the physical
## Example
### thermostat.things
### thermostat.things
```
Thing venstarthermostat:colorTouchThermostat:001122334455 "Venstar Thermostat (Guest)" [ username="admin", password="secret", url="https://192.168.1.100", refresh=30 ]
@ -95,7 +95,7 @@ sitemap demo label="Venstar Color Thermostat Demo"
{
Frame {
Setpoint item=Guest_HVAC_HeatSetpoint minValue=50 maxValue=99
Setpoint item=Guest_HVAC_CoolSetpoint minValue=50 maxValue=99
Setpoint item=Guest_HVAC_CoolSetpoint minValue=50 maxValue=99
Switch item=Guest_HVAC_Mode mappings=[off=Off,heat=Heat,cool=Cool,auto=Auto]
Text item=Guest_HVAC_State
}

View File

@ -86,9 +86,9 @@ Sets the nightly heal time (in hours).
The inclusion mode setting allows the user to set how the controller will initiate inclusion when discovery is initiated. There are three options available -:
* Low Power Inclusion: In this mode devices must be within 1 meter of the controller to be included.
* High Power Inclusion: In this mode devices must be able to communicate directly with the controller, so can be 10 to 15 meters from the controller under most conditions.
* Network Wide Inclusion: In this mode devices can be anywhere in the network. This mode
* [`0`] Low Power Inclusion: In this mode devices must be within 1 meter of the controller to be included.
* [`1`] High Power Inclusion: In this mode devices must be able to communicate directly with the controller, so can be 10 to 15 meters from the controller under most conditions.
* [`2`] Network Wide Inclusion: In this mode devices can be anywhere in the network. This mode
#### Secure Inclusion Mode [security_inclusionmode]
@ -420,30 +420,22 @@ To disable debug logging, enter the following command -:
log:set INFO org.openhab.binding.zwave
```
By default, this will put all logging into the standard ```openhab.log``` file. If you prefer to have all ZWave logging in a separate file, put this in your ```userdata/etc/org.ops4j.pax.logging.cfg``` file.
By default, this will put all logging into the standard ```openhab.log``` file. If you prefer to have all ZWave logging in a separate file, put this in your ```userdata/etc/log4j2.xml``` file.
```
### Zwave custom logger
log4j2.logger.Zwave.name = org.openhab.binding.zwave
log4j2.logger.Zwave.level = DEBUG
log4j2.logger.Zwave.additivity = false
log4j2.logger.Zwave.appenderRefs = Zwave
log4j2.logger.Zwave.appenderRef.Zwave.ref = ZWAVE
<!-- Zwave custom logger -->
<Logger additivity="false" level="INFO" name="org.openhab.binding.zwave">
<AppenderRef ref="ZWAVE"/>
</Logger>
### Zwave custom appender
log4j2.appender.Zwave.name = ZWAVE
log4j2.appender.Zwave.type = RollingRandomAccessFile
log4j2.appender.Zwave.fileName = ${openhab.logdir}/zwave.log
log4j2.appender.Zwave.filePattern = ${openhab.logdir}/zwave.log.%i
log4j2.appender.Zwave.immediateFlush = true
log4j2.appender.Zwave.append = true
log4j2.appender.Zwave.layout.type = PatternLayout
log4j2.appender.Zwave.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-50.50c] - %m%n
log4j2.appender.Zwave.policies.type = Policies
log4j2.appender.Zwave.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.Zwave.policies.size.size = 10MB
log4j2.appender.Zwave.strategy.type = DefaultRolloverStrategy
log4j2.appender.Zwave.strategy.max = 10
<!-- Zwave custom file appender -->
<RollingRandomAccessFile fileName="${sys:openhab.logdir}/zwave.log" filePattern="${sys:openhab.logdir}/zwave.log.%i" name="ZWAVE">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5.5p] [%-36.36c] - %m%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="16 MB"/>
</Policies>
</RollingRandomAccessFile>
```
An online viewer that presents the logs in a clearer way in order to help with their understanding, is available [here](https://opensmarthouse.org/utilities/logviewer/zwave/).

View File

@ -1,72 +0,0 @@
# Getting Started
# Prepare Z-Way Server
1. [Download](https://razberry.z-wave.me/z-way-server/) Z-Way v2.2.3 or newer (further information about installing Z-Way you can find [here](http://razberry.z-wave.me/index.php?id=24))
# Prepare openHAB
1. [Download](https://www.openhab.org/download/) openHAB 2 (further information about installing openHAB you can find [here](https://www.openhab.org/docs/installation/))
2. Install Z-Way Binding
- via Extension Manager
- via Download
```shell
cd /opt/openhab2/addons
sudo wget https://github.com/openhab/openhab-addons/files/636686/org.openhab.binding.zway-2.0.0-SNAPSHOT.zip
sudo unzip org.openhab.binding.zway-2.0.0-SNAPSHOT.zip
sudo rm org.openhab.binding.zway-2.0.0-SNAPSHOT.zip
```
3. Start openHAB by running `start.bat` or `start.sh`
4. The first start may take up to 5 minutes. You should reach openHAB2 at `http://localhost:8080`
# Configure Z-Way in openHAB
## Create and configure a Z-Way Bridge
Open the *Paper UI*
![openHAB Home](images/getting-started/01-openHAB-Home.png)
Open the *Inbox* and create a Z-Way Server
![openHAB Inbox](images/getting-started/02-Inbox.png)
![openHAB Inbox](images/getting-started/03-Create-bridge.png)
Open the *Configuration* - *Things* and select Z-Way Server
![openHAB Thing details](images/getting-started/05-Bridge-details.png)
Change configuration: In order for the Observer mechanism works, the IP address, port and protocol of both systems are required.
- **Z-Way Server**
- **IP address** (default: localhost)
- **port** (default: 8083)
- **protocol** (default: http)
- **username** (default: admin)
- **password** must be set (no default value)
- **options**
- **polling interval** (default: 3600) in seconds
**The following picture is no longer up to date!**
![openHAB Thing settings](images/getting-started/06-Bridge-settings.png)
## Create and configure Z-Way Devices
Open the *Inbox* and start manually the *Discovery* for the Z-Way Binding. The *Discovery* must be started manually at this point, because the *Discovery* is running only every 4 minutes. The start time of the interval is the creation of Z-Way Server, even if the configuration is not yet complete. After the Z-Way Server is fully configured, the interval must be awaited or started manually.
![openHAB Discovery](images/getting-started/07-Device-discovery.png)
![openHAB Discovery](images/getting-started/08-Device-discovery.png)
Create *Things* from the *Discovery Results*
![openHAB Inbox](images/getting-started/09-Create-device.png)
Example: openHAB *Thing* compared to the equivalent Z-Way *Devices*
![openHAB Thing](images/getting-started/10-Z-Way-device.png)
![Z-Way Devices](images/getting-started/11-Z-Way-device.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@ -177,10 +177,6 @@ Unsupported Z-Way device types: Camera, SensorMultiline, Text. The integration o
The locations of the Z-Way devices are loaded during the discovery.
Based on the location ID of Z-Way device, the name of the Z-Way room is then allocated to the location property of the thing.
## Example
Because textual configuration isn't useful, follow the instructions in the [Getting Started](doc/GETTING_STARTED.md) document.
## Developer stuff
### Known issues

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 64 64" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<ellipse id="e" cx="25" cy="40" rx="8" ry="2"/>
<clipPath id="a">
<use xlink:href="#e"/>
</clipPath>
<ellipse id="e" cx="25" cy="40" rx="8" ry="2"/>
<radialGradient id="c" cx="35" cy="33" r="5.831" gradientTransform="matrix(1 0 0 .25 0 24.75)" gradientUnits="userSpaceOnUse" xlink:href="#b"/>
<radialGradient id="d" cx="25" cy="40.08" r="5.831" gradientTransform="matrix(1 0 0 .25 0 30.06)" gradientUnits="userSpaceOnUse" xlink:href="#b"/>
<radialGradient id="b" cx="19" cy="28" r="5.831" gradientTransform="matrix(1 0 0 .25 0 21)" gradientUnits="userSpaceOnUse">

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,7 +1,7 @@
---
layout: documentation
title: Amazon Alexa Smart Home Skill
source: https://github.com/openhab/openhab-alexa/blob/master/USAGE.md
source: https://github.com/openhab/openhab-alexa/blob/main/USAGE.md
description: "Alexa is an intelligent personal assistant developed by Amazon and designed to run on smart speakers and devices such as the Amazon Echo and Dot."
---
@ -68,7 +68,12 @@ The skill connects your openHAB setup through the [myopenHAB.org](http://myopenH
## Requirements
* [openHAB Cloud Connector](http://docs.openhab.org/addons/ios/openhabcloud/readme.html) configured using myopenHAB.org
::: tip
This integration relies on the cloud connector addon.
More information can be found in the corresponding [docs page](https://www.openhab.org/link/openhabcloud).
:::
* openHAB Cloud Connector configured using myopenHAB.org
* Amazon account
* Amazon Echo, Amazon Echo Dot or compatible Alexa device

View File

@ -13,69 +13,317 @@ This guide describes step by step how to use the [openHAB Google Assistant Smart
With the Action you can voice control your openHAB items and it supports lights, plugs, switches, thermostats and many more. The openHAB Action comes with multiple language support like English, German or French language.
# General Configuration Instructions
If you have any issues, questions or an idea for additional features, please take a look at the [repository on GitHub](https://github.com/openhab/openhab-google-assistant).
## Requirements
## General Configuration Instructions
* [openHAB Cloud Connector](http://docs.openhab.org/addons/ios/openhabcloud/readme.html) configured using myopenHAB.org. (Items DO NOT need to be exposed to and will not show up on myopenHAB.org, this is only needed for the IFTTT service!)
* Google account.
* Google Home, Google Home mini, Google Nest or the Google Assistant on your phone.
::: tip
This integration relies on the cloud connector addon.
More information can be found in the corresponding [docs page](https://www.openhab.org/link/openhabcloud).
:::
## Item configuration
In openHAB 2 items are exposed via [metadata](https://www.openhab.org/docs/configuration/items.html#item-definition-and-syntax).
### Requirements
Currently the following metadata values are supported (also depending on Googles API capabilities):
* The openHAB Cloud Connector configured using myopenHAB.org (Items DO NOT need to be exposed to and will not show up on myopenHAB.org, this is only required for the IFTTT service!)
* A Google account
* A Google Home/Nest Voice Assistant Device or the Google Assistant on your phone
* `Switch / Dimmer / Color { ga="Light" }`
* `Switch { ga="Switch" [ inverted=true ] }` (all Switch items can use the inverted option)
* `Switch { ga="Outlet" }`
* `Switch { ga="Coffee_Maker" }`
* `Switch { ga="WaterHeater" }`
* `Switch { ga="Fireplace" }`
* `Switch { ga="Valve" }`
* `Switch { ga="Sprinkler" }`
* `Switch { ga="Vacuum" }`
* `Switch { ga="Scene" }`
* `Switch { ga="Lock" [ tfaAck=true ] }`
* `Switch { ga="SecuritySystem" [ tfaPin="1234" ] }`
* `Dimmer { ga="Speaker" }`
* `Switch / Dimmer { ga="Fan" [ speeds="0=away:zero,50=default:standard:one,100=high:two", lang="en", ordered=true ] }` (for Dimmer the options have to be set)
* `Switch / Dimmer { ga="Hood" }`
* `Switch / Dimmer { ga="AirPurifier" }`
* `Rollershutter { ga="Awning" [ inverted=true ] }` (all Rollershutter items can use the inverted option)
* `Rollershutter { ga="Blinds" }`
* `Rollershutter { ga="Curtain" }`
* `Rollershutter { ga="Door" }`
* `Rollershutter { ga="Garage" }`
* `Rollershutter { ga="Gate" }`
* `Rollershutter { ga="Pergola" }`
* `Rollershutter { ga="Shutter" }`
* `Rollershutter { ga="Window" }`
* `Group { ga="Thermostat" [ modes="..." ] }`
* `Number { ga="thermostatTemperatureAmbient" }` as part of Thermostat group
* `Number { ga="thermostatHumidityAmbient" }` as part of Thermostat group
* `Number { ga="thermostatTemperatureSetpoint" }` as part of Thermostat group
* `Number / String { ga="thermostatMode" }` as part of Thermostat group
* `String { ga="Camera" [ protocols="hls,dash" ] }`
### Item configuration
_\* All Rollershutter devices can also be used with a Switch item with the limitation of only supporting open and close states._
To expose [items](https://www.openhab.org/docs/concepts/items.html) to Google Assistent you will need to add [metadata](https://www.openhab.org/docs/concepts/items.html#item-metadata) in the `ga` namespace.
Example item configuration:
```
Switch KitchenLights "Kitchen Lights" <light> (gKitchen) { ga="Switch" }
Dimmer BedroomLights "Bedroom Lights" <light> (gBedroom) { ga="Light" }
Color LivingroomLights "Livingroom Lights" <light> (gLivingroom) { ga="Light" }
Switch SceneMovie "Livingroom Scene Movie" (gLivingroom) { synonyms="Movie Scene", ga="Scene" }
Switch CristmasTree "Cristmas Tree" (gLivingroom) { ga="Outlet" }
Switch DoorLock "Door Lock" { ga="Lock" }
Currently the following devices are supported (also depending on Google's API capabilities):
//Thermostat Setup (Google requires a mode, even if you manually set it up in openHAB)
Group g_HK_Basement_TSTAT "Basement Thermostat" { ga="Thermostat" [ useFahrenheit=true ] }
Number HK_Basement_Mode "Basement Heating/Cooling Mode" (g_HK_Basement_TSTAT) { ga="thermostatMode" }
Number HK_Basement_Setpoint "Basement Setpoint" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureSetpoint" }
Number HK_Basement_Temp "Basement Temperature" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureAmbient" }
Number HK_Basement_Humid "Basement Humidity" (g_HK_Basement_TSTAT) { ga="thermostatHumidityAmbient" }
```
_Hint: The value of `ga` is **not** case-sensitive._
#### `Switch`
| | |
|---|---|
| **Device Type** | [Switch](https://developers.google.com/assistant/smarthome/guides/switch) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/onoff) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `inverted=true/false` |
**Example:**
```shell
Switch { ga="Switch" [ inverted=false ] }
```
#### `Light`
| | |
|---|---|
| **Device Type** | [Light](https://developers.google.com/assistant/smarthome/guides/light) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/onoff), [ColorSetting](https://developers.google.com/assistant/smarthome/traits/colorsetting), [Brightness](https://developers.google.com/assistant/smarthome/traits/brightness) (depending on used item type) |
| **Supported Items** | Switch, Dimmer, Color |
| **Configuration** | (optional) `inverted=true/false`<br>(optional) `colorTemperatureRange="minK,maxK"` |
```shell
Switch { ga="Light" [ inverted=true ] }
Dimmer { ga="Light" }
Color { ga="Light" [ colorTemperatureRange="2000,9000" ] }
```
#### `Light as Group with separate Color and Brightness`
| | |
|---|---|
| **Device Type** | [Light](https://developers.google.com/assistant/smarthome/guides/light) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/onoff), [ColorSetting](https://developers.google.com/assistant/smarthome/traits/colorsetting), [Brightness](https://developers.google.com/assistant/smarthome/traits/brightness) |
| **Supported Items** | Group as `light` with two Number or Dimmer members as `lightBrightness` & `lightColorTemperature` |
| **Configuration** | (optional) `useKelvin=true/false`<br>(optional) `colorTemperatureRange="minK,maxK"`<br>_Hint: if you do not set `useKelvin=true` then `colorTemperatureRange` is required_ |
```shell
Group lightGroup { ga="Light" [ useKelvin=true, colorTemperatureRange="2000,9000" ] }
Dimmer brightnessItem (lightGroup) { ga="lightBrightness" }
Number colorItem (lightGroup) { ga="lightColorTemperature" }
```
#### `Scene`
| | |
|---|---|
| **Device Type** | [Scene](https://developers.google.com/assistant/smarthome/guides/scene) |
| **Supported Traits** | [Scene](https://developers.google.com/assistant/smarthome/traits/scene) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `sceneReversible=true/false` |
```shell
Switch { ga="Scene" [ sceneReversible=false ] }
```
#### `Outlet`, `Coffee_Maker`, `WaterHeater`, `Fireplace`
| | |
|---|---|
| **Device Type** | [Outlet](https://developers.google.com/assistant/smarthome/guides/outlet), [Coffee_Maker](https://developers.google.com/assistant/smarthome/guides/coffeemaker), [WaterHeater](https://developers.google.com/assistant/smarthome/guides/outlet), [Fireplace](https://developers.google.com/assistant/smarthome/guides/fireplace) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/onoff) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `inverted=true/false` |
```shell
Switch { ga="Outlet" [ inverted=true ] }
Switch { ga="Coffee_Maker" [ inverted=true ] }
Switch { ga="WaterHeater" [ inverted=false ] }
Switch { ga="Fireplace" }
```
#### `Valve`
| | |
|---|---|
| **Device Type** | [Valve](https://developers.google.com/assistant/smarthome/guides/valve) |
| **Supported Traits** | [OpenClose](https://developers.google.com/assistant/smarthome/traits/openclose) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `inverted=true/false` |
```shell
Switch { ga="Valve" [ inverted=true ] }
```
#### `Sprinkler`, `Vacuum`
| | |
|---|---|
| **Device Type** | [Sprinkler](https://developers.google.com/assistant/smarthome/guides/sprinkler), [Vacuum](https://developers.google.com/assistant/smarthome/guides/vacuum) |
| **Supported Traits** | [StartStop](https://developers.google.com/assistant/smarthome/traits/startstop) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `inverted=true/false` |
```shell
Switch { ga="Sprinkler" [ inverted=true ] }
Switch { ga="Vacuum" [ inverted=false ] }
```
#### `Lock`
| | |
|---|---|
| **Device Type** | [Lock](https://developers.google.com/assistant/smarthome/guides/lock) |
| **Supported Traits** | [LockUnlock](https://developers.google.com/assistant/smarthome/traits/lockunlock) |
| **Supported Items** | Contact (no device control), Switch |
| **Configuration** | (optional) `ackNeeded=true/false`<br>(optional) `pinNeeded="1234"` |
```shell
Switch { ga="Lock" [ ackNeeded=true ] }
Switch { ga="Lock" [ pinNeeded="1234" ] }
```
#### `SecuritySystem`
| | |
|---|---|
| **Device Type** | [SecuritySystem](https://developers.google.com/assistant/smarthome/guides/securitysystem) |
| **Supported Traits** | [ArmDisarm](https://developers.google.com/assistant/smarthome/traits/armdisarm) |
| **Supported Items** | Switch |
| **Configuration** | (optional) `ackNeeded=true/false`<br>(optional) `pinNeeded="1234"` |
```shell
Switch { ga="SecuritySystem" [ pinNeeded="1234" ] }
```
#### `Camera`
| | |
|---|---|
| **Device Type** | [Camera](https://developers.google.com/assistant/smarthome/guides/camera) |
| **Supported Traits** | [CameraStream](https://developers.google.com/assistant/smarthome/traits/camerastream) |
| **Supported Items** | String |
| **Configuration** | (optional) `protocols="hls,dash,smooth_stream,progressive_mp4"` _(choose suitable)_ |
```shell
String { ga="Camera" [ protocols="hls,dash" ] }
```
#### `Speaker` (volume control only)
| | |
|---|---|
| **Device Type** | [Speaker](https://developers.google.com/assistant/smarthome/guides/speaker) |
| **Supported Traits** | [Volume](https://developers.google.com/assistant/smarthome/traits/volume) |
| **Supported Items** | Dimmer |
| **Configuration** | (optional) `volumeDefaultPercentage="20"`<br>(optional) `levelStepSize="5"`<br>(optional) `volumeMaxLevel="100"` |
```shell
Dimmer { ga="Speaker" [ volumeDefaultPercentage="50", levelStepSize="10", volumeMaxLevel="90" ] }
```
#### `TV`
| | |
|---|---|
| **Device Type** | [TV](https://developers.google.com/assistant/smarthome/guides/tv) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/onoff), [Volume](https://developers.google.com/assistant/smarthome/traits/volume), [TransportControl](https://developers.google.com/assistant/smarthome/traits/transportcontrol), [InputSelector](https://developers.google.com/assistant/smarthome/traits/inputselector), [AppSelector](https://developers.google.com/assistant/smarthome/traits/appselector), [Channel](https://developers.google.com/assistant/smarthome/traits/channel) (depending on used members) |
| **Supported Items** | Group as `TV` with the following optional members: Switch as `tvPower`, Switch as `tvMute`, Dimmer as `tvVolume`, String as `tvChannel`, String as `tvInput`, String as `tvApplication`, Player as `tvTransport` |
| **Configuration** | (optional) `volumeDefaultPercentage="20"`<br>(optional) `levelStepSize="5"`<br>(optional) `volumeMaxLevel="100"`<br>(optional) `transportControlSupportedCommands="NEXT,PREVIOUS,PAUSE,RESUME"`<br>(optional) `availableChannels="channelNumber=channelId=channelName:channelSynonym:...,..."`<br>(optional) `availableInputs="inputKey=inputName:inputSynonym:...,..."`<br>(optional) `availableApplications="applicationKey=applicationName:applicationSynonym:...,..."`<br>(optional) `lang="en"` |
```shell
Group tvGroup { ga="TV" [ volumeDefaultPercentage="20", levelStepSize="10", volumeMaxLevel="100", transportControlSupportedCommands="NEXT,PREVIOUS,PAUSE,RESUME", availableChannels="1=Channel1=NBC,2=Channel2=CBS", availableInputs="hdmi1=xbox:gaming,hdmi2=settopbox", availableApplications: "youtube=YouTube:Tube,netflix=Netflix:Chill" ] }
Switch powerItem (tvGroup) { ga="tvPower" }
Switch muteItem (tvGroup) { ga="tvMute" }
Dimmer volumeItem (tvGroup) { ga="tvVolume" }
String channelItem (tvGroup) { ga="tvChannel" }
String inputItem (tvGroup) { ga="tvInput" }
String applicationItem (tvGroup) { ga="tvApplication" }
Player transportItem (tvGroup) { ga="tvTransport" }
```
#### `Fan`, `Hood`, `AirPurifier`
| | |
|---|---|
| **Device Type** | [Fan](https://developers.google.com/assistant/smarthome/guides/fan), [Hood](https://developers.google.com/assistant/smarthome/guides/hood), [AirPurifier](https://developers.google.com/assistant/smarthome/guides/airpurifier) |
| **Supported Traits** | [OnOff](https://developers.google.com/assistant/smarthome/traits/OnOff), [FanSpeed](https://developers.google.com/assistant/smarthome/traits/fanspeed) (depending on used item type) |
| **Supported Items** | Switch (no speed control), Dimmer |
| **Configuration** | (optional) `speeds="0=away:zero,50=default:standard:one,100=high:two"`<br>(optional) `lang="en"`<br>(optional) `ordered=true/false`<br>_Hint: if you are using a Dimmer then `speeds` is required_ |
Fans (and similar device types, like AirPurifier or Hood) support the `FanSpeed` trait.
With that you will be able to set up and use human speakable modes, e.g. "fast" for 100% or "slow" for 25%.
`speeds` will be a comma-separated list of modes with a percentage number followed by an equal sign and different aliases for that mode after a colon.
So here both "high" and "two" would set the speed to 100%.
You are also able to define the language of those aliases.
The option `ordered` will tell the system that your list is ordered and you will then be able to also say "faster" or "slower" and Google will use the next or previous speed.
```shell
Dimmer { ga="Fan" [ speeds="0=away:zero,50=default:standard:one,100=high:two", lang="en", ordered=true ] }
Switch { ga="Hood" }
Dimmer { ga="AirPurifier" [ speeds="0=off,50=mid,100=high" ] }
```
#### `Awning`, `Blinds`, `Curtain`, `Door`, `Garage`, `Gate`, `Pergola`, `Shutter`, `Window`
| | |
|---|---|
| **Device Type** | [Awning](https://developers.google.com/assistant/smarthome/guides/awning), [Blinds](https://developers.google.com/assistant/smarthome/guides/blinds), [Curtain](https://developers.google.com/assistant/smarthome/guides/curtain), [Door](https://developers.google.com/assistant/smarthome/guides/door), [Garage](https://developers.google.com/assistant/smarthome/guides/garage), [Gate](https://developers.google.com/assistant/smarthome/guides/gate), [Pergola](https://developers.google.com/assistant/smarthome/guides/pergola), [Shutter](https://developers.google.com/assistant/smarthome/guides/shutter), [Window](https://developers.google.com/assistant/smarthome/guides/window) |
| **Supported Traits** | [OpenClose](https://developers.google.com/assistant/smarthome/traits/openclose), [StartStop](https://developers.google.com/assistant/smarthome/traits/startstop) |
| **Supported Items** | Contact (no device control), Switch (no open percentage), Rollershutter |
| **Configuration** | (optional) `inverted=true/false` |
Blinds and simiar devices should always use the `Rollershutter` item type for proper functionallity.
Since Google and openHAB use the oposite percentage value for "opened" and "closed", the action will tranlate this automatically.
If the values are still inverted in your case, you can state the `inverted=true` option for all `Rollershutter` items.
Since Google only tells the open percentage (and not the verb "close" or "down"), it can not be differentiated between saying "set blind to 100%" or "open blind".
Therefore, it is not possible to "not invert" the verbs, if the user chooses to invert the numbers.
```shell
Rollershutter { ga="Awning" }
Rollershutter { ga="Blinds" [ inverted=true ] }
Rollershutter { ga="Curtain" }
Switch { ga="Door" }
Rollershutter { ga="Garage" }
Contact { ga="Gate" }
Rollershutter { ga="Pergola" }
Rollershutter { ga="Shutter" }
Rollershutter { ga="Window" }
```
#### `TemperatureSensor`
| | |
|---|---|
| **Device Type** | [Sensor](https://developers.google.com/assistant/smarthome/guides/sensor) |
| **Supported Traits** | [TemperatureControl](https://developers.google.com/assistant/smarthome/traits/temperaturecontrol) |
| **Supported Items** | Number |
| **Configuration** | (optional) `useFahrenheit=true/false` |
```shell
Number { ga="TemperatureSensor" [ useFahrenheit=true ] }
```
#### `Thermostat`
| | |
|---|---|
| **Device Type** | [Thermostat](https://developers.google.com/assistant/smarthome/guides/thermostat) |
| **Supported Traits** | [TemperatureSetting](https://developers.google.com/assistant/smarthome/traits/temperaturesetting) |
| **Supported Items** | Group as `Thermostat` with the following optional members: Number as `thermostatTemperatureAmbient`, Number as `thermostatTemperatureSetpoint`, Number as `thermostatTemperatureSetpointLow`, Number as `thermostatTemperatureSetpointHigh`, Number as `thermostatHumidityAmbient`, String or Number as `thermostatMode` |
| **Configuration** | (optional) `useFahrenheit=true/false`<br>(optional) `thermostatTemperatureRange="10,30"`<br>(optional) `modes="off=OFF:WINDOW_OPEN,heat=COMFORT:BOOST,eco=ECO,on=ON,auto"` |
Thermostat requires a group of items to be properly configured to be used with Google Assistant. The default temperature unit is Celsius.
To change the temperature unit to Fahrenheit, add the config option `useFahrenheit=true` to the thermostat group.
To set the temperature range your thermostat supports, add the config option `thermostatTemperatureRange="10,30"` to the thermostat group.
If your thermostat supports a range for the setpoint you can use both `thermostatTemperatureSetpointLow` and `thermostatTemperatureSetpointHigh` instead of the single `thermostatTemperatureSetpoint` item.
If your thermostat does not have a mode, you should create one and manually assign a value (e.g. heat, cool, on, etc.) to have proper functionality.
To map the [default thermostat modes of Google](https://developers.google.com/assistant/smarthome/traits/temperaturesetting.html) (on, off, heat, cool, etc.) to custom ones for your specific setup, you can use the `modes` config option on the thermostat group.
E.g. `[ modes="off=OFF:WINDOW_OPEN,heat=COMFORT:BOOST,eco=ECO,on=ON,auto" ]` will enable the following five modes in Google Home `"off, heat, eco, on, auto"` that will be translated to `"OFF, COMFORT, ECO, ON, auto"`. You can specify alternative conversions using the colon sign, so that in the former example "BOOST" in openHAB would also be translated to "heat" in Google. For the translation of Google modes to openHAB always the first option after the equal sign is used.
By default the integration will provide `"off,heat,cool,on,heatcool,auto,eco"`.
You can also set up a Thermostat for using it as a temperature sensor. To do so, create a Thermostat group and only add one item member as "thermostatTemperatureAmbient".
However, it is recommended to prefer the `TemperatureSensor` type for simple temperature reports (but currently there is no UI support in Google Home).
```shell
Group thermostatGroup { ga="Thermostat" [ modes="off=OFF:WINDOW_OPEN,heat=COMFORT:BOOST,eco=ECO,on=ON,auto", thermostatTemperatureRange="10,30", useFahrenheit=false ] }
Number ambientItem (thermostatGroup) { ga="thermostatTemperatureAmbient" }
Number humidityItem (thermostatGroup) { ga="thermostatHumidityAmbient" }
Number setpointItem (thermostatGroup) { ga="thermostatTemperatureSetpoint" }
Number setpointItemLow (thermostatGroup) { ga="thermostatTemperatureSetpointLow" }
Number setpointItemHigh (thermostatGroup) { ga="thermostatTemperatureSetpointHigh" }
String modeItem (thermostatGroup) { ga="thermostatMode" }
```
#### `Sensor`
| | |
|---|---|
| **Device Type** | [Sensor](https://developers.google.com/assistant/smarthome/guides/sensor) |
| **Supported Traits** | [SensorState](https://developers.google.com/assistant/smarthome/traits/sensorstate) |
| **Supported Items** | Number, Dimmer |
| **Configuration** |`sensorName="SmokeLevel"`<br>`valueUnit="PARTS_PER_MILLION"`<br>`states="no smoke=10,smoke detected=50,high=90"` |
Please see the [SensorState documentation](https://developers.google.com/assistant/smarthome/traits/sensorstate) for more details on configuration options.
For now only exact matches of the numeric value will report the descriptive state value.
```shell
Number { ga="Sensor" [ sensorName="AirQuality", valueUnit="AQI", states="good=10,moderate=50,poor=90" ] }
```
### Addtional Information
Item labels are not mandatory in openHAB, but for the Google Assistant Action they are absolutely necessary!
@ -87,23 +335,33 @@ Furthermore, you can state synonyms for the device name: `Switch KitchenLight "K
To ease setting up new devices you can add a room hint: `[ roomHint="Living Room" ]`.
For devices supporting the OpenClose trait, the attributes `[ discreteOnly=false, queryOnly=false ]` can be configured.
NOTE: metadata is not (yet?) available via paperUI. Either you create your items via ".items" files, or you can:
- add metadata via console:
```
smarthome:metadata add BedroomLights ga Light
```
* `discreteOnly` defaults to false. When set to true, this indicates that the device must either be fully open or fully closed (that is, it does not support values between 0% and 100%). An example of such a device may be a valve.
* `queryOnly` defaults to false. Is set to true for `Contact` items. Indicates if the device can only be queried for state information and cannot be controlled. Sensors that can only report open state should set this field to true.
- add metadata using the REST API:
```
PUT /rest/items/BedroomLights/metadata/ga
---
{
"value": "Light"
}
```
NOTE: metadata is not available via paperUI in openHAB v2. Either you create your items via ".items" files, or you can:
### Special item configurations
* add metadata via console:
```shell
smarthome:metadata add BedroomLights ga Light
```
* add metadata using the REST API:
```js
PUT /rest/items/BedroomLights/metadata/ga
{
"value": "Light"
}
```
NOTE: Please be aware that for backward compatibilty also the former usage of tags (ref. [Google Assistant Action Documentation v2.5](https://www.openhab.org/v2.5/docs/ecosystem/google-assistant/)) to specify items to be exposed to Google Assistent is supported and may cause unexpected behavior.
Items that contain tags that refer to a valid Google Assistent device will be exposed regardless of having metadata set. E.g.: `Switch MyBulb ["Lighting"]`.
#### Two-Factor-Authentication
@ -117,53 +375,10 @@ _pinNeeded_: "A two-factor authentication that requires a personal identificatio
Example:
```shell
Switch DoorLock "Front Door" { ga="Lock" [ ackNeeded=true ] }
Switch HouseAlarm "House Alarm" { ga="SecuritySystem" [ pinNeeded="1234" ] }
```
Switch DoorLock "Front Door" { ga="Lock" [ tfaAck=true ] }
Switch HouseAlarm "House Alarm" { ga="SecuritySystem" [ tfaPin="1234" ] }
```
#### Thermostats
Thermostat requires a group of items to be properly configured to be used with Google Assistant. The default temperature unit is Celsius. `{ ga="Thermostat" }`
To change the temperature unit to Fahrenheit, add the config option `[ useFahrenheit=true ]` to the thermostat group.
To set the temperature range your thermostat supports, add the config option `[ thermostatTemperatureRange="10,30" ]` to the thermostat group.
There must be at least three items as members of the group:
* (Mandatory) Mode: Number (Zwave THERMOSTAT_MODE Format) or String (off, heat, cool, on, ...). `{ ga="thermostatMode" }`
* (Mandatory) Temperature Ambient: Number. `{ ga="thermostatTemperatureAmbient" }`
* (Mandatory) Temperature Setpoint: Number. `{ ga="thermostatTemperatureSetpoint" }`
* (Optional) Temperature Setpoint High: Number. `{ ga="thermostatTemperatureSetpointHigh" }`
* (Optional) Temperature Setpoint Low: Number. `{ ga="thermostatTemperatureSetpointLow" }`
* (Optional) Humidity Ambient: Number. `{ ga="thermostatHumidityAmbient" }`
If your thermostat does not have a mode, you should create one and manually assign a value (e.g. heat, cool, on, etc.) to have proper functionality.
To map the [default thermostat modes of Google](https://developers.google.com/assistant/smarthome/traits/temperaturesetting.html) (on, off, heat, cool, etc.) to custom ones for your specific setup, you can use the _modes_ config option on the thermostat group.
E.g. `[ modes="off=OFF:WINDOW_OPEN,heat=COMFORT:BOOST,eco=ECO,on=ON,auto" ]` will enable the following five modes in Google Home `"off, heat, eco, on, auto"` that will be translated to `"OFF, COMFORT, ECO, ON, auto"`. You can specify alternative conversions using the colon sign, so that in the former example "BOOST" in openHAB would also be translated to "heat" in Google. For the translation of Google modes to openHAB always the first option after the equal sign is used.
By default the integration will provide `"off,heat,cool,on,heatcool,auto,eco"`.
You can also set up a Thermostat for using it as a temperature sensor. To do so, create a Thermostat group and only add one item member as "thermostatTemperatureAmbient".
#### Fans
_Fans_ (and similar device types, like _AirPurifier_ or _Hood_) support the _FanSpeed_ trait.
With that you will be able to set up and use human speakable modes, e.g. "fast" for 100% or "slow" for 25%.
To set up those modes use a _Dimmer_ item and the following metadata config: `[ speeds="0=away:zero,50=default:standard:one,100=high:two", lang="en", ordered=true ]`.
_speeds_ will be a comma-separated list of modes with a percentage number followed by an equal sign and different aliases for that mode after a colon.
So here both "high" and "two" would set the speed to 100%.
You are also able to define the language of those aliases.
The option _ordered_ will tell the system that your list is ordered and you will then be able to also say "faster" or "slower" and Google will use the next or previous speed.
#### Blinds and similar devices
Blinds should always use the `Rollershutter` item type.
Since Google and openHAB use the oposite percentage value for "opened" or "closed", the action will tranlate this automatically.
If the values are still inverted in your case, you can state the `[ inverted=true ]` option for all `Rollershutter` items.
## Setup & Usage on Google Assistant App
@ -207,48 +422,50 @@ If the values are still inverted in your case, you can state the `[ inverted=tru
![openHAB Google App](images/Screenshot_10.png)
![openHAB Google App](images/Screenshot_11.png)
## Example Voice Commands
Here are some example voice commands:
* Turn on Office Lights.
* Dim/Brighten Office Lights (increments 15%).
* Set Office Lights to 35%.
* Open/Close the blinds
* Turn off Pool Waterfall.
* Turn on House Fan.
* Turn on Home Theater Scene.
* Set Basement Thermostat to 15 degrees.
* What is the current Basement Thermostat Temperature?
* Turn on Office Lights.
* Dim/Brighten Office Lights (increments 15%).
* Set Office Lights to 35%.
* Open/Close the blinds
* Turn off Pool Waterfall.
* Turn on House Fan.
* Turn on Home Theater Scene.
* Set Basement Thermostat to 15 degrees.
* What is the current Basement Thermostat Temperature?
## Frequently Asked Question
## Frequently Asked Question
My New items did not appear in the Google Home app.
My New items did not appear in the Google Home app.
* Say: Hey Google, sync my devices.
* Say: Hey Google, sync my devices.
I'm not able to connect openHAB to Google Home.
I'm not able to connect openHAB to Google Home.
* Check, recheck and after that check again your items!
* The items that you want to expose to Google Assistant should have the right metadata assigned.
* The items that you want to expose to Google Assistant must have a item label! [Item Definition and Syntax](https://www.openhab.org/docs/configuration/items.html#item-definition-and-syntax)
* If you expose thermostats make sure than you have:
* A group item with the metadata value { ga="Thermostat" }
* A number or string item with the metadata value { ga="thermostatMode" } as part of the thermostat group
* A number item with the metadata value { ga="thermostatTemperatureAmbient" } as part of the thermostat group
* A number item with the metadata value { ga="thermostatTemperatureSetpoint" } as part of the thermostat group
```
Group g_HK_Basement_TSTAT "Basement Thermostat" { ga="Thermostat" [ useFahrenheit=true ] }
Number HK_Basement_Mode "Basement Heating/Cooling Mode" (g_HK_Basement_TSTAT) { ga="thermostatMode" }
Number HK_Basement_Setpoint "Basement Setpoint" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureSetpoint" }
Number HK_Basement_Temp "Basement Temperature" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureAmbient" }
* A Group item with the metadata value `{ ga="Thermostat" }`
* A Number or String item with the metadata value `{ ga="thermostatMode" }` as part of the thermostat group
* A Number item with the metadata value `{ ga="thermostatTemperatureAmbient" }` as part of the thermostat group
* A Number item with the metadata value `{ ga="thermostatTemperatureSetpoint" }` as part of the thermostat group
```shell
Group g_HK_Basement_TSTAT "Basement Thermostat" { ga="Thermostat" [ useFahrenheit=true ] }
Number HK_Basement_Mode "Basement Heating/Cooling Mode" (g_HK_Basement_TSTAT) { ga="thermostatMode" }
Number HK_Basement_Setpoint "Basement Setpoint" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureSetpoint" }
Number HK_Basement_Temp "Basement Temperature" (g_HK_Basement_TSTAT) { ga="thermostatTemperatureAmbient" }
```
* If none of the above solutions works for you:
* Remove all the metadata.
* Make a new .item file with 1 item to expose.
```
```shell
Switch TestLight "Test Light" { ga="Switch" }
```
* Relink your account.
* Relink your account.

View File

@ -172,11 +172,13 @@ You must either
```
server {
listen 80;
proxy_pass http://localhost:8080/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
* or let openHAB run on port 80 (the entire java process requires elevated privileges).

View File

@ -19,19 +19,19 @@ It creates a REST service at _/imperihome/iss_ that implements the [ImperiHome S
## Installation
The ImperiHome integration service can be installed through the Paper UI. Navigate to Add-ons &gt; Misc and click Install.
<a name="configuration"></a>
The ImperiHome integration service can be installed through the "Misc" add-ons category in the UI.
## Configuration
### openHAB Add-on
To configure the ImperiHome integration add-on in openHAB, create a _imperihome.cfg_ file in the _conf/services_ directory. The following configuration options can be used:
To configure the ImperiHome integration add-on in openHAB, create a _imperihome.cfg_ file in the _conf/services_ directory.
The following configuration options can be used:
**System ID**
The ImperiHome integration service identifies itself to ImperiHome using a system ID. By default the unique identifier of your openHAB installation is used. To override the ID, use the _system.id_ configuration option.
The ImperiHome integration service identifies itself to ImperiHome using a system ID.
By default the unique identifier of your openHAB installation is used. To override the ID, use the _system.id_ configuration option.
```
system.id=my-openhab-123
@ -58,7 +58,8 @@ Add a new system (+) and choose 'ImperiHome Standard System' as the object type.
Now enter the URL to your openHAB instance as Local URL, followed by _/imperihome/iss_.
For example, if your openHAB instance is running at _<http://192.168.1.10:8080/>_, the Local URL would be _<http://192.168.1.10:8080/imperihome/iss>_.
If you have port forwarding or similar set up to access your openHAB from the internet, you can also fill the Remote URL in the same way. For example: _<http://my-openhab-url.dyndns.org:8080/imperihome/iss>_.
If you have port forwarding or similar set up to access your openHAB from the internet, you can also fill the Remote URL in the same way.
For example: _<http://my-openhab-url.dyndns.org:8080/imperihome/iss>_.
_Warning_: this service provides no authentication mechanism, so anyone could use the API to control your system when accessible from the internet.
Add a secure proxy or use the openHAB Cloud proxy to protect your system ([more information](https://www.openhab.org/docs/installation/security.html)).
@ -87,7 +88,6 @@ If you have defined your Items in _.items_ files, tags can be added using:
```
syntax (after the _(Groups)_ and before the _{channel}_).
If you created your items another way, e.g. using the Paper UI, [HABmin](/docs/configuration/ui/habmin/) allows you to modify the tags.
### Tag: _type_

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@ -0,0 +1,113 @@
---
id: metrics
label: Metrics service
title: Metrics service - System Integrations
type: io
description: "The metrics service provides"
since: 3x
install: manual
---
<!-- Attention authors: Do not edit directly. Please add your changes to the appropriate source repository -->
{% include base.html %}
# Metrics service
The metrics service provides
* an additional REST endpoint to retrieve openHAB core metrics from. This can be used as scrape target for pull-based monitoring systems like [Prometheus](https://prometheus.io/).
* optionally configurable services to export openHAB core metrics to push-based monitoring systems like [InfluxDB](https://www.influxdata.com/).
## Precondition
The openHAB core metrics must be available (at least OH version 3.1).
## Provided metrics
Currently the following metrics are provided:
- openHAB events counts (per topic)
- openHAB bundle states
- openHAB thing states
- openHAB rule runs (per rule)
- openHAB threadpool stats (per scheduler)
- JVM stats including metrics of
- class loader
- memory
- GarbageCollector
- OS (system load, CPU)
- thread metrics
## Configuration
The configuration for the metrics service is available in the openHAB UI under Settings | Other Services | Metrics service.
Support for pull-based monitoring systems (e. g. Prometheus) is always enabled, since it doesn't imply any significant overhead when not used.
Support for push-based monitoring systems (e. g. InfluxDB) have to be enabled separately.
The following configuration parameters can be set:
|Config param|Description|Default value|
|--|--|--|
|influxMetricsEnabled|Enable the Influx (www.influxdata.com) metrics. Further configuration of the InfluxDB instance necessary.|false|
Refer to the corresponding monitoring system sections for monitoring system specific configuration parameters.
### Supported monitoring systems
For a start, the following formats are supported:
### Prometheus
Once the IO addon is installed, the Prometheus endpoint will be available under:
_<openhab_host>:8080/rest/metrics/prometheus_
Refer to the [Prometheus](https://prometheus.io/) documentation on how to setup a Prometheus instance and add a scrape configuration. A typical scrape config could look like this (excerpt from `/etc/prometheus/prometheus.yml`):
````shell
scrape_configs:
- job_name: 'openhab'
scrape_interval: 1m
scheme: http
metrics_path: /rest/metrics/prometheus
static_configs:
- targets:
- 'openhab.local:8080'
````
Replace `openhab.local` by the openhab host.
#### Available configuration parameters
There are no Prometheus specific configuration paramters.
### InfluxDB
The InfluxDB exporter service will start as soon as the _influxMetricsEnabled_ configuration parameter is set to true.
#### Available configuration parameters
|Config param|Description|Default value|
|--|--|--|
|influxURL|The URL of the InfluxDB instance. Defaults to http://localhost:8086|http://localhost:8086|
|influxDB|The name of the database to use. Defaults to "openhab".|openhab|
|influxUsername|InfluxDB user name|n/a|
|influxPassword|The InfluxDB password (no default).|n/a|
|influxUpdateIntervalInSeconds|Controls how often metrics are exported to InfluxDB (in seconds). Defaults to 300|300|
## Additional metric formats
The metrics service was implemented using [Micrometer](https://micrometer.io), which supports a number of [monitoring systems](https://micrometer.io/docs)
It should be possible to add any of these, especially the ones using a pull mechanism ("scraping") like Prometheus does.
## Grafana
You can now visualize the results in Grafana. Micrometer provides a public [Grafana dashboard here](https://grafana.com/grafana/dashboards/4701).
I adapted it a little bit to include the openHAB metrics. You can download it here [Dashboard](doc/dashboard.json).
This has been tested with Prometheus - for other monitoring systems adaptions to the dashboard might be necessary.
Here are some screenshots:
![Grafana (1)](doc/grafana-1.png)
![Grafana (2)](doc/grafana-2.png)
![Grafana (3)](doc/grafana-3.png)

Some files were not shown because too many files have changed in this diff Show More