Drayton Wiser Thermostat Binding

Hi Andrew,

I have tried several times to get the TRV’s to auto-discover, but they just won’t.
If it helps, my TRV’s have firmware 0.10.14 according to the Wiser App plus I only got the whole system earlier this week.

Some of the TRV’s were discovered yesterday in v2.4 but not all.
The rooms appeared just fine in 2.4 and 2.5

Thanks for your time and effort.

edit:
Just spotted this in the openhab.log

2019-02-12 22:34:05.494 [ERROR] [nternal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types ‘[draytonwiser:smart-plug, draytonwiser:heathub, draytonwiser:room, draytonwiser:itrv, draytonwiser:boiler-controller, draytonwiser:hotwater, draytonwiser:roomstat]’ on ‘DraytonWiserDiscoveryService’!
java.lang.NullPointerException: null

Nigel.

OK, I’m going to try installing the binding into a clean installation of 2.5M1 and see what happens.

Edit: 2.5.0M1 seems to discover all my things correctly. Are you using the 2.5.0 snapshot

Edit2: So I could partially reproduce it in the latest snapshot, but a second discover run found the missing TRVs. In my case the controller didn’t respond fully to the first discover request (which was shown in the event log).

Hi Andrew,
I’ve tried both 2.4 snapshot and 2.5 snapshot.
I also built a clean R-Pi with a different SD card based on Debian Stretch Lite and manually built openHAB (v2.4) via openhabian-config (as the first via openhabian img was troublesome and failed several times to install properly).
Result is the same?!

The log spits out the same error message.
All rooms are found with no problem - just no iTRV’s (and I have 9 of them).

full error:

2019-02-13 15:30:54.482 [ERROR] [nternal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types '[draytonwiser:smart-plug, draytonwiser:heathub, draytonwiser:room, draytonwiser:itrv, draytonwiser:boiler-controller, draytonwiser:hotwater, draytonwiser:roomstat]' on 'DraytonWiserDiscoveryService'!

java.lang.NullPointerException: null

	at org.openhab.binding.draytonwiser.internal.discovery.DraytonWiserDiscoveryService.startScan(DraytonWiserDiscoveryService.java:74) ~[?:?]

	at org.eclipse.smarthome.config.discovery.AbstractDiscoveryService.startScan(AbstractDiscoveryService.java:211) ~[98:org.eclipse.smarthome.config.discovery:0.10.0.oh240]

	at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:381) [98:org.eclipse.smarthome.config.discovery:0.10.0.oh240]

	at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScans(DiscoveryServiceRegistryImpl.java:357) [98:org.eclipse.smarthome.config.discovery:0.10.0.oh240]

	at org.eclipse.smarthome.config.discovery.internal.DiscoveryServiceRegistryImpl.startScan(DiscoveryServiceRegistryImpl.java:215) [98:org.eclipse.smarthome.config.discovery:0.10.0.oh240]

	at org.eclipse.smarthome.io.rest.core.internal.discovery.DiscoveryResource.scan(DiscoveryResource.java:97) [120:org.eclipse.smarthome.io.rest.core:0.10.0.oh240]

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]

	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]

	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [171:org.glassfish.jersey.core.jersey-common:2.22.2]

	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [172:org.glassfish.jersey.core.jersey-server:2.22.2]

	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]

	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]

	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]

	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]

	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]

	at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [20:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]

	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [82:org.eclipse.jetty.security:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) [85:org.eclipse.jetty.servlet:9.4.11.v20180605]

	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [186:org.ops4j.pax.web.pax-web-jetty:7.2.3]

	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.Server.handle(Server.java:531) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [84:org.eclipse.jetty.server:9.4.11.v20180605]

	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [75:org.eclipse.jetty.io:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680) [87:org.eclipse.jetty.util:9.4.11.v20180605]

	at java.lang.Thread.run(Thread.java:748) [?:?]

Nigel.

OK, that’s pretty weird. Thanks for that full error message, it helps to have the line number in.
It looks like it is falling over when processing the rooms, which is even more odd as you say they are actually discovered correctly.

Is it possible for you to grab the full output from /data/domain and send it to me in a DM so I can see if there is anything odd with the json that’s being returned?

Rough instructions here: Drayton Wiser Thermostat Binding

Got Postman and tried a GET with various parameters but always get a 401 returned.
Tried
http://ip_address/data/domain/SECRET – got a 401
http://SECRET@ip_address/data/domain – got a 401

What is the correct format?

Thanks for your time and effort and sorry for the troubles.

edit:
Log entry from when I first triggered the discovery and the rooms were found, then the errors start…

2019-02-13 13:11:36.855 [INFO ] [arthome.ui.paper.internal.PaperUIApp] - Started Paper UI at /paperui
2019-02-13 13:14:39.361 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:heathub:WiserHeat02E833' to inbox.
2019-02-13 13:16:25.506 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:boiler-controller:WiserHeat02E833:controller' to inbox.
2019-02-13 13:16:25.525 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:bathroom' to inbox.
2019-02-13 13:16:25.537 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:shed' to inbox.
2019-02-13 13:16:25.552 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:bedroom1' to inbox.
2019-02-13 13:16:25.563 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:bedroom2' to inbox.
2019-02-13 13:16:25.572 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:kitchendiner' to inbox.
2019-02-13 13:16:25.582 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:office' to inbox.
2019-02-13 13:16:25.593 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:porch' to inbox.
2019-02-13 13:16:25.603 [INFO ] [g.discovery.internal.PersistentInbox] - Added new thing 'draytonwiser:room:WiserHeat02E833:lounge' to inbox.
2019-02-13 13:16:25.607 [ERROR] [nternal.DiscoveryServiceRegistryImpl] - Cannot trigger scan for thing types '[draytonwiser:smart-plug, draytonwiser:heathub, draytonwiser:room, draytonwiser:itrv, draytonwiser:boiler-controller, draytonwiser:hotwater, draytonwiser:roomstat]' on 'DraytonWiserDiscoveryService'!
java.lang.NullPointerException: null

Nigel

Almost right, so send a get request to http://ipaddress/data/domain/
But in the header tab in postman add a new header with a name of secret and a value of the actual secret.
I can’t grab a screenshot as I’m on my phone, but if you have trouble I’ll try and get hold of one later.

Thanks Andrew,
You got incoming mail…

I used the postman Google app and that worked (although deprecated) whereas the Windows installable/executable version didn’t seem to work?

Nigel.

Thanks,

That was really helpful. I was able to replicate the bug using your /data/domain/ response, and I’ve managed to fix it. An updated jar file should be available in a few hours once the automated build has completed.
The problem was that I had accounted for setups where there was no room thermostat (or more accurately the response from the controller when there are no room stats configured), this is now handled correctly, along with coping with any other items which might be missing.

Ah, maybe I should have mentioned I now have no room stat(s).
I originally did as I bought the multizone kit 1.
Then, my additional iTRV’s came so I added them all and then removed the room stat - probably explains why I got some of it running early on.
I now have the whole place multi-zoned with nothing but iTRV’s.

Nigel.

Well, the new build has finished, so if you want to give it another go it should work now (on 2.4 or 2.5)

I’ve submitted the binding to the eclipse iot marketplace while the PR is still in review.

The entry is here in the marketplace: https://marketplace.eclipse.org/content/drayton-wiser-binding

If you’ve got the eclipse-iot-marketplace addon installed in openHAB, the Drayton Wiser Binding should appear in the list of available bindings :slight_smile:

Whoa - that did it !
Worked fine for me in OH 2.5.0.M1

Many thanks Andrew, much appreciated.

edit:
I installed the Add-ons / MISC / Eclipse IoT Marketplace and indeed the new Drayton binding is available to install in Bindings - much easier than by the share or similar means.

Kind Regards,
Nigel.

1 Like

Great. I’ve no idea how updates are handled with this addon, i.e. if I push an update to the marketplace, does openHAB automatically realise and notify you? I guess we’ll find out when I make some more changes.

Hi Andrew.

I’ve just setup a fresh install of 2.5M1 and installed your binding from the eclipse marketplace. Although the DHCP lease time error is gone I am still seeing a strange error when I change the Away mode.

2019-02-15 16:26:00.948 [ome.event.ItemCommandEvent] - Item 'AwayModeState' received command ON
2019-02-15 16:26:00.955 [nt.ItemStatePredictedEvent] - AwayModeState predicted to become ON
2019-02-15 16:26:00.977 [vent.ItemStateChangedEvent] - AwayModeState changed from OFF to ON
2019-02-15 16:26:01.037 [hingStatusInfoChangedEvent] - 'draytonwiser:heathub:HeatHub' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR)
2019-02-15 16:26:01.044 [hingStatusInfoChangedEvent] - 'draytonwiser:boiler-controller:HeatHub:controller' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-02-15 16:26:01.049 [hingStatusInfoChangedEvent] - 'draytonwiser:room:HeatHub:livingroom' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-02-15 16:26:01.055 [hingStatusInfoChangedEvent] - 'draytonwiser:roomstat:HeatHub:livingroomstat' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)
2019-02-15 16:26:01.094 [hingStatusInfoChangedEvent] - 'draytonwiser:heathub:HeatHub' changed from OFFLINE (COMMUNICATION_ERROR) to ONLINE
2019-02-15 16:26:01.102 [hingStatusInfoChangedEvent] - 'draytonwiser:boiler-controller:HeatHub:controller' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2019-02-15 16:26:01.112 [hingStatusInfoChangedEvent] - 'draytonwiser:room:HeatHub:livingroom' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE
2019-02-15 16:26:01.114 [hingStatusInfoChangedEvent] - 'draytonwiser:roomstat:HeatHub:livingroomstat' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

The Away mode does change successfully but it seems to cause OpenHAB to think it has lost connection to the heathub.

Thanks for all your work on this.

Yeah, I think there are 2 things in play here.

  1. The heathub’s internal webserver is a bit flaky and just stops responding to requests every so often.
  2. The binding is probably a bit too sensitive to changes in state.

I just used OH to flip Away mode and got this (it did work but had a wobble in the process and the phone Wiser app reflects away mode as active).
It flipped back in OH with a similar wobble but it did work.

2019-02-15 20:20:43.480 [ome.event.ItemCommandEvent] - Item 'Controller_AwayModeActive' received command ON

2019-02-15 20:20:43.489 [nt.ItemStatePredictedEvent] - Controller_AwayModeActive predicted to become ON

2019-02-15 20:20:43.499 [vent.ItemStateChangedEvent] - Controller_AwayModeActive changed from OFF to ON

2019-02-15 20:20:43.533 [hingStatusInfoChangedEvent] - 'draytonwiser:heathub:WiserHeatxxx' changed from ONLINE to OFFLINE (COMMUNICATION_ERROR)

2019-02-15 20:20:43.540 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bathroom' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.545 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:shed' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.557 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.562 [hingStatusInfoChangedEvent] - 'draytonwiser:boiler-controller:WiserHeatxxx:controller' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.572 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.585 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:lounge' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.588 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.591 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.595 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.598 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.606 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bedroom1' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.610 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.615 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:office' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.620 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.623 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.629 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:porch' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.636 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bedroom2' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.640 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:kitchendiner' changed from ONLINE to OFFLINE (BRIDGE_OFFLINE)

2019-02-15 20:20:43.651 [hingStatusInfoChangedEvent] - 'draytonwiser:heathub:WiserHeatxxx' changed from OFFLINE (COMMUNICATION_ERROR) to ONLINE

2019-02-15 20:20:43.685 [hingStatusInfoChangedEvent] - 'draytonwiser:boiler-controller:WiserHeatxxx:controller' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.690 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bathroom' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.694 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:shed' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.697 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.699 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.702 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.705 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.709 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:lounge' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.713 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.718 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:kitchendiner' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.723 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.725 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:office' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.727 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.731 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.735 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bedroom1' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.740 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:bedroom2' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.743 [hingStatusInfoChangedEvent] - 'draytonwiser:itrv:WiserHeatxxx:086BD7FFFExxxxxx' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.745 [hingStatusInfoChangedEvent] - 'draytonwiser:room:WiserHeatxxx:porch' changed from OFFLINE (BRIDGE_OFFLINE) to ONLINE

2019-02-15 20:20:43.818 [vent.ItemStateChangedEvent] - Bathroom_SetPoint changed from 23.0 °C to 16.0 °C

2019-02-15 20:20:43.824 [vent.ItemStateChangedEvent] - Bathroom_CurrentHeatDemand changed from 48 % to 0 %

2019-02-15 20:20:43.829 [vent.ItemStateChangedEvent] - Bathroom_CurrentlyRequestingHeat changed from ON to OFF

2019-02-15 20:20:43.873 [vent.ItemStateChangedEvent] - Shed_SetPoint changed from 19.0 °C to 16.0 °C

2019-02-15 20:20:43.893 [vent.ItemStateChangedEvent] - Shed_CurrentHeatDemand changed from 20 % to 0 %

2019-02-15 20:20:43.929 [vent.ItemStateChangedEvent] - BathroomTRV_SetPoint changed from 23.0 °C to 16.0 °C

2019-02-15 20:20:43.958 [vent.ItemStateChangedEvent] - ShedTRV_SetPoint changed from 19.0 °C to 16.0 °C

2019-02-15 20:20:43.968 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 21.6 °C to 21.9 °C

2019-02-15 20:20:43.971 [vent.ItemStateChangedEvent] - LoungeTRV_CurrentHeatDemand changed from 89 % to 45 %

2019-02-15 20:20:43.983 [vent.ItemStateChangedEvent] - LoungeTRV_SignalStrength changed from 3 to 2

2019-02-15 20:20:44.009 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 21.9 °C to 21.6 °C

2019-02-15 20:20:44.020 [vent.ItemStateChangedEvent] - LoungeTRV_CurrentHeatDemand changed from 45 % to 89 %

2019-02-15 20:20:44.033 [vent.ItemStateChangedEvent] - LoungeTRV_SignalStrength changed from 2 to 3

2019-02-15 20:20:44.050 [vent.ItemStateChangedEvent] - Lounge_SetPoint changed from 22.0 °C to 16.0 °C

2019-02-15 20:20:44.095 [vent.ItemStateChangedEvent] - KitchenDiner_SetPoint changed from 21.5 °C to 16.0 °C

2019-02-15 20:20:44.108 [vent.ItemStateChangedEvent] - Office_SetPoint changed from 22.0 °C to 16.0 °C

2019-02-15 20:20:44.110 [vent.ItemStateChangedEvent] - Bedroom1_SetPoint changed from 21.5 °C to 16.0 °C

2019-02-15 20:20:44.113 [vent.ItemStateChangedEvent] - Bedroom2_SetPoint changed from 21.5 °C to 16.0 °C

2019-02-15 20:20:44.115 [vent.ItemStateChangedEvent] - Porch_SetPoint changed from 20.5 °C to 16.0 °C

2019-02-15 20:21:33.318 [vent.ItemStateChangedEvent] - Controller_Channel1HeatDemand changed from 48 % to 0 %

2019-02-15 20:21:33.324 [vent.ItemStateChangedEvent] - Controller_Channel1RequestingHeat changed from ON to OFF

Nigel

@devonian11 & @gforce2010 I’ve just pushed another update that will significantly improve the flakiness and stop the logs being polluted with lots of ONLINE->OFFLINE->ONLINE transitions.
Basically the binding waits until it has hit 3 successive potential error states before reporting the heathub as being offline. While running overnight, with a 1 minute update interval, I only had the offline message once.

Updated mine and now I am getting a ton of messages in the log about ‘Lounge TRV changed status’ - I do have 2 TRV’s assosciated with ‘Lounge’.

edit
I uninstalled and re-installed via marketplace add-on

2019-02-18 10:06:55.050 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:55.069 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:55.215 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:55.218 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:55.443 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:55.447 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:55.733 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:55.746 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:55.923 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:55.927 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:56.114 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:56.119 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:56.391 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:56.403 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:56.749 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:56.758 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:56.916 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:56.922 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:57.167 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:57.172 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:57.605 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:57.612 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:57.843 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:57.847 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:58.152 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:58.157 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:58.627 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:58.662 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:58.833 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:58.845 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:59.121 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:59.125 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:59.367 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:59.372 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:59.603 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:59.625 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:06:59.904 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:06:59.908 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:00.274 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:07:00.279 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:00.545 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:07:00.577 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:00.680 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:07:00.683 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:00.800 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:07:00.811 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:00.984 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C
2019-02-18 10:07:00.992 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C
2019-02-18 10:07:01.107 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C

edit
Went back to the 2.5 snapshot and all is as normal

2019-02-18 10:19:39.647 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C

2019-02-18 10:20:39.852 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C

2019-02-18 10:20:39.985 [vent.ItemStateChangedEvent] - KitchenDiner_Temperature changed from 22.1 °C to 22.0 °C

2019-02-18 10:20:40.029 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C

2019-02-18 10:20:40.137 [vent.ItemStateChangedEvent] - KitchenDinerTRV_Temperature changed from 22.1 °C to 22.0 °C

2019-02-18 10:21:40.174 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.2 °C to 22.1 °C

2019-02-18 10:21:40.229 [vent.ItemStateChangedEvent] - KitchenDiner_Temperature changed from 22.0 °C to 22.1 °C

2019-02-18 10:21:40.309 [vent.ItemStateChangedEvent] - LoungeTRV_Temperature changed from 22.1 °C to 22.2 °C

2019-02-18 10:21:40.325 [vent.ItemStateChangedEvent] - Bedroom1TRV_Temperature changed from 20.4 °C to 20.3 °C

2019-02-18 10:21:40.341 [vent.ItemStateChangedEvent] - Bedroom1_Temperature changed from 20.4 °C to 20.3 °C

2019-02-18 10:21:40.361 [vent.ItemStateChangedEvent] - KitchenDinerTRV_Temperature changed from 22.0 °C to 22.1 °C

Hmm, the snapshot from the pull request and the version in the IoT marketplace should be identical as they pull the jar file from the same place.

Sorry, to be clear, I meant from the 2.5 snapshot I had downloaded from last week and stored locally and added back to the /usr/share/addons and uninstalled the marketplace version