diff --git a/bundles/org.openhab.binding.qbus/README.md b/bundles/org.openhab.binding.qbus/README.md index 50b5bedccdf19..4cdd90fea1482 100644 --- a/bundles/org.openhab.binding.qbus/README.md +++ b/bundles/org.openhab.binding.qbus/README.md @@ -1,10 +1,8 @@ # Qbus Binding -![Qbus Logo](doc/Logo.JPG) - This binding for [Qbus](https://qbus.be) communicates with all controllers of the Qbus home automation system. -We also host a site which contains a [manual](https://manualoh.schockaert.tk/) where you can find lots of information to set up openHAB with Qbus client and server (for the moment only in Dutch). +We also host a site which contains a [manual](https://iot.qbus.be/) where you can find lots of information to set up openHAB with Qbus client and server (for the moment only in Dutch). The controllers can not communicate directly with openHAB, therefore we developed a client/server application which you must install prior to enable this binding. More information can be found here: @@ -49,16 +47,13 @@ Bridge qbus:bridge:CTD001122 [ addr="localhost", sn="001122", port=8447, serverC } ``` - - | Property | Default | Required | Description | -| ------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ | +|---------------|-----------|----------|--------------------------------------------------------------------------------------------------------------------------------------| | `addr` | localhost | YES | The ip address of the machine where the Qbus Server runs | | `sn` | | YES | The serial number of your controller | | `port` | 8447 | YES | The communication port of the client/server | -| `serverCheck` | 10 | NO | Refresh time - After x minutes there will be a check if server is still running and if client is still connected. If not - reconnect | +| `serverCheck` | 10 | NO | Refresh time - After x minutes there will be a check if server is still running and if client is still connected. If not - reconnect | - ## Things configuration @@ -81,30 +76,30 @@ Bridge qbus:bridge:CTD001122 [ addr="localhost", sn="001122", port=8447, serverC ``` Bridge qbus:bridge:CTD001122 [ addr="localhost", sn="001122", port=8447, serverCheck=10 ] { - dimmer 1 "ToonzaalLED" [ dimmerId=100 ] - onOff 30 "Toonzaal230V" [ bistabielId=76 ] - thermostat 50 "Service" [ thermostatId=99 ] - scene 70 "Disco" [ sceneId=36 ] - co2 100 "Productie" [ co2Id=26 ] - rollershutter 120 "Roller1" [ rolId=268 ] - rollershutter_slats 121 "Roller2" [ rolId=264 ] + dimmer 1 "ToonzaalLED" [ dimmerId=100 ] + onOff 30 "Toonzaal230V" [ bistabielId=76 ] + thermostat 50 "Service" [ thermostatId=99 ] + scene 70 "Disco" [ sceneId=36 ] + co2 100 "Productie" [ co2Id=26 ] + rollershutter 120 "Roller1" [ rolId=268 ] + rollershutter_slats 121 "Roller2" [ rolId=264 ] } ``` ### Items ``` -Dimmer ToonzaalLED [ "Lighting" ] {channel="qbus:dimmer:CTD007841:1:brightness"} -Switch Toonzaal230V {channel="qbus:onOff:CTD007841:30:switch"} -Number:Temperature ServiceSP"[%.1f %unit%]" (GroepThermostaten) {channel="qbus:thermostat:CTD007841:50:setpoint"} -Number:Temperature ServiceCT"[%.1f %unit%]" (GroepThermostaten) {channel="qbus:thermostat:CTD007841:50:measured"} -Number ServiceMode (GroepThermostaten) {channel="qbus:thermostat:CTD007841:50:mode",ihc="0x33c311" , autoupdate="true"} -Switch Disco {channel="qbus:scene:CTD007841:36:scene"} -Number ProductieCO2 {channel="qbus:co2:CTD007841:100:co2"} -Rollershutter Roller1 {channel="qbus:rollershutter:CTD007841:120:rollershutter"} -Rollershutter Roller2 {channel="qbus:rollershutter_slats:CTD007841:121:rollershutter"} -Dimmer Roller2_slats {channel="qbus:rollershutter_slats:CTD007841:121:slats"} +Dimmer ToonzaalLED ["Lighting"] {channel="qbus:dimmer:CTD001122:1:brightness"} +Switch Toonzaal230V ["Switchable"] {channel="qbus:onOff:CTD001122:30:switch"} +Group gThermostaat ["HVAC"] +Number:Temperature ServiceSP"[%.1f %unit%]" (gThermostaat) ["Setpoint"] {channel="qbus:thermostat:CTD001122:50:setpoint"} +Number:Temperature ServiceCT"[%.1f %unit%]" (gThermostaat) ["Measurement"] {channel="qbus:thermostat:CTD001122:50:measured"} +Number ServiceMode (gThermostaat) ["Control"] {channel="qbus:thermostat:CTD001122:50:mode",ihc="0x33c311" , autoupdate="true"} +Switch Disco ["Switchable"] {channel="qbus:scene:CTD001122:36:scene"} +Number ProductieCO2 ["CO2"] {channel="qbus:co2:CTD001122:100:co2"} +Rollershutter Roller1 ["Blinds"] {channel="qbus:rollershutter:CTD001122:120:rollershutter"} +Rollershutter Roller2 ["Blinds"] {channel="qbus:rollershutter_slats:CTD001122:121:rollershutter"} +Dimmer Roller2_slats ["Blinds"] {channel="qbus:rollershutter_slats:CTD001122:121:slats"} ``` This is the link to the [Qbus forum](https://qbusforum.be). This forum is mainly in dutch and you can find a lot of information about the pre testings of this binding and offers a way to communicate with other users. - diff --git a/bundles/org.openhab.binding.qbus/doc/Logo.JPG b/bundles/org.openhab.binding.qbus/doc/Logo.JPG deleted file mode 100644 index 93f10e4de88ff..0000000000000 Binary files a/bundles/org.openhab.binding.qbus/doc/Logo.JPG and /dev/null differ diff --git a/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/QbusBridgeHandler.java b/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/QbusBridgeHandler.java index 2f625669ae348..015889bc78c02 100644 --- a/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/QbusBridgeHandler.java +++ b/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/QbusBridgeHandler.java @@ -56,15 +56,15 @@ public QbusBridgeHandler(Bridge Bridge) { */ @Override public void initialize() { - Integer serverCheck = getServerCheck(); - readConfig(); - createCommunicationObject(); + Integer serverCheck = getServerCheck(); if (serverCheck != null) { this.setupRefreshTimer(serverCheck); } + + createCommunicationObject(); } /** @@ -176,6 +176,7 @@ private void setupRefreshTimer(int refreshInterval) { } refreshTimer = scheduler.scheduleWithFixedDelay(() -> { + logger.debug("Timer started"); QbusCommunication comm = getCommunication(); Integer serverCheck = getServerCheck(); diff --git a/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/protocol/QbusCommunication.java b/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/protocol/QbusCommunication.java index e07032d2ebd6a..a6ba211f2e7c5 100644 --- a/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/protocol/QbusCommunication.java +++ b/bundles/org.openhab.binding.qbus/src/main/java/org/openhab/binding/qbus/internal/protocol/QbusCommunication.java @@ -121,12 +121,26 @@ public synchronized void startCommunication() throws IOException, InterruptedExc InetAddress addr = InetAddress.getByName(handler.getAddress()); Integer port = handler.getPort(); - if (port != null) { - Socket socket = new Socket(addr, port); + if (port == null) { + handler.bridgeOffline(ThingStatusDetail.CONFIGURATION_ERROR, "Please set a correct port."); + return; + } + + if (addr == null) { + handler.bridgeOffline(ThingStatusDetail.CONFIGURATION_ERROR, "Please set the hostname of the Qbus server."); + return; + } + + Socket socket = null; + + try { + socket = new Socket(addr, port); qSocket = socket; qOut = new PrintWriter(socket.getOutputStream(), true); qIn = new BufferedReader(new InputStreamReader(socket.getInputStream())); - } else { + } catch (IOException e) { + String msg = e.getMessage(); + handler.bridgeOffline(ThingStatusDetail.COMMUNICATION_ERROR, "No communication with Qbus Server. " + msg); return; } @@ -338,7 +352,6 @@ private void readMessage(String qMessage) { logger.trace("Not acted on unsupported json {} : {}", qMessage, msg); return; } - QbusBridgeHandler handler = bridgeCallBack; if (handler != null) {