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]
```
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.
### 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]
}
```
-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
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
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>
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).
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.
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.
```
+++ /dev/null
-/**
- *
- * 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
-//
+++ /dev/null
-/**
- *
- * 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
-//
+++ /dev/null
-/**
- *
- * 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
-//
+++ /dev/null
-/**
- *
- * 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
-//
--- /dev/null
+```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" }
+```
--- /dev/null
+```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
+```
--- /dev/null
+
+```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
+ }
+
+}
+```
--- /dev/null
+```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" ]
+}
+```