]> git.basschouten.com Git - openhab-addons.git/commitdiff
[velux] tweak read me (#14196)
authorAndrew Fiddian-Green <software@whitebear.ch>
Tue, 10 Jan 2023 07:14:54 +0000 (07:14 +0000)
committerGitHub <noreply@github.com>
Tue, 10 Jan 2023 07:14:54 +0000 (08:14 +0100)
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
bundles/org.openhab.binding.velux/README.md
bundles/org.openhab.binding.velux/doc/conf/items/velux.items [deleted file]
bundles/org.openhab.binding.velux/doc/conf/rules/velux.rules [deleted file]
bundles/org.openhab.binding.velux/doc/conf/sitemaps/velux.sitemap [deleted file]
bundles/org.openhab.binding.velux/doc/conf/things/velux.things [deleted file]
bundles/org.openhab.binding.velux/doc/items.md [new file with mode: 0644]
bundles/org.openhab.binding.velux/doc/rules.md [new file with mode: 0644]
bundles/org.openhab.binding.velux/doc/sitemaps.md [new file with mode: 0644]
bundles/org.openhab.binding.velux/doc/things.md [new file with mode: 0644]

index 9d1e847880bceaed580f123c0cbec6356776705d..d9c892c17f24b78e3d3dec299d296a5ab61eba07 100644 (file)
@@ -83,13 +83,13 @@ Normally it differs from the password of the web frontend.
 
 Advice: if you see a significant number of messages per day as follows, you should increase the parameters `retries` or/and `timeoutMsecs`...
 
-```
+```text
  communicate(): socket I/O failed continuously (x times).
 ```
 
 For your convenience you'll see a log entry for the recognized configuration within the log file i.e.
 
-```
+```text
 2018-07-23 20:40:24.746 [INFO ] [.b.velux.internal.VeluxBinding] - veluxConfig[ipAddress=192.168.42.1,tcpPort=80,password=********,timeoutMsecs=2000,retries=10]
 ```
 
@@ -108,7 +108,7 @@ 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.
+  For an example, see the Thing definition for 'Bathroom_Roof_Window' below.
 
 2. 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.
@@ -258,7 +258,7 @@ The bridge Thing provides the following properties.
 
 ### Things
 
-```
+```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]
@@ -268,25 +268,25 @@ Bridge velux:klf200:g24 "Velux KLF200 Hub" @ "Under Stairs" [ipAddress="192.168.
 }
 ```
 
-See [velux.things](doc/conf/things/velux.things) for more examples.
+See [things.md](doc/things.md) for more examples.
 
 ### Items
 
-```
+```java
 Rollershutter Bathroom_Roof_Window_Position "Bathroom Roof Window Position [%.0f %%]" {channel="velux:window:g24:w56-36-13-5A-11-2A-05-70:position"}
 ```
 
-See [velux.items](doc/conf/items/velux.items) for more examples.
+See [items.md](doc/items.md) for more examples.
 
 ### Sitemap
 
-```
+```perl
 Frame label="Velux Windows" {
        Slider item=Bathroom_Roof_Window_Position
 }
 ```
 
-See [velux.sitemap](doc/conf/sitemaps/velux.sitemap) for more examples.
+See [sitemaps.md](doc/sitemaps.md) for more examples.
 
 ### Rule for simultaneously moving the main position and the vane position
 
@@ -360,7 +360,7 @@ then
 end
 ```
 
-See [velux.rules](doc/conf/rules/velux.rules) for more examples.
+See [rules.md](doc/rules.md) for more examples.
 
 ### Rule for rebooting the Bridge
 
@@ -431,21 +431,21 @@ For those who are interested in more detailed insight of the processing of this
 
 With Karaf you can use the following command sequence:
 
-```
+```text
 log:set TRACE org.openhab.binding.velux
 log:tail
 ```
 
 This, of course, is possible on command line with the commands:
 
-```
+```text
 % openhab-cli console log:set TRACE org.openhab.binding.velux
 % openhab-cli console log:tail org.openhab.binding.velux
 ```
 
 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>
@@ -453,7 +453,7 @@ On the other hand, if you prefer a textual configuration, you can append the log
 
 During startup of normal operations, there should be only some few messages within the logfile, like:
 
-```
+```text
 [INFO ] [nal.VeluxValidatedBridgeConfiguration] - veluxConfig[protocol=slip,ipAddress=192.168.45.9,tcpPort=51200,password=********,timeoutMsecs=1000,retries=5,refreshMsecs=15000,isBulkRetrievalEnabled=true]
 [INFO ] [ng.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
 [INFO ] [hab.binding.velux.bridge.slip.SClogin] - velux bridge connection successfully established (login succeeded).
@@ -478,7 +478,7 @@ During startup of normal operations, there should be only some few messages with
 
 However if you have set the configuration parameter isProtocolTraceEnabled to true, you'll see the complete sequence of exchanged messages:
 
-```
+```text
 [INFO ] [internal.bridge.slip.SlipVeluxBridge] - Sending command GW_PASSWORD_ENTER_REQ.
 [INFO ] [nternal.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
 [INFO ] [internal.bridge.slip.SlipVeluxBridge] - Received answer GW_PASSWORD_ENTER_CFM.
@@ -559,6 +559,6 @@ All known <B>Velux</B> devices can be handled by this binding.
 However, there might be some new ones which will be reported within the logfiles.
 Therefore, error messages like the one below should be reported to the maintainers so that the new Velux device type can be incorporated.
 
-```
+```text
 [ERROR] [g.velux.things.VeluxProductReference] - PLEASE REPORT THIS TO MAINTAINER: VeluxProductReference(3) has found an unregistered ProductTypeId.
 ```
diff --git a/bundles/org.openhab.binding.velux/doc/conf/items/velux.items b/bundles/org.openhab.binding.velux/doc/conf/items/velux.items
deleted file mode 100644 (file)
index be3922c..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- *
- * Copyright (c) 2010-2023 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- */
-
-/**
- * OpenHAB item defintion for velux binding:
- *  Velux Bridge and Devices
- *
- * @author Guenther Schreiner - Initial contribution
- */
-
-//  Group for simulating push buttons
-
-Group:Switch:OR(ON, OFF) gV "PushButton"
-
-// Velux Bridge channels
-
-String  V_BRIDGE_STATUS     "Velux Bridge Status [%s]"          { channel="velux:klf200:home:status" }
-Switch  V_BRIDGE_RELOAD     "Velux Bridge Reload"         (gV)  { channel="velux:klf200:home:reload" }
-String  V_BRIDGE_TIMESTAMP  "Velux Bridge Timestamp [%d]"       { channel="velux:klf200:home:timestamp" }
-
-String  V_BRIDGE_FIRMWARE   "Velux Bridge Firmware version [%s]" { channel="velux:klf200:home:firmware" }
-String  V_BRIDGE_IPADDRESS  "Velux Bridge LAN IP Address"       { channel="velux:klf200:home:ipAddress" }
-String  V_BRIDGE_SUBNETMASK "Velux Bridge LAN IP Subnet Mask"   { channel="velux:klf200:home:subnetMask" }
-String  V_BRIDGE_DEFAULTGW  "Velux Bridge LAN Default Gateway"  { channel="velux:klf200:home:defaultGW" }
-String  V_BRIDGE_DHCP       "Velux Bridge LAN DHCP Enabled"     { channel="velux:klf200:home:DHCP" }
-String  V_BRIDGE_WLANSSID   "Velux Bridge WLAN SSID"            { channel="velux:klf200:home:WLANSSID" }
-String  V_BRIDGE_WLANPASSWD "Velux Bridge WLAN Password"        { channel="velux:klf200:home:WLANPassword" }
-
-Switch  V_BRIDGE_DETECTION  "Velux Bridge Detection mode"  (gV) { channel="velux:klf200:home:doDetection" }
-String  V_BRIDGE_CHECK      "Velux Bridge Check"                { channel="velux:klf200:home:check" }
-String  V_BRIDGE_SCENES     "Velux Bridge Scenes"               { channel="velux:klf200:home:scenes" }
-String  V_BRIDGE_PRODUCTS   "Velux Bridge Products"             { channel="velux:klf200:home:products" }
-
-// Velux Scene channels
-
-Switch  V_DG_M_W_OPEN       "Velux DG Window open"                 (gV) { channel="velux:scene:home:windowOpened:action" }
-Switch  V_DG_M_W_UNLOCKED   "Velux DG Window a little open" (gV) { channel="velux:scene:home:windowUnlocked:action" }
-Switch  V_DG_M_W_CLOSED            "Velux DG Window closed"        (gV) { channel="velux:scene:home:windowClosed:action" }
-
-// Velux Bridge channel
-
-Rollershutter RS2          "Velux Rolladen 2 [%d]"              { channel="velux:klf200:home:shutter#0,V_DG_Shutter_Ost_000,100,V_DG_Shutter_Ost_100", channel="knx:device:bridge:control:VeluxFenster" }
-
-
-// Velux Actuator channels
-
-Rollershutter  V_DG_M_W        "DG Fenster Bad [%d]"           { channel="velux:klf200:home:V_DG_M_W" }
-Rollershutter  V_DG_M_W2       "DG Fenster Bad [%d]"           { channel="velux:klf200:home:V_DG_M_W2" }
-Rollershutter  V_DG_M_S        "DG Bad  [%d]"                  { channel="velux:klf200:home:V_DG_M_S" }
-Rollershutter  V_DG_W_S        "DG West [%d]"                  { channel="velux:klf200:home:V_DG_W_S" }
-Rollershutter  V_DG_O_S        "DG Ost  [%d]"                  { channel="velux:klf200:home:V_DG_O_S" }
-
-//
-// vim: syntax=Xtend vim: noai:ts=4:sw=4
-//
-// end-of-items/velux.items
-//
diff --git a/bundles/org.openhab.binding.velux/doc/conf/rules/velux.rules b/bundles/org.openhab.binding.velux/doc/conf/rules/velux.rules
deleted file mode 100644 (file)
index 14e4301..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *
- * Copyright (c) 2010-2023 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- */
-
-/**
- * OpenHAB rules for velux binding:
- *     This rule simulates the push button behaviour.
- *
- * @author Guenther Schreiner - Initial contribution
- */
-
-rule "PushButton of group gV"
-    when
-        Item gV changed
-    then
-        // waiting a second.
-            Thread::sleep(1000)
-        // Foreach-Switch-is-ON
-        gV.allMembers.filter( s | s.state == ON).forEach[i|
-            // switching OFF
-                i.sendCommand(OFF)
-        ]
-    end
-
-//
-// vim: syntax=Xtend vim: noai:ts=4:sw=4
-//
-// end-of-rules/velux.rules
-//
diff --git a/bundles/org.openhab.binding.velux/doc/conf/sitemaps/velux.sitemap b/bundles/org.openhab.binding.velux/doc/conf/sitemaps/velux.sitemap
deleted file mode 100644 (file)
index db13f11..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- *
- * Copyright (c) 2010-2023 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- */
-
-/**
- * OpenHAB sitemap definition for velux binding:
- *  displays most of the Velux items
- *
- * @author Guenther Schreiner - Initial contribution
- */
-
-sitemap velux label="Velux Environment"
-{
-    Frame label="Velux Shutter and Window" {
-
-        Switch  item=V_DG_M_W_OPEN
-        Switch  item=V_DG_M_W_UNLOCKED
-        Switch  item=V_DG_M_W_CLOSED
-        Slider  item=V_DG_M_W
-    }
-    
-    Frame label="Velux Bridge Status" {
-        Text    item=V_BRIDGE_STATUS
-        Text    item=V_BRIDGE_TIMESTAMP
-        Switch  item=V_BRIDGE_RELOAD
-    }
-
-    Frame label="Velux Bridge Status" {
-        Switch  item=V_BRIDGE_DETECTION  
-        Text    item=V_BRIDGE_CHECK
-        Text    item=V_BRIDGE_SCENES
-        Text    item=V_BRIDGE_PRODUCTS
-    }
-
-    Frame label="Velux Bridge Configuration" {
-        Text    item=V_BRIDGE_FIRMWARE
-        Text    item=V_BRIDGE_IPADDRESS
-        Text    item=V_BRIDGE_SUBNETMASK
-        Text    item=V_BRIDGE_DEFAULTGW
-        Switch  item=V_BRIDGE_DHCP
-        Text    item=V_BRIDGE_WLANSSID
-        Text    item=V_BRIDGE_WLANPASSWD    
-    }
-    
-}
-
-//
-// vim: syntax=Xtend vim: noai:ts=4:sw=4
-//
-// end-of-sitemap/velux.sitemap
-//
diff --git a/bundles/org.openhab.binding.velux/doc/conf/things/velux.things b/bundles/org.openhab.binding.velux/doc/conf/things/velux.things
deleted file mode 100644 (file)
index 3035b29..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- *
- * Copyright (c) 2010-2023 Contributors to the openHAB project
- *
- * See the NOTICE file(s) distributed with this work for additional
- * information.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0
- */
-
-/**
- * OpenHAB thing definition for velux binding:
- *  define basic Velux bridge parameters
- *
- * This is a definition which corresponds to the output of th Bridge
- * during startup, i.e.
- *
- * [INFO ] [x.internal.handler.VeluxBridgeHandler] - Found velux actuators:
- *     Product "#0" / SLIDER_SHUTTER (bridgeIndex=0,serial=56:32:14:5A:12:1C:05:5F,position=0000)
- *     Product "#1" / SLIDER_SHUTTER (bridgeIndex=1,serial=53:09:40:5A:0C:23:0A:6E,position=0000)
- *     Product "DG-M-Window" / SLIDER_WINDOW (bridgeIndex=3,serial=56:23:3E:26:0C:1B:00:10,position=C800)
- *     Product "#2" / SLIDER_SHUTTER (bridgeIndex=2,serial=53:09:40:5A:0C:2A:05:64,position=0000)
- *     Product "#4" / SWITCH (bridgeIndex=4,serial=Somfy-Switch,position=C800) 
- *     Product "#5" / SWITCH (bridgeIndex=5,serial=Somfy-Switch,position=C800) 
- *
- * @author Guenther Schreiner - Initial contribution
- */
-
-//
-// Definition of Velux bridge velux:klf200:home
-//
-
-Bridge velux:klf200:home    [ ipAddress="192.168.45.9", tcpPort=51200, password="verySecret" ] {
-
-// Velux scenes
-
-    Thing   scene   windowClosed    [ sceneName="V_DG_Window_Mitte_000" ]
-    Thing   scene   windowUnlocked  [ sceneName="V_DG_Window_Mitte_005" ]
-    Thing   scene   windowOpened    [ sceneName="V_DG_Window_Mitte_100" ]
-    Thing   scene   unknownScene    [ sceneName="ThisIsADummySceneName" ]
-
-// Velux IO-homecontrol devices
-
-    Thing   window             V_DG_M_W    [ serial="56:23:3E:26:0C:1B:00:10" ]
-    Thing   rollershutter      V_DG_M_S    [ serial="56:23:3E:26:0C:1B:00:10" ]
-    Thing   rollershutter      V_DG_W_S    [ serial="53:09:40:5A:0C:2A:05:64" ]
-    Thing   rollershuffer      V_DG_O_S    [ serial="53:09:40:5A:0C:23:0A:6E" ]
-    Thing   actuator           V_SWITCH1   [ name="#4" ]
-    Thing   actuator           V_SWITCH2   [ name="#5" ]
-
-// Virtual rollershutter
-
-    Thing   vshutter           V_WINDOW    [ sceneLevels="0,V_DG_Window_Mitte_000#5,V_DG_Window_Mitte_005#100,V_DG_Window_Mitte_100" ]
-}
-
-//
-// vim: syntax=Xtend vim: noai:ts=4:sw=4
-//
-// end-of-things/velux.things
-//
diff --git a/bundles/org.openhab.binding.velux/doc/items.md b/bundles/org.openhab.binding.velux/doc/items.md
new file mode 100644 (file)
index 0000000..55f9107
--- /dev/null
@@ -0,0 +1,43 @@
+```java
+//  Group for simulating push buttons
+
+Group:Switch:OR(ON, OFF) gV "PushButton"
+
+// Velux Bridge channels
+
+String  V_BRIDGE_STATUS     "Velux Bridge Status [%s]"          { channel="velux:klf200:home:status" }
+Switch  V_BRIDGE_RELOAD     "Velux Bridge Reload"         (gV)  { channel="velux:klf200:home:reload" }
+String  V_BRIDGE_TIMESTAMP  "Velux Bridge Timestamp [%d]"       { channel="velux:klf200:home:timestamp" }
+
+String  V_BRIDGE_FIRMWARE   "Velux Bridge Firmware version [%s]" { channel="velux:klf200:home:firmware" }
+String  V_BRIDGE_IPADDRESS  "Velux Bridge LAN IP Address"       { channel="velux:klf200:home:ipAddress" }
+String  V_BRIDGE_SUBNETMASK "Velux Bridge LAN IP Subnet Mask"   { channel="velux:klf200:home:subnetMask" }
+String  V_BRIDGE_DEFAULTGW  "Velux Bridge LAN Default Gateway"  { channel="velux:klf200:home:defaultGW" }
+String  V_BRIDGE_DHCP       "Velux Bridge LAN DHCP Enabled"     { channel="velux:klf200:home:DHCP" }
+String  V_BRIDGE_WLANSSID   "Velux Bridge WLAN SSID"            { channel="velux:klf200:home:WLANSSID" }
+String  V_BRIDGE_WLANPASSWD "Velux Bridge WLAN Password"        { channel="velux:klf200:home:WLANPassword" }
+
+Switch  V_BRIDGE_DETECTION  "Velux Bridge Detection mode"  (gV) { channel="velux:klf200:home:doDetection" }
+String  V_BRIDGE_CHECK      "Velux Bridge Check"                { channel="velux:klf200:home:check" }
+String  V_BRIDGE_SCENES     "Velux Bridge Scenes"               { channel="velux:klf200:home:scenes" }
+String  V_BRIDGE_PRODUCTS   "Velux Bridge Products"             { channel="velux:klf200:home:products" }
+
+// Velux Scene channels
+
+Switch  V_DG_M_W_OPEN       "Velux DG Window open"                 (gV) { channel="velux:scene:home:windowOpened:action" }
+Switch  V_DG_M_W_UNLOCKED   "Velux DG Window a little open" (gV) { channel="velux:scene:home:windowUnlocked:action" }
+Switch  V_DG_M_W_CLOSED            "Velux DG Window closed"        (gV) { channel="velux:scene:home:windowClosed:action" }
+
+// Velux Bridge channel
+
+Rollershutter RS2          "Velux Rolladen 2 [%d]"              { channel="velux:klf200:home:shutter#0,V_DG_Shutter_Ost_000,100,V_DG_Shutter_Ost_100", channel="knx:device:bridge:control:VeluxFenster" }
+
+
+// Velux Actuator channels
+
+Rollershutter  V_DG_M_W        "DG Fenster Bad [%d]"           { channel="velux:klf200:home:V_DG_M_W" }
+Rollershutter  V_DG_M_W2       "DG Fenster Bad [%d]"           { channel="velux:klf200:home:V_DG_M_W2" }
+Rollershutter  V_DG_M_S        "DG Bad  [%d]"                  { channel="velux:klf200:home:V_DG_M_S" }
+Rollershutter  V_DG_W_S        "DG West [%d]"                  { channel="velux:klf200:home:V_DG_W_S" }
+Rollershutter  V_DG_O_S        "DG Ost  [%d]"                  { channel="velux:klf200:home:V_DG_O_S" }
+```
diff --git a/bundles/org.openhab.binding.velux/doc/rules.md b/bundles/org.openhab.binding.velux/doc/rules.md
new file mode 100644 (file)
index 0000000..cd03164
--- /dev/null
@@ -0,0 +1,15 @@
+```java
+// This rule simulates a push button behaviour.
+rule "PushButton of group gV"
+    when
+        Item gV changed
+    then
+        // waiting a second.
+            Thread::sleep(1000)
+        // Foreach-Switch-is-ON
+        gV.allMembers.filter( s | s.state == ON).forEach[i|
+            // switching OFF
+                i.sendCommand(OFF)
+        ]
+    end
+```
diff --git a/bundles/org.openhab.binding.velux/doc/sitemaps.md b/bundles/org.openhab.binding.velux/doc/sitemaps.md
new file mode 100644 (file)
index 0000000..bb310c9
--- /dev/null
@@ -0,0 +1,37 @@
+
+```perl
+sitemap velux label="Velux Environment"
+{
+    Frame label="Velux Shutter and Window" {
+
+        Switch  item=V_DG_M_W_OPEN
+        Switch  item=V_DG_M_W_UNLOCKED
+        Switch  item=V_DG_M_W_CLOSED
+        Slider  item=V_DG_M_W
+    }
+    
+    Frame label="Velux Bridge Status" {
+        Text    item=V_BRIDGE_STATUS
+        Text    item=V_BRIDGE_TIMESTAMP
+        Switch  item=V_BRIDGE_RELOAD
+    }
+
+    Frame label="Velux Bridge Status" {
+        Switch  item=V_BRIDGE_DETECTION  
+        Text    item=V_BRIDGE_CHECK
+        Text    item=V_BRIDGE_SCENES
+        Text    item=V_BRIDGE_PRODUCTS
+    }
+
+    Frame label="Velux Bridge Configuration" {
+        Text    item=V_BRIDGE_FIRMWARE
+        Text    item=V_BRIDGE_IPADDRESS
+        Text    item=V_BRIDGE_SUBNETMASK
+        Text    item=V_BRIDGE_DEFAULTGW
+        Switch  item=V_BRIDGE_DHCP
+        Text    item=V_BRIDGE_WLANSSID
+        Text    item=V_BRIDGE_WLANPASSWD    
+    }
+    
+}
+```
diff --git a/bundles/org.openhab.binding.velux/doc/things.md b/bundles/org.openhab.binding.velux/doc/things.md
new file mode 100644 (file)
index 0000000..77ced47
--- /dev/null
@@ -0,0 +1,28 @@
+```java
+//
+// Definition of Velux bridge velux:klf200:home
+//
+
+Bridge velux:klf200:home    [ ipAddress="192.168.45.9", tcpPort=51200, password="verySecret" ] {
+
+// Velux scenes
+
+    Thing   scene   windowClosed    [ sceneName="V_DG_Window_Mitte_000" ]
+    Thing   scene   windowUnlocked  [ sceneName="V_DG_Window_Mitte_005" ]
+    Thing   scene   windowOpened    [ sceneName="V_DG_Window_Mitte_100" ]
+    Thing   scene   unknownScene    [ sceneName="ThisIsADummySceneName" ]
+
+// Velux IO-homecontrol devices
+
+    Thing   window             V_DG_M_W    [ serial="56:23:3E:26:0C:1B:00:10" ]
+    Thing   rollershutter      V_DG_M_S    [ serial="56:23:3E:26:0C:1B:00:10" ]
+    Thing   rollershutter      V_DG_W_S    [ serial="53:09:40:5A:0C:2A:05:64" ]
+    Thing   rollershuffer      V_DG_O_S    [ serial="53:09:40:5A:0C:23:0A:6E" ]
+    Thing   actuator           V_SWITCH1   [ name="#4" ]
+    Thing   actuator           V_SWITCH2   [ name="#5" ]
+
+// Virtual rollershutter
+
+    Thing   vshutter           V_WINDOW    [ sceneLevels="0,V_DG_Window_Mitte_000#5,V_DG_Window_Mitte_005#100,V_DG_Window_Mitte_100" ]
+}
+```