I’ve gotten my hands on the KLF 200.
The basics
- It can be connected to wired ethernet.
- It will act as Wifi Access-point for 10 mins after startup (can be changed to disable/always active).
- It cannot connecte to another wireless network as a client.
- The default IP is 192.168.0.1 for wireless, for cabled network it will fetch an IP using DHCP.
- Connecting to http://klf200.velux/ over wireless (as stated in the manual) did not work for me. I had to access it using http://192.168.0.1/
Dry contact inputs
- There are 10 inputs. You need to use two inputs for each device if you want to control both up and down.
- For each input you can add many devices, but they will have to be of the same type (shutters/windows/blinds).
- For each input (up/down) you can make the products go to an absolute position (60 % open). Or you can make it do relative adjustments “open by 10 % from current position”.
Running programs
- Programs are created as macros by putting the KLF 200 in recording mode.
- With connections you can do the “programming” directly using the webinterface, this is not possible with programs.
- You will have to use a KLR 200, or other type of remote, to alter the positions of the devices you want to include in the program. After all windows/blinds has completed their adjustments you can save the program.
- You can also run a predefined program from the KLR200. However, it will not register any time-based delays. Hence a “slow wakeup” sequence on the KLR will run all at once when started from the KLF 200.
- Programs can be started from the KLF 200.
The not-so-good stuff
- I am not able to control a single device directly. It has to be done via programs or by using the dry contacts input.
- I am not able to read out the current position of a product.
- Since the programs cannot be created using the webinterface, the workaround to create a program dynamically is not an option.
- You can however create a connection dynamically. This do does require a relay of some sort to activate the connection later and hence the requested action later.
Some example HTTP POST calls
Authenticate
POST /api/v1/auth HTTP/1.1 Host: 192.168.0.1 Content-Type: application/json;charset=utf-8 Content-Length: 51 Connection: close
{"action":"login","params":{"password":"velux123"}}
Run a program
POST /api/v1/scenes HTTP/1.1 Host: 192.168.0.1 Content-Type: application/json;charset=utf-8 Authorization: Bearer bBbpXgBfTlw9LQwytyH5Cw== Content-Length: 34 Connection: keep-alive
{"action":"run","params":{"id":2}}
Identify a product
POST /api/v1/products HTTP/1.1 Host: 192.168.0.1 Content-Type: application/json;charset=utf-8 Authorization: Bearer bBbpXgBfTlw9LQwytyH5Cw== Content-Length: 50 Connection: close
{"action":"identify","params":{"id":5,"time":254}}
Conclusion
I believe (hope) there there are undocumented API-calls under the /api/v1/products that will make it possible to control a device directly. I’ve done some guesswork/bruteforce, but without any success so far.
I have also opened up the device to have a look at the inside. There are no obvious way (at least for me) to extract the firmware. The unit is however firmware-upgradeable via the webinterface. So when anyone get their hands on the firmware it might give us a few clues.