Io-homecontrol / velux - something's in the bush

Hi Thomas, can you pls explain how to get the klf200 finding the somfy shutter, should i only reset the io motor and then let the klf200 search for it or must i do more to let the klf200 find the somfy io shutter ?

Did you make any hands dirty?

It is bidirectional and semi-stateful. If I manipulate the window with a classic remote the app will only know that the saved position is not valid (or might not be valid). By pressing the value slider button it seems to retrieve the window position without sending a new position and then the slider snaps to this read value.

I ordered an Apple TV Gen4 as it can act as a homekit server. Did anybody here had some success with the homekit binding. My vision is that Apple TV has the objects of velux under control and openhab also connects to this server (local net). for every OH item there will be a homekit object and I would have to create 1:1 rules that keeps this dummy object in sync with the real velux object. Not sure if the velux object will directly be visible in OH - I don’t know the binding that well.


There is a new firmware version out at, verison

I was wondering if somebody has already tried that one ?

I just upgrded mine, looked like it went fine but actually now only WiFi works.
I see that it gets an IP from DHCP on the LAN interface, I can ping it, but it never listens on port 80.

Hence I am a bit lost here. Trying to reflash the latest firmware fails with the message “outdated firmware”.

Any help or idea is much appreciated.


this sounds really bad.

On my side after two unsuccessful tries via LAN I tried the upgrade via WLAN:

it immediately succeeded with a final reboot after 14 minutes. Every part of

the recent configuration was maintained, the identification of products works fine.

BUT: the web server does not respond on the LAN interface. Only listening on

the WLAN (within the first minutes).

Best regards,



That’s exactly the same as I got.
I tried to contact their support via their web-form last week, no reply yet.

In case you get somewhere, please do let me know!
Mine is unusable right now :frowning:

Hello guys,

As you already have noticed VELUX has released a software update for KLF200. Unfortunately, we are still in the progress of setting up our systems to provide a pleasant experience for this, so we have some work to do. Currently we are not able to provide the changelogs for the updates in a way that we would like to do, but I am providing it here for you.

But, the main change is that we have seen your interest in your use of the KLF200 and would like to provide you with a much better way of interfacing to the KLF200. The API you are currently using, was never intended for this purpose and due to security issues, we had during the last development cycle, we had to close the HTTP configuration interface on the ethernet interface. To make sure you are still able to use KLF200 to integrate to your systems, we are in the process of releasing an official API description, that can be used and is intended to interface to the KLF200. This API will make it possible for you to make a much better integration to the VELUX system. As mentioned our internal systems is not quite ready, but I have the opportunity to forward it here. I am also including a number of examples in Python that you might find helpful. When we are ready with it, I will send a link to the official VELUX download page, where you can find the same information.

Edited October 7, 2018
Here is a link to our official page with changelog and API dokumentation.


I assume this will require a new openhab binding?


The negative point is, that the protocol has been changed from AJAX to SLIP (RFC 1055). Therefore this will
lead to a changed binding.
The positive point is, that there are a lot of different methods which will extend the functions of the binding.

1 Like

We´re counting on you, Guenther :slight_smile:


Looking forward to this new API


I’ve just dropped your V2.3 snapshot Binding into the Addons folder (alongside another binding), but nothing appears in PaperUI.

Do I need to do something more than just add the jar file?

Your GitHub page mentions a config file with parameters, but there isn’t an example file for me to start from.




I’ve just reread the whole thread and now have a better understanding of the changes.

I’m happy to wait as long as needed :smile:

Good luck

This is probably the best thread to use:

As for you question. I have no idea… I just searched for my cfg file, but I cant find it… I wonder how the heck I manaed to get it to work. It´s still working though.

1 Like

Thanks Kim

If you suddenly figure out what you did, please do let us know :smile:


Ahh… I think you can add the KLF200 manually… If you got the binding installed, go to Things (In paperUI), and add it manually, by pressing the + and choose Velux… Add your KLF200 in there.


That’s the part that’s causing the issue.

I see all other bindings, but not the Velux one.

I’ve tried both V2.3 & V2.4

As well as a OpenHab2 restart

Hmm so you havn´t got the binding installed!

I remember having the same issue first time. I had to download it again (using another way of downloading), cause the jar file was somehow corrupt. After that, the binding installed just fine and have been working ever since. (I think I wrote a message about it in the other Velux binding thread).

I recall reading someone runing openhab ina docker having problems as well. I´m using an RPi running the apt-get openhabian (hasslefree). 2.3.0 stable.

1 Like

Arrrr okay :slight_smile:

That’s easy to try :smile:


Previously, I simply used the wget method direct to the GitHub file


This seems to be the problem.

If I issue


I get a 34KB file.

If I follow that link in a browser, it downloads a jar file of 94KB.


I issued


But I get a 94KB file, with this filename

I’ll rename it and see what happens…

That’s fixed it :smile:

Thanks for your help :smile:

Lesson learnt… Check the file size of downloaded files

Yeah I´d struggle with that as well… Dont know why it happened.
At least you got it working.

1 Like

Hi Stuart,

I share you my configuration

I followed the quick start, and the velux binding is working great.

My configuration:
KLF200 Firmware:
Raspberry pi 2
openHAB 2.3.0-1
Copyed de binding with windows explorer: \openHAB-share\openhab2-addons\org.openhab.binding.velux-2.4.0-SNAPSHOT.jar

*.things file
Default velux password velux123.
Use IP address instead of URL (give your KLF200 a static IP Adress)

Bridge velux:klf200:home   [ bridgeIPAddress="", bridgeTCPPort=80,bridgePassword=" velux123",timeoutMsecs=5000, retries=9 ]
    Thing   scene   grWindowClosed    [ sceneName="Gr_raam_000" ]
    Thing   scene   grWindowUnlocked  [ sceneName="Gr_raam_005" ]
    Thing   scene   grWindow050       [ sceneName="Gr_raam_050" ]
    Thing   scene   grWindowOpened    [ sceneName="Gr_raam_100" ]
    Thing   scene   klWindowClosed    [ sceneName="Kl_raam_000" ]
    Thing   scene   klWindowUnlocked  [ sceneName="Kl_raam_005" ]
    Thing   scene   klWindow050       [ sceneName="Kl_raam_050" ]
    Thing   scene   klWindowOpened    [ sceneName="Kl_raam_100" ]

    Thing   scene   allWindowClosed   [ sceneName="Alle_ramen_000" ]
    Thing   scene   allWindowUnlocked [ sceneName="Alle_ramen_005" ]
    Thing   scene   allWindow050      [ sceneName="Alle_ramen_050" ]
    Thing   scene   allWindowOpened   [ sceneName="Alle_ramen_100" ]

    Thing   scene   allBlindingClosed [ sceneName="All_Blinding_000" ]
    Thing   scene   allBlindingOpened [ sceneName="All_Blinding_100" ]
    Thing   scene   grBlindingClosed  [ sceneName="Gr_Blinding_000" ]
    Thing   scene   grBlindingOpened  [ sceneName="Gr_Blinding_100" ]
    Thing   scene   klBlindingClosed  [ sceneName="Kl_Blinding_000" ]
    Thing   scene   klBlindingOpened  [ sceneName="Kl_Blinding_100" ]


*.items file

    //Scenes ramen
    Switch  All_raam_OPEN      "Alle ramen open"         (gV)       { channel="velux:scene:home:allWindowOpened:action" }
    Switch  All_raam_UNLOCKED  "Alle ramen ventilatie"   (gV)       { channel="velux:scene:home:allWindowUnlocked:action" }
    Switch  All_raam_050       "Alle ramen 50%"          (gV)       { channel="velux:scene:home:allWindow050:action" }
    Switch  All_raam_CLOSED    "Alle ramen dicht"        (gV)       { channel="velux:scene:home:allWindowClosed:action" }

    Switch  Gr_raam_OPEN      "Gr raam open"             (gV)       { channel="velux:scene:home:grWindowOpened:action" }
    Switch  Gr_raam_UNLOCKED  "Gr raam ventilatie"       (gV)       { channel="velux:scene:home:grWindowUnlocked:action" }
    Switch  Gr_raam_050       "Gr raam 50%"              (gV)       { channel="velux:scene:home:grWindow050:action" }
    Switch  Gr_raam_CLOSED    "Gr raam dicht"            (gV)       { channel="velux:scene:home:grWindowClosed:action" }

    Switch  Kl_raam_OPEN      "Kl raam open"             (gV)       { channel="velux:scene:home:klWindowOpened:action" }
    Switch  Kl_raam_UNLOCKED  "Kl raam ventilatie"       (gV)       { channel="velux:scene:home:klWindowUnlocked:action" }
    Switch  Kl_raam_050       "Kl raam 50%"              (gV)       { channel="velux:scene:home:klWindow050:action" }
    Switch  Kl_raam_CLOSED    "Kl raam dicht"            (gV)       { channel="velux:scene:home:klWindowClosed:action" }

    //Scenes bindings
    Switch  All_blinding_OPEN    "Alle bindings open"    (gV)       { channel="velux:scene:home:allBlindingOpened:action" }
    Switch  All_blinding_CLOSED  "Alle bindings dicht"   (gV)       { channel="velux:scene:home:allBlindingClosed:action" }

    Switch  Gr_blinding_OPEN    "Gr binding open"        (gV)       { channel="velux:scene:home:grBlindingOpened:action" }
    Switch  Gr_blinding_CLOSED  "Gr binding dicht"       (gV)       { channel="velux:scene:home:grBlindingClosed:action" }

    Switch  Kl_blinding_OPEN    "Kl binding open"        (gV)       { channel="velux:scene:home:klBlindingOpened:action" }
    Switch  Kl_blinding_CLOSED  "Kl binding dicht"       (gV)       { channel="velux:scene:home:klBlindingClosed:action" }

    //Satus KLF200 
    String  V_BRIDGE_STATUS     "Status"        { channel="velux:klf200:home:status" }
    String  V_BRIDGE_FIRMWARE   "Firmware"      { channel="velux:klf200:home:firmware" }
    String  V_BRIDGE_IPADDRESS  "IP"            { channel="velux:klf200:home:ipAddress" }
    String  V_BRIDGE_SUBNETMASK "Subnet"        { channel="velux:klf200:home:subnetMask" }
    String  V_BRIDGE_DEFAULTGW  "Gateway"       { channel="velux:klf200:home:defaultGW" }
    String  V_BRIDGE_WLANSSID   "SSID"          { channel="velux:klf200:home:WLANSSID" }
    String  V_BRIDGE_WLANPASSWD "WLAN Pas"      { channel="velux:klf200:home:WLANPassword" }
    String  V_BRIDGE_SCENES     "Scenes "       { channel="velux:klf200:home:scenes" }

    Group:Switch:OR(ON, OFF)           gV             "PushButtonVelux"                    (Home)

*.sitemap file

 Frame label="Velux ramen" 
                Switch  item=All_raam_OPEN       icon=window
                Switch  item=All_raam_UNLOCKED   icon=window
                Switch  item=All_raam_050        icon=window
                Switch  item=All_raam_CLOSED     icon=window

                Switch  item=Gr_raam_OPEN        icon=window
                Switch  item=Gr_raam_UNLOCKED    icon=window
                Switch  item=Gr_raam_050         icon=window
                Switch  item=Gr_raam_CLOSED      icon=window
                Switch  item=Kl_raam_OPEN        icon=window
                Switch  item=Kl_raam_UNLOCKED    icon=window
                Switch  item=Kl_raam_050         icon=window
                Switch  item=Kl_raam_CLOSED      icon=window
            Frame label="Velux blindings" icon="blinding"
                Switch  item=All_blinding_OPEN    icon=blinds
                Switch  item=All_blinding_CLOSED  icon=blinds

                Switch  item=Gr_blinding_OPEN     icon=blinds
                Switch  item=Gr_blinding_CLOSED   icon=blinds

                Switch  item=Kl_blinding_OPEN     icon=blinds
                Switch  item=Kl_blinding_CLOSED   icon=blinds              
            Frame label="Velux KLF200 status" 
                Text    item=V_BRIDGE_STATUS      icon=none
                Text    item=V_BRIDGE_FIRMWARE    icon=none
                Text    item=V_BRIDGE_IPADDRESS   icon=none
                Text    item=V_BRIDGE_SUBNETMASK  icon=none
                Text    item=V_BRIDGE_DEFAULTGW   icon=none
                Text    item=V_BRIDGE_WLANSSID    icon=none
                Text    item=V_BRIDGE_WLANPASSWD  icon=none    
                Text    item=V_BRIDGE_SCENES      icon=none

*.rule file

rule "PushButton of group gV"
    Item gV changed
    // waiting a second.
    // Foreach-Switch-is-ON
    gV.allMembers.filter( s | s.state == ON).forEach[i|
    // switching OFF
    sendCommand(i, OFF)

Paper UI Things, Velux products, Velux programs, Log fil OH
I am limited to one foto in a post ;-(

I hope you can do something with this information.

1 Like