From 858701a7f22da2d78a2605c62ce99f879408aae4 Mon Sep 17 00:00:00 2001 From: Jerome Luckenbach Date: Mon, 21 Dec 2020 10:13:16 +0100 Subject: [PATCH] Secure links should be standard, where available. (#1354) Signed-off-by: Jerome Luckenbach --- .editorconfig | 2 +- .vuepress/public/cookieinfo.min.js | 2 +- CONTRIBUTING.md | 2 +- addons/actions.md | 6 +- addons/io.md | 6 +- addons/uis/apps/ios.md | 2 +- administration/console.md | 2 +- administration/index.md | 2 +- administration/logging.md | 2 +- administration/serial.md | 2 +- configuration/habpanel.md | 6 +- configuration/index.md | 6 +- configuration/jsr223.md | 2 +- configuration/paperui.md | 2 +- configuration/rules-dsl.md | 12 ++-- configuration/sitemaps.md | 16 ++--- developers/bindings/binding-xml.md | 4 +- developers/bindings/config-xml.md | 14 ++-- developers/bindings/index.md | 2 +- developers/bindings/thing-xml.md | 20 +++--- developers/guidelines.md | 2 +- developers/ide/intellij.md | 2 +- developers/index.md | 2 +- developers/osgi/equinox.md | 74 ++++++++++---------- developers/osgi/eventadmin.md | 6 +- developers/osgi/osgi.md | 16 ++--- developers/osgi/osgids.md | 28 ++++---- developers/tests.md | 8 +-- developers/utils/events.md | 2 +- developers/utils/i18n.md | 4 +- images/tag-install-auto.svg | 2 +- images/tag-install-legacy.svg | 2 +- images/tag-install-manual.svg | 2 +- images/tag-since-1x.svg | 2 +- images/tag-since-2x.svg | 2 +- installation/linux.md | 2 +- installation/macos.md | 2 +- installation/openhabian.md | 2 +- installation/rasppi.md | 2 +- installation/security.md | 40 +++++------ installation/synology.md | 6 +- installation/windows.md | 16 ++--- introduction.md | 2 +- styleguide.md | 4 +- tutorials/getting_started/things_advanced.md | 2 +- 45 files changed, 172 insertions(+), 172 deletions(-) diff --git a/.editorconfig b/.editorconfig index 5579f5895..8b1ee41a4 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,5 +1,5 @@ ; This file is for unifying the coding style for different editors and IDEs. -; More information at http://EditorConfig.org +; More information at https://EditorConfig.org root = true diff --git a/.vuepress/public/cookieinfo.min.js b/.vuepress/public/cookieinfo.min.js index 4d4a1b243..ff608ff0d 100644 --- a/.vuepress/public/cookieinfo.min.js +++ b/.vuepress/public/cookieinfo.min.js @@ -1 +1 @@ -!function(e){"use strict";var t=e,i=t.document,o="cbinstance";var n={get:function(e){return decodeURIComponent(i.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},set:function(e,t,o,n,s,r){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(o)switch(o.constructor){case Number:a=o===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+o;break;case String:a="; expires="+o;break;case Date:a="; expires="+o.toUTCString()}return i.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(s?"; domain="+s:"")+(n?"; path="+n:"")+(r?"; secure":""),!0},has:function(e){return new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(i.cookie)},remove:function(e,t,o){return!(!e||!this.has(e))&&(i.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(o?"; domain="+o:"")+(t?"; path="+t:""),!0)}},s={merge:function(){var e,t={},i=0,o=arguments.length;if(0===o)return t;for(;i',n=i.createElement("div");n.innerHTML=o,e=n.firstChild}return e},agree:function(){return this.cookiejar.set(this.options.cookie,1,this.options.expires,this.options.cookiePath),!0},agreed:function(){return this.cookiejar.has(this.options.cookie)},close:function(){return this.inserted&&(this.closed||(this.element&&this.element.parentNode.removeChild(this.element),this.element_mask&&this.element_mask.parentNode.removeChild(this.element_mask),this.closed=!0)),this.closed},agree_and_close:function(){return this.agree(),this.close()},cleanup:function(){return this.close(),this.unload()},unload:function(){return this.script_el&&this.script_el.parentNode.removeChild(this.script_el),e[o]=void 0,!0},insert:function(){this.element_mask=this.build_viewport_mask();var e=this.options.zindex;this.element_mask&&(e+=1);var t=i.createElement("div");t.className="cookieinfo",t.style.position="fixed",t.style.left=0,t.style.right=0,t.style.height=this.options.height,t.style.minHeight=this.options.minHeight,t.style.zIndex=e,t.style.background=this.options.bg,t.style.color=this.options.fg,t.style.lineHeight=t.style.minHeight,t.style.padding="8px 18px",t.style.fontFamily=this.options.fontFamily,t.style.fontSize=this.options.fontSize,t.style.textAlign=this.options.textAlign,"top"===this.options.position?t.style.top=0:t.style.bottom=0,t.innerHTML='
'+this.options.closeText+'
'+this.options.message+" "+this.options.linkmsg+" "+this.options.scriptmsg+"",this.element=t;var o=t.getElementsByTagName("a")[0];o.href=this.options.moreinfo,o.style.textDecoration="none",o.style.color=this.options.link;var n=t.getElementsByTagName("a")[1];n.href=this.options.scriptinfo,n.style.textDecoration="none",n.style.display="none",n.style.color=this.options.link;var r=t.getElementsByTagName("div")[0];r.style.cursor="pointer",r.style.color=this.options.divlink,r.style.background=this.options.divlinkbg,r.style.textAlign="center";var a=t.getElementsByTagName("img")[0];function c(e,t,i){var o=e.addEventListener?"addEventListener":"attachEvent",n=e.addEventListener?"":"on";e[o](n+t,i,!1)}a.src=this.options.tracking,a.style.display="none";var l=this;c(r,"click",function(){l.agree_and_close()}),this.element_mask&&(c(this.element_mask,"click",function(){l.agree_and_close()}),i.body.appendChild(this.element_mask)),this.options.acceptOnScroll&&c(window,"scroll",function(){l.agree_and_close()}),i.body.appendChild(this.element),this.inserted=!0,"fade"===this.options.effect?(this.element.style.opacity=0,s.fade_in(this.element)):this.element.style.opacity=1}},r&&(e[o]||(e[o]=new a))}(window); +!function(e){"use strict";var t=e,i=t.document,o="cbinstance";var n={get:function(e){return decodeURIComponent(i.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null},set:function(e,t,o,n,s,r){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;var a="";if(o)switch(o.constructor){case Number:a=o===1/0?"; expires=Fri, 31 Dec 9999 23:59:59 GMT":"; max-age="+o;break;case String:a="; expires="+o;break;case Date:a="; expires="+o.toUTCString()}return i.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+a+(s?"; domain="+s:"")+(n?"; path="+n:"")+(r?"; secure":""),!0},has:function(e){return new RegExp("(?:^|;\\s*)"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(i.cookie)},remove:function(e,t,o){return!(!e||!this.has(e))&&(i.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(o?"; domain="+o:"")+(t?"; path="+t:""),!0)}},s={merge:function(){var e,t={},i=0,o=arguments.length;if(0===o)return t;for(;i',n=i.createElement("div");n.innerHTML=o,e=n.firstChild}return e},agree:function(){return this.cookiejar.set(this.options.cookie,1,this.options.expires,this.options.cookiePath),!0},agreed:function(){return this.cookiejar.has(this.options.cookie)},close:function(){return this.inserted&&(this.closed||(this.element&&this.element.parentNode.removeChild(this.element),this.element_mask&&this.element_mask.parentNode.removeChild(this.element_mask),this.closed=!0)),this.closed},agree_and_close:function(){return this.agree(),this.close()},cleanup:function(){return this.close(),this.unload()},unload:function(){return this.script_el&&this.script_el.parentNode.removeChild(this.script_el),e[o]=void 0,!0},insert:function(){this.element_mask=this.build_viewport_mask();var e=this.options.zindex;this.element_mask&&(e+=1);var t=i.createElement("div");t.className="cookieinfo",t.style.position="fixed",t.style.left=0,t.style.right=0,t.style.height=this.options.height,t.style.minHeight=this.options.minHeight,t.style.zIndex=e,t.style.background=this.options.bg,t.style.color=this.options.fg,t.style.lineHeight=t.style.minHeight,t.style.padding="8px 18px",t.style.fontFamily=this.options.fontFamily,t.style.fontSize=this.options.fontSize,t.style.textAlign=this.options.textAlign,"top"===this.options.position?t.style.top=0:t.style.bottom=0,t.innerHTML='
'+this.options.closeText+'
'+this.options.message+" "+this.options.linkmsg+" "+this.options.scriptmsg+"",this.element=t;var o=t.getElementsByTagName("a")[0];o.href=this.options.moreinfo,o.style.textDecoration="none",o.style.color=this.options.link;var n=t.getElementsByTagName("a")[1];n.href=this.options.scriptinfo,n.style.textDecoration="none",n.style.display="none",n.style.color=this.options.link;var r=t.getElementsByTagName("div")[0];r.style.cursor="pointer",r.style.color=this.options.divlink,r.style.background=this.options.divlinkbg,r.style.textAlign="center";var a=t.getElementsByTagName("img")[0];function c(e,t,i){var o=e.addEventListener?"addEventListener":"attachEvent",n=e.addEventListener?"":"on";e[o](n+t,i,!1)}a.src=this.options.tracking,a.style.display="none";var l=this;c(r,"click",function(){l.agree_and_close()}),this.element_mask&&(c(this.element_mask,"click",function(){l.agree_and_close()}),i.body.appendChild(this.element_mask)),this.options.acceptOnScroll&&c(window,"scroll",function(){l.agree_and_close()}),i.body.appendChild(this.element),this.inserted=!0,"fade"===this.options.effect?(this.element.style.opacity=0,s.fade_in(this.element)):this.element.style.opacity=1}},r&&(e[o]||(e[o]=new a))}(window); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60741800f..542461de4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,7 +34,7 @@ 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 pass it on as an open-source patch. The rules are pretty simple: if you can certify the below (from -[developercertificate.org](http://developercertificate.org/)): +[developercertificate.org](https://developercertificate.org/)): ``` Developer Certificate of Origin diff --git a/addons/actions.md b/addons/actions.md index 47b04178c..ca3fd7160 100644 --- a/addons/actions.md +++ b/addons/actions.md @@ -177,7 +177,7 @@ then end ``` -For information on making use of the [openHAB Cloud service](https://github.com/openhab/openhab-cloud/blob/master/README.md) hosted by the [openHAB Foundation e.V.](https://www.openhabfoundation.org/), visit the [myopenhab.org website](http://www.myopenhab.org). +For information on making use of the [openHAB Cloud service](https://github.com/openhab/openhab-cloud/blob/master/README.md) hosted by the [openHAB Foundation e.V.](https://www.openhabfoundation.org/), visit the [myopenhab.org website](https://www.myopenhab.org). ## Ephemeris @@ -275,8 +275,8 @@ The following is an example listing a few custom days. ```xml + xmlns:tns="https://www.example.org/Holiday" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="https://www.example.org/Holiday /Holiday.xsd"> diff --git a/addons/io.md b/addons/io.md index 90ad1de80..7d069e18b 100644 --- a/addons/io.md +++ b/addons/io.md @@ -23,7 +23,7 @@ Detailed instructions and requirements may be found in the corresponding documen

- Some openHAB 1 service modules have not yet completed validation for inclusion in the distribution; however, they may indeed work properly under openHAB 2. + Some openHAB 1 service modules have not yet completed validation for inclusion in the distribution; however, they may indeed work properly under openHAB 2. All openHAB 1 addons can be downloaded in a zip file. We need your help testing them so that they may be easily installed in a future distribution. Please see the compatibility layer documentation and @@ -54,13 +54,13 @@ Detailed instructions and requirements may be found in the corresponding documen {% endfor %} -

+

Activating IFTTT integration is easy. Just log in to your IFTTT account and activate the openHAB channel. - You will be forwarded to the myopenHAB website to authorize the IFTTT channel connection. + You will be forwarded to the myopenHAB website to authorize the IFTTT channel connection. Before you start creating IFTTT recipes you need to make sure that you have your runtime configured to expose certain items to myopenHAB. Only those items will be visible to IFTTT. You will also be able to send commands to those items from IFTTT Applets. diff --git a/addons/uis/apps/ios.md b/addons/uis/apps/ios.md index ab9eb66a2..a1aa40a0d 100644 --- a/addons/uis/apps/ios.md +++ b/addons/uis/apps/ios.md @@ -42,7 +42,7 @@ To view and control your own devices, navigate to the Settings page, then disabl In the "Local URL" field enter the base URL to your openHAB webinterface, either using its IP address (e.g. `http://192.168.1.125:8080`) or hostname (e.g. `http://openhabianpi:8080`). You can also connect to openHAB remotely, using either a direct connection or an openHAB Cloud instance like myopenHAB. -Please see the [article on secure remote access](http://docs.openhab.org/installation/security.html) for more details. +Please see the [article on secure remote access](https://docs.openhab.org/installation/security.html) for more details. Simply enter your "Remote URL" in the respective Settings field. The openHAB app will henceforth first try connecting to the local URL, then fall back to the remote URL. diff --git a/administration/console.md b/administration/console.md index c3e21308c..a7aebbb17 100644 --- a/administration/console.md +++ b/administration/console.md @@ -196,4 +196,4 @@ sudo sed -i -e "s/sshPort = .*/sshPort = 1234/g" /var/lib/openhab2/etc/org.apach ---- -Please check the [Apache Karaf reference](http://karaf.apache.org/manual/latest/) for more details. +Please check the [Apache Karaf reference](https://karaf.apache.org/manual/latest/) for more details. diff --git a/administration/index.md b/administration/index.md index a93944351..3de9dead3 100644 --- a/administration/index.md +++ b/administration/index.md @@ -7,7 +7,7 @@ title: Advanced Functionality and Administrative Tasks # Advanced Functionality and Administrative Tasks -As a runtime environment openHAB uses [Apache Karaf](http://karaf.apache.org), a modern and polymorphic container for hosting Java applications. +As a runtime environment openHAB uses [Apache Karaf](https://karaf.apache.org), a modern and polymorphic container for hosting Java applications. Karaf provides features such as a console CLI, remote access, hot deployment of modules, and dynamic configuration. The Karaf Console is a powerful tool for interacting with and controlling your openHAB installation. You will learn more about advanced administration of your openHAB installation, using the Karaf Console and other tools, in this section. diff --git a/administration/logging.md b/administration/logging.md index e8d686044..7cf9affe2 100644 --- a/administration/logging.md +++ b/administration/logging.md @@ -57,7 +57,7 @@ openhab> log:tail org.openhab.io.rest.core.item.ItemResource 20:36:53.545 [DEBUG] [thome.io.rest.core.item.ItemResource] - Received HTTP POST request at 'items/Light_FF_Bath_Ceiling' with value 'OFF'. ``` -Please see the [Karaf documentation](http://karaf.apache.org/manual/latest/#_commands_2) for more examples and details. +Please see the [Karaf documentation](https://karaf.apache.org/manual/latest/#_commands_2) for more examples and details. ## Config file diff --git a/administration/serial.md b/administration/serial.md index e7f760a8d..fb7ac9914 100644 --- a/administration/serial.md +++ b/administration/serial.md @@ -40,4 +40,4 @@ udevadm info -a -p $(udevadm info -q path -n /dev/ttyACM0) ## macOS -When working with a Mac, it may be necessary to install a driver for the USB-RS232 converter (e.g. [Prolific PL2303](http://www.prolific.com.tw/us/showproduct.aspx?p_id=229&pcid=41) and create the `/var/lock` folder; see the [rxtx troubleshooting guide](http://rxtx.qbang.org/wiki/index.php/Trouble_shooting#Mac_OS_X_users). +When working with a Mac, it may be necessary to install a driver for the USB-RS232 converter (e.g. [Prolific PL2303](https://www.prolific.com.tw/us/showproduct.aspx?p_id=229&pcid=41) and create the `/var/lock` folder; see the [rxtx troubleshooting guide](https://rxtx.qbang.org/wiki/index.php/Trouble_shooting#Mac_OS_X_users). diff --git a/configuration/habpanel.md b/configuration/habpanel.md index 95db0b44c..d69146608 100644 --- a/configuration/habpanel.md +++ b/configuration/habpanel.md @@ -126,7 +126,7 @@ Modifications to the dashboard are not saved automatically, use the **Save** but When a dashboard is running, widgets can be interacted with, and server-sent events are received when items' states are updated, so widgets update automatically in HABPanel. The icons in the top-right corner perform the following: -- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([mainly only in Chrome and other webkit variants currently](http://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen; +- the **speech balloon** activates the speech recognition feature and send the results as text to openHAB's default human language interpreter. This implies [some configuration on the server]({{base}}/configuration/multimedia.html#human-language-interpreter), and this icon might not be displayed if the browser doesn't support voice recognition ([mainly only in Chrome and other webkit variants currently](https://caniuse.com/#feat=speech-recognition){:target="_blank"}). It can also be configured in the panel configuration to appear on the bottom of the screen; - the **refresh** button forces HABPanel to retrieve the current state of all items; - the **fullscreen** button tells the browser to go fullscreen, if supported. @@ -194,7 +194,7 @@ Multiple buttons are often used together to present different options for an ite ![Slider widget](images/habpanel_widget-slider.png) -The slider widget can reflect the state of, and update, numerical items within a range of values. Several options are available to alter its appearance and behavior. +The slider widget can reflect the state of, and update, numerical items within a range of values. Several options are available to alter its appearance and behavior. #### Knob (knob) @@ -264,7 +264,7 @@ The list of custom widgets either via the dashboard designer (click/tap the gear From the list, custom widgets can be created from scratch, or imported from a previously exported .json file or a GitHub repository. Members of the openHAB community also present their custom widgets on the forum: the _Get widgets from the openHAB community_ link brings up a filtered lists of custom widgets from the community. -Widgets can also come from [an openHAB addon or OSGi bundle](https://community.openhab.org/t/new-feature-globally-provisioned-widgets-i-e-with-osgi-bundles/26994): those are "globally-provisioned widgets". They cannot be modified or deleted (but can be cloned and then modified), and are available to all panel configurations. +Widgets can also come from [an openHAB addon or OSGi bundle](https://community.openhab.org/t/new-feature-globally-provisioned-widgets-i-e-with-osgi-bundles/26994): those are "globally-provisioned widgets". They cannot be modified or deleted (but can be cloned and then modified), and are available to all panel configurations. The context menu **⁝** can be used to perform operations on the widget: globally-provisioned widgets can only be cloned, and manually defined or imported widgets can be exported or deleted. Widgets imported from GitHub can also be updated and include a link to repository's Readme file. diff --git a/configuration/index.md b/configuration/index.md index de6ac22d4..75b9cd86c 100644 --- a/configuration/index.md +++ b/configuration/index.md @@ -22,7 +22,7 @@ In order to represent all of these, openHAB defines the following base component - [Transformations](transform.html) - Helper functions to transform your data - [Persistence](persistence.html) - Services to store data over time - [Rules](rules-dsl.html) - Automation logic, the "smart" in your Smart Home! -- [JSR223 Scripting](jsr223.html) - Define rules and other runtime objects using [Javascript](http://openjdk.java.net/projects/nashorn/), [Jython](http://www.jython.org) or [Groovy](http://www.groovy-lang.org/) +- [JSR223 Scripting](jsr223.html) - Define rules and other runtime objects using [Javascript](https://openjdk.java.net/projects/nashorn/), [Jython](https://www.jython.org) or [Groovy](https://www.groovy-lang.org/) The individual articles have all the details needed to understand the concepts behind these building blocks for your Smart Home. For more details on the basic concepts behind openHAB, please visit the [Concepts Overview page](/docs/concepts/index.html). @@ -146,7 +146,7 @@ It would work to mix these, but you can easily forget which is your "source of t Things/Items configured in files will become visible in Main UI if no Thing/Item of the same name is already present in the system database, but a lock will symbolize that you can NOT change them in the GUI. You can only change them by editing the source files. **Note:** Things/Items you create via Main UI will be stored in the system database, but those additions or changes will not be written back into any `.things / .items` file. -Textual configuration is a one-way street. +Textual configuration is a one-way street. Likewise, openHAB settings defined in `services/addons.cfg` and `services/runtime.cfg` will take precedence over any settings made via Main UI. ::: warning Important @@ -168,4 +168,4 @@ Here are some hints to avoid some common pitfalls when starting out. You can use the import function to import `.items` files or snippets taken from other sources like the openHAB community forum. * Use VS code extensions to [edit rules, items and sitemap files](editors.html). You can also use any text editor or cloud based tool, but VS code extensions will work locally and help you by highlighting and cross-checking the file syntax. - + diff --git a/configuration/jsr223.md b/configuration/jsr223.md index 595b0b1c5..52ea1a5ee 100644 --- a/configuration/jsr223.md +++ b/configuration/jsr223.md @@ -17,7 +17,7 @@ and are comfortable working with the command line prompt of the operating system [JSR223](https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/) ([spec](https://jcp.org/aboutJava/communityprocess/pr/jsr223/index.html)) is a standard scripting API for Java Virtual Machine (JVM) [languages](https://en.wikipedia.org/wiki/List_of_JVM_languages). The JVM languages provide varying levels of support for the JSR223 API and interoperability with the Java runtime. Currently the following languages are known to work well for openHAB scripting: -[**Jython**](https://jython.github.io/) (Python on the JVM), and [**Apache Groovy**](http://www.groovy-lang.org/) (JVM scripting language). +[**Jython**](https://jython.github.io/) (Python on the JVM), and [**Apache Groovy**](https://www.groovy-lang.org/) (JVM scripting language). (At the time of writing a **JavaScript** reimplementation is under development.) Although JSR223 scripts can be used as a general-purpose extension language for openHAB, it is most commonly used for the creation of rules, and within scripted Actions or Conditions. diff --git a/configuration/paperui.md b/configuration/paperui.md index 21e5316d9..025b15a6e 100644 --- a/configuration/paperui.md +++ b/configuration/paperui.md @@ -26,6 +26,6 @@ Note that you still need to define your items, sitemaps, persistence configurati Here you can find a small screencast about the Paper UI: -[![Paper UI](https://img.youtube.com/vi/MV2a5qwtmRE/0.jpg)](http://www.youtube.com/watch?v=MV2a5qwtmRE) +[![Paper UI](https://img.youtube.com/vi/MV2a5qwtmRE/0.jpg)](https://www.youtube.com/watch?v=MV2a5qwtmRE) {% include contribution-wanted.html %} diff --git a/configuration/rules-dsl.md b/configuration/rules-dsl.md index b6f0cc86a..7d445bd3c 100644 --- a/configuration/rules-dsl.md +++ b/configuration/rules-dsl.md @@ -22,7 +22,7 @@ On this page you will learn how to leverage its functionality to do *real* home ### File Location Rules are placed in the folder `$OPENHAB_CONF/rules`. -The [demo setup](http://demo.openhab.org:8080/) already comes with a demo file called [`demo.rules`](https://github.com/openhab/openhab-distro/blob/master/features/distro-resources/src/main/resources/rules/demo.rules), which has a couple of examples that can be a good starting point. +The [demo setup](https://demo.openhab.org) already comes with a demo file called [`demo.rules`](https://github.com/openhab/openhab-distro/blob/master/features/distro-resources/src/main/resources/rules/demo.rules), which has a couple of examples that can be a good starting point. A rule file can contain multiple rules. All rules of a file share a common execution context, i.e. they can access and exchange variables with each other. @@ -56,7 +56,7 @@ Check out the editors page for more information and additional editor possibilit ### The Syntax ::: tip Note -The rule syntax is based on [Xbase](http://www.eclipse.org/Xtext/#xbase) and as a result it is sharing many details with [Xtend](http://www.eclipse.org/xtend/), which is built on top of Xbase as well. +The rule syntax is based on [Xbase](https://www.eclipse.org/Xtext/#xbase) and as a result it is sharing many details with [Xtend](https://www.eclipse.org/xtend/), which is built on top of Xbase as well. As a result, we will often point to the Xtend documentation for details. ::: @@ -68,7 +68,7 @@ A rule file is a text file with the following structure: The **Imports** section contains import statement just like in Java. As in Java, they make the imported types available without having to use the fully qualified name for them. -For further details, please see the [Xtend documentation for imports](http://www.eclipse.org/xtend/documentation/202_xtend_classes_members.html#imports). +For further details, please see the [Xtend documentation for imports](https://www.eclipse.org/xtend/documentation/202_xtend_classes_members.html#imports). Example: @@ -88,7 +88,7 @@ org.openhab.model.script.actions The **Variable Declarations** section can be used to declare variables that should be accessible to all rules in this file. You can declare variables with or without initial values and modifiable or read-only. -For further details, please see the [Xtend documentation for variable declarations](http://www.eclipse.org/xtend/documentation/203_xtend_expressions.html#variable-declaration). +For further details, please see the [Xtend documentation for variable declarations](https://www.eclipse.org/xtend/documentation/203_xtend_expressions.html#variable-declaration). Example: @@ -192,7 +192,7 @@ A cron expression takes the form of six or optionally seven fields: 6. Day-of-Week 7. Year (optional field) -You may use [CronMaker](http://www.cronmaker.com/) or the generator at [FreeFormatter.com](http://www.freeformatter.com/cron-expression-generator-quartz.html) to generate cron expressions. +You may use [CronMaker](https://www.cronmaker.com/) or the generator at [FreeFormatter.com](https://www.freeformatter.com/cron-expression-generator-quartz.html) to generate cron expressions. {: #system-based-triggers} ### System-based Triggers @@ -281,7 +281,7 @@ end {: #scripts} ## Scripts -The expression language used within scripts is the same that is used in the Xtend language - see the [documentation of expressions](http://www.eclipse.org/xtend/documentation/203_xtend_expressions.html) on the Xtend homepage. +The expression language used within scripts is the same that is used in the Xtend language - see the [documentation of expressions](https://www.eclipse.org/xtend/documentation/203_xtend_expressions.html) on the Xtend homepage. The syntax is very similar to Java, but has many nice features that allow writing concise code. It is especially powerful in handling collections. diff --git a/configuration/sitemaps.md b/configuration/sitemaps.md index db594e3aa..7a43e0824 100644 --- a/configuration/sitemaps.md +++ b/configuration/sitemaps.md @@ -74,7 +74,7 @@ To avoid very long or unstructured lines of element definition, parameters can b By encapsulating elements with curly brackets, multiple elements can be nested inside or behind others. The `Frame` element type is often used in combination with element blocks. Frames are used to visually distinguish multiple elements of the same topic on one interface page. -When using code blocks behind other element types such as `Text` or `Group`, these UI elements will, in addition to their normal function, be links to a new view, presenting the nested elements. +When using code blocks behind other element types such as `Text` or `Group`, these UI elements will, in addition to their normal function, be links to a new view, presenting the nested elements. In the above example, multiple Frames are defined and some elements are not visible on the main view but are accessible behind their parent element. These are indicated by the ">" control icon on the right of an element. @@ -362,7 +362,7 @@ Please be aware that Webview elements are not usable by all user interface optio **Example:** ```perl -Webview url="http://www.openhab.org" height=5 +Webview url="https://www.openhab.org" height=5 ``` ![Presentation of the Webview element in BasicUI](images/sitemap_demo_webview.png) @@ -393,7 +393,7 @@ Image [item=] [icon=""] url="" [label=":8080/static/YourImageFile.png. +Alternatively, the image file (e.g. YourImageFile.png) may be stored locally in the $OPENHAB_CONF/html folder, and will be accessible through the static route, https://:8080/static/YourImageFile.png. - `item` can refer to either an Image Item whose state is the raw data of the image, or a String Item whose state is an URL that points to an image. Some clients may not (yet) consider `item`. - `url` is the default URL from which to retrieve the image, if there is no associated Item or if the associated item's state is not a URL. @@ -405,7 +405,7 @@ Alternatively, the image file (e.g. YourImageFile.png) may be stored locally in Image url="https://raw.githubusercontent.com/wiki/openhab/openhab/images/features.png" // display a snapshot image from an IP camera, using refresh parameter to get updated images -Image url="http://192.168.1.203:8080/?action=snapshot" refresh=10000 +Image url="https://192.168.1.203:8080/?action=snapshot" refresh=10000 ``` ![Presentation of the Image element in BasicUI](images/sitemap_demo_image.png) @@ -430,7 +430,7 @@ An embedded and/or protected video is not supported. **Example:** ```perl -Video url="http://demo.openhab.org/Hue.m4v" +Video url="https://demo.openhab.org/Hue.m4v" ``` ![Presentation of the Video element in BasicUI](images/sitemap_demo_video.png) @@ -463,7 +463,7 @@ Visit [Charts](https://github.com/openhab/openhab/wiki/Charts) in the Wiki for e **Other options to look out for:** The Chart element type is a good way to present time series data quickly. -For more sophisticated diagrams, openHAB supports the integration of outside sources like most logging and graphing solutions (e.g. [Grafana](http://grafana.org)). +For more sophisticated diagrams, openHAB supports the integration of outside sources like most logging and graphing solutions (e.g. [Grafana](https://grafana.org)). See this [Tutorial](https://community.openhab.org/t/13761/1) for more details. **Technical constraints and details:** @@ -743,10 +743,10 @@ sitemap demo label="My home automation" { Image url="https://raw.githubusercontent.com/wiki/openhab/openhab/images/features.png" } Frame { - Video url="http://demo.openhab.org/Hue.m4v" + Video url="https://demo.openhab.org/Hue.m4v" } Frame { - Webview url="http://www.openhab.org" height=5 + Webview url="https://www.openhab.org" height=5 } Frame { Text item=Temperature label="Livingroom [22.0 °C]" icon="temperature" labelcolor=[!=1="blue"] valuecolor=[!=1="green"] diff --git a/developers/bindings/binding-xml.md b/developers/bindings/binding-xml.md index 57c403c21..1bea59cd4 100644 --- a/developers/bindings/binding-xml.md +++ b/developers/bindings/binding-xml.md @@ -22,7 +22,7 @@ For the declarative way, you add your binding information in form of a `binding. ```xml @@ -69,7 +69,7 @@ The following code gives an example for a binding definition. ```xml diff --git a/developers/bindings/config-xml.md b/developers/bindings/config-xml.md index d50455b92..15087bc4e 100644 --- a/developers/bindings/config-xml.md +++ b/developers/bindings/config-xml.md @@ -37,7 +37,7 @@ These must be inside the XML escape sequence - eg. ```xml @@ -80,7 +80,7 @@ These must be inside the XML escape sequence - eg. parameter.nameThe name of the configuration parameter (mandatory). parameter.typeThe data type of the configuration parameter (mandatory). parameter.minThe minimal value for numeric types, or the minimal length of strings. Note that the value of any options may be outside of this value (optional). - parameter.maxThe maximum value for numeric types, or the maximum length of strings. Note that the value of any options may be outside of this value (optional). + parameter.maxThe maximum value for numeric types, or the maximum length of strings. Note that the value of any options may be outside of this value (optional). parameter.stepThe value granularity for a numeric value (optional). parameter.patternThe regular expression for a text type (optional). parameter.requiredSpecifies whether the value is required (optional). @@ -100,8 +100,8 @@ These must be inside the XML escape sequence - eg. option.valueThe value of the selection list element. Note that the value may be outside of the range specified in the min/max if this is specified. multipleLimitIf `multiple` is true, sets the maximum number of options that can be selected (optional). limitToOptionsIf true (default) will only allow the user to select items in the options list. If false, will allow the user to enter other text (optional). - criteriaThe filter criteria for values of a dynamic selection list (optional). - criteria.nameThe name of the context related filter. + criteriaThe filter criteria for values of a dynamic selection list (optional). + criteria.nameThe name of the context related filter. ### Supported Contexts @@ -145,10 +145,10 @@ Further, the item context can contain criteria to filter the li ``` In the case of above filter only those items will be shown that satisfy the filter's conditions. -The above filter is evaluated as follows: +The above filter is evaluated as follows: ``` -(type=Switch OR type=Dimmer) AND (tag=Light OR tag=Heating) +(type=Switch OR type=Dimmer) AND (tag=Light OR tag=Heating) ``` Similarly, the Channel context can contain criteria to filter channels based on kind field. @@ -186,7 +186,7 @@ The following code gives an example for one configuration description. ```xml diff --git a/developers/bindings/index.md b/developers/bindings/index.md index 13f7483c0..55656d992 100644 --- a/developers/bindings/index.md +++ b/developers/bindings/index.md @@ -916,7 +916,7 @@ mDNS discovery is implemented in the framework as `MDNSDiscoveryService`. To facilitate the development, binding developers only need to implement a `MDNSDiscoveryParticipant`. Here the developer only needs to implement four simple methods: -- `getServiceType` - Defines the [mDNS service type](http://www.dns-sd.org/ServiceTypes.html). +- `getServiceType` - Defines the [mDNS service type](https://www.dns-sd.org/ServiceTypes.html). - `getSupportedThingTypeUIDs` - Returns the list of thing type UIDs that this participant supports. The discovery service uses this method of all registered discovery participants to return the list of currently supported thing type UIDs. - `getThingUID` - Creates a thing UID out of the mDNS service info or returns `null` if this is not possible. diff --git a/developers/bindings/thing-xml.md b/developers/bindings/thing-xml.md index bc7b52772..c05cde355 100644 --- a/developers/bindings/thing-xml.md +++ b/developers/bindings/thing-xml.md @@ -195,13 +195,13 @@ There exist system-wide trigger channel types that are available by default: | button | system.button | Can trigger `SHORT_PRESSED`, `DOUBLE_PRESSED` and `LONG_PRESSED` | | rawrocker | system.rawrocker | Can trigger `DIR1_PRESSED`, `DIR1_RELEASED`, `DIR2_PRESSED` and `DIR2_RELEASED` | -In the following sections the declaration and semantics of tags, state descriptions and channel categories will be explained in more detail. +In the following sections the declaration and semantics of tags, state descriptions and channel categories will be explained in more detail. For a complete sample of the thing types XML file and a full list of possible configuration options please see the [XML Configuration Guide](config-xml.html). ### Default Tags -The XML definition of a ThingType allows to assign default tags to channels. -All items bound to this channel will automatically be tagged with these default tags. +The XML definition of a ThingType allows to assign default tags to channels. +All items bound to this channel will automatically be tagged with these default tags. The following snippet shows a 'Lighting' tag definition: ```xml @@ -241,7 +241,7 @@ The following XML snippet shows the definition for a temperature actuator channe For all sensors the `readonly` attribute should be set to `true`. * The `pattern` attribute can be used for `Number` and `String` items. It gives user interface a hint how to render the item. - The format of the pattern must be compliant to the [Java Number Format](http://docs.oracle.com/javase/tutorial/java/data/numberformat.html). + The format of the pattern must be compliant to the [Java Number Format](https://docs.oracle.com/javase/tutorial/java/data/numberformat.html). The pattern can be localized (see also [Internationalization](../../features/internationalization.html)). The special pattern placeholder `%unit%` is used for channels which bind to items of type `Number:` which define a dimension for unit support. These channels will send state updates of type [QuantityType](../../concepts/units-of-measurement.html#quantitytype) and the unit is then rendered for the placeholder. @@ -434,7 +434,7 @@ Inside the thing types XML file channel groups can be defined like this: - + ``` The channel group type is defined on the same level as the thing types and channel types. @@ -499,7 +499,7 @@ This could be a MAC address (e.g. Hue bridge, camera, all IP-based devices), a u This property is normally part of a discovery result for that specific thing type. Having this property identified per binding it could be used as the `representation property` for this thing. -The `representation property` shall be defined in the thing type XML: +The `representation property` shall be defined in the thing type XML: ```xml @@ -618,7 +618,7 @@ The full Java API for bridge and *Thing* descriptions can be found in the Java p ```xml @@ -739,7 +739,7 @@ The full Java API for bridge and *Thing* descriptions can be found in the Java p ... - + - + password diff --git a/images/tag-install-auto.svg b/images/tag-install-auto.svg index 8c04b0131..06b576386 100644 --- a/images/tag-install-auto.svg +++ b/images/tag-install-auto.svg @@ -1 +1 @@ -installinstallautoauto \ No newline at end of file +installinstallautoauto \ No newline at end of file diff --git a/images/tag-install-legacy.svg b/images/tag-install-legacy.svg index fb07d8353..53539a2b6 100644 --- a/images/tag-install-legacy.svg +++ b/images/tag-install-legacy.svg @@ -1 +1 @@ -installinstalllegacylegacy \ No newline at end of file +installinstalllegacylegacy \ No newline at end of file diff --git a/images/tag-install-manual.svg b/images/tag-install-manual.svg index 05eddd79b..9498fb752 100644 --- a/images/tag-install-manual.svg +++ b/images/tag-install-manual.svg @@ -1 +1 @@ -installinstallmanualmanual \ No newline at end of file +installinstallmanualmanual \ No newline at end of file diff --git a/images/tag-since-1x.svg b/images/tag-since-1x.svg index 7ab557207..f50d2870c 100644 --- a/images/tag-since-1x.svg +++ b/images/tag-since-1x.svg @@ -1 +1 @@ -sincesince1.x1.x \ No newline at end of file +sincesince1.x1.x \ No newline at end of file diff --git a/images/tag-since-2x.svg b/images/tag-since-2x.svg index bed32aa2c..d7005c100 100644 --- a/images/tag-since-2x.svg +++ b/images/tag-since-2x.svg @@ -1 +1 @@ -sincesince2.x2.x \ No newline at end of file +sincesince2.x2.x \ No newline at end of file diff --git a/installation/linux.md b/installation/linux.md index 93fc5d93c..6d2788614 100644 --- a/installation/linux.md +++ b/installation/linux.md @@ -31,7 +31,7 @@ Train your understanding of Linux permissions at [linuxjourney.com/lesson/file-p As a first step, please verify, that your system meets the [prerequisites](index.html#prerequisites). You may want to install Zulu, a fully certified Java build [as a package or manually](https://docs.azul.com/zulu/zuludocs/ZuluUserGuide/InstallingZulu/InstallZulu.htm). -Alternatively, Zulu Embedded can be installed for small systems either from the same package repository as above or [manually](http://www.azul.com/downloads/zulu-embedded/). +Alternatively, Zulu Embedded can be installed for small systems either from the same package repository as above or [manually](https://www.azul.com/downloads/zulu-embedded/). If you're unsure which manual file you should download, using `dpkg --print-architecture` or `rpm -q --qf '%{ARCH}\n' rpm` in your Linux terminal should point you in the right direction (e.g. armhf means ARM Hard Float). When installing Zulu or Zulu Embedded from a .zip or .tar archive, make sure to [set Zulu as the main Java "alternative"](https://docs.azul.com/zulu/zuludocs/#ZuluUserGuide/SwitchingBetweenJavaAlternatives/SwitchBetweenJavaAlts.htm). diff --git a/installation/macos.md b/installation/macos.md index 230da2808..1d38db3fb 100644 --- a/installation/macos.md +++ b/installation/macos.md @@ -16,7 +16,7 @@ This page is structured as follows: If you're unfamiliar with using the macOS terminal, then feel free to follow the many guides on the internet. For example: -[Macworld: How to use Terminal on mac](http://www.macworld.co.uk/feature/mac-software/how-use-terminal-on-mac-3608274/) +[Macworld: How to use Terminal on mac](https://www.macworld.co.uk/feature/mac-software/how-use-terminal-on-mac-3608274/) ## Installation diff --git a/installation/openhabian.md b/installation/openhabian.md index faa17de78..0a3db8d6c 100644 --- a/installation/openhabian.md +++ b/installation/openhabian.md @@ -246,7 +246,7 @@ openHABian is supposed to provide a ready-to-use openHAB base system. There are All of these settings **can easily be changed** via the openHABian Configuration Tool. -Here are the passwords in question with their respective default "username:password" values. +Here are the passwords in question with their respective default "username:password" values. All password can be changed from openHABian menu. {: #passwords} diff --git a/installation/rasppi.md b/installation/rasppi.md index ce421e8cd..c31794889 100644 --- a/installation/rasppi.md +++ b/installation/rasppi.md @@ -13,7 +13,7 @@ It is favored amongst existing users and a recommended choice for newcomers. ![Raspberry Pi 2 Model B](images/rpi2b.png) If you want to learn more about the possibilities of the Raspberry Pi and Linux in general, many tutorials can be found on the internet. -These including the official [raspberrypi.org help articles](https://www.raspberrypi.org/help) or the in-detail articles at [eLinux.org](http://elinux.org/RPi_Tutorials). +These including the official [raspberrypi.org help articles](https://www.raspberrypi.org/help) or the in-detail articles at [eLinux.org](https://elinux.org/RPi_Tutorials). Recommendations for a ["headless"](https://en.wikipedia.org/wiki/Headless_computer) hardware setup: diff --git a/installation/security.md b/installation/security.md index 6868534a6..66f1f4898 100644 --- a/installation/security.md +++ b/installation/security.md @@ -65,7 +65,7 @@ There are many different solutions for VPN, so we cannot give any specific advic You can use an [openHAB Cloud](https://github.com/openhab/openhab-cloud/blob/master/README.md) instance to which openHAB creates a tunnel connection and which forwards all requests through this tunnel. openHAB will see these incoming requests as originating from the local loopback interface. -The simplest way to get hold of such an openHAB Cloud is to register an account at [myopenHAB.org](http://www.myopenhab.org/), which is operated by the [openHAB Foundation](https://www.openhabfoundation.org/). +The simplest way to get hold of such an openHAB Cloud is to register an account at [myopenHAB.org](https://www.myopenhab.org/), which is operated by the [openHAB Foundation](https://www.openhabfoundation.org/). {: #nginx-reverse-proxy} ### Running openHAB Behind a Reverse Proxy @@ -250,9 +250,9 @@ To generate a trusted certificate, you need to own a domain. To acquire your own | Method | Example Links | Note | |:-------------------------------- |:------------- |:---- | -| Purchasing a domain name | [GoDaddy](http://www.godaddy.com), [Namecheap](http://www.namecheap.com), [Enom](http://www.enom.com), [Register](http://www.register.com) | You should have an IP adress that doesn't change (i.e. fixed), or changes rarely, and then update the DNS *A record* so that your domain/subdomain to point towards your IP. | -| Obtaining a free domain | [FreeNom](http://www.freenom.com) | Setup is the same as above. | -| Using a "Dynamic DNS" sevice | [No-IP](http://www.noip.com), [Dyn](http://www.dyn.com/dns), [FreeDNS](http://freedns.afraid.org) | Uses a client to automatically update your IP to a domain of you choice, some Dynamic DNS services (like FreeDNS) offer a free domain too. | +| Purchasing a domain name | [GoDaddy](https://www.godaddy.com), [Namecheap](https://www.namecheap.com), [Enom](https://www.enom.com), [Register](https://www.register.com) | You should have an IP adress that doesn't change (i.e. fixed), or changes rarely, and then update the DNS *A record* so that your domain/subdomain to point towards your IP. | +| Obtaining a free domain | [FreeNom](https://www.freenom.com) | Setup is the same as above. | +| Using a "Dynamic DNS" sevice | [No-IP](https://www.noip.com), [Dyn](https://www.dyn.com/dns), [FreeDNS](https://freedns.afraid.org) | Uses a client to automatically update your IP to a domain of you choice, some Dynamic DNS services (like FreeDNS) offer a free domain too. | {: #nginx-https} #### Enabling HTTPS @@ -380,7 +380,7 @@ server { ``` It might be the case that you can't use standard ports. When trying to access a HTTPS port with HTTP, NGINX will respond with a `400 Bad Request`. -We can redirect this gracefully using a "HTTPS [error page](http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page)" for the [non-standard HTTP error code 497](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors) +We can redirect this gracefully using a "HTTPS [error page](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page)" for the [non-standard HTTP error code 497](https://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors) ```nginx server { @@ -434,7 +434,7 @@ server { {: #synology-remote-config} #### Configuration on Synology DiskStation -Synology DSM (as of 6.2) has the ability to automatically acquire certificates from Let's Encrypt and renew them every 90 days as required. +Synology DSM (as of 6.2) has the ability to automatically acquire certificates from Let's Encrypt and renew them every 90 days as required. The majority of the configuration mentioned above can be completed through the DSM GUI, but SSH access is required to implement authentication (**authentication is essential for remote access to your openHAB instance**). Before you continue, make sure you have the below conditions: @@ -444,11 +444,11 @@ Before you continue, make sure you have the below conditions: - Access to your DiskStation by SSH ([How to login to DSM with root permission via SSH/Telnet](https://www.synology.com/en-global/knowledgebase/DSM/tutorial/General_Setup/How_to_login_to_DSM_with_root_permission_via_SSH_Telnet/)) - Ports 80 and 443 forwarded from your router to your DiskStation (make sure you reconfigure the router web UI to a different port first, so you don't lose access!) -Log into the GUI of your DiskStation as administrator, and open the package center. -Install Apache HTTP Server. +Log into the GUI of your DiskStation as administrator, and open the package center. +Install Apache HTTP Server. This is needed to generate the password files. -Go to Control Panel > Application Portal > Reverse Proxy. We will set up two reverse proxies, one for HTTP and one for HTTPS. +Go to Control Panel > Application Portal > Reverse Proxy. We will set up two reverse proxies, one for HTTP and one for HTTPS. The HTTP one can be disabled later if desired (not at all essential if you will only use the app remotely, and never a browser). Create two reverse proxies as follows: @@ -485,10 +485,10 @@ Next, acquire certificates from Let's Encrypt using the GUI in DSM. Go to Control Panel > Security > Certificate, and click on 'Add'. Select the option to 'Add a new Certificate'. -Put in a description, something like 'openHAB SSL Cert' (it doesn't matter). -Select 'Get a certificate from Let's Encrypt' and check the box to set it as default. +Put in a description, something like 'openHAB SSL Cert' (it doesn't matter). +Select 'Get a certificate from Let's Encrypt' and check the box to set it as default. Click next. -Put in your domain name and email address. +Put in your domain name and email address. Add a 'Subject Alternative Name' if you want a different topic in the subject line when Let's Encrypt email you about that certificate (not essential). Click Apply, and wait a few minutes - your certificate is done! @@ -498,7 +498,7 @@ If the certifcate has been generated, you are good to go. ::: Select the certificate that has just been created, and click on 'Configure'. -Ensure that the new certificate is listed next to your-hostname.com in the table - something like the below. +Ensure that the new certificate is listed next to your-hostname.com in the table - something like the below. If it's not selected, update it. | Services | Certificate | @@ -511,16 +511,16 @@ If it's not selected, update it. Once this is done, update the CAA record for your-hostname.com with your registrar (exact process will vary by registrar). Within an hour or so, you should not receive the security warning for https://your-hostname.com. -Next, you must add authentication to the reverse proxy. +Next, you must add authentication to the reverse proxy. There's no GUI way to do this, so we need to create another small NGINX virtual host on the DiskStation. -Log into your DiskStation by SSH. +Log into your DiskStation by SSH. Use the admin username and password. Create a .htpasswd file in your openHAB userdata folder (your userdata location may vary, update accordingly): ```shell htpasswd -c /volume1/openHAB/userdata/.htpasswd username ``` -Next, add a very simple NGINX configuration similar to that created above, but without the SSL parameters. +Next, add a very simple NGINX configuration similar to that created above, but without the SSL parameters. DSM comes with vi installed by default, but you may wish to [install nano](https://anto.online/other/how-to-install-nano-on-your-synology-nas/) ```shell @@ -534,7 +534,7 @@ server { listen 2020; #This is simply an unused port, it can be any number server_name your_domain.com; - + return 301 https://$server_name$request_uri; } @@ -565,8 +565,8 @@ Once you are done, save the file, restart and test NGINX: ```shell sudo nginx -s reload && sudo nginx -t ``` -As above, the first part of the file redirects any HTTP queries to HTTPS directly. -If you don't get any errors, update the reverse proxy settings in the DSM GUI to point to these new endpoints. +As above, the first part of the file redirects any HTTP queries to HTTPS directly. +If you don't get any errors, update the reverse proxy settings in the DSM GUI to point to these new endpoints. Back in the GUI, go to Control Panel > Application Portal > Reverse Proxy, make the updates below: | Parameter | Value | @@ -608,7 +608,7 @@ openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 ``` Now we can configure NGINX to use this key, as well as telling the client to use specific cyphers and SSL settings, just add the following under your `ssl_certificate **` settings but above ``location *``. -All of these settings are customisable, but make sure you [read up on](http://nginx.org/en/docs/http/configuring_https_servers.html) what these do first before changing them: +All of these settings are customisable, but make sure you [read up on](https://nginx.org/en/docs/http/configuring_https_servers.html) what these do first before changing them: ```nginx ssl_protocols TLSv1 TLSv1.1 TLSv1.2; diff --git a/installation/synology.md b/installation/synology.md index 07205336a..d1e6fcab5 100644 --- a/installation/synology.md +++ b/installation/synology.md @@ -28,12 +28,12 @@ The filename and format of the uploaded file will be checked before installation If there is not a Java8 package in the Package Center, your machine may not be supported by the [Synology package](https://www.synology.com/en-us/dsm/packages/Java8). The best option for older unsupported Synology models such as **PowerPC** and **ARMv5** is to include the [PC-Loadletter](https://pcloadletter.co.uk/2011/08/23/java-package-for-synology/) Repo. -[Download Java SE](http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html) [(latest ARMv6)](http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/javase-embedded-downloads-2209751.html) [(Java Cryptography Extension if required)](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) and put them in the *public* folder of your NAS. +[Download Java SE](https://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.html) [(latest ARMv6)](https://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/javase-embedded-downloads-2209751.html) [(Java Cryptography Extension if required)](https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) and put them in the *public* folder of your NAS. Then start the installation of Java8 SE. *Note that it may be necessary to rename the downloaded file to match the name the Loadletter utility expects which may be an older version than what is currently available.* -The **Java8 PowerPC** versions are available from [Oracle](http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/javaseembedded8u6-2406243.html). +The **Java8 PowerPC** versions are available from [Oracle](https://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/javaseembedded8u6-2406243.html). ## Installation @@ -52,7 +52,7 @@ If your NAS cannot connect to the internet, the installer will tell you to downl ## Configuration -The location of configuration files by openHAB differs depending on wether or not a shared folder named `public` exists: +The location of configuration files by openHAB differs depending on wether or not a shared folder named `public` exists: * with public share folder: `/volume1/public/openHAB2/conf/` * without public share folder: `/volume1/@appstore/openHAB2/conf/` diff --git a/installation/windows.md b/installation/windows.md index 7fb4b7050..97ae33a3b 100644 --- a/installation/windows.md +++ b/installation/windows.md @@ -28,7 +28,7 @@ Please be sure you have installed the required supporting applications as descri ![JAVA_HOME](images/JAVA_HOME.png) -### Choose a folder name for the openHAB installation. +### Choose a folder name for the openHAB installation. The name must **contain no spaces**. On this page, we will be using `C:\openHAB` as an example. ## Installation @@ -49,10 +49,10 @@ To install it, follow these simple steps: 4. Point your browser to `http://localhost:8080`. You should be looking at the openHAB page requesting you to set up an administrator username and password: - + ![Home_OH_adminCreate](images/Home_OH_adminCreate.png) - -You are now able to work in the openHAB environment, when launched using `C:\openHAB\start.bat`. + +You are now able to work in the openHAB environment, when launched using `C:\openHAB\start.bat`. You can choose to add a link to it on your Desktop, Taskbar or start menu as you deem more convenient. If you instead would like to have openHAB start automatically with Windows and run in the background, you can choose to install it as a service as described below. @@ -172,7 +172,7 @@ By installing the openHAB process as a service in Windows, you can: ![Windows Service](images/Windows_Service.jpg) - Logging in with an SSH client to the console (see info below) - + ### File Locations @@ -189,7 +189,7 @@ Assuming a successful install, you will now have various folders inside `C:\open ## What next? You can: -- continue reading the [Additional steps]({{base}}/installation/index.md#additional-steps) section of the Installation overview +- continue reading the [Additional steps]({{base}}/installation/index.md#additional-steps) section of the Installation overview - read more about how to handle basic maintenance tasks, in the section below ## Maintenance @@ -213,7 +213,7 @@ Update-openHAB -OHVersion x.x.x ``` Now that openHAB has updated, you only need to run the above commands again for future versions. -### Uninstallation +### Uninstallation - perform a backup as described above - uninstall openHAB as a Windows service: run PowerShell as an administrator and use the following commands ``` @@ -224,7 +224,7 @@ C:\openHAB\userdata\bin\openHAB-service.bat remove ### Connecting to the openHAB console -You can connect to openHAB's console using the the `C:\openHAB\runtime\bin\client.bat` script on the local machine. +You can connect to openHAB's console using the the `C:\openHAB\runtime\bin\client.bat` script on the local machine. Alternatively, you can use a standard SSH client: - Install an SSH client application, e.g., [Putty](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html), [KiTTY](http://kitty.9bis.net/) or [Xshell 5](https://www.netsarang.com/products/xsh_overview.html) diff --git a/introduction.md b/introduction.md index 75eb287c8..17eab09e6 100644 --- a/introduction.md +++ b/introduction.md @@ -186,7 +186,7 @@ But it comes with a rather steep learning curve. ## A Deeper Dive: openHAB Structure for Advanced Users openHAB is developed in [Java](https://www.java.com/) and uses [OSGi](https://www.osgi.org/) for modularity. -[Apache Karaf](http://karaf.apache.org/) serves as a container with [Eclipse Equinox](https://www.eclipse.org/equinox/) as the OSGi runtime environment. +[Apache Karaf](https://karaf.apache.org/) serves as a container with [Eclipse Equinox](https://www.eclipse.org/equinox/) as the OSGi runtime environment. [Jetty](https://www.eclipse.org/jetty/) is included as an HTTP server. openHAB is highly modular software that can be extended through "Add-ons". diff --git a/styleguide.md b/styleguide.md index 15cf6b64f..a29b19996 100644 --- a/styleguide.md +++ b/styleguide.md @@ -5,11 +5,11 @@ title: openhab-docs Markdown StyleGuide {% include base.html %} -# openHAB Documentation Style Guide +# openHAB Documentation Style Guide ## General Remarks -First and foremost we are following the recommendations given at: [http://www.cirosantilli.com/markdown-style-guide/](http://www.cirosantilli.com/markdown-style-guide/). +First and foremost we are following the recommendations given at: [https://www.cirosantilli.com/markdown-style-guide/](https://www.cirosantilli.com/markdown-style-guide/). ## Markdown Decisions diff --git a/tutorials/getting_started/things_advanced.md b/tutorials/getting_started/things_advanced.md index 69ccc9576..7432bb8a8 100644 --- a/tutorials/getting_started/things_advanced.md +++ b/tutorials/getting_started/things_advanced.md @@ -30,7 +30,7 @@ Instead, it's publishing metrics regularly in a simple JSON structure like the f ## Prerequisites - A basic understanding of how MQTT works (HiveMQ provides a good [tutorial](https://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-establishment/) - An installed and configured MQTT Broker (e.g. Mosquitto which can be installed through openHABian if that is how you installed openHAB) -- A MiFlora device configured to connect to the MQTT Broker, or an MQTT client application (e.g. [MQTT Explorer](http://mqtt-explorer.com/), [MQTT.fx](http://mqttfx.org/) that allows one to publish and subscribe to MQTT topics +- A MiFlora device configured to connect to the MQTT Broker, or an MQTT client application (e.g. [MQTT Explorer](https://mqtt-explorer.com/), [MQTT.fx](http://mqttfx.org/) that allows one to publish and subscribe to MQTT topics ## Install the Binding and Transformation This device publishes JSON formatted messages so we need to install an add-on that can process JSON: the JSONPath Transformation.