[SOLVED] Global Cache Binding: bug in manual thing configuration

I have the Global Cache binding running successful with multiple manual itachflex ir thing configurations.

However when configuring a serial thing it doesn’t work for 2 way serial thing configurations.

This is my .things configuration line

globalcache:itachFlex:000C1EE0D3BE [ ipAddress=“10.0.1.193”, mapFilename=“A44-serialcodes.map”, activeCable=“FLEX_SERIAL”, eomDelimiter1=“;”, enableTwoWay1=“true”]

When configuring exactly the same through the Paper UI everything works flawlessly. The documentation of the globalcache binding covers manual thing creation at the end but doesn’t mention the parameters for 2 way communication and the end of message delimiter. These I figured out from the json config files when configured though paper ui.

The manually configured Global cache serial thing loads fine shows up correctly in the Paper UI with conrrect parameters and item link. But when sending a command I get this error message

2017-10-22 13:24:25.064 [ERROR] [e.internal.command.CommandSendserial] - Execute ‘sendserial’ failed on thing 000C1EE0D3BE at 10.0.1.193: errorCode=N/A, errorMessage=Timed out waiting on response queue for message

My items are linked to the thing this way.

String TESTA44IN “A44IN” { channel=“globalcache:itachFlex:000C1EE0D3BE:sl-m1#c1” }
String TESTA44UIT “A44UIT” { channel=“globalcache:itachFlex:000C1EE0D3BE:sl-m1#c1-receive” }

Not changing anything about the items definition or anything else of the config but configuring the global cache thing through Paper UI makes it work flawlessly

Therefore my assumption is this is a Global Cache binding bug, unless I’m overlooking something

@rswennen It does sound like a bug. I’ll take a look at it.

@rswennen

One thing… Did you try removing the double quotes from the boolean enableTwoWay1 config parameter. I can see in the jsondb for my flex that booleans are not quoted.

      "configuration": {
        "properties": {
          "ipAddress": "192.168.xx.yy",
          "eomDelimiter1": "%F7",
          "mapFilename": "codes.map",
          "enableTwoWay1": true,
          "activeCable": "FLEX_SERIAL"
        }
      },

Like this.

globalcache:itachFlex:000C1EE0D3BE [ ipAddress=“10.0.1.193”, mapFilename=“A44-serialcodes.map”, activeCable=“FLEX_SERIAL”, eomDelimiter1=";", enableTwoWay1=true]

BTW, thanks for pointing out the miss in the documentation for manual configuration of the two-way serial feature. I’ll fix that once we get this sorted out.

Didn’t try that because it looked like the true in quotes was accepted because the switch was on on when looking in the Paper UI after manual config.

I will try this tonight or in the coming days and keep you posted.

That may not be the issue, but it’s worth a try, as I’m not quite sure how booleans are handled in the manual Thing definition.

The other thing you could do that would be very helpful… If you have the Rest Documentation addon installed (it’s under the Misc category), try putting the below URL in your web browser for the PaperUI thing creation, and for the manual thing creation. This would show us if there’s anything different in the Thing configs between the two methods. Note that you might want to install a JSON beautifier in your browser to help make the JSON more readable. I use JSONView in Chrome.

http://localhost:8080/rest/things/globalcache%3AitachFlex%3A000C1EE0D3BE

Replace localhost with whatever host name you’re using for the host running OH.

@rswennen

Ok, I was able to recreate your behavior with my GC100. I’m pretty certain that if you change

enableTwoWay1="true"

to

enableTwoWay1=true

it will work.

Let me know what happens once you make that change.

Opened an issue about this. I’ll push a fix once it gets resolved. In the meantime, you should be fine if you make the above change to your .things file.

@mhilbush Mark tried it and indeed works like a charm without the quotes. Thanks a lot !!!