]> git.basschouten.com Git - openhab-addons.git/commitdiff
[velux] Update documentation (#14478)
authorAndrew Fiddian-Green <software@whitebear.ch>
Tue, 7 Mar 2023 22:17:52 +0000 (22:17 +0000)
committerGitHub <noreply@github.com>
Tue, 7 Mar 2023 22:17:52 +0000 (23:17 +0100)
* [velux] update documentation

Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
bundles/org.openhab.binding.velux/README.md

index d9c892c17f24b78e3d3dec299d296a5ab61eba07..ea7c8a561600ec026033b9f0cd1a496b6c28795d 100644 (file)
@@ -42,7 +42,7 @@ The binding supports the following types of Thing.
 | information   | A Thing that provides overall information about the binding itself.               |      |
 
 1. Only supported in hubs with firmware v0.2.x.x or above
-2. Only needed in hubs with firmware v0.1.x.x (due to note 1. above)
+1. Only needed in hubs with firmware v0.1.x.x (due to note 1. above)
 
 ## Discovery
 
@@ -95,7 +95,7 @@ For your convenience you'll see a log entry for the recognized configuration wit
 
 ### Thing Configuration for "actuator", "window", "rollershutter"
 
-These types of Thing only supported in the Velux Bridge in API version two or higher (firmware version > 0.2.*.*).
+These types of Thing only supported in the Velux Bridge in API version two or higher (firmware version > 0.2.\*.\*).
 These types of Thing are configured by means of their serial number in the hub.
 In addition there are some optional Configuration Parameters.
 
@@ -107,15 +107,21 @@ In addition there are some optional Configuration Parameters.
 
 Notes:
 
-1. To enable a complete inversion of all parameter values (i.e. for Velux windows), use the property `inverted` or add a trailing star to the eight-byte serial number.
-  For an example, see the Thing definition for 'Bathroom_Roof_Window' below.
+1. To enable a complete inversion of all parameter values use the property `inverted` or add a trailing star to the eight-byte serial number.
 
-2. Somfy devices do not provide a valid serial number to the Velux KLF200 Bridge.
+1. Somfy devices do not provide a valid serial number to the Velux KLF200 Bridge.
   For such devices you have to enter the special all-zero serial number 00:00:00:00:00:00:00:00 in the `serial` parameter.
   This special serial number complies with the serial number validation checks, but also makes the binding use the `name` parameter value instead of the `serial` parameter value when it communicates with the KLF Bridge.
   The `name` parameter must therefore contain the name that you gave to the actuator when you first registered it in the KLF200 Bridge.
   For an example, see the Thing definition for 'Living_Room_Awning' below.
 
+The impact of the `inverted` parameter on the open/close position of the device, when a command is sent, is shown in the table below..
+
+| Inverted Parameter | UP Button Pressed | DOWN Button Pressed | Slider Position 0% | Slider Position 100% | Switch Command OFF | Switch Command ON |
+|--------------------|-------------------|---------------------|--------------------|----------------------|--------------------|-------------------|
+| `inverted` = false | Device is open    | Device is closed    | Device is open     | Device is closed     | Device is open     | Device is closed  |
+| `inverted` = true  | Device is closed  | Device is open      | Device is closed   | Device is open       | Device is closed   | Device is open    |
+
 ### Thing Configuration for "scene"
 
 The Velux Bridge in API version one (firmware version 0.1.1.*) allows activating a set of predefined actions, so called scenes.
@@ -260,10 +266,10 @@ The bridge Thing provides the following properties.
 
 ```java
 Bridge velux:klf200:g24 "Velux KLF200 Hub" @ "Under Stairs" [ipAddress="192.168.1.xxx", password="secret"] {
-       // Velux (standard) window (with serial number)
-    Thing window Bathroom_Roof_Window "Bathroom Roof Window" @ "Bathroom" [serial="56:36:13:5A:11:2A:05:70", inverted=true]
+    // Velux (standard) window (with serial number)
+    Thing window Bathroom_Roof_Window "Bathroom Roof Window" @ "Bathroom" [serial="56:36:13:5A:11:2A:05:70"]
 
-       // Somfy (non-standard) rollershutter (without serial number)
+    // Somfy (non-standard) rollershutter (without serial number)
     Thing rollershutter Living_Room_Awning "Living Room Awning" @ "Living Room" [serial="00:00:00:00:00:00:00:00", name="Living Room Awning"]
 }
 ```
@@ -282,7 +288,7 @@ See [items.md](doc/items.md) for more examples.
 
 ```perl
 Frame label="Velux Windows" {
-       Slider item=Bathroom_Roof_Window_Position
+    Slider item=Bathroom_Roof_Window_Position
 }
 ```
 
@@ -314,13 +320,13 @@ Example:
 ```java
 rule "Simultaneously Move Main and Vane Positions"
 when
-       ...
+    ...
 then
     // note: "velux:klf200:hubid" shall be the thing name of your KLF 200 hub
-       val veluxActions = getActions("velux", "velux:klf200:hubid")
-       if (veluxActions !== null) {
-               val succeeded = veluxActions.moveMainAndVane("velux:rollershutter:hubid:thingid", 75, 25)
-       }
+    val veluxActions = getActions("velux", "velux:klf200:hubid")
+    if (veluxActions !== null) {
+        val succeeded = veluxActions.moveMainAndVane("velux:rollershutter:hubid:thingid", 75, 25)
+    }
 end
 ```
 
@@ -335,28 +341,28 @@ Example:
 ```java
 rule "V_WINDOW_changed"
 when
-       Item V_WINDOW changed
+    Item V_WINDOW changed
 then
-       logInfo("rules.V_WINDOW",       "V_WINDOW_changes() called.")
-       // Get the sensor value
-       val Number windowState = V_WINDOW.state as DecimalType
-       logWarn("rules.V_WINDOW", "Window state is " + windowState + ".")
-       if (windowState < 80) {
-               if (windowState == 0) {
-                       logWarn("rules.V_WINDOW", "V-WINDOW changed to fully open.")
-                       var int interval = 1
-                       createTimer(now.plusMinutes(interval)) [ |
-                                       logWarn("rules.V_WINDOW:event", "event-V_WINDOW(): setting V-WINDOW to 100.")
-                                       sendCommand(V_WINDOW, 100)
-                                       V_WINDOW.postUpdate(100)
-                               logWarn("rules.V_WINDOW:event", "event-V_WINDOW done.")
-                       ]
-               } else {
-                       logWarn("rules.V_WINDOW", "V-WINDOW changed to partially open.")
-               }
-       }
-       // Check type of item
-       logDebug("rules.V_WINDOW",      "V_WINDOW_changes finished.")
+    logInfo("rules.V_WINDOW",    "V_WINDOW_changes() called.")
+    // Get the sensor value
+    val Number windowState = V_WINDOW.state as DecimalType
+    logWarn("rules.V_WINDOW", "Window state is " + windowState + ".")
+    if (windowState < 80) {
+        if (windowState == 0) {
+            logWarn("rules.V_WINDOW", "V-WINDOW changed to fully open.")
+            var int interval = 1
+            createTimer(now.plusMinutes(interval)) [ |
+                    logWarn("rules.V_WINDOW:event", "event-V_WINDOW(): setting V-WINDOW to 100.")
+                    sendCommand(V_WINDOW, 100)
+                    V_WINDOW.postUpdate(100)
+                    logWarn("rules.V_WINDOW:event", "event-V_WINDOW done.")
+                ]
+            } else {
+            logWarn("rules.V_WINDOW", "V-WINDOW changed to partially open.")
+        }
+        }
+    // Check type of item
+    logDebug("rules.V_WINDOW",    "V_WINDOW_changes finished.")
 end
 ```
 
@@ -375,15 +381,15 @@ Example:
 ```java
 rule "Reboot KLF 200"
 when
-       ...
+    ...
 then
-       val veluxActions = getActions("velux", "velux:klf200:myhubname")
-       if (veluxActions !== null) {
-               val isRebooting = veluxActions.rebootBridge()
-               logWarn("Rules", "Velux KLF 200 rebooting: " + isRebooting)
-       } else {
-               logWarn("Rules", "Velux KLF 200 actions not found, check thing ID")
-       }
+    val veluxActions = getActions("velux", "velux:klf200:myhubname")
+    if (veluxActions !== null) {
+        val isRebooting = veluxActions.rebootBridge()
+        logWarn("Rules", "Velux KLF 200 rebooting: " + isRebooting)
+    } else {
+        logWarn("Rules", "Velux KLF 200 actions not found, check thing ID")
+    }
 end
 ```
 
@@ -395,18 +401,18 @@ You can exploit this behaviour in a rule to check regularly if a window has been
 ```java
 rule "Every 10 minutes, check if window is in manual mode"
 when
-       Time cron "0 0/10 * * * ?" // every 10 minutes
+    Time cron "0 0/10 * * * ?" // every 10 minutes
 then
-       if (Velux_Window.state != UNDEF) {
-               // command the window to its actual position; this will either
-               // - succeed: the actual position will not change, or
-               // - fail: the position becomes UNDEF (logged next time this rule executes)
-               Velux_Window.sendCommand(Velux_Window.state)
-       } else {
-               logWarn("Rules", "Velux in Manual mode, trying to close again")
-               // try to close it
-               Velux_Window.sendCommand(0)
-       }
+    if (Velux_Window.state != UNDEF) {
+        // command the window to its actual position; this will either
+        // - succeed: the actual position will not change, or
+        // - fail: the position becomes UNDEF (logged next time this rule executes)
+        Velux_Window.sendCommand(Velux_Window.state)
+    } else {
+        logWarn("Rules", "Velux in Manual mode, trying to close again")
+        // try to close it
+        Velux_Window.sendCommand(0)
+    }
 end
 ```
 
@@ -446,9 +452,9 @@ This, of course, is possible on command line with the commands:
 On the other hand, if you prefer a textual configuration, you can append the logging definition with:
 
 ```text
-       <logger name="org.openhab.binding.velux" level="TRACE">
-               <appender-ref ref="FILE" />
-       </logger>
+    <logger name="org.openhab.binding.velux" level="TRACE">
+        <appender-ref ref="FILE" />
+    </logger>
 ```
 
 During startup of normal operations, there should be only some few messages within the logfile, like: