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

I assume this will require a new openhab binding?

Yes.

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:

3 Likes

Looking forward to this new API

Hi

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.

Cheers,

Stuart

Update

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:

Cheers,
Stuart

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.

Hi

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:

FYI

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

Update

This seems to be the problem.

If I issue

wget https://github.com/gs4711/org.openhab.binding.velux/blob/master/org.openhab.binding.velux-2.3.0-SNAPSHOT.jar

I get a 34KB file.

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

So…

I issued

wget https://github.com/gs4711/org.openhab.binding.velux/blob/master/org.openhab.binding.velux-2.3.0-SNAPSHOT.jar?raw=true

But I get a 94KB file, with this filename
org.openhab.binding.velux-2.3.0-SNAPSHOT.jar?raw=true

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 https://github.com/gs4711/org.openhab.binding.velux, and the velux binding is working great.

My configuration:
KLF200 Firmware: 0.1.1.0.41.0
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)

//Velux
Bridge velux:klf200:home   [ bridgeIPAddress="192.168.1.100", bridgeTCPPort=80,bridgePassword=" velux123",timeoutMsecs=5000, retries=9 ]
    {
    //Ramen
    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" ]

    //Blindings
    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

/*Velux*/
    //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"
  when
    Item gV changed
  then
    // waiting a second.
    Thread::sleep(4000)
    // Foreach-Switch-is-ON
    gV.allMembers.filter( s | s.state == ON).forEach[i|
    // switching OFF
    sendCommand(i, OFF)
        ]
  end

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

Is it possible to detect the status of a windows? (open, closed, 50%,…)
Or can we track wat was the latest command, like open window 100%

Thanks

Hi klf200developer,

Those are quite awesome news !
Thanks for sharing, looking forward to playing with it :smiley:
From what I have read in the API, this will be real fun and expose a lot of things we have been looking for.

So my KLF200 is not useless anymore :smiley:

Will you be exposing the config interface via ethernet in the future again ?

I just wanted to play with it but noticed that after I open the port once, the orange LED turns on and the port is closed and does not re-open again.
I nmap’ed the KLF200…
Rebooting the device gives an open port again; but then the same happens.

This is weird and I am wondering if this is a bug or intended @klf200developer ?

Thanks

Hi
We are now ready with our public API site for KLF200.


I hope you will find it usefull.

1 Like

Hi sim0nx

  1. Right now and in the future I can see, we have configuration web page in KLF200 as http on WiFi. But all you can don on that web page you can also do with the API in wiren LAN.
  2. Can you come a little closer. You connect to port 51200 socket, and then do? The LED you mention, is that on LAN connector?

Hi klf200developer,

Ok that’s fine I guess.

I do a simple nmap port scan:

nmap -vvv -n -Pn 192.168.1.14 -p 51200
So I just test if that port is open.
If I now reboot my device, LED on top is green. I try that, port is open, all good.
Then the LED turng orange (on top of the device).
Now if I do the same test again, port is closed and stays closed until I reboot it again.

Either there is a problem with my device (latest firmware), or it does not like me opening the port without initiating a real session :slight_smile: ?

I am happy to debug this if you tell me how (beta firmware is no problem either, just sayin…).

Thank you

1 Like