New binding Resol VBUS

Not really controller but bridge things. Above you wrote that you added the bridge thing manually, right? If then one is discovered automatically you might have two. This is also on the Toto list…

Thanks for the binding,
my ResolDL2 has recognized as bridge an the connected DeltaSol M with the WMZ1 und WMZ2 are found.
Additional on the Vbus is a HKM1 what also recognized and the values from sensors are here.

In the log I can see also a lot of the device not “yet” supported device messages.
But all revived values are valid.

As written above, the warning is due to not using proper datatypes. Anyhow, thanks for testing and reporting successful connection.

I have added your binding and my DeltaSol_BX_Plus controller was discovered and I was able to add Temperature_sensor_1 and Temperature_sensor_2 and it displays the temperature correctly but Temperature_sensor_3 I can’t link as there is no matching item in the list, in the logs it doesn’t mention it either.
Would it be possible to look into that.

Thanks for your work and the progress so far!

@juk do you use the “simple mode” for item linkage? Normally there should be not difference at all between the temperature sensors. If needed I can check with the resol guys who are the authors of the VSF - which is used for the data parsing. Can you try again and send a screenshot of the problem?

@ramak I tried it again in “simple mode” and it is showing all sensors and items - great stuff THANKS!!


I am using this binding with my Deltasol SLT (with ethernet option), but I only get the values of the first reading (then it does not update). I have tried the simple mode with the same results. Not all channels are reading and only detects the first five (temperature sensors).

The log refers to an illegal value problem when trying to configure the 6th channel:

Jan  7 00:29:29 OpenHAB karaf[27808]: Exception in thread "Thread-227" java.lang.IllegalArgumentException: UID segment 'Temperature_VFS/RPS_(S6)' contains invalid characters. The last segment of the channel UID must match the pattern [A-Za-z0-9_-#]*.
Jan  7 00:29:29 OpenHAB karaf[27808]: at org.eclipse.smarthome.core.thing.ChannelUID.validateSegment(
Jan  7 00:29:29 OpenHAB karaf[27808]: at org.eclipse.smarthome.core.thing.UID.<init>(
Jan  7 00:29:29 OpenHAB karaf[27808]: at org.eclipse.smarthome.core.thing.ChannelUID.<init>(
Jan  7 00:29:29 OpenHAB karaf[27808]: at org.openhab.binding.resol.handler.ResolBridgeHandler$1$1.packetReceived(
Jan  7 00:29:29 OpenHAB karaf[27808]: at de.resol.vbus.Connection.emitHeaderReceived(
Jan  7 00:29:29 OpenHAB karaf[27808]: at de.resol.vbus.TcpConnection.runInBackground(
Jan  7 00:29:29 OpenHAB karaf[27808]: at de.resol.vbus.TcpConnection.access$0(
Jan  7 00:29:29 OpenHAB karaf[27808]: at de.resol.vbus.TcpConnection$
Jan  7 00:29:29 OpenHAB karaf[27808]: at

Any clue to solve the problem?


This is clearly a bug. Thanks for the report, I created a ticket for it. The Resol description of the channels have characters which are not allowed as OpenHAB channel names, so I just need to replace them and it should work. Next version will fix it (hopefully).


I tried to improve the type handling a bit (but still WIP) and remove some of the warnings, beside the name fix. You can try the next snapshot from here.

Short feedback, the warning disappeared, log file looks now OK.

1 Like

Same here. Great work!

Not too many flowers please. 1st of all the main work is really done by Daniel Wippermann providing the resol-vbus-java lib and 2nd the code is far from being good enough for a pull request.


Not too many changes for me. Only update values on restart service and some channels go away.

AFAIK, this is the most significant thing that I found in the log:

2018-01-10 20:49:23.692 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.dispose()’ on
’org.openhab.binding.resol.handler.ResolBridgeHandler@191b498’: Could not update status, because callback is missing
2018-01-10 20:49:23.697 [ERROR] [ome.core.thing.internal.ThingManager] - Exception occurred while disposing handler of thing ‘resol:vbuslan:
001e66421b56’: Could not update status, because callback is missing
2018-01-10 21:14:05.125 [ERROR] [org.openhab.binding.resol ] -[org.openhab.binding.resol.internal.ResolHandlerFactory] Cannot register Component


@Fernando_Redondo I have seen this “Could not update status, because callback is missing” on my side also, but as it doesn’t seem to have any effect on the functionality I ignored it so far. Will fix it for a official release.
About the channels: I see. There are three characters in the VSF for channel “Temperatur VFS/RPS (S6)” and I added only the “()”…Find a new jar here.

About the removed channels: Do you miss anything? I have seen “too many” internal channels - e. g. the control packets between the MX and the EM, which do not seem to carry really useful information, or the raw resistor values from the EM, so I decided to filter all but the packets transmitted to the “DFA” (0x10). I can re-add the others if they are of any use, so just let me know - I cannot judge how useful the content is for other controllers and use cases, I try to omptimize for my use case in the hope it will be good also for others, but I am definitely open for your suggestions! Or is it maybe worth to add them as “advanced” channels? - In the trace you should see “Ignoring Data from…” for all the values that I currently filter.

I also had the problem with the values getting stale and just applied the new jar…
Another questions though, is it normal that that I have two “modules” listed - DeltaSol_BX_Plus-Module and DeltaSol_BX_Plus-Regler. I had that since the first jar…

I’ve been testing the new version and I’ve got all channels available like Service Center.
The data Temperatur VFS / RPS (S6) [° C], Volumenstrom V40 [l / min], Volumenstrom VFS (S6) [l / min], Volumenstrom Flowrotor (S7) [l / min] Druck RPS (S6) are not important either. I have not installed these sensors.
Data channels for the relays and the pumps are interesting: The channels appeared but they were not updated: Relay 1-4, PWM A [%] and PWM B [%] . Maybe 'ERROR MASK ’ would be interesting .

There are other data in the station that do not appear in ‘Service Center’:
The total running time, number of boots (starts system).

In any case, the station’s firmware (1.04) is not very developed either and they are advising me to buy the DL2 to have the information remotely

What software version are you using?
I’m using openhabian 1.4 (openhab 2.2.0-1) and only reads the data once, it’s the only resource that is not updated.

I am quite busy these days so I cannot work on this binding. But I really dont understand your case. I expected the missing update to be related to the illegal chars in the channel names. Are now ALL channels visible which are in the vbus packet? And did you try to remove all things and the binding and readd them?

There is some comands from karaf than I hope help.

openhab> bundle:services reports ‘DiscoveryService’ twice.
openhab> bundle:refresh 242 update de values in ‘Paper UI - Control’.
openhab> smarthome:status resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_1
3.6 -> reports the current value.

I paste command output and the log when run ‘bundle:refresh 242’

I was looking too for a diference in timezone, Raspberry and Resol controller are set to the same time but the time read from controller is +1 hour. (when run refresh).

I put de command in cron and I get the updates :slight_smile:

openhab> bundle:list 242
START LEVEL 100 , List Threshold: 50
 ID │ State  │ Lvl │ Version            │ Name
242 │ Active │  80 │ │ Resol Binding
openhab> bundle:services  242

Resol Binding (242) provides:

openhab> bundle:capabilities 242
org.openhab.binding.resol_2.3.0.201801112030 [242] provides:
osgi.wiring.bundle; org.openhab.binding.resol [UNUSED]; org.openhab.binding.resol [UNUSED]
osgi.identity; org.openhab.binding.resol [UNUSED]
osgi.wiring.package; org.openhab.binding.resol 0.0.0 [UNUSED]
osgi.wiring.package; org.openhab.binding.resol.handler 0.0.0 [UNUSED]
service; [org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory] with properties: = org.openhab.binding.resol.internal.ResolHandlerFactory = 271 = 410
   service.bundleid = 242
   service.scope = bundle
   Used by:
      org.eclipse.smarthome.model.thing_0.10.0.b1 [151]
      org.eclipse.smarthome.config.discovery_0.10.0.b1 [104]
      org.eclipse.smarthome.core.thing_0.10.0.b1 [116]
service; [org.eclipse.smarthome.core.thing.type.ChannelTypeProvider] with properties: = org.openhab.binding.resol.internal.providers.ResolChannelTypeProvider = 272 = 411
   service.bundleid = 242
   service.scope = bundle
   Used by:
      org.eclipse.smarthome.core.thing_0.10.0.b1 [116]
service; [org.eclipse.smarthome.config.discovery.DiscoveryService] with properties: = org.openhab.binding.resol.internal.discovery = 273 = 412
   service.bundleid = 242
   service.scope = bundle
   Used by:
      org.eclipse.smarthome.config.discovery_0.10.0.b1 [104]
service; [org.eclipse.smarthome.config.discovery.DiscoveryService] with properties: = 413
   service.bundleid = 242
   service.scope = singleton
   Used by:
      org.eclipse.smarthome.config.discovery_0.10.0.b1 [104]

openhab> smarthome:things list | grep 001e66421b56
resol:vbuslan:001e66421b56 (Type=Bridge, Status=ONLINE, Label=RESOL-LAN-001e66421b56 (, Bridge=null)
resol:device:001e66421b56:DeltaSol_SLT-Regler (Type=Thing, Status=ONLINE, Label=DeltaSol_SLT-Regler, Bridge=resol:vbuslan:001e66421b56)

openhab> smarthome:items list | grep 001e66421b56
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_3 (Type=NumberItem, State=888.8000000000001, Label=Temperature sensor 3, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_2 (Type=NumberItem, State=39.300000000000004, Label=Temperature sensor 2, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_4 (Type=NumberItem, State=888.8000000000001, Label=Temperature sensor 4, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Overpressure (Type=NumberItem, State=0.0, Label=Error: Overpressure, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_1 (Type=NumberItem, State=3.4000000000000004, Label=Temperature sensor 1, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Pump_speed_relay_2 (Type=NumberItem, State=0.0, Label=Pump speed relay 2, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_PWM_A (Type=NumberItem, State=0.0, Label=PWM A, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Pump_speed_relay_4 (Type=NumberItem, State=0.0, Label=Pump speed relay 4, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_5 (Type=NumberItem, State=999.9000000000001, Label=Temperature sensor 5, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Flow_rate_Flowrotor_S7 (Type=NumberItem, State=0.0, Label=Flow rate Flowrotor (S7), Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Flow_rate_VFS_S6 (Type=NumberItem, State=0.0, Label=Flow rate VFS (S6), Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Sensor_line_short_circuited (Type=NumberItem, State=0.0, Label=Error: Sensor line short-circuited, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_System_date (Type=DateTimeItem, State=2018-01-27T09:46:27.000+0100, Label=System date, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Warning_mask (Type=NumberItem, State=0.0, Label=Warning mask, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Real_time_clock (Type=NumberItem, State=0.0, Label=Error: Real-time clock, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Twin_pump (Type=NumberItem, State=0.0, Label=Error: Twin pump, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_PWM_B (Type=NumberItem, State=0.0, Label=PWM B, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Pump_speed_relay_3 (Type=NumberItem, State=0.0, Label=Pump speed relay 3, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Pressure_RPS_S6 (Type=NumberItem, State=99.99000000000001, Label=Pressure RPS (S6), Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Flow_rate_monitoring (Type=NumberItem, State=0.0, Label=Error: Flow rate monitoring, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Pump_speed_relay_1 (Type=NumberItem, State=0.0, Label=Pump speed relay 1, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Sensor_line_broken (Type=NumberItem, State=0.0, Label=Error: Sensor line broken, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Flow_rate_V40 (Type=NumberItem, State=0.0, Label=Flow rate V40, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Data_memory (Type=NumberItem, State=0.0, Label=Error: Data memory, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error__Low_pressure (Type=NumberItem, State=0.0, Label=Error: Low pressure, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Error_mask (Type=NumberItem, State=0.0, Label=Error mask, Category=null)
resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_VFS_RPS_S6 (Type=NumberItem, State=999.9000000000001, Label=Temperature VFS/RPS (S6), Category=null)
openhab> smarthome:status resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_1

openhab> bundle:refresh 242

Log when run -> bundle:refresh 242

==> /var/log/openhab2/openhab.log <==

2018-01-27 08:59:50.610 [ERROR] [org.openhab.binding.resol           ] - [org.openhab.binding.resol.internal.ResolHandlerFactory] Cannot register Component

org.osgi.service.component.ComponentException: The component name 'org.openhab.binding.resol.internal.ResolHandlerFactory' has already been registered by Bundle 242 (org.openhab.binding.resol) as Component of Class org.openhab.binding.resol.internal.ResolHandlerFactory

	at org.apache.felix.scr.impl.ComponentRegistry.checkComponentName( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.BundleComponentActivator.initialize( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.BundleComponentActivator.<init>( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.Activator.loadComponents( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.Activator.access$200( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.scr.impl.Activator$ScrExtension.start( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.utils.extender.AbstractExtender.createExtension( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle( [42:org.apache.felix.scr:2.0.12]

	at org.apache.felix.utils.extender.AbstractExtender.addingBundle( [42:org.apache.felix.scr:2.0.12]

	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding( [?:?]

	at org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding( [?:?]

	at org.osgi.util.tracker.AbstractTracked.trackAdding( [?:?]

	at org.osgi.util.tracker.AbstractTracked.track( [?:?]

	at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged( [?:?]

	at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent( [?:?]

	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent( [?:?]

	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous( [?:?]

	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged( [?:?]

	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent( [?:?]

	at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent( [?:?]

	at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent( [?:?]

	at org.eclipse.osgi.container.Module.publishEvent( [?:?]

	at org.eclipse.osgi.container.Module.start( [?:?]

	at org.eclipse.osgi.framework.util.SecureAction.start( [?:?]

	at org.eclipse.osgi.container.ModuleContainer.start( [?:?]

	at org.eclipse.osgi.container.ModuleContainer.applyDelta( [?:?]

	at org.eclipse.osgi.container.ModuleContainer.resolveAndApply( [?:?]

	at org.eclipse.osgi.container.ModuleContainer.resolve( [?:?]

	at org.eclipse.osgi.container.ModuleContainer.refresh( [?:?]

	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent( [?:?]

	at org.eclipse.osgi.container.ModuleContainer$ContainerWiring.dispatchEvent( [?:?]

	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent( [?:?]

	at org.eclipse.osgi.framework.eventmgr.EventManager$ [?:?]

==> /var/log/openhab2/events.log <==

2018-01-27 08:59:50.875 [hingStatusInfoChangedEvent] - 'resol:vbuslan:001e66421b56' changed from UNINITIALIZED (HANDLER_MISSING_ERROR) to INITIALIZING

2018-01-27 08:59:50.899 [hingStatusInfoChangedEvent] - 'resol:vbuslan:001e66421b56' changed from INITIALIZING to OFFLINE

2018-01-27 08:59:50.911 [hingStatusInfoChangedEvent] - 'resol:device:001e66421b56:DeltaSol_SLT-Regler' changed from UNINITIALIZED (HANDLER_MISSING_ERROR) to INITIALIZING

2018-01-27 08:59:50.922 [hingStatusInfoChangedEvent] - 'resol:device:001e66421b56:DeltaSol_SLT-Regler' changed from INITIALIZING to OFFLINE

2018-01-27 08:59:56.008 [hingStatusInfoChangedEvent] - 'resol:vbuslan:001e66421b56' changed from OFFLINE to ONLINE

2018-01-27 08:59:56.013 [hingStatusInfoChangedEvent] - 'resol:device:001e66421b56:DeltaSol_SLT-Regler' changed from OFFLINE to ONLINE

2018-01-27 08:59:56.483 [vent.ItemStateChangedEvent] - resol_device_001e66421b56_DeltaSol_SLT_Regler_System_date changed from 2018-01-27T09:59:09.000+0100 to 2018-01-27T10:00:01.000+0100

2018-01-27 08:59:56.502 [vent.ItemStateChangedEvent] - resol_device_001e66421b56_DeltaSol_SLT_Regler_Temperature_sensor_1 changed from 3.6 to 3.7