[velux] New OpenHAB2 binding - feedback welcome!

If the device does not send a notification (NTF) then the only thing is to wait for the next polling cycle.

You could try reducing the refreshInterval to 10’000 milliSeconds; which might make the polling cycle shorter.

EDIT: you could also write a rule like the one below, that is triggered by a dummy Switch Item in your system and which sends a REFRESH command to the old actuator.

rule "refresh"
when
    someSwitchItem changed to ON
then
    oldVeluxActuatorItem.sendCommand(REFRESH)
end

Hi,
since 2 days I have an KLF200 after the first good things, successful shutter setup in KLF and a Bridge is found but I’m not able to move the shutters from OpenHAB.
Velux Binding - 2.5.9
openHAB 2.5.9-1
KLF200 0.2.0.0.71.0
System Raspberry with openhabian

KLF200.things

Bridge velux:klf200:home “Velux KLF200 Hub” @ “Speicher” [ ipAddress=“192.168.100.22”, password=“password” ]
{
Thing rollershutter Thing_Rollo_room “Rollo room” @ “room” [serial=“53:09:40:5A:0F:27:XX:XX”]
Thing rollershutter Thing_Rollo_Speicher_hinten “Rollo Speicher hinten” @ “Speicher” [serial=“53:09:40:5A:0F:27:XX:XX”]
Thing rollershutter Thing_Rollo_Speicher_vorne “Rollo Speicher vorne” @ “Speicher” [serial=“53:09:40:5A:0F:27:XX:XX”]
}

KLF200.items

String KLF200_Firmware “KLF200 Firmware version” { channel=“velux:klf200:home:firmware” }
String KLF200_IP_Address “KLF200 IP Address” { channel=“velux:klf200:home:address” }

Rollershutter Rollo_room_Position “Rollo room Position [%.0f %%]” { channel=“velux:rollershutter:home:Thing_Rollo_room:position”}
Rollershutter Rollo_Speicher_hinten_Position “Rollo Speicher hinten Position [%.0f %%]” { channel=“velux:rollershutter:home:Thing_Roller_Speicher_hinten:position”}
Rollershutter Rollo_Speicher_vorne_Position “Rollo Speicher vorne Position [%.0f %%]” { channel=“velux:rollershutter:home:Thing_Roller_Speicher_vorne:position”}

in the sidemap I have:

Text item= KLF200_Firmware
Text item= KLF200_IP_Address
Slider item= Rollo_Speicher_hinten_Position
Slider item= Rollo_Speicher_vorne_Position

Log:

[INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model ‘KLF200.things’
[hingStatusInfoChangedEvent] - ‘velux:klf200:home’ changed from UNINITIALIZED to INITIALIZING
[INFO ] [.internal.handler.VeluxBridgeHandler] - Initializing Velux Bridge ‘velux:klf200:home’.
[hingStatusInfoChangedEvent] - ‘velux:klf200:home’ changed from INITIALIZING to UNKNOWN
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_room’ changed from UNINITIALIZED to INITIALIZING
[INFO ] [nternal.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_room’ changed from INITIALIZING to OFFLINE (BRIDGE_OFFLINE)
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_hinten’ changed from UNINITIALIZED to INITIALIZING
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_hinten’ changed from INITIALIZING to OFFLINE (BRIDGE_OFFLINE)
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_vorne’ changed from UNINITIALIZED to INITIALIZING
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_vorne’ changed from INITIALIZING to OFFLINE (BRIDGE_OFFLINE)
[INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model ‘KLF200.things’
[INFO ] [g.velux.internal.bridge.slip.SClogin] - velux bridge connection successfully established (login succeeded).
[INFO ] [.internal.handler.VeluxBridgeHandler] - Found velux scenes:
[INFO ] [.internal.handler.VeluxBridgeHandler] - Found velux actuators:
Product “Rollo room” / SLIDER_SHUTTER (bridgeIndex=2,serial=53:09:40:5A:0F:27:XX:XX,position=0000)
Product “Roller Speicher hinten” / SLIDER_SHUTTER (bridgeIndex=1,serial=53:09:40:5A:0F:27:XX:XX,position=0000)
Product “Roller Speicher vorne” / SLIDER_SHUTTER (bridgeIndex=0,serial=53:09:40:5A:0F:27:XX:XX,position=0000)
[INFO ] [.internal.handler.VeluxBridgeHandler] - velux Bridge is online with 0 scenes and 3 actuators, now.
[hingStatusInfoChangedEvent] - ‘velux:klf200:home’ changed from UNKNOWN to ONLINE
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_room’ changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_hinten’ changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
[hingStatusInfoChangedEvent] - ‘velux:rollershutter:home:Thing_Rollo_Speicher_vorne’ changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

In the BasicUI I can see no data and I can not find any updates in the log.
When I do a change of the slider I get the folowing in the log:

[ome.event.ItemCommandEvent] - Item ‘Rollo_Speicher_hinten_Position’ received command 84
[nt.ItemStatePredictedEvent] - Rollo_Speicher_hinten_Position predicted to become NULL
[ome.event.ItemCommandEvent] - Item ‘Rollo_Speicher_vorne_Position’ received command 41
[nt.ItemStatePredictedEvent] - Rollo_Speicher_vorne_Position predicted to become NULL

things show velux:klf200:home

UID: velux:klf200:home
Type: velux:klf200
Label: Velux KLF200 Hub
Status: ONLINE

Properties:
connectionSuccess : Sun Jan 10 01:31:48 CET 2021
WLANSSID : 192.168.100.22
defaultGW : 192.168.100.254
ipAddress : 192.168.100.22
check : Integrity check ok. All scenes are used within Items.
subnetMask : 255.255.255.0
DHCP : OFF
products : 3_members:Product"Rollo_room"/SLIDER_SHUTTER(bridgeIndex=2,serial=53:09:40:5A:0F:27:XX:XX,position=C800),Product"Roller_Speicher_hinten"/SLIDER_SHUTTER(bridgeIndex=1,serial=53:09:40:5A:0F:27:XX:XX,position=0000),Product"Roller_Speicher_vorne"/SLIDER_SHUTTER(bridgeIndex=0,serial=53:09:40:5A:0F:27:XX:XX,position=0000)
vendor : Velux
scenes : 0_members:

WLANPassword : 255.255.255.0
firmware : Software version 0.2.0.0.71.0, Hardware version 6.14.3
connectionAttempt : Sun Jan 10 01:31:48 CET 2021

Configuration parameters:
tcpPort : 51200
retries : 5
password : password
protocol : slip
isBulkRetrievalEnabled : true
refreshMsecs : 10000
ipAddress : 192.168.100.22
isSequentialEnforced : false
timeoutMsecs : 500
isProtocolTraceEnabled : false

Channels:
ID: status
Label: Bridge State
Type: velux:status
Description: Description of current Bridge State.

   ID: reload
   Label: Reload
   Type: velux:reload
   Description: Reload Bridge Information.

   ID: downtime
   Label: Downtime
   Type: velux:downtime
   Description: Time interval between last successful and recent device interaction.

   ID: doDetection
   Label: Activate Bridge Detection mode
   Type: velux:doDetection
   Description: Start of the product detection mode.

But still I have no data in the UI.

openhab> items list KLF200_Firmware
KLF200_Firmware (Type=StringItem, State=NULL, Label=KLF200 Firmware version, Category=null)
openhab> items list KLF200_IP_Address
KLF200_IP_Address (Type=StringItem, State=NULL, Label=KLF200 IP Address, Category=null)
openhab> items list Rollo_Speicher_hinten_Position
Rollo_Speicher_hinten_Position (Type=RollershutterItem, State=NULL, Label=Rollo Speicher hinten Position, Category=null)
openhab> items list Rollo_Speicher_vorne_Position
Rollo_Speicher_vorne_Position (Type=RollershutterItem, State=NULL, Label=Rollo Speicher vorne Position, Category=null)

@Jens when you post quoted code (like Things, Items, etc.) please enclose it with triple back-quote characters; which makes it easier for us to read.

I am checking your problem shortly…

You have basic typing mistakes in your configuration files!

Rollershutter Rollo_Speicher_hinten_Position "Rollo Speicher hinten Position [%.0f %%]" { channel="velux:rollershutter:home:Thing_Roller_Speicher_hinten:position"}
  => change it to this (etc. etc.)
Rollershutter Rollo_Speicher_hinten_Position "Rollo Speicher hinten Position [%.0f %%]" { channel="velux:rollershutter:home:Thing_Rollo_Speicher_hinten:position"}

Thanks a lot, sometime I get snowblind
All shutter are now working finaly.

But still Firmware, IP_Address ar not shown.

KLF200.items

String KLF200_Firmware “KLF200 Firmware version” { channel=“velux:klf200:home:firmware” }
String KLF200_IP_Address “KLF200 IP Address” { channel=“velux:klf200:home:address” }
String KLF200_Bridge_Status “KLF200 Bridge Status” { channel=“velux:klf200:home:status” }

These attributes are not Channels of the Bridge Thing; they are Properties of the Bridge Thing. So you can look at the Property values in PaperUI, but you cannot create Items based on those values. See the ReadMe

Hello, i try to use 4 velux rollershutters and 2 somfy rollershutters.
The velux rollershutters work like a charm, however for somfy i get the following error:
2021-01-12 21:20:18.842 [WARN ] [al.handler.utils.Thing2VeluxActuator] - mapThing2Velux(): cannot work on unknown actuator with serial 00:00:00:00:00:00:00:00.

I configured the thing like this:
Thing rollershutter RolluikOde “Rolluik Kamer Ode” [serial=“00:00:00:00:00:00:00:00”, name=“RolluikOde”, inverted=false]

What did i do wrong?
Can someone guide me to the process of correctly binding somfy motors?

From the ReadMe…

Somfy devices do not provide a valid serial number to the Velux KLF200 gateway. In this case you should enter the default serial number 00:00:00:00:00:00:00:00, and in addition enter the name parameter; this is the name that you gave to the actuator when you first registered it in the KLF200 Bridge.

^
However, there is a Somfy related problem in earlier versions of the binding, which has been fixed in the latest OH3 SNAPSHOT

Hello AndrewFG,

thanks for your quick answer.
I did it like the readme said i think, or isn’t it correct like this:
Thing rollershutter RolluikOde “Rolluik Kamer Ode” [serial=“00:00:00:00:00:00:00:00”, name=“RolluikOde”, inverted=false]

@zYves, probably this issue was fixed in the OpenHAB v3 release…

PS in the above-mentioned release, some of the Configuration Parameters are the same as the default values, so you can probably omit them…

Thing rollershutter RolluikOde "Rolluik Kamer Ode" [serial="00:00:00:00:00:00:00:00", name="RolluikOde", inverted=false]
  => could probably be changed to this..
Thing rollershutter RolluikOde "Rolluik Kamer Ode" [name="RolluikOde"]

Hi @AndrewFG
I ve just migrated OH from 2.5 to new fresh 3.0 install and got the same problem.
Lot of logs of type “WARN” : “mapThing2Velux(): in velux:scene:home:.action cannot find a uniqueIndex, aborting.”
I saw you released a snapshot version to fix this but can find the jar (link seems to be dead)
Can you please tell me where can i find it ?

Thanks and again great job for the binding

It is here

Hi there, I just got a rollershutter with a Somfy Sonesse 40 io motor. Unfortunately, the Velux KLF 200 does not find it. My KLR 200 does find the rollershutter but replies with an error when I actually try to send commands. Did you have the same behavior before you managed to pair it via a Somfy remote? For which remote control can you confirm this approach to work? I am thinking about purchasing a remote just to get the rollershutter into the KLF 200. The io system and/or Velux and/or Somfy really make our lifes harder.

No. No errors. First of all I did pair each Oximo IO to a corresponding Situo 1 IO remote control. (7 Oximo IO paired to 7 Situo 1). (I have as many remote controls as the amount of rollershutters, to be also independent from KLF200 and/or openHAB2).

And then I pressed the PROG button on the Situo 1 (one by one) to enable the rollershutters “Prog Mode”. Then I searched for new products in KLF200.

After the first rollershutter was recognized and available in KLF200 I waited about 10 minutes to do the same procedure with the second rollershutter, and so on.

To pair an Oximo IO to a “remote control” (e g. Telis, Situo, etc…) for the first time you should read the manual of the Oximo IO.

You can find it here:

English (and others):

German (and others):

.
.
.

EDIT: For the Sonesse 40 IO please see here:

German:

^
Just so you know: Also with Velux made windows and shutter actuators, the integration of the devices into the KLF200 is done in two steps…

  1. The actuator must first be linked to a remote control unit.
  2. The contents of the remote control unit are imported into the KLF200.

The Velux KLF manual may help…

1 Like

Hello,
Thanks I installed it last week.
It works nice since install but I notice few logs :

openhab.log:2021-01-21 23:07:36.689 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:07:40.797 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:07:46.906 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:07:57.015 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:08:15.126 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:08:49.234 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:09:55.343 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:12:05.454 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:16:23.563 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-21 23:24:55.567 [WARN ] [internal.bridge.slip.SlipVeluxBridge] -  bridgeDirectCommunicate() [KLF200.BFX] GW_GET_STATE_REQ => process loop time out => aborting => PLEASE REPORT !!

and

openhab.log:2021-01-27 09:03:05.681 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:03:09.790 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:03:15.898 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:03:26.008 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:03:44.117 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:04:18.227 [INFO ] [x.internal.bridge.slip.io.Connection] - io() on KLF200.BFX: Exception occurred during I/O: read time out after send.
openhab.log:2021-01-27 09:05:22.231 [WARN ] [internal.bridge.slip.SlipVeluxBridge] - bridgeDirectCommunicate() [KLF200.BFX] GW_GET_STATE_REQ => process loop time out => aborting => PLEASE REPORT !!

I think it appends sometimes when I use scene with multiple devices (and actualy the devices are working well).
One INFO log per device, followed by a global WARN “PLEASE REPORT !”.
(Sorry I dont have DEBUG level logs)
So I report … :grinning:

I see that the binding sends a GW_GET_STATE_REQ message. And this requires the KLF to respond with GW_GET_STATE_CFM. Which apparently is either not arriving, or arriving but not being recognised by the binding code. Anyway, it seems that it waits in a loop until it times out (which is a good safety measure). And if I understand you correctly, then everything works OK again after that. => Can you please 100% confirm that it really is indeed OK after that?

Notwithstanding the above (if it is Ok), I would like to eliminate the error. And (unfortunately for you) it requires logger TRACE messages. => So could you kindly please send me some? TIA.

PS This GW_GET_STATE_REQ (REQ=request) is a kind of ‘ping’ request that the binding may send from time to time, and normally the KLF should respond immediately with GW_GET_STATE_CFM (CFM=confirm).

So if the KLF does not confirm, it may be busy (or something like that). => Question: is your KLF actually busy (in some way) when it does not confirm?

EDIT: according to the Velux specification, even when the KLF is performing a scene activation task it should still respond with GW_GET_STATE_CFM with a specific message (“Performing task in Activate Scene Handler”). So if it isn’t actually doing that, then it may be a bug in the KLF firmware. But I will need the TRACE logs to confirm that…

Hi @AndrewFG
Thanks for your response.
I confirm that all devices are responding fine, even after the logs.
However I didnt check the status of devices in OH at this moment, i will think about this next time.
I cannot set log to TRACE level now, it makes my new OH3 system unstable (for other system reasons) I will try in near future.