[velux] New OpenHAB2 binding - feedback welcome!

Sorry guys to bother,

May I ask your support in defining the physical layout? I need to understand if the solution with gateway is viable for me or not (as I don’t have any wire from all my 5 velux … as I said, everythings is managed via wireless and remote controllers, one controller for each velux).

thanks for your support, much appreciated

Andrea

Thx @Udo_Hartmann , I had it set for debug, since I couldn´t get the binding to load.
Everything is working now. And the loglevel is back to INFO.

Is there any special reason why I can´t log into the Velux KLF200 web interface. It said it´s beeing occupied by another user (guess thats OpenHab). ? Would I have to stop OpenHab to be able to get into the web interface of the KLF200, or is something wrong?

Guess it just need some patient :slight_smile: Working again.

Hi,
today I have started testing your binding. Works like a charm. Thank you very much!!!
I have only two small problems:

  1. Is it right that there could be only one connection to the klf200 box? It is not possible for me to work on the webinterface when openhab is connected.

  2. Is there any possibility to send a stop command? I could not find any Information about it.
    With a stop command it would be perfect.

Thanks for your effort and your help.

here is my hint:

Ok, that’s right. What about a stop command, is there any possibility?

Thank you!

Not possible with the firmware 0.1.1.0.44.0. The next one is in the queue (but do NOT try to upgrade to 0.2.0.0.71.0 as you’ll loose the networking connectivity on the LAN port).

Hi Günther,
with the new API from Velux, is there any chance to adapt the existing binding to it?
Would be very interesting to handle the Windows with the new posibbilities done by the API.

Have a nice weekend!

Hello Johannes,

the next version of the OH1 binding is ready for review (PR#5690). If you already have

upgraded to the new firmware, you can try it via

https://github.com/gs4711/org.openhab.binding.velux

Just look at the files org.openhab.binding.velux-1.13.0-SNAPSHOT.jar and corresponding README-v1.13.md)

Regards, Guenther

Hi Guenther,

Looks great, thank you for your effort. Why is it a oh1 binding? Can I use it with oh2? What is the difference? Is the last “old” version of your binding, working with the new firmware version?
Question and more question, thank you for your help!

Hi Johannes,

both bindings, the OH1 and the OH2, will be updated for the new protocol.
The OH1 binding is more-or-less ready to use … with the experiences it will
be much easier to integrate the complete stuff into the OH2 binding afterwards.

Regards, Guenther

1 Like

Hi Johannes,
the main difference is the support of generic device settings, i.e. you can use the io-homecontrol devices like normal rollershutters. From the side of bindings - beside the scenes - it will look like:

// Velux Shutters

Rollershutter V_DG_M_W	"Velux DG Window Bathroom [%d]"	{ velux="thing=actuator;channel=serial#01:52:21:3E:26:0C:1B"}
Rollershutter V_DG_M_S	"Velux DG Shutter Bathroom [%d]"{ velux="thing=actuator;channel=serial#01:52:00:21:00:07:00"}

Hi all,

once again I need your help. I’m sorry!

Coming from old velux KLF200 firmware I updated to KLF200-v2.0.0.71.bin last weekend, placed org.openhab.binding.velux-1.13.0-SNAPSHOT.jar into addons folder, cleared all caches,
placed velux.cfg with

bridgeIPAddress=velux
bridgeProtocol=slip
bridgeTCPPort=80
bridgePassword=XXX
timeoutMsecs=2000
retries=6

into services folder, kept velux.things as it was before with

Bridge velux:klf200:home   [ bridgeIPAddress="192.168.0.37", bridgePassword=„XXX“, timeoutMsecs=2000, retries=10 ] {
 Thing   scene   scWindow000    [ sceneName="Window000" ]
 Thing   scene   scWindow007    [ sceneName="Window007" ]
 Thing   scene   scWindow020    [ sceneName="Window020" ]
 Thing   scene   scWindow050    [ sceneName="Window050" ]
 Thing   scene   scWindow080    [ sceneName="Window080" ]
 Thing   scene   scWindow100    [ sceneName="Window100" ]
 Thing   scene   scShutter000    [ sceneName="Shutter000" ]
 Thing   scene   scShutter020    [ sceneName="Shutter020" ]
 Thing   scene   scShutter050    [ sceneName="Shutter050" ]
 Thing   scene   scShutter080    [ sceneName="Shutter080" ]
 Thing   scene   scShutter100    [ sceneName="Shutter100" ]
}

and velux.items to

String  V_FIRMWARE  "Firmware [%s]" { velux="thing=bridge;channel=firmware" }
String  V_STATUS    "Status [%s]"   { velux="thing=bridge;channel=status" }
String  V_CHECK     "Velux Config Check [%s]" { velux="thing=bridge;channel=check" }

and restarted my OpenHAB 2.4.0.M5. But all without any luck. The binding can’t connect to the gateway.

My log shows following lines

2018-11-13 21:39:08.160 [INFO ] [org.openhab.binding.velux           ] - FrameworkEvent INFO - org.openhab.binding.velux
org.osgi.framework.BundleException: The bundle class path entry "lib/gson-2.2.4.jar" could not be found for the bundle "osgi.identity; type="osgi.bundle"; version:Version="1.13.0.201811051916"; osgi.identity="org.openhab.binding.velux""
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassPathEntry(ClasspathManager.java:174) ~[?:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.buildClasspath(ClasspathManager.java:152) ~[?:?]
	at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.<init>(ClasspathManager.java:81) ~[?:?]
	at org.eclipse.osgi.internal.loader.EquinoxClassLoader.<init>(EquinoxClassLoader.java:43) ~[?:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.createClassLoaderPrivledged(BundleLoader.java:316) ~[?:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.getModuleClassLoader(BundleLoader.java:233) ~[?:?]
	at org.eclipse.osgi.internal.loader.BundleLoader.findEntries(BundleLoader.java:819) ~[?:?]
	at org.eclipse.osgi.container.ModuleWiring.findEntries(ModuleWiring.java:289) ~[?:?]
	at org.eclipse.osgi.storage.ManifestLocalization.findResource(ManifestLocalization.java:199) ~[?:?]
	at org.eclipse.osgi.storage.ManifestLocalization.lookupResourceBundle(ManifestLocalization.java:130) ~[?:?]
	at org.eclipse.osgi.storage.ManifestLocalization.getResourceBundle(ManifestLocalization.java:101) ~[?:?]
	at org.eclipse.osgi.storage.ManifestLocalization.getHeaders(ManifestLocalization.java:64) ~[?:?]
	at org.eclipse.osgi.storage.BundleInfo$Generation.getHeaders(BundleInfo.java:125) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.privGetHeaders(EquinoxBundle.java:462) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.getHeaders(EquinoxBundle.java:457) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.getHeaders(EquinoxBundle.java:451) ~[?:?]
	at org.apache.aries.spifly.BaseActivator.getAllHeaders(BaseActivator.java:133) ~[?:?]
	at org.apache.aries.spifly.BaseActivator.addConsumerWeavingData(BaseActivator.java:95) ~[?:?]
	at org.apache.aries.spifly.ConsumerBundleTrackerCustomizer.addingBundle(ConsumerBundleTrackerCustomizer.java:37) ~[?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:469) ~[?:?]
	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:415) ~[?:?]
	at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256) ~[?:?]
	at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:183) ~[?:?]
	at org.osgi.util.tracker.BundleTracker.open(BundleTracker.java:156) ~[?:?]
	at org.apache.aries.spifly.BaseActivator.start(BaseActivator.java:79) ~[?:?]
	at org.apache.aries.spifly.dynamic.DynamicWeavingActivator.start(DynamicWeavingActivator.java:37) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:779) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:772) ~[?:?]
	at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:729) [?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:933) ~[?:?]
	at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309) ~[?:?]
	at org.eclipse.osgi.container.Module.doStart(Module.java:581) ~[?:?]
	at org.eclipse.osgi.container.Module.start(Module.java:449) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1634) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1614) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1585) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1528) ~[?:?]
	at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) ~[?:?]
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) [?:?]
	at     org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340) [?:?]
...
2018-11-13 21:39:24.252 [INFO ] [inding.velux.internal.VeluxActivator] - velux binding has been started.
2018-11-13 21:39:24.369 [INFO ] [.binding.velux.internal.VeluxBinding] - Active items are: [].
2018-11-13 21:39:24.370 [INFO ] [.binding.velux.internal.VeluxBinding] - velux refresh interval set to 15000 milliseconds.
20    18-11-13 21:39:24.374 [INFO ] [.binding.velux.internal.VeluxBinding] - veluxConfig[bridgeProtocol=slip,bridgeIPAddress=velux,bridgeTCPPort=80,bridgePassword=********,timeoutMsecs=2000,retries=6,refreshMsecs=15000,isBulkRetrievalEnabled=true]
    2018-11-13 21:39:24.379 [INFO ] [b.core.service.AbstractActiveService] - velux Refresh Service has been started
    
...

2018-11-13 21:39:39.390 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:39:41.424 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:39:45.426 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:39:53.428 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:40:09.430 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.

...

2018-11-13 21:43:53.446 [INFO ] [ng.velux.bridge.slip.SlipVeluxBridge] - io(): socket I/O failed continuously (6 times).
2018-11-13 21:43:53.447 [WARN ] [ng.velux.bridge.slip.SlipVeluxBridge] - bridgeDirectCommunicate(): method io() raised an error: null.
2018-11-13 21:43:53.447 [WARN ] [.velux.handler.VeluxBridgeHandlerOH1] - velux bridge login sequence failed; expecting bridge is OFFLINE.
2018-11-13 21:43:53.808 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:43:55.811 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:43:59.813 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:44:07.814 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:44:23.816 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:44:55.819 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge     connection.
2018-11-13 21:45:00.642 [INFO ] [smarthome.model.script.opensprinkler] - Rain DETECTED
2018-11-13 21:45:59.822 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:48:07.825 [INFO ] [ng.velux.bridge.slip.SlipVeluxBridge] - io(): socket I/O failed continuously (6 times).
2018-11-13 21:48:07.826 [WARN ] [ng.velux.bridge.slip.SlipVeluxBridge] - bridgeDirectCommunicate(): method io() raised an error: null.
2018-11-13 21:48:07.827 [INFO ] [.velux.handler.VeluxBridgeHandlerOH1] - handleCommandOnChannel(): updating of item V_STATUS (type BRIDGE_STATUS) failed.
2018-11-13 21:48:22.828 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:48:24.831 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:48:28.832 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:48:36.834 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:48:52.836 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:49:24.839 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 21:50:28.842 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.

...

Can you help me with that so that I will get my window and shutter working again?

Regards,
Bert

Hi Bert,

one note about the new protocol: the default bridge port supporting this protocolis 51200.
Pls. change the configuration and try again (the gson.lib errors confuses me … but it should
not influence the slip connection).

Regards, Guenther

Fantastic!

2018-11-13 22:36:45.872 [INFO ] [.binding.velux.internal.VeluxBinding] - veluxConfig[bridgeProtocol=slip,bridgeIPAddress=velux,bridgeTCPPort=51200,bridgePassword=********,timeoutMsecs=2000,retries=6,refreshMsecs=15000,isBulkRetrievalEnabled=true]
2018-11-13 22:38:27.764 [INFO ] [ng.velux.bridge.slip.SlipVeluxBridge] - io(): socket I/O failed continuously (6 times).
2018-11-13 22:38:27.765 [WARN ] [ng.velux.bridge.slip.SlipVeluxBridge] - bridgeDirectCommunicate(): method io() raised an error: null.
2018-11-13 22:38:27.765 [INFO ] [.velux.handler.VeluxBridgeHandlerOH1] - handleCommandOnChannel(): updating of item V_STATUS (type BRIDGE_STATUS) failed.
2018-11-13 22:38:27.767 [INFO ] [g.velux.bridge.slip.io.SSLconnection] - Starting velux bridge connection.
2018-11-13 22:38:34.493 [INFO ] [ab.binding.velux.bridge.slip.SClogin] - velux bridge connection successfully established (login succeeded).
2018-11-13 22:38:40.507 [INFO ] [.velux.handler.VeluxBridgeHandlerOH1] - Found velux scenes:
	Scene "Shutter050" (index 6) with non-silent mode and 0 actions
	Scene "Window000" (index 1) with non-silent mode and 0 actions
	Scene "Window100" (index 0) with non-silent mode and 0 actions
	Scene "Shutter080" (index 5) with non-silent mode and 0 actions
	Scene "Window007" (index 2) with non-silent mode and 0 actions
	Scene "Window050" (index 3) with non-silent mode and 0 actions
	Scene "Window080" (index 10) with non-silent mode and 0 actions
	Scene "Shutter100" (index 4) with non-silent mode and 0 actions
	Scene "Shutter000" (index 8) with non-silent mode and 0 actions
	Scene "Window020" (index 9) with non-silent mode and 0 actions
	Scene "Shutter020" (index 7) with non-silent mode and 0 actions	.
2018-11-13 22:38:42.513 [INFO ] [.velux.handler.VeluxBridgeHandlerOH1] - Found velux actuators:
	Product "Fenster 1" / WINDOW_OPENER (bridgeIndex=1,serial=56:36:13:5A:11:1A:0D,position=F7FF)
	Product "Rollladen 1" / ROLLER_SHUTTER (bridgeIndex=0,serial=56:32:14:5A:11:05:0A,position=F7FF)	.
2018-11-13 22:38:42.513 [INFO ] [.velux.handler.VeluxBridgeHandlerOH1] - velux Bridge is online, now.

Thanks a lot!

Guenther,

perhaps you can change the information on the slip port on GitHub. I took port 80 from there.

May I assist you with gson.lib errors? Perhaps this is because I’m running OpenHAB 2.4 Milestone 5 in a docker environment.

Best regards,
Bert

Couldn’ agree more: Fixed the README-v1.13.md

Hi,
i have installed velux snapshot 2.3.0 and add a thing “Velux KLF200” via paper ui. then i have define the
ip adress in paper ui.

my actually problem is, that the velux device in openhab always switch to offline.

2018-12-02 22:45:16.532 [WARN ] [ome.core.thing.internal.ThingManager] - Initializing handler for thing 'velux:klf200:b158a76a' takes more than 5000ms.

2018-12-02 22:49:26.105 [INFO ] [hab.binding.velux.bridge.VeluxBridge] - io(): socket I/O failed continuously (6 times).

2018-12-02 22:49:26.111 [INFO ] [ing.velux.handler.VeluxBridgeHandler] - bridgeCommunicate(): Exception occurred on accessing http://192.168.0.177:80/api/v1/auth: java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused.

2018-12-02 22:49:26.117 [INFO ] [ing.velux.handler.VeluxBridgeHandler] - Velux veluxBridge login/logout sequence failed; expecting veluxBridge is OFFLINE.

2018-12-02 22:49:26.130 [hingStatusInfoChangedEvent] - 'velux:klf200:b158a76a' changed from INITIALIZING to OFFLINE

Openhab Version 2.3.0
Velux KLF200 connected to LAN

have anyone an idea how i can solve this problem (to set velux online) ?

thanks and best regards
marcel

The KLF200 seems to be unreachable for the binding. What happens if you enter the URL manually within your webbrowser? Will the login web page be displayed? (BTW: you’re running the firmware v1, are you?)