-
Notifications
You must be signed in to change notification settings - Fork 53
Description
I've had a lot of problems with this binding in the past, but since we renovated our kitchen and installed all Samsung products - I am making another attempt.
The discovery process from Openhab still doesn't work. I followed the instructions for redirecting the discovery to a PC via curl and portlistener, which worked fine and I was able to confirm that the capabilities I had selected in the smartapp were indeed being exposed by the hub.
Adding the things via Openhab UI created channels that when added as were to Items in config, didn't work. So I ended up configuring everything via .things and .items files manually according to instructions.
And now I'm in a somewhat functional state.. I sporadically get warnings like below during startup,
[WARN ] [rnal.handler.SmartthingsThingHandler] - Attempt to send command to the Smartthings hub for <DEVICE> failed with exception: Total timeout 3000 ms elapsed
And these values never seem to come back unless I restart openhab. So first concrete question:
Q1. Is there a way to modify the timeout, and perhaps retry interval? I'm not sure why it is timing out, I can ping the hub without issue as this happens..
I also get errors like,
[ERROR] [org.jupnp.transport.spi.StreamClient] - Request: HttpRequest[GET /capability HTTP/1.1]@1a207b7 failed java.lang.NullPointerException: Missing SslContextFactory at java.util.Objects.requireNonNull(Objects.java:228) ~[?:1.8.0_222] at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.<init>(SslClientConnectionFactory.java:54) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpClient.newSslClientConnectionFactory(HttpClient.java:1175) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpDestination.newSslClientConnectionFactory(HttpDestination.java:137) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpDestination.<init>(HttpDestination.java:94) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.PoolingHttpDestination.<init>(PoolingHttpDestination.java:25) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.http.HttpDestinationOverHTTP.<init>(HttpDestinationOverHTTP.java:32) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.http.HttpClientTransportOverHTTP.newHttpDestination(HttpClientTransportOverHTTP.java:51) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpClient.destinationFor(HttpClient.java:546) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:579) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:728) ~[bundleFile:9.4.20.v20190813] at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:681) ~[bundleFile:9.4.20.v20190813] at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:155) [bundleFile:?] at org.jupnp.transport.impl.jetty.JettyStreamClientImpl$1.call(JettyStreamClientImpl.java:1) [bundleFile:?] at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:204) [bundleFile:?] at org.jupnp.transport.spi.AbstractStreamClient$RequestWrapper.call(AbstractStreamClient.java:1) [bundleFile:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_222] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
I am in no way sure this is related but as it is preceded by the above warning I have a feeling it is trying to run UPnP discovery over SSL and this is failing..
But then there are some things I'm not quite sure if I understand.. Let's take the Refrigerator for example. It's a side-by-side, so it has three child devices: Refrigerator Cooler, Refrigerator Freezer, and Ice Maker. When I go into smartapp settings, I can see that the "Contact Sensor" capability is exposed from both the parent device Refrigerator, and two of the child devices (Refrigerator Cooler and Refrigerator Freezer).
.things
Bridge smartthings:smartthings:Home [ smartthingsIp="IP", smartthingsPort=PORT ] { Thing contactSensor refrigeratorContactSensor [ smartthingsName="Refrigerator" ] Thing contactSensor coolerContactSensor [ smartthingsName="Refrigerator Cooler" ] Thing contactSensor freezerContactSensor [ smartthingsName="Refrigerator Freezer" ]
.items
Contact refrigeratorContactSensor "Refrigerator door [%s]" { channel="smartthings:contactSensor:Home:refrigeratorContactSensor:contact" } Contact coolerContactSensor "Cooler door [%s]" { channel="smartthings:contactSensor:Home:coolerContactSensor:contact" } Contact freezerContactSensor "Freezer door [%s]" { channel="smartthings:contactSensor:Home:freezerContactSensor:contact" }
.sitemap
Default item=refrigeratorContactSensor Default item=coolerContactSensor Default item=freezerContactSensor
When I open a door, the refrigeratorContactSensor changes, but both child devices' values remain "CLOSED" in Openhab. When looking in Smarttings Developer Tools I can see the attribute changing on the child devices, but I guess not being communicated to Openhab. So I guess this might be the second question,
Q2. Does the binding support child devices properly? The capabilities are obviously exposed in the smartapp, I just can't seem to get them to update properly in Openhab.
Another such example would be the Oven, which also has 2 child devices, each with a doorControl capability. Can't get this to work either.
Moving on, I have a Dishwasher that is also connected to the hub and Developer Tools, but for which it seems no capabilities are being exposed in smartapp.
Q3. Is the Dishwasher thing supported? I followed the link from here "If you find a device that doesn't work follow these instructions to collect the required data so it can be added in a future release." on the binding's Openhab page, but didn't really find what information I should collect.
Two specific capabilities that I see in the Capabilities Reference Documentation, but don't seem to be exposed in the your smartapp are the rapidCooling and rapidFreezing capabilities from the Refrigerator.
Q4. Are they implemented as such? I tried using them as switch:es but this didn't work either.
Finally, a general question:
Q5. Is there a way to read data from devices' states that aren't capabilities as such? For example, many devices have an attribute called versionNumber. Is it possible to read it somehow?
Thanks for your time and efforts!