Skip to content
This repository has been archived by the owner on May 17, 2021. It is now read-only.

[tacmi] TA CMI Binding - NPE when 4th parameter not set #4515

Closed
Sineos opened this issue Jul 4, 2016 · 9 comments
Closed

[tacmi] TA CMI Binding - NPE when 4th parameter not set #4515

Sineos opened this issue Jul 4, 2016 · 9 comments
Labels

Comments

@Sineos
Copy link

Sineos commented Jul 4, 2016

My Environment

  • openHAB runtime v1.8.3
  • Windows 10
  • JRE 1.8.0_91
  • CMI v1.22.1
  • UVR16x2 v1.18

Issue

Generally the binding is working, I'm able to receive analog values and digital values, even toggling digital inputs works. Still the log frequently shows following line:
2016-07-03 19:37:28.918 [WARN ] [.b.tacmi.internal.TACmiBinding] - Error in execute: java.net.SocketTimeoutException, Message: Receive timed out

This is my CoE Setting

Also the UVR is showing a improperly configured Node 2 in the CAN topology

Issue 2

I'm an absolute beginner with OH so please bear with me, if I'm completely stupid but I can't manage to get the CMI playing nicely with MQTT / NodeRed. This is what I got:

Item:

Switch Brenner "Test Digital" { tacmi="50#d#1",
                                mqtt="
                                    <[mosquitto:uvr/digital/test:command:MAP(mqttToOnOff.map)],                                 
                                    >[mosquitto:uvr/digital/test/bla:state:ON:1],
                                    >[mosquitto:uvr/digital/test/bla:state:OFF:0]
                                    "}

mqttToOnOff.map

0=OFF
OFF=0
1=ON
ON=1

Switching the digital IO manually to ON in the UVR16x2 results in:
2016-07-03 21:34:58.155 [INFO ] [runtime.busevents ] - Brenner state updated to ON
also "1" is published to uvr/digital/test/bla. The same is true for OFF, so I guess this is the expected behavior.

Injecting a "1" from NodeRed to the MQTT Topic uvr/digital/test results in:
2016-07-03 21:39:05.801 [INFO ] [runtime.busevents ] - Brenner received command ON
and the UVR's digital input toggles.

My expected behavior would have been:

  • The state change is published to uvr/digital/test/bla
@watou
Copy link
Contributor

watou commented Jul 4, 2016

Could you turn on TRACE level debugging for the TA CMI binding, like:

<logger name="org.openhab.binding.tacmi" level="TRACE"/>

in your logback.xml file? This should add verbose logging for when the binding receives a command.

@Sineos
Copy link
Author

Sineos commented Jul 5, 2016

Here is the log extract:

Launching the openHAB runtime...
osgi> 2016-07-05 08:26:53.249 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.8.3).
2016-07-05 08:26:53.915 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
2016-07-05 08:26:53.980 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
2016-07-05 08:26:53.984 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2016-07-05 08:26:53.987 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto'
2016-07-05 08:26:55.091 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
2016-07-05 08:27:03.672 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
2016-07-05 08:27:04.293 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /classicui/openhab.app
2016-07-05 08:27:07.584 [DEBUG] [.i.TACmiGenericBindingProvider] - Processing binding configuration: '50#d#1'
SLF4J: Failed toString() invocation on an object of type [org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider$TACmiBindingConfig]
java.lang.NullPointerException
at org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider$TACmiBindingConfig.toString(TACmiGenericBindingProvider.java:120)
at org.slf4j.helpers.MessageFormatter.safeObjectAppend(MessageFormatter.java:304)
at org.slf4j.helpers.MessageFormatter.deeplyAppendParameter(MessageFormatter.java:276)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java:230)
at ch.qos.logback.classic.spi.LoggingEvent.(LoggingEvent.java:114)
at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:447)
at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:421)
at ch.qos.logback.classic.Logger.debug(Logger.java:514)
at org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider.processBindingConfiguration(TACmiGenericBindingProvider.java:97)
at org.openhab.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:348)
at org.openhab.model.item.internal.GenericItemProvider.dispatchBindingsPerType(GenericItemProvider.java:309)
at org.openhab.model.item.internal.GenericItemProvider.addBindingConfigReader(GenericItemProvider.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:376)
at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:444)
at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:416)
at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:334)
at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:260)
at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
2016-07-05 08:27:07.755 [DEBUG] [.i.TACmiGenericBindingProvider] - Adding Binding configuration: [FAILED toString()]
2016-07-05 08:27:07.762 [INFO ] [.service.AbstractActiveService] - TACmi Refresh Service has been started
2016-07-05 08:27:07.765 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-05 08:27:17.770 [WARN ] [.b.tacmi.internal.TACmiBinding] - Error in execute: java.net.SocketTimeoutException, Message: Receive timed out
2016-07-05 08:27:17.786 [TRACE] [.b.tacmi.internal.TACmiBinding] - TACmi execute() finished
2016-07-05 08:27:17.805 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-05 08:27:26.665 [INFO ] [runtime.busevents ] - Brenner received command OFF
2016-07-05 08:27:26.674 [DEBUG] [.b.tacmi.internal.TACmiBinding] - internalReceiveCommand(Brenner,OFF) is called!
2016-07-05 08:27:26.680 [TRACE] [.b.tacmi.internal.TACmiBinding] - Type: d, portNumber: 1, command: OFF
2016-07-05 08:27:26.684 [DEBUG] [tacmi.internal.message.Message] - DigitalMessage: canNode: 0, podNumber: 0
2016-07-05 08:27:27.547 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing digital message
2016-07-05 08:27:27.557 [DEBUG] [.b.tacmi.internal.TACmiBinding] - CAN: 50 POD: 0 Value1: 0 Value2: 0 Value3: 0 Value4: 0 MeasureType1 0 MeasureType2 0 MeasureType3 0 MeasureType4 0
2016-07-05 08:27:27.573 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing item: Brenner
2016-07-05 08:27:27.579 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Updating item Brenner with state OFF
2016-07-05 08:27:27.583 [TRACE] [.b.tacmi.internal.TACmiBinding] - TACmi execute() finished
2016-07-05 08:27:27.583 [INFO ] [runtime.busevents ] - Brenner state updated to OFF
2016-07-05 08:27:27.596 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-05 08:27:31.590 [INFO ] [runtime.busevents ] - Brenner received command ON
2016-07-05 08:27:31.592 [DEBUG] [.b.tacmi.internal.TACmiBinding] - internalReceiveCommand(Brenner,ON) is called!
2016-07-05 08:27:31.595 [TRACE] [.b.tacmi.internal.TACmiBinding] - Type: d, portNumber: 1, command: ON
2016-07-05 08:27:31.598 [DEBUG] [tacmi.internal.message.Message] - DigitalMessage: canNode: 0, podNumber: 0
2016-07-05 08:27:37.599 [WARN ] [.b.tacmi.internal.TACmiBinding] - Error in execute: java.net.SocketTimeoutException, Message: Receive timed out
2016-07-05 08:27:37.613 [TRACE] [.b.tacmi.internal.TACmiBinding] - TACmi execute() finished
2016-07-05 08:27:37.632 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-05 08:27:40.479 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing digital message
2016-07-05 08:27:40.489 [DEBUG] [.b.tacmi.internal.TACmiBinding] - CAN: 50 POD: 0 Value1: 1 Value2: 0 Value3: 0 Value4: 0 MeasureType1 0 MeasureType2 0 MeasureType3 0 MeasureType4 0
2016-07-05 08:27:40.505 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing item: Brenner
2016-07-05 08:27:40.509 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Updating item Brenner with state ON
2016-07-05 08:27:40.513 [TRACE] [.b.tacmi.internal.TACmiBinding] - TACmi execute() finished
2016-07-05 08:27:40.513 [INFO ] [runtime.busevents ] - Brenner state updated to ON
2016-07-05 08:27:40.526 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!

@watou
Copy link
Contributor

watou commented Jul 5, 2016

Thank you, @Sineos. It looks like the 1.8.3 TACmi binding has a bug here, where the code assumes you've specified a fourth part of the binding config string, the measureType. If this analysis is correct, then you can either add a fourth part to the binding config string (it looks like #none, #temperature or #seconds), or try the 1.9 version of the binding here.

@Sineos
Copy link
Author

Sineos commented Jul 5, 2016

Thank you for your support. I currently have no access to my system but I will report back once back home.

@Sineos
Copy link
Author

Sineos commented Jul 7, 2016

Your analysis is correct, it does in fact expect a fourth config item. Also org.openhab.binding.tacmi-1.9.0-SNAPSHOT.jar seems to fix the Error in execute: java.net.SocketTimeoutException.

The issue with the fourth config item is still present in the snapshot:

Launching the openHAB runtime...
osgi> 2016-07-07 23:35:08.860 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.8.3).
2016-07-07 23:35:09.762 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
2016-07-07 23:35:10.033 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
2016-07-07 23:35:10.039 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2016-07-07 23:35:10.042 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto'
2016-07-07 23:35:11.414 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
2016-07-07 23:35:19.417 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
2016-07-07 23:35:20.291 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /classicui/openhab.app
2016-07-07 23:35:22.997 [DEBUG] [.i.TACmiGenericBindingProvider] - Processing binding configuration: '50#d#1'
SLF4J: Failed toString() invocation on an object of type [org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider$TACmiBindingConfig]
java.lang.NullPointerException
        at org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider$TACmiBindingConfig.toString(TACmiGenericBindingProvider.java:122)
        at org.slf4j.helpers.MessageFormatter.safeObjectAppend(MessageFormatter.java:304)
        at org.slf4j.helpers.MessageFormatter.deeplyAppendParameter(MessageFormatter.java:276)
        at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java:230)
        at ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:114)
        at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:447)
        at ch.qos.logback.classic.Logger.filterAndLog_1(Logger.java:421)
        at ch.qos.logback.classic.Logger.debug(Logger.java:514)
        at org.openhab.binding.tacmi.internal.TACmiGenericBindingProvider.processBindingConfiguration(TACmiGenericBindingProvider.java:92)
        at org.openhab.model.item.internal.GenericItemProvider.internalDispatchBindings(GenericItemProvider.java:348)
        at org.openhab.model.item.internal.GenericItemProvider.dispatchBindingsPerType(GenericItemProvider.java:309)
        at org.openhab.model.item.internal.GenericItemProvider.addBindingConfigReader(GenericItemProvider.java:106)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:376)
        at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:444)
        at org.eclipse.equinox.internal.ds.InstanceProcess.dynamicBind(InstanceProcess.java:416)
        at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:334)
        at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222)
        at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130)
        at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433)
        at org.eclipse.equinox.internal.ds.InstanceProcess.registerService(InstanceProcess.java:536)
        at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:260)
        at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473)
        at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217)
        at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816)
        at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783)
        at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)
2016-07-07 23:35:23.192 [DEBUG] [.i.TACmiGenericBindingProvider] - Adding Binding configuration: [FAILED toString()]
2016-07-07 23:35:23.201 [INFO ] [.service.AbstractActiveService] - TACmi Refresh Service has been started
2016-07-07 23:35:23.204 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-07 23:35:37.996 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing analog message
2016-07-07 23:35:37.999 [DEBUG] [.b.tacmi.internal.TACmiBinding] - CAN: 50 POD: 2 Value1: 241 Value2: 0 Value3: 0 Value4: 0 MeasureType1 0 MeasureType2 0 MeasureType3 0 MeasureType4 0
2016-07-07 23:35:38.004 [DEBUG] [.b.tacmi.internal.TACmiBinding] - Processing item: Brenner
2016-07-07 23:35:38.007 [DEBUG] [.b.tacmi.internal.TACmiBinding] - CAN Node does not match
2016-07-07 23:35:38.010 [TRACE] [.b.tacmi.internal.TACmiBinding] - TACmi execute() finished
2016-07-07 23:35:38.022 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-07 23:35:42.038 [DEBUG] [.b.tacmi.internal.TACmiBinding] - internalReceiveCommand(Brenner,ON) is called!
2016-07-07 23:35:42.041 [TRACE] [.b.tacmi.internal.TACmiBinding] - Type: d, portNumber: 1, command: ON
2016-07-07 23:35:42.043 [DEBUG] [tacmi.internal.message.Message] - DigitalMessage: canNode: 0, podNumber: 0
2016-07-07 23:35:42.047 [INFO ] [runtime.busevents             ] - Brenner received command ON

With the fourth config item added:

Launching the openHAB runtime...
osgi> 2016-07-07 23:42:35.202 [INFO ] [.o.core.internal.CoreActivator] - openHAB runtime has been started (v1.8.3).
2016-07-07 23:42:36.083 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - mDNS service has been started
2016-07-07 23:42:36.281 [INFO ] [o.o.i.s.i.DiscoveryServiceImpl] - Service Discovery initialization completed.
2016-07-07 23:42:36.287 [INFO ] [.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
2016-07-07 23:42:36.290 [INFO ] [o.i.t.m.i.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto'
2016-07-07 23:42:37.781 [INFO ] [penhab.io.rest.RESTApplication] - Started REST API at /rest
2016-07-07 23:42:45.716 [INFO ] [c.internal.ModelRepositoryImpl] - Loading model 'test.items'
2016-07-07 23:42:46.544 [INFO ] [.o.u.w.i.servlet.WebAppServlet] - Started Classic UI at /classicui/openhab.app
2016-07-07 23:42:49.260 [DEBUG] [.i.TACmiGenericBindingProvider] - Processing binding configuration: '50#d#1#none'
2016-07-07 23:42:49.264 [DEBUG] [.i.TACmiGenericBindingProvider] - Adding Binding configuration: TACmiBindingConfig [canNode=50, portType=d, portNumber=1, measure=0]
2016-07-07 23:42:49.272 [INFO ] [.service.AbstractActiveService] - TACmi Refresh Service has been started
2016-07-07 23:42:49.275 [TRACE] [.b.tacmi.internal.TACmiBinding] - execute() method is called!
2016-07-07 23:43:50.456 [INFO ] [runtime.busevents             ] - Brenner received command OFF
2016-07-07 23:43:50.464 [DEBUG] [.b.tacmi.internal.TACmiBinding] - internalReceiveCommand(Brenner,OFF) is called!
2016-07-07 23:43:50.479 [TRACE] [.b.tacmi.internal.TACmiBinding] - Type: d, portNumber: 1, command: OFF
2016-07-07 23:43:50.494 [DEBUG] [tacmi.internal.message.Message] - DigitalMessage: canNode: 0, podNumber: 0
2016-07-07 23:44:01.558 [INFO ] [runtime.busevents             ] - Brenner received command ON
2016-07-07 23:44:01.560 [DEBUG] [.b.tacmi.internal.TACmiBinding] - internalReceiveCommand(Brenner,ON) is called!
2016-07-07 23:44:01.563 [TRACE] [.b.tacmi.internal.TACmiBinding] - Type: d, portNumber: 1, command: ON
2016-07-07 23:44:01.567 [DEBUG] [tacmi.internal.message.Message] - DigitalMessage: canNode: 0, podNumber: 0

Knowing this, it is not a real issue anymore. Thanks a lot

@watou watou added the bug label Jul 7, 2016
@watou
Copy link
Contributor

watou commented Jul 7, 2016

@Sineos thanks for reporting this bug, and that it is still present in the 1.9 snapshot. @Wolfgang1966, would you be able to take a look at fixing this?

@watou watou changed the title TA CMI Binding - time out [tacmi] TA CMI Binding - NPE when 4th parameter not set Jul 7, 2016
@Wolfgang1966
Copy link
Contributor

Good morning everybody,

@Sineos, please find attached a new version of the binding, which should fix the NPE when using three parameters. Would you please be so kind and test it?

By the way, I'm glad to read that somebody except me uses the TA-CMI binding. :-)

org.openhab.binding.tacmi-1.9.0-SNAPSHOT.jar.zip

@Sineos
Copy link
Author

Sineos commented Jul 8, 2016

@Wolfgang1966 actually your CMI binding made me dig into OH in the first place. I wanted to integrate my UVR into NodeRed and was totally frustrated with this $%&§ CoE interface. So many thanks for providing this binding.

I have tested your latest snapshot and it works like intended. Again thanks a lot for this fast and dedicated support.

@Wolfgang1966
Copy link
Contributor

Actually the binding was started by @twendt, I just did some extensions lately.

@watou: I will create a PR for the fix.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants