From 5523565edb03a73de8a3832a7a26645086396188 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 1 Jun 2017 15:28:38 +0200 Subject: [PATCH 01/52] initial contribution of the KNX Basic binding Also-by: Kai Kreuzer Also-by: Karel Goderis Signed-off-by: Simon Kaufmann --- .../org.openhab.binding.knx/.classpath | 10 + .../binding/org.openhab.binding.knx/.project | 33 + .../ESH-INF/binding/binding.xml | 11 + .../ESH-INF/thing/basic.xml | 454 +++++++++ .../ESH-INF/thing/ip.xml | 101 ++ .../ESH-INF/thing/serial.xml | 55 + .../META-INF/MANIFEST.MF | 59 ++ .../OSGI-INF/KNXCoreTypeMapper.xml | 17 + .../OSGI-INF/KNXHandlerFactory.xml | 20 + .../binding/org.openhab.binding.knx/README.md | 174 ++++ .../org.openhab.binding.knx/about.html | 69 ++ .../org.openhab.binding.knx/build.properties | 10 + .../lib/calimero-core-2.3-sources.jar | Bin 0 -> 594081 bytes .../lib/calimero-core-2.3.jar | Bin 0 -> 463335 bytes .../lib/calimero-device-2.3-sources.jar | Bin 0 -> 61624 bytes .../lib/calimero-device-2.3.jar | Bin 0 -> 60307 bytes .../lib/calimero-rxtx-2.3-sources.jar | Bin 0 -> 11326 bytes .../lib/calimero-rxtx-2.3.jar | Bin 0 -> 11920 bytes .../binding/org.openhab.binding.knx/pom.xml | 24 + .../binding/knx/GroupAddressListener.java | 29 + .../knx/IndividualAddressListener.java | 28 + .../binding/knx/KNXBindingConstants.java | 103 ++ .../binding/knx/KNXBridgeHandlerTracker.java | 11 + .../openhab/binding/knx/KNXBusListener.java | 32 + .../openhab/binding/knx/KNXTypeMapper.java | 48 + .../openhab/binding/knx/TelegramListener.java | 58 ++ .../knx/handler/IPBridgeThingHandler.java | 119 +++ .../knx/handler/KNXBasicThingHandler.java | 682 +++++++++++++ .../handler/KNXBridgeBaseThingHandler.java | 757 ++++++++++++++ .../knx/handler/SerialBridgeThingHandler.java | 72 ++ .../binding/knx/handler/TypeItemMap.java | 66 ++ .../internal/channel/KNXChannelSelector.java | 52 + .../knx/internal/channel/KNXChannelType.java | 109 ++ .../knx/internal/channel/TypeContact.java | 41 + .../knx/internal/channel/TypeCurrent.java | 35 + .../knx/internal/channel/TypeDateTime.java | 41 + .../knx/internal/channel/TypeDimmer.java | 94 ++ .../knx/internal/channel/TypeEnergy.java | 42 + .../knx/internal/channel/TypeNumber.java | 41 + .../internal/channel/TypeOperatingHours.java | 35 + .../internal/channel/TypeRollershutter.java | 98 ++ .../knx/internal/channel/TypeSetpoint.java | 41 + .../internal/channel/TypeStatusSwitch.java | 41 + .../knx/internal/channel/TypeString.java | 41 + .../knx/internal/channel/TypeSwitch.java | 41 + .../knx/internal/channel/TypeWallButton.java | 46 + .../knx/internal/dpt/KNXCoreTypeMapper.java | 957 ++++++++++++++++++ .../internal/factory/KNXHandlerFactory.java | 173 ++++ .../factory/KNXThreadPoolFactory.java | 94 ++ .../knx/internal/handler/BasicConfig.java | 34 + .../internal/handler/BridgeConfiguration.java | 54 + .../knx/internal/handler/DeviceConstants.java | 43 + .../knx/internal/handler/Firmware.java | 44 + .../knx/internal/handler/LoadState.java | 44 + .../knx/internal/handler/Manufacturer.java | 338 +++++++ .../knx/internal/handler/RetryDatapoint.java | 74 ++ .../knx/internal/logging/LogAdapter.java | 68 ++ addons/binding/pom.xml | 1 + 58 files changed, 5764 insertions(+) create mode 100644 addons/binding/org.openhab.binding.knx/.classpath create mode 100644 addons/binding/org.openhab.binding.knx/.project create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml create mode 100644 addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF create mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml create mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml create mode 100644 addons/binding/org.openhab.binding.knx/README.md create mode 100644 addons/binding/org.openhab.binding.knx/about.html create mode 100644 addons/binding/org.openhab.binding.knx/build.properties create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3-sources.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/pom.xml create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java diff --git a/addons/binding/org.openhab.binding.knx/.classpath b/addons/binding/org.openhab.binding.knx/.classpath new file mode 100644 index 0000000000000..bdd4d348b8599 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx/.project b/addons/binding/org.openhab.binding.knx/.project new file mode 100644 index 0000000000000..5bbc692d5ffe0 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/.project @@ -0,0 +1,33 @@ + + + org.openhab.binding.knx + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.pde.ds.core.builder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml new file mode 100644 index 0000000000000..5919a57d4090c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml @@ -0,0 +1,11 @@ + + + + KNX Binding + This is the binding for KNX + Kai Kreuzer / Karel Goderis + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml new file mode 100644 index 0000000000000..7d58baf79cc82 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml @@ -0,0 +1,454 @@ + + + + + + + + + + + + An addressable basic KNX actor + + + + + The individual address in x.y.z notation + false + + + + Read out the device parameters and address/communication object tables + true + false + + + + Interval between attempts to contact the device, in seconds + true + 60 + + + + + + Switch + + A channel to control a simple DPT 1.001 switch that reports back its status + + + + The group address in x/y/z notation to toggle the switch + true + + + + The group address in x/y/z notation to read the switch status + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Switch + + A channel to control a simple DPT 1.001 switch that reports back its status + + + + The group address in x/y/z notation to toggle the switch + true + + + + The group address in x/y/z notation to read the switch status + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Number + + A channel representing an energy consumption readout + Energy + + + + The group address in x/y/z notation to read the energy consumption + true + + + + Unit used to denote the energy consumption (Wh or kWh) + false + Wh + + + + Flag to indicate if the energy group address should be read at startup + true + false + + + + Interval between attempts to read the energy group address on the bus, in seconds + true + 0 + + + + + + Number + + A channel representing a current readout + + + + The group address in x/y/z notation to read the current + true + + + + Flag to indicate if the current group address should be read at startup + true + false + + + + Interval between attempts to read the current group address on the bus, in seconds + true + 0 + + + + + + Number + + A channel representing an operating hours readout + + + + The group address in x/y/z notation to read the operating hours + true + + + + Flag to indicate if the operating hours group address should be read at startup + true + false + + + + Interval between attempts to read the operating hours group address on the bus, in seconds + true + 0 + + + + + + Dimmer + + A channel to control a dimmer + + + + The group address in x/y/z notation to toggle the dimmer on or off + false + + + + The group address in x/y/z notation to read the actual status of the dimmer + false + + + + The group address in x/y/z notation to set the absolute position of the dimmer + false + + + + The group address in x/y/z notation to read the actual position of the dimmer + false + + + + The group address in x/y/z notation to increase or decrease the dimmer + false + + + + Flag to indicate if the status group addresses should be read at startup + true + false + + + + Interval between attempts to read the status group addresses on the bus, in seconds + true + 0 + + + + + + Rollershutter + + A channel to control a rollershutter + + + + The group address in x/y/z notation to move the shutter in the DOWN or UP direction + false + + + + The group address in x/y/z notation to read actual direction the shutter is moving + false + + + + The group address in x/y/z notation to start (MOVE) or STOP shutter movement + false + + + + The group address in x/y/z notation to read the motion status of the shutters + false + + + + The group address in x/y/z notation to set the absolute position of the shutter, in % + false + + + + The group address in x/y/z notation to read the absolute position of the shutter + false + + + + Flag to indicate if the status group addresses should be read at startup + true + false + + + + Interval between attempts to read the status group addresses on the bus, in seconds + true + 0 + + + + + + Number + + A channel to control the setpoint of a thermostat + + + + The group address in x/y/z notation to set the thermostat setpoint + true + + + + The group address in x/y/z notation to read the current thermostat setpoint + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Number + + A channel to manage a generic Group Addresses with a DPT compatible with Number Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + String + + A channel to manage a generic Group Addresses with a DPT compatible with String Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + DateTime + + A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Contact + + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Switch + + A channel to manage a generic Group Addresses with a DPT compatible with Switch Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml new file mode 100644 index 0000000000000..2602383266193 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -0,0 +1,101 @@ + + + + + + + This Bridge is for IP based KNX gateways + + + + + + + + + + The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER + true + + + + + + + + Network address of the KNX/IP gateway + false + network-address + + + Port number of the KNX/IP gateway + false + + 3671 + + + + Network address of the local host to be used to set up the connection to the KNX/IP gateway + network-address + false + + + + The group address for identification of this KNX/IP gateway within the KNX bus + true + 0.0.0 + + + + Set to "true" when having network address translation between this server and the gateway + false + true + + + + Time in milliseconds of how long should be paused between two read requests to the bus during initialization + true + 50 + + + + Seconds to wait for a response from the KNX bus + true + 10 + + + + Limits the read retries while initialization from the KNX bus + true + 3 + + + + Seconds between connection retries when KNX link has been lost, 0 means never retry + true + 0 + + + + Enable or disable automatic Individual Address discovery + true + true + + + + KNX Project File (knxproj) to parse automatically add to the system + false + + + + + + Number + + The number of errors that occurred on the KNX bus since the start of the binding, during the last 5 minutes + + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml new file mode 100644 index 0000000000000..91053f8d026b4 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml @@ -0,0 +1,55 @@ + + + + + + + This Bridge is for the serial KNX gateway running on the openHAB host + + + + The serial port to use for connecting to the KNX bus + true + + + + Time in milliseconds of how long should be paused between two read requests to the bus during initialization + true + 50 + + + + Seconds to wait for a response from the KNX bus + true + 10 + + + + Limits the read retries while initialization from the KNX bus + true + 3 + + + + Seconds between connect retries when KNX link has been lost, 0 means never retry + true + 0 + + + + Enable or disable automatic Individual Address discovery + true + true + + + + KNX Project File (knxproj) to parse and add to the Things managed by this Bridge + false + + + + + diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000..e9349d07a60b9 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -0,0 +1,59 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KNX Binding +Bundle-SymbolicName: org.openhab.binding.knx;singleton:=true +Bundle-Vendor: openHAB +Bundle-Version: 2.1.0.qualifier +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Import-Package: com.google.common.base, + com.google.common.collect, + gnu.io;resolution:=optional, + org.apache.commons.collections, + org.apache.commons.io, + org.apache.commons.lang, + org.eclipse.smarthome.config.core, + org.eclipse.smarthome.config.discovery, + org.eclipse.smarthome.core.autoupdate, + org.eclipse.smarthome.core.common, + org.eclipse.smarthome.core.common.registry, + org.eclipse.smarthome.core.i18n, + org.eclipse.smarthome.core.items, + org.eclipse.smarthome.core.library.items, + org.eclipse.smarthome.core.library.types, + org.eclipse.smarthome.core.service, + org.eclipse.smarthome.core.thing, + org.eclipse.smarthome.core.thing.binding, + org.eclipse.smarthome.core.thing.binding.builder, + org.eclipse.smarthome.core.thing.link, + org.eclipse.smarthome.core.thing.type, + org.eclipse.smarthome.core.thing.util, + org.eclipse.smarthome.core.types, + org.eclipse.smarthome.model.core, + org.osgi.framework, + org.osgi.service.cm, + org.slf4j +Service-Component: OSGI-INF/*.xml +Export-Package: org.openhab.binding.knx, + org.openhab.binding.knx.handler, + tuwien.auto.calimero, + tuwien.auto.calimero.buffer, + tuwien.auto.calimero.buffer.cache, + tuwien.auto.calimero.cemi, + tuwien.auto.calimero.datapoint, + tuwien.auto.calimero.device, + tuwien.auto.calimero.dptxlator, + tuwien.auto.calimero.exception, + tuwien.auto.calimero.knxnetip, + tuwien.auto.calimero.knxnetip.servicetype, + tuwien.auto.calimero.knxnetip.util, + tuwien.auto.calimero.link, + tuwien.auto.calimero.link.medium, + tuwien.auto.calimero.log, + tuwien.auto.calimero.mgmt, + tuwien.auto.calimero.process, + tuwien.auto.calimero.xml, + tuwien.auto.calimero.xml.def +Bundle-ClassPath: lib/calimero-rxtx-2.3.jar, + lib/calimero-core-2.3.jar, + lib/calimero-device-2.3.jar, + . diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml new file mode 100644 index 0000000000000..7f6b59b5a352c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml new file mode 100644 index 0000000000000..9ff29f8a3c7bf --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md new file mode 100644 index 0000000000000..c9908cf0272b6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -0,0 +1,174 @@ + +# KNX Binding + +The openHAB KNX binding allows to connect to [KNX Home Automation](http://www.knx.org/) installations. Switching lights on and off, activating your roller shutters or changing room temperatures are only some examples. + +To access your KNX bus you either need an KNX IP gateway (like e.g. the [Gira KNX IP Router](http://www.gira.com/en/gebaeudetechnik/systeme/knx-eib_system/knx-produkte/systemgeraete/knx-ip-router.html)) or a PC running [KNXD](https://github.com/knxd/knxd) (free open source component that enables communication with the KNX bus), which is the successor of the no longer maintained [EIBD](http://www.auto.tuwien.ac.at/~mkoegler/index.php/eibd). + +## Supported Things + +The KNX binding supports two kinds of Bridges, and two kinds of Things to access actors on the KNX bus. There is an *ip* bridge to connect to KNX IP Gateways, and a *serial* bridge for connection over a serial port to a host-attached gateway. The configuration of the two kinds of bridges is very similar (see below). + +With respect to accessing actors on the KNX bus, one has different options: + +1. Let the KNX binding automatically parse ETS5 generated knxproj files, and define Things automatically based on what is stored in the knxproj file. This will generate a complete set of KNX Thing and Channels 100% in line with what is defined through ETS5. + +2. use a *generic* Thing to represent a physical actor on the bus. In this case, a number of Channels like *switch*, *dimmer*,... can be used to group together one or more Group Addresses that make up the functionality of the given Channel + +The KNX binding also sports an autodiscovery feature. The discovery feature will scan the KNX bus for Individual Addresses it sees flying by, and will create a *generic* Thing for each actor it sees. However, because of the dynamic nature of channels (see below), no channels will be added to this Thing. There is experimental code in the binding to read-out the configuration tables of the actor over the bus. Beware, this is not the same as parsing the knxproj file mentioned here above. + +## Binding Configuration + +The binding itself does not require any special configuration. + +## Bridge Configuration + +### IP Gateway + +The IP Gateway is the most commonly used way to connect to the KNX bus. At its base, the *ip* bridge accepts the following configuration parameters: + +|Name|Required|Description|Default value| +|----|--------|-----------|-------------| +|ipConnectionType|Y|The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER|| +|ipAddress|N|Network address of the KNX/IP gateway|Not required if ipConnectionType is ROUTER| +|portNumber|N|Port number of the KNX/IP gateway|Not required if ipConnectionType is ROUTER; 3671| +|localIp|N|Network address of the local host to be used to set up the connection to the KNX/IP gateway|| +|localSourceAddr|N|The group address for identification of this KNX/IP gateway within the KNX bus|0.0.0| +|readingPause|N|Time in milliseconds of how long should be paused between two read requests to the bus during initialization|50| +|responseTimeout|N|Timeout in seconds to wait for a response from the KNX bus|10| +|readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| +|autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| +|enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| +|knxProj|N|KNX Project File (knxproj) to parse and add to the Things managed by this Bridge|| +|useNAT|Y|Whether there is network address translation between the server and the gateway|false| + +### Serial Gateway + +The *serial* bridge accepts the following configuration parameters: + +|Name|Required|Description|Default value| +|----|--------|-----------|-------------| +|serialPort|Y|The serial port to use for connecting to the KNX bus|| +|readingPause|N|Time in milliseconds of how long should be paused between two read requests to the bus during initialization|50| +|responseTimeout|N|Timeout in seconds to wait for a response from the KNX bus|10| +|readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| +|autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| +|enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| +|knxProj|N|KNX Project File (knxproj) to parse and add to the Things managed by this Bridge|| + +## Thing Configuration + +### *generic* Things + +*generic* Things are placeholders to identify Individual Addresses / actors on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actor is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or either the whole bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actor in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. + +|Name|Required|Description|Default value| +|----|--------|-----------|-------------| +|address|N|The individual address in x.y.z notation|Required if *fetch* is set to true| +|fetch|N|Read out the device parameters and address/communication object tables|false| + +### Things provided to knxproj parsing + +If a *knxProj* file is defined in the configuration of the Bridge, then the KNX binding will parse that ETS5 configuration file. For each Individual Address defined in the ETS5 file, a *generic* Thing will be created and provided to the runtime. + +In order to enable automatic parsing of the knxproj files provided to the runtime, the entry + +``` +org.openhab.binding.knx.folder:knx=knxproj +``` + +has to be added to *services.cfg* in the etc folder. In the *conf* folder a subdirectory *knx* should be created, and the knxproj files, as exported by the ETS5 application, can be directly placed in that folder + +## Channels + +The Bridges support the following channels: + +| Channel Type ID | Item Type | Description | +|-----------------|--------------|--------------| +| errorsall|Number|The number of errors that occurred on the KNX bus since the start of the binding| +| errors5min|Number|The number of errors that occurred on the KNX bus during the last 5 minutes| + +### *generic* Thing Channels of Things defined by the end-user + +Different kinds of Channels are defined and can be used to group together Group Addresses. All Channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) + +For specific configurations reference is made to the *generic.xml* ESH-INF file of the source distribution. For example, the *statusswitch* Channel type defines two configuration parameters: *switchGA*, the group address in x/y/z notation to toggle the switch, and *statusGA*, the group address in x/y/z notation to read the switch status. Since it is about a switch, the DPT does not have to be defined, e.g. it is supposed to be 1.001. For example, the *number* Channel type is used to define Channels to read/write ordinary Numbers. + +``` +Thing generic someactor { + Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] + Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] +} +``` + +### *generic* Thing Channels of Things derived from the knxproj file + +The ETS5 parser contained in the Binding will automatically create a *generic* Channel for each Group Address that is used, either for reading or writing, for every *generic* Thing that it discovered in the knxproj file. The Type of the Channel will automatically be set to an Item Type that is compatible with the Datapoint type (DPT) that is defined in the knxproj file. In addition, the *read* parameter will be set to true, and the *interval* parameter will be set to 3600 seconds. The *generic* Channel type is specifically used by the parser, and can not be manually defined through the .things DSL files. + +The *generic* Thing will be named x_y_z, and the Channels will be equally named x_y_z based on the Individual Address and Group Address respectively + +As a result, entries similar to the ones here below will be found in the openHAB logs: + +``` +Found KNX master data with version '459' +Found KNX hardware description for 'PKC-GROUP Oyj' +Found KNX product 'Gateway between Ventilation unit and EIB' by 'PKC-GROUP Oyj' +Found KNX hardware description for 'Elsner Elektronik GmbH' +... +Found KNX product 'KNX TH-UP basic' by 'Elsner Elektronik GmbH' +Found KNX product 'KNX TH-UP basic' by 'Elsner Elektronik GmbH' +Found KNX product 'JAL-0810D.01 Shutter Actuator 8-fold, 8TE,24VDC,8A' by 'MDT technologies' +Found KNX product 'JAL-0410.01 Shutter Actuator 4-fold, 4TE, 230VAC, 10A' by 'MDT technologies' +Found KNX product 'JAL-0410D.01 Shutter Actuator 4-fold,4TE,24VDC,8A' by 'MDT technologies' +... +Added a Thing knx:generic:ip1:1_1_67 for an actor of type Presence detector - brightness sensor UP 258/E11 made by Siemens +Added the Channel knx:generic:ip1:1_1_67:7_1_23 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Stop') +Added the Channel knx:generic:ip1:1_1_67:7_1_22 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Start') +Added the Channel knx:generic:ip1:1_1_67:7_1_21 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Status') +Added the Channel knx:generic:ip1:1_1_67:7_1_27 (Type Number, DPT 9.004, true/true, 'TechnicalFacilities-Server-Brightness') +Added the Channel knx:generic:ip1:1_1_67:7_1_26 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Stop') +Added the Channel knx:generic:ip1:1_1_67:7_1_25 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Start') +Added the Channel knx:generic:ip1:1_1_67:7_1_24 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Status') +``` + +## Full Example + +demo.Things: + +``` +Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.166", ipConnectionType="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1,localSourceAddr="0.0.0", knxProj="Export 20161222.knxproj"] { + Thing generic someactor { + Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] + Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] + } +} +``` + +demo.items: + +[Manually defined] +``` +Switch someSwitchItem "Manually Defined Switch" { channel="knx:generic:ip1:someactor:someswitch" } +``` + +[knxproj parsing] +``` +Number WellnessWifiCurrent "Wellness - Wifi - Current [%.0f mA]" (gWellness,gOutlets,gCurrent,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_28" } +Number WellnessWifiEnergy "Wellness - Wifi - Energy [%.0f Wh]" (gWellness,gOutlets,gEnergy,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_29" } +Number WellnessWifiOperatingHours "Wellness - Wifi - Operating Hours [%.1f h]" (gWellness,gOutlets,gOperatingHours,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_27" } +Switch WellnessWifiSwitch "Wellness - Wifi - Switch" (gWellness,gOutlets,gSwitch,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_25", channel="knx:generic:ip1:1_4_103:2_6_26" } +``` + +## Supported Datapoint Types + +The KNX binding supports a limited set of Datapoint types (DPTs). If your thing configuration contains a DPT that is not supported by the KNX binding, openHAB 1.4.0 and later will throw an exception during startup ("DPT n.nnn is not supported by the KNX binding"). + +To get an overview of the supported DPTs, it's best to look into the source code of the KNX binding and the library it depends on. The DPTs for the binding are defined in [KNXCoreTypeMapper](https://github.com/openhab/openhab/blob/master/bundles/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java). The constants (and their mapping to DPTs) are defined in the library [calimero](https://github.com/calimero-project/calimero/tree/master/src/tuwien/auto/calimero/dptxlator). + +## KNX Logging + +Since version 1.5.0 of this binding, it is possible to capture log events from calimero. These log events contain detailed information from the KNX bus (what is written to the bus, what gets read from the bus, ...) + +To enable this logging, the following line has to be added to `logback.xml`: + + diff --git a/addons/binding/org.openhab.binding.knx/about.html b/addons/binding/org.openhab.binding.knx/about.html new file mode 100644 index 0000000000000..953079a44e102 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/about.html @@ -0,0 +1,69 @@ + + + + +About + + +

About This Content

+ +

April 11, 2015

+

License

+ +

The openHAB community makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at http://www.eclipse.org/legal/epl-v10.html. +For purposes of the EPL, "Program" will mean the Content.

+ +

If you did not receive this Content directly from the openHAB community, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at openhab.org.

+ + +

Third Party Content

+

The Content includes items that have been sourced from third parties as set out below. If you + did not receive this Content directly from the openHAB community, the following is provided + for informational purposes only, and you should look to the Redistributor's license for + terms and conditions of use.

+

+ Calimero 2 - A library for KNX network access

+ Calimero 2 is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Calimero 2 is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Calimero 2; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Linking this library statically or dynamically with other modules is + making a combined work based on this library. Thus, the terms and + conditions of the GNU General Public License cover the whole + combination. + + As a special exception, the copyright holders of this library give you + permission to link this library with independent modules to produce an + executable, regardless of the license terms of these independent + modules, and to copy and distribute the resulting executable under terms + of your choice, provided that you also meet, for each linked independent + module, the terms and conditions of the license of that module. An + independent module is a module which is not derived from or based on + this library. If you modify this library, you may extend this exception + to your version of the library, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from your + version. +

+ + + + diff --git a/addons/binding/org.openhab.binding.knx/build.properties b/addons/binding/org.openhab.binding.knx/build.properties new file mode 100644 index 0000000000000..9446405e34e57 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/build.properties @@ -0,0 +1,10 @@ +source.. = src/main/java/ +output.. = target/classes +bin.includes = META-INF/,\ + .,\ + OSGI-INF/,\ + ESH-INF/,\ + lib/calimero-core-2.3.jar,\ + lib/calimero-device-2.3.jar,\ + lib/calimero-rxtx-2.3.jar + diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..6fa0038983ade9cf729624a2076bc094326b4d27 GIT binary patch literal 594081 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븟Ulzkny}HjOSl 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%0DH{bxEfs8m-m;|>#D@!(+;u1{K~D(KODmK8-y% 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�Wcp_ukkSLo5BT#t% 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%0Av%Yab*glU0swbJWjr?DKH(2S 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ΝWZ+pVGyM=wgY#Wa^gxBHI84ToiGFD)xL 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

+){(%cs|_V+Z3|1oRaw2-n&UXxfm$5;! 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 p*5nVF=H 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≦(GU2@z{{NJqi#jR0iWFb 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 S1OkE${PY4B^q<==PyY|$6RXMq literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..c8c670ad599942b152d170b38ccd2f97f235e9c2 GIT binary patch literal 60307 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 literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar new file mode 100644 index 0000000000000000000000000000000000000000..eea4022e80477e0867f5a6505cc3ecf0f8d25150 GIT binary patch literal 11326 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 literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..fd2e6f3f9d0a590b058edb1939859b8d1d543a16 GIT binary patch literal 11920 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 literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/pom.xml b/addons/binding/org.openhab.binding.knx/pom.xml new file mode 100644 index 0000000000000..3a113036eca6e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/pom.xml @@ -0,0 +1,24 @@ + + + + 4.0.0 + + + org.openhab.binding + pom + 2.1.0-SNAPSHOT + + + + org.openhab.binding.knx + org.openhab.binding.knx + + + org.openhab.binding + org.openhab.binding.knx + 2.1.0-SNAPSHOT + + KNX Binding + eclipse-plugin + + diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java new file mode 100644 index 0000000000000..1fe4c08e4d80e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import tuwien.auto.calimero.GroupAddress; + +/** + * The {@link GroupAddressListener} is an interface that needs to be + * implemented by classes that want to listen to Group Addresses + * on the KNX bus + * + * @author Karel Goderis - Initial contribution + */ +public interface GroupAddressListener extends TelegramListener { + + /** + * Called to verify if the GroupAddressListener has an interest in the given GroupAddress + * + * @param destination + */ + public boolean listensTo(GroupAddress destination); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java new file mode 100644 index 0000000000000..74b9ca1137048 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import tuwien.auto.calimero.IndividualAddress; + +/** + * The {@link IndividualAddressListener} is an interface that needs to be + * implemented by classes that want to listen to specific Individual Addresses + * on the KNX bus + * + * @author Karel Goderis - Initial contribution + */ +public interface IndividualAddressListener extends TelegramListener { + + /** + * Called to verify if the IndividualAddressListener has an interest in the given Individual Address + * + * @param destination + */ + public boolean listensTo(IndividualAddress source); +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java new file mode 100644 index 0000000000000..f6dcdffb85a32 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import org.eclipse.smarthome.core.thing.ThingTypeUID; + +/** + * The {@link KNXBinding} class defines common constants, which are + * used across the whole binding. + * + * @author Karel Goderis - Initial contribution + */ +public class KNXBindingConstants { + + public static final String BINDING_ID = "knx"; + + // List of all Thing Type UIDs + public static final ThingTypeUID THING_TYPE_IP_BRIDGE = new ThingTypeUID(BINDING_ID, "ip"); + public static final ThingTypeUID THING_TYPE_SERIAL_BRIDGE = new ThingTypeUID(BINDING_ID, "serial"); + public static final ThingTypeUID THING_TYPE_BASIC = new ThingTypeUID(BINDING_ID, "basic"); + + // List of all Channel ids + public static final String CHANNEL_CURRENT = "current"; + public static final String CHANNEL_DIMMER = "dimmer"; + public static final String CHANNEL_ENERGY = "energy"; + public static final String CHANNEL_NUMBER = "number"; + public static final String CHANNEL_STRING = "string"; + public static final String CHANNEL_CONTACT = "contact"; + public static final String CHANNEL_DATETIME = "datetime"; + public static final String CHANNEL_OPERATING_HOURS = "operatinghours"; + public static final String CHANNEL_RESET = "reset"; + public static final String CHANNEL_ROLLERSHUTTER = "rollershutter"; + public static final String CHANNEL_SETPOINT = "setpoint"; + public static final String CHANNEL_STATUSSWITCH = "statusswitch"; + public static final String CHANNEL_SWITCH = "switch"; + public static final String CHANNEL_GENERIC = "generic"; + public static final String CHANNEL_WALLBUTTON = "wallbutton"; + public static final String ERRORS_INTERVAL = "errors5min"; + public static final String ERRORS_STARTUP = "errorsall"; + + // List of Property ids + public static final String FIRMWARE_TYPE = "firmwaretype"; + public static final String FIRMWARE_VERSION = "firmwareversion"; + public static final String FIRMWARE_SUBVERSION = "firmwaresubversion"; + public static final String MANUFACTURER_NAME = "manfacturername"; + public static final String MANUFACTURER_SERIAL_NO = "manfacturerserialnumber"; + public static final String MANUFACTURER_HARDWARE_TYPE = "manfacturerhardwaretype"; + public static final String MANUFACTURER_FIRMWARE_REVISION = "manfacturerfirmwarerevision"; + + // List of all Configuration parameters + public static final String ADDRESS = "address"; + public static final String CURRENT_GA = "currentGA"; + public static final String DPT = "dpt"; + public static final String DESCRIPTION = "description"; + public static final String ENERGY_GA = "energyGA"; + public static final String FETCH = "fetch"; + public static final String GROUPADDRESS = "groupaddress"; + public static final String INCREASE_DECREASE_ADDRESS = "increasedecreaseGA"; + public static final String INCREASE_DECREASE_DPT = "increasedecreaseDPT"; + public static final String INCREASE_DECREASE_GA = "increaseDecreaseGA"; + public static final String INTERVAL = "interval"; + public static final String IP_ADDRESS = "ipAddress"; + public static final String IP_CONNECTION_TYPE = "ipConnectionType"; + public static final String LOCAL_IP = "localIp"; + public static final String LOCAL_SOURCE_ADDRESS = "localSourceAddr"; + public static final String OPERATING_HOURS_GA = "operatingGA"; + public static final String PERCENT_DPT = "percentDPT"; + public static final String PERCENT_GA = "percentGA"; + public static final String PORT_NUMBER = "portNumber"; + public static final String POSITION_GA = "positionGA"; + public static final String POSITION_STATUS_GA = "positionStatusGA"; + public static final String READ = "read"; + public static final String SERIAL_PORT = "serialPort"; + public static final String SETPOINT_GA = "setpointGA"; + public static final String STATUS_GA = "statusGA"; + public static final String STOP_MOVE_GA = "stopMoveGA"; + public static final String STOP_MOVE_STATUS_GA = "stopMoveStatusGA"; + public static final String SWITCH_GA = "switchGA"; + public static final String TRANSMIT = "transmit"; + public static final String UNIT = "unit"; + public static final String UP_DOWN_GA = "upDownGA"; + public static final String UP_DOWN_STATUS_GA = "upDownStatusGA"; + public static final String UPDATE = "update"; + public static final String WRITE = "write"; + + // List of all knxproj Namespace Identifierss + public static final String KNX_PROJECT_12 = "http://knx.org/xml/project/12"; + public static final String KNX_PROJECT_13 = "http://knx.org/xml/project/13"; + + // The default multicast ip address (see iana EIBnet/IP + public static final String DEFAULT_MULTICAST_IP = "224.0.23.12"; + + // The group address for identification of this KNX/IP gateway within the KNX bus. Default is 0.0.0 + public static final String DEFAULT_LOCAL_SOURCE_ADDRESS = "0.0.0"; + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java new file mode 100644 index 0000000000000..ffecdcd415c6c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java @@ -0,0 +1,11 @@ +package org.openhab.binding.knx; + +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; + +public interface KNXBridgeHandlerTracker { + + void onBridgeAdded(KNXBridgeBaseThingHandler handler); + + void onBridgeRemoved(KNXBridgeBaseThingHandler handler); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java new file mode 100644 index 0000000000000..94bb8face090a --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; + +/** + * The {@link KNXBusListener} is an interface that needs to be + * implemented by classes that want to listen to KNX bus + * + * @author Karel Goderis - Initial contribution + */ +public interface KNXBusListener { + + /** + * + * Called when a KNX telegram is seen on the KNX bus + * + * @param source - the KNX source sending the telegram + * @param destination - the destination group address + * @param asdu - the telegram payload + */ + public void onActivity(IndividualAddress source, GroupAddress destination, byte[] asdu); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java new file mode 100644 index 0000000000000..cf8e5974103c7 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.process.ProcessEvent; + +/** + * This interface must be implemented by classes that provide a type mapping + * between openHAB and KNX. + * When a command or status update is sent to an item on the openHAB event bus, + * it must be clear, in which format it must be sent to KNX and vice versa. + * + * @author Kai Kreuzer + * @since 0.3.0 + * + */ +public interface KNXTypeMapper { + + /** + * maps an openHAB command/state to a string value which correspond to its datapoint in KNX + * + * @param type a command or state + * @param dpt the corresponding datapoint type + * @return datapoint value as a string + */ + public String toDPTValue(Type type, String dpt); + + /** + * maps a datapoint value to an openHAB command or state + * + * @param datapoint the source datapoint + * @param data the datapoint value as an ASDU byte array (see {@link ProcessEvent}.getASDU()) + * @return a command or state of openHAB + */ + public Type toType(Datapoint datapoint, byte[] data); + + public Class toTypeClass(String dpt); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java new file mode 100644 index 0000000000000..3a0ec0b66866d --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx; + +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; + +/** + * The {@link TelegramListener} is an interface that needs to be + * implemented by classes that want to listen to Telegrams + * on the KNX bus + * + * @author Karel Goderis - Initial contribution + */ +public interface TelegramListener { + + /** + * + * Called when the KNX bridge receives a group write telegram + * + * @param bridge + * @param destination + * @param asdu + */ + public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, + byte[] asdu); + + /** + * + * Called when the KNX bridge receives a group read telegram + * + * @param bridge + * @param destination + * @param asdu + */ + public void onGroupRead(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, + byte[] asdu); + + /** + * + * Called when the KNX bridge receives a group read response telegram + * + * @param bridge + * @param destination + * @param asdu + */ + public void onGroupReadResponse(KNXBridgeBaseThingHandler bridge, IndividualAddress source, + GroupAddress destination, byte[] asdu); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java new file mode 100644 index 0000000000000..a304b52521d50 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -0,0 +1,119 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.math.BigDecimal; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; +import java.text.MessageFormat; + +import org.apache.commons.lang.StringUtils; +import org.eclipse.smarthome.core.thing.Bridge; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; +import org.openhab.binding.knx.KNXBindingConstants; +import org.openhab.binding.knx.internal.handler.BridgeConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.KNXNetworkLinkIP; +import tuwien.auto.calimero.link.medium.TPSettings; + +/** + * The {@link IPBridgeThingHandler} is responsible for handling commands, which are + * sent to one of the channels. It implements a KNX/IP Gateway, that either acts a a + * conduit for other {@link KNXBasicThingHandler}s, or for Channels that are + * directly defined on the bridge + * + * @author Karel Goderis - Initial contribution + */ +public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { + + private static final String MODE_ROUTER = "ROUTER"; + private static final String MODE_TUNNEL = "TUNNEL"; + + private final Logger logger = LoggerFactory.getLogger(IPBridgeThingHandler.class); + + private int ipConnectionType; + private String ip; + private String localSource; + private int port; + private InetSocketAddress localEndPoint; + private Boolean useNAT; + + public IPBridgeThingHandler(Bridge bridge) { + super(bridge); + } + + @Override + public void initialize() { + localSource = (String) getConfig().get(LOCAL_SOURCE_ADDRESS); + + String connectionTypeString = (String) getConfig().get(IP_CONNECTION_TYPE); + if (StringUtils.isNotBlank(connectionTypeString)) { + if (MODE_TUNNEL.equalsIgnoreCase(connectionTypeString)) { + ip = (String) getConfig().get(IP_ADDRESS); + port = ((BigDecimal) getConfig().get(PORT_NUMBER)).intValue(); + ipConnectionType = KNXNetworkLinkIP.TUNNELING; + useNAT = getConfigAs(BridgeConfiguration.class).getUseNAT(); + } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { + ipConnectionType = KNXNetworkLinkIP.ROUTING; + if (StringUtils.isBlank(ip)) { + ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; + } + if (StringUtils.isBlank(localSource)) { + localSource = KNXBindingConstants.DEFAULT_LOCAL_SOURCE_ADDRESS; + } + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + MessageFormat.format( + "Unknown IP connection type {0}. Known types are either 'TUNNEL' or 'ROUTER'", + connectionTypeString)); + return; + } + } else { + ipConnectionType = KNXNetworkLinkIP.TUNNELING; + } + + try { + if (!useNAT) { + if (StringUtils.isNotBlank((String) getConfig().get(LOCAL_IP))) { + localEndPoint = new InetSocketAddress((String) getConfig().get(LOCAL_IP), 0); + } else { + InetAddress localHost = InetAddress.getLocalHost(); + localEndPoint = new InetSocketAddress(localHost, 0); + } + } + } catch (UnknownHostException uhe) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + "Couldn't find an IP address for this host. Please check the .hosts configuration or use the 'localIp' parameter to configure a valid IP address."); + return; + } + + super.initialize(); + } + + @Override + public KNXNetworkLink establishConnection() throws KNXException, InterruptedException { + logger.debug("Establishing connection to KNX bus on {}:{} in mode {}.", ip, port, connectionTypeToString()); + TPSettings settings = new TPSettings(new IndividualAddress(localSource)); + return new KNXNetworkLinkIP(ipConnectionType, localEndPoint, new InetSocketAddress(ip, port), useNAT, settings); + + } + + private String connectionTypeToString() { + return ipConnectionType == KNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; + } +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java new file mode 100644 index 0000000000000..cae2277561401 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -0,0 +1,682 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import static org.openhab.binding.knx.KNXBindingConstants.*; +import static org.openhab.binding.knx.internal.handler.DeviceConstants.*; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang.StringUtils; +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.thing.Channel; +import org.eclipse.smarthome.core.thing.ChannelUID; +import org.eclipse.smarthome.core.thing.Thing; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; +import org.eclipse.smarthome.core.thing.ThingStatusInfo; +import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; +import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.RefreshType; +import org.eclipse.smarthome.core.types.State; +import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.GroupAddressListener; +import org.openhab.binding.knx.IndividualAddressListener; +import org.openhab.binding.knx.internal.channel.KNXChannelSelector; +import org.openhab.binding.knx.internal.channel.KNXChannelType; +import org.openhab.binding.knx.internal.handler.BasicConfig; +import org.openhab.binding.knx.internal.handler.Firmware; +import org.openhab.binding.knx.internal.handler.Manufacturer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.DataUnitBuilder; +import tuwien.auto.calimero.DeviceDescriptor; +import tuwien.auto.calimero.DeviceDescriptor.DD0; +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.datapoint.CommandDP; +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.mgmt.PropertyAccess.PID; + +/** + * The {@link KNXBasicThingHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * @author Karel Goderis - Initial contribution + */ +public class KNXBasicThingHandler extends BaseThingHandler implements IndividualAddressListener, GroupAddressListener { + + private final Random random = new Random(); + + private final Logger logger = LoggerFactory.getLogger(KNXBasicThingHandler.class); + + // the physical address of the KNX actor represented by this Thing + protected IndividualAddress address; + + // group addresses the handler is monitoring + protected Set groupAddresses = new HashSet(); + + // group addresses read out from the device's firmware tables + protected Set foundGroupAddresses = new HashSet(); + + private Map> readFutures = new HashMap<>(); + private ScheduledFuture pollingJob; + private ScheduledFuture descriptionJob; + private ScheduledExecutorService knxScheduler; + private BasicConfig config; + + private static final long OPERATION_TIMEOUT = 5000; + private static final long OPERATION_INTERVAL = 2000; + private boolean filledDescription = false; + + public KNXBasicThingHandler(Thing thing) { + super(thing); + } + + @Override + public void initialize() { + config = getConfigAs(BasicConfig.class); + + initializeGroupAddresses(); + + knxScheduler = getBridgeHandler().getScheduler(); + try { + if (StringUtils.isNotBlank(config.getAddress())) { + address = new IndividualAddress(config.getAddress()); + + long pollingInterval = config.getInterval().longValue(); + long initialDelay = Math.round(pollingInterval * random.nextFloat()); + + if ((pollingJob == null || pollingJob.isCancelled())) { + logger.debug("'{}' will be polled every {}s", getThing().getUID(), pollingInterval); + pollingJob = knxScheduler.scheduleWithFixedDelay(() -> pollDeviceStatus(), initialDelay, + pollingInterval, TimeUnit.SECONDS); + } + } else { + updateStatus(ThingStatus.ONLINE); + } + } catch (KNXFormatException e) { + logger.error("An exception occurred while setting the individual address '{}': {}", config.getAddress(), + e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); + } + + getBridgeHandler().registerGroupAddressListener(this); + scheduleReadJobs(); + } + + private void initializeGroupAddresses() { + forAllChannels((selector, channelConfiguration) -> { + groupAddresses.addAll(selector.getReadAddresses(channelConfiguration)); + groupAddresses.addAll(selector.getWriteAddresses(channelConfiguration, null)); + groupAddresses.addAll(selector.getTransmitAddresses(channelConfiguration, null)); + groupAddresses.addAll(selector.getUpdateAddresses(channelConfiguration, null)); + }); + } + + private KNXChannelType getKNXChannelType(Channel channel) { + String channelID = channel.getChannelTypeUID().getId(); + KNXChannelType selector = KNXChannelSelector.getValueSelectorFromChannelTypeId(channelID); + return selector; + } + + private KNXBridgeBaseThingHandler getBridgeHandler() { + return (KNXBridgeBaseThingHandler) getBridge().getHandler(); + } + + @Override + public void dispose() { + if (pollingJob != null && !pollingJob.isCancelled()) { + pollingJob.cancel(true); + pollingJob = null; + } + + if (descriptionJob != null && !descriptionJob.isCancelled()) { + descriptionJob.cancel(true); + descriptionJob = null; + } + + cancelReadFutures(); + + KNXBridgeBaseThingHandler bridgeHandler = getBridgeHandler(); + if (bridgeHandler != null) { + bridgeHandler.unregisterGroupAddressListener(this); + } + } + + private void cancelReadFutures() { + if (readFutures != null) { + for (ScheduledFuture future : readFutures.values()) { + if (!future.isDone()) { + future.cancel(true); + } + } + } + } + + @FunctionalInterface + private interface ChannelFunction { + void apply(KNXChannelType channelType, Configuration configuration) throws KNXException; + } + + private void withKNXType(ChannelUID channelUID, ChannelFunction function) { + withKNXType(channelUID.getId(), function); + } + + private void withKNXType(String channelId, ChannelFunction function) { + Channel channel = getThing().getChannel(channelId); + if (channel == null) { + logger.warn("Channel '{}' does not exist on thing '{}'", channelId, getThing().getUID()); + return; + } + withKNXType(channel, function); + } + + private void withKNXType(Channel channel, ChannelFunction function) { + try { + KNXChannelType selector = getKNXChannelType(channel); + if (selector != null) { + Configuration channelConfiguration = channel.getConfiguration(); + if (channelConfiguration != null) { + function.apply(selector, channelConfiguration); + } else { + logger.warn("The configuration of channel {} is empty", channel.getUID()); + } + } else { + logger.warn("The KNX channel type {} is not implemented", channel.getChannelTypeUID().getId()); + } + } catch (KNXException e) { + logger.error("An error occurred on channel {}: {}", channel.getUID(), e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + } + + private void forAllChannels(ChannelFunction function) { + for (Channel channel : getThing().getChannels()) { + withKNXType(channel, function); + } + } + + @Override + public void channelLinked(ChannelUID channelUID) { + withKNXType(channelUID, (selector, configuration) -> { + Boolean mustRead = (Boolean) configuration.get(READ); + BigDecimal readInterval = (BigDecimal) configuration.get(INTERVAL); + for (GroupAddress address : selector.getReadAddresses(configuration)) { + if (mustRead || readInterval.intValue() > 0) { + scheduleReadJob(address, selector.getDPT(address, configuration), true, BigDecimal.ZERO); + } + } + }); + } + + private void scheduleReadJobs() { + cancelReadFutures(); + + for (Channel channel : getThing().getChannels()) { + if (isLinked(channel.getUID().getId())) { + withKNXType(channel, (selector, channelConfiguration) -> { + Boolean mustRead = (Boolean) channelConfiguration.get(READ); + BigDecimal readInterval = (BigDecimal) channelConfiguration.get(INTERVAL); + for (GroupAddress address : selector.getReadAddresses(channelConfiguration)) { + scheduleReadJob(address, selector.getDPT(address, channelConfiguration), mustRead, + readInterval); + } + }); + } + } + } + + private void scheduleReadJob(GroupAddress groupAddress, String dpt, boolean immediate, BigDecimal readInterval) { + if (knxScheduler == null) { + return; + } + + boolean recurring = readInterval != null && readInterval.intValue() > 0; + + if (immediate) { + knxScheduler.schedule(new ReadRunnable(groupAddress, dpt), 0, TimeUnit.SECONDS); + } + + if (recurring && readInterval != null) { + ScheduledFuture future = readFutures.get(groupAddress); + if (future == null || future.isDone() || future.isCancelled()) { + int initialDelay = immediate ? 0 : readInterval.intValue(); + future = knxScheduler.scheduleWithFixedDelay(new ReadRunnable(groupAddress, dpt), initialDelay, + readInterval.intValue(), TimeUnit.SECONDS); + readFutures.put(groupAddress, future); + } + } + } + + @Override + public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { + super.bridgeStatusChanged(bridgeStatusInfo); + + if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE) { + getBridgeHandler().registerGroupAddressListener(this); + scheduleReadJobs(); + updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE); + } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { + cancelReadFutures(); + getBridgeHandler().unregisterGroupAddressListener(this); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + } + } + + @Override + public boolean listensTo(IndividualAddress source) { + if (address != null) { + return address.equals(source); + } else { + return false; + } + } + + @Override + public boolean listensTo(GroupAddress destination) { + return groupAddresses.contains(destination) || foundGroupAddresses.contains(destination); + } + + @Override + public void handleUpdate(ChannelUID channelUID, State newState) { + if (getBridgeHandler() == null) { + logger.warn("KNX bridge handler not found. Cannot handle updates without bridge."); + } + logger.trace("Handling a State ({}) update for Channel {}", newState, channelUID); + switch (channelUID.getId()) { + case CHANNEL_RESET: + if (address != null) { + restart(); + } + break; + default: + sendToKNX(channelUID, newState, true); + break; + } + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + if (getBridgeHandler() == null) { + logger.warn("KNX bridge handler not found. Cannot handle commands without bridge."); + } + logger.trace("Handling a Command ({}) for Channel {}", command, channelUID); + if (command instanceof RefreshType) { + logger.debug("Refreshing channel {}", channelUID); + withKNXType(channelUID, (selector, channelConfiguration) -> { + for (GroupAddress address : selector.getReadAddresses(channelConfiguration)) { + scheduleReadJob(address, selector.getDPT(address, channelConfiguration), true, BigDecimal.ZERO); + } + }); + } else { + switch (channelUID.getId()) { + case CHANNEL_RESET: + if (address != null) { + restart(); + } + break; + default: + sendToKNX(channelUID, command, false); + break; + } + } + + } + + private void sendToKNX(ChannelUID channelUID, Type type, boolean toSlaves) { + withKNXType(channelUID, (selector, channelConfiguration) -> { + if (selector.isSlave() != toSlaves) { + return; + } + Type convertedType = selector.convertType(channelConfiguration, type); + if (logger.isTraceEnabled()) { + logger.trace("Sending to channel {} {} {} {}/{} : {} -> {}", channelUID.getId(), + getThing().getChannel(channelUID.getId()).getConfiguration().get(DPT), + getThing().getChannel(channelUID.getId()).getAcceptedItemType(), + getThing().getChannel(channelUID.getId()).getConfiguration().get(READ), + getThing().getChannel(channelUID.getId()).getConfiguration().get(WRITE), type, convertedType); + } + if (convertedType != null) { + for (GroupAddress address : selector.getWriteAddresses(channelConfiguration, convertedType)) { + getBridgeHandler().writeToKNX(address, selector.getDPT(address, channelConfiguration), + convertedType); + } + } + }); + } + + @Override + public void onGroupRead(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, + byte[] asdu) { + // Nothing to do here - Software representations of physical actors should not respond to GroupRead requests, as + // the physical device will be responding to these instead + } + + @Override + public void onGroupReadResponse(KNXBridgeBaseThingHandler bridge, IndividualAddress source, + GroupAddress destination, byte[] asdu) { + // Group Read Responses are treated the same as Group Write telegrams + onGroupWrite(bridge, source, destination, asdu); + } + + @Override + public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, + byte[] asdu) { + + logger.trace("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), + source, destination); + + for (Channel channel : getThing().getChannels()) { + withKNXType(channel, (selector, channelConfiguration) -> { + Set addresses = selector.getReadAddresses(channelConfiguration); + addresses.addAll(selector.getTransmitAddresses(channelConfiguration, null)); + + if (addresses.contains(destination)) { + logger.trace("Thing {} processes a Group Write telegram for destination '{}' for channel '{}'", + getThing().getUID(), destination, channel.getUID()); + processDataReceived(bridge, destination, asdu, selector.getDPT(destination, channelConfiguration), + channel.getUID(), selector.isSlave()); + } + }); + } + } + + private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress destination, byte[] asdu, + String dpt, ChannelUID channelUID, boolean slave) { + + if (dpt != null) { + + if (!bridge.isDPTSupported(dpt)) { + logger.warn("DPT {} is not supported by the KNX binding.", dpt); + return; + } + + Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); + Type type = bridge.getType(destination, dpt, asdu); + + if (type != null) { + if (slave) { + if (type instanceof Command) { + postCommand(channelUID, (Command) type); + } + } else { + if (type instanceof State) { + updateState(channelUID, (State) type); + } + } + + } else { + final char[] hexCode = "0123456789ABCDEF".toCharArray(); + StringBuilder sb = new StringBuilder(2 + asdu.length * 2); + sb.append("0x"); + for (byte b : asdu) { + sb.append(hexCode[(b >> 4) & 0xF]); + sb.append(hexCode[(b & 0xF)]); + } + + logger.warn( + "Ignoring KNX bus data: couldn't transform to an openHAB type (not supported). Destination='{}', datapoint='{}', data='{}'", + destination, datapoint, sb); + return; + } + + } + } + + public void restart() { + if (address != null) { + getBridgeHandler().restartNetworkDevice(address); + } + } + + class ReadRunnable implements Runnable { + + private GroupAddress address; + private String dpt; + + ReadRunnable(GroupAddress address, String dpt) { + this.address = address; + this.dpt = dpt; + } + + @Override + public void run() { + if (getThing().getStatus() == ThingStatus.ONLINE && getBridge().getStatus() == ThingStatus.ONLINE) { + if (!getBridgeHandler().isDPTSupported(dpt)) { + logger.warn("DPT '{}' is not supported by the KNX binding", dpt); + return; + } + Datapoint datapoint = new CommandDP(address, getThing().getUID().toString(), 0, dpt); + getBridgeHandler().readDatapoint(datapoint, getBridgeHandler().getReadRetriesLimit()); + } + } + }; + + private void pollDeviceStatus() { + try { + if (address != null && getBridge().getStatus() == ThingStatus.ONLINE) { + logger.debug("Polling the individual address {}", address.toString()); + boolean isReachable = getBridgeHandler().isReachable(address); + if (isReachable) { + updateStatus(ThingStatus.ONLINE); + if (!filledDescription && config.getFetch()) { + if (descriptionJob == null || descriptionJob.isCancelled()) { + descriptionJob = knxScheduler.schedule(descriptionRunnable, 0, TimeUnit.MILLISECONDS); + } + } + } else { + updateStatus(ThingStatus.OFFLINE); + } + } + } catch (KNXException e) { + logger.error("An error occurred while testing the reachability of a thing '{}' : {}", getThing().getUID(), + e.getLocalizedMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); + } + } + + private Runnable descriptionRunnable = new Runnable() { + + @Override + public void run() { + try { + if (getBridge().getStatus() == ThingStatus.ONLINE) { + logger.debug("Fetching device information for address {}", address.toString()); + + Thread.sleep(OPERATION_INTERVAL); + byte[] data = getBridgeHandler().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); + + if (data != null) { + final DD0 dd = DeviceDescriptor.DD0.fromType0(data); + + Map properties = editProperties(); + properties.put(FIRMWARE_TYPE, Firmware.getName(dd.getFirmwareType())); + properties.put(FIRMWARE_VERSION, Firmware.getName(dd.getFirmwareVersion())); + properties.put(FIRMWARE_SUBVERSION, Firmware.getName(dd.getSubcode())); + try { + updateProperties(properties); + } catch (Exception e) { + // TODO : ignore for now, but for Things created through the DSL, this should also NOT throw + // an exception! See forum discussions + } + logger.info("The device with address {} is of type {}, version {}, subversion {}", address, + Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), + Firmware.getName(dd.getSubcode())); + } else { + logger.warn("The KNX Actor with address {} does not expose a Device Descriptor", address); + } + + // check if there is a Device Object in the KNX Actor + Thread.sleep(OPERATION_INTERVAL); + byte[] elements = getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, + 0, 1, false, OPERATION_TIMEOUT); + if ((elements == null ? 0 : toUnsigned(elements)) == 1) { + + Thread.sleep(OPERATION_INTERVAL); + String ManufacturerID = Manufacturer + .getName(toUnsigned(getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, + PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); + Thread.sleep(OPERATION_INTERVAL); + String serialNo = DataUnitBuilder.toHex(getBridgeHandler().readDeviceProperties(address, + DEVICE_OBJECT, PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); + Thread.sleep(OPERATION_INTERVAL); + String hardwareType = DataUnitBuilder.toHex(getBridgeHandler().readDeviceProperties(address, + DEVICE_OBJECT, HARDWARE_TYPE, 1, 1, false, OPERATION_TIMEOUT), " "); + Thread.sleep(OPERATION_INTERVAL); + String firmwareRevision = Integer + .toString(toUnsigned(getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, + PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); + + Map properties = editProperties(); + properties.put(MANUFACTURER_NAME, ManufacturerID); + properties.put(MANUFACTURER_SERIAL_NO, serialNo); + properties.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); + properties.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); + try { + updateProperties(properties); + } catch (Exception e) { + // TODO : ignore for now, but for Things created through the DSL, this should also NOT throw + // an exception! See forum discussions + } + logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, + ManufacturerID, hardwareType, firmwareRevision, serialNo); + } else { + logger.warn("The KNX Actor with address {} does not expose a Device Object", address); + } + + // TODO : According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE + // object, but it seems that a lot, if not all, devices do not do this. In this list we can find out + // what other kind of objects the device is exposing. Most devices do implement some set of objects, + // we will just go ahead and try to read them out irrespective of what is in the IO_LIST + + Thread.sleep(OPERATION_INTERVAL); + byte[] tableaddress = getBridgeHandler().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, + PID.TABLE_REFERENCE, 1, 1, false, OPERATION_TIMEOUT); + + if (tableaddress != null) { + Thread.sleep(OPERATION_INTERVAL); + elements = getBridgeHandler().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, + OPERATION_TIMEOUT); + if (elements != null) { + int numberOfElements = toUnsigned(elements); + logger.debug("The KNX Actor with address {} uses {} group addresses", address, + numberOfElements - 1); + + byte[] addressData = null; + while (addressData == null) { + Thread.sleep(OPERATION_INTERVAL); + addressData = getBridgeHandler().readDeviceMemory(address, toUnsigned(tableaddress) + 1, + 2, false, OPERATION_TIMEOUT); + if (addressData != null) { + IndividualAddress individualAddress = new IndividualAddress(addressData); + logger.debug( + "The KNX Actor with address {} its real reported individual address is {}", + address, individualAddress); + } + } + + for (int i = 1; i < numberOfElements; i++) { + addressData = null; + while (addressData == null) { + Thread.sleep(OPERATION_INTERVAL); + addressData = getBridgeHandler().readDeviceMemory(address, + toUnsigned(tableaddress) + 1 + i * 2, 2, false, OPERATION_TIMEOUT); + if (addressData != null) { + GroupAddress groupAddress = new GroupAddress(addressData); + foundGroupAddresses.add(groupAddress); + } + } + } + + for (GroupAddress anAddress : foundGroupAddresses) { + logger.debug("The KNX Actor with address {} uses Group Address {}", address, anAddress); + } + } + } else { + logger.warn("The KNX Actor with address {} does not expose a Group Address table", address); + } + + Thread.sleep(OPERATION_INTERVAL); + byte[] objecttableaddress = getBridgeHandler().readDeviceProperties(address, GROUPOBJECT_OBJECT, + PID.TABLE_REFERENCE, 1, 1, true, OPERATION_TIMEOUT); + + if (objecttableaddress != null) { + Thread.sleep(OPERATION_INTERVAL); + elements = getBridgeHandler().readDeviceMemory(address, toUnsigned(objecttableaddress), 1, + false, OPERATION_TIMEOUT); + if (elements != null) { + int numberOfElements = toUnsigned(elements); + logger.debug("The KNX Actor with address {} has {} objects", address, numberOfElements); + + for (int i = 1; i < numberOfElements; i++) { + byte[] objectData = null; + while (objectData == null) { + Thread.sleep(OPERATION_INTERVAL); + objectData = getBridgeHandler().readDeviceMemory(address, + toUnsigned(objecttableaddress) + 1 + (i * 3), 3, false, OPERATION_TIMEOUT); + + logger.debug("Byte 1 {}", + String.format("%8s", Integer.toBinaryString(objectData[0] & 0xFF)) + .replace(' ', '0')); + logger.debug("Byte 2 {}", + String.format("%8s", Integer.toBinaryString(objectData[1] & 0xFF)) + .replace(' ', '0')); + logger.debug("Byte 3 {}", + String.format("%8s", Integer.toBinaryString(objectData[2] & 0xFF)) + .replace(' ', '0')); + } + } + } + } else { + logger.warn("The KNX Actor with address {} does not expose a Group Object table", address); + } + + filledDescription = true; + } + } catch (Exception e) { + logger.error("An exception occurred while fetching the device description for a Thing '{}' : {}", + getThing().getUID(), e.getMessage(), e); + } + } + + private int toUnsigned(final byte[] data) { + int value = data[0] & 0xff; + if (data.length == 1) { + return value; + } + value = value << 8 | data[1] & 0xff; + if (data.length == 2) { + return value; + } + value = value << 16 | data[2] & 0xff << 8 | data[3] & 0xff; + return value; + } + }; + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java new file mode 100644 index 0000000000000..0a682ddaec1ac --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -0,0 +1,757 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import java.nio.ByteBuffer; +import java.text.MessageFormat; +import java.util.Collection; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import org.eclipse.smarthome.core.library.types.DecimalType; +import org.eclipse.smarthome.core.thing.Bridge; +import org.eclipse.smarthome.core.thing.ChannelUID; +import org.eclipse.smarthome.core.thing.Thing; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; +import org.eclipse.smarthome.core.thing.binding.BaseBridgeHandler; +import org.eclipse.smarthome.core.thing.binding.ThingHandler; +import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.State; +import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.GroupAddressListener; +import org.openhab.binding.knx.IndividualAddressListener; +import org.openhab.binding.knx.KNXBindingConstants; +import org.openhab.binding.knx.KNXBusListener; +import org.openhab.binding.knx.KNXTypeMapper; +import org.openhab.binding.knx.TelegramListener; +import org.openhab.binding.knx.internal.factory.KNXThreadPoolFactory; +import org.openhab.binding.knx.internal.handler.BridgeConfiguration; +import org.openhab.binding.knx.internal.handler.RetryDatapoint; +import org.openhab.binding.knx.internal.logging.LogAdapter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.CloseEvent; +import tuwien.auto.calimero.DetachEvent; +import tuwien.auto.calimero.FrameEvent; +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.cemi.CEMILData; +import tuwien.auto.calimero.datapoint.CommandDP; +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.NetworkLinkListener; +import tuwien.auto.calimero.log.LogManager; +import tuwien.auto.calimero.mgmt.Destination; +import tuwien.auto.calimero.mgmt.ManagementClient; +import tuwien.auto.calimero.mgmt.ManagementClientImpl; +import tuwien.auto.calimero.mgmt.ManagementProcedures; +import tuwien.auto.calimero.mgmt.ManagementProceduresImpl; +import tuwien.auto.calimero.process.ProcessCommunicator; +import tuwien.auto.calimero.process.ProcessCommunicatorImpl; +import tuwien.auto.calimero.process.ProcessEvent; +import tuwien.auto.calimero.process.ProcessListenerEx; + +/** + * The {@link KNXBridgeBaseThingHandler} is responsible for handling commands, which are + * sent to one of the channels. + * + * @author Karel Goderis - Initial contribution + */ +public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements NetworkLinkListener { + + private static final int ERROR_INTERVAL_MINUTES = 5; + private static final int MAX_SEND_ATTEMPTS = 2; + private static final int CORE_POOL_SIZE = 5; + + private final Logger logger = LoggerFactory.getLogger(KNXBridgeBaseThingHandler.class); + + // Data structures related to the communication infrastructure + private Set groupAddressListeners = new ConcurrentHashMap() + .keySet(Boolean.TRUE); + private Set individualAddressListeners = new ConcurrentHashMap() + .keySet(Boolean.TRUE); + private Set knxBusListeners = new CopyOnWriteArraySet<>(); + private final Collection typeMappers = new CopyOnWriteArraySet<>(); + + private final LinkedBlockingQueue readDatapoints = new LinkedBlockingQueue(); + protected ConcurrentHashMap destinations = new ConcurrentHashMap(); + + // Data structures related to the KNX protocol stack + private ProcessCommunicator processCommunicator = null; + private ManagementProcedures managementProcedures; + private ManagementClient managementClient; + private KNXNetworkLink link; + private final LogAdapter logAdapter = new LogAdapter(); + + // Data structures related to the various jobs + private ScheduledFuture connectJob; + private ScheduledFuture busJob; + private Lock connectLock = new ReentrantLock(); + private Condition connectedCondition = connectLock.newCondition(); + + private ScheduledExecutorService knxScheduler; + + private boolean shutdown = false; + private long intervalTimestamp; + private long errorsSinceStart; + private long errorsSinceInterval; + + private BridgeConfiguration config; + + private final ProcessListenerEx processListener = new ProcessListenerEx() { + + @Override + public void detached(DetachEvent e) { + logger.error("The KNX network link was detached from the process communicator", e.getSource()); + } + + @Override + public void groupWrite(ProcessEvent e) { + processEvent("Group Write Request", e, (listener, source, destination, asdu) -> { + listener.onGroupWrite(KNXBridgeBaseThingHandler.this, source, destination, asdu); + }); + } + + @Override + public void groupReadRequest(ProcessEvent e) { + processEvent("Group Read Request", e, (listener, source, destination, asdu) -> { + listener.onGroupRead(KNXBridgeBaseThingHandler.this, source, destination, asdu); + }); + } + + @Override + public void groupReadResponse(ProcessEvent e) { + processEvent("Group Read Response", e, (listener, source, destination, asdu) -> { + listener.onGroupReadResponse(KNXBridgeBaseThingHandler.this, source, destination, asdu); + }); + } + }; + + @FunctionalInterface + private interface ReadFunction { + R apply(T t) throws KNXException, InterruptedException; + } + + @FunctionalInterface + private interface ListenerNotification { + void apply(TelegramListener listener, IndividualAddress source, GroupAddress destination, byte[] asdu); + } + + public KNXBridgeBaseThingHandler(Bridge bridge) { + super(bridge); + } + + @Override + public void initialize() { + errorsSinceStart = 0; + errorsSinceInterval = 0; + + shutdown = false; + config = getConfigAs(BridgeConfiguration.class); + registerLogAdapter(); + initializeScheduler(); + scheduleConnectJob(); + } + + @Override + public void dispose() { + shutdown = true; + cancelConnectJob(); + disconnect(); + unregisterLogAdapter(); + } + + @Override + public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) { + knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), + CORE_POOL_SIZE + getThing().getThings().size() / 10); + } + + @Override + public void childHandlerDisposed(ThingHandler childHandler, Thing childThing) { + knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), + CORE_POOL_SIZE + getThing().getThings().size() / 10); + } + + private void initializeScheduler() { + if (knxScheduler == null) { + knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), + CORE_POOL_SIZE); + } + } + + private void scheduleConnectJob() { + logger.trace("Scheduling the connection attempt to the KNX bus"); + connectJob = knxScheduler.schedule(() -> { + if (!shutdown) { + connect(); + } + }, config.getAutoReconnectPeriod().intValue(), TimeUnit.SECONDS); + } + + private void scheduleAndWaitForConnection() { + connectLock.lock(); + try { + while (!(getThing().getStatus() == ThingStatus.ONLINE)) { + if (connectJob.isDone()) { + scheduleConnectJob(); + } + try { + connectedCondition.await(); + } catch (InterruptedException e) { + // Nothing to do here - we move on + } + } + } finally { + connectLock.unlock(); + } + } + + private void cancelConnectJob() { + if (connectJob != null) { + connectJob.cancel(true); + connectJob = null; + } + } + + private void registerLogAdapter() { + LogManager.getManager().addWriter(null, logAdapter); + } + + private void unregisterLogAdapter() { + LogManager.getManager().removeWriter(null, logAdapter); + } + + public final boolean registerGroupAddressListener(GroupAddressListener listener) { + if (listener == null) { + throw new IllegalArgumentException("GroupAddressListener must not be null"); + } + return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); + } + + public final boolean unregisterGroupAddressListener(GroupAddressListener listener) { + if (listener == null) { + throw new IllegalArgumentException("GroupAddressListener must not be null"); + } + return groupAddressListeners.remove(listener); + } + + public final boolean registerIndividualAddressListener(IndividualAddressListener listener) { + if (listener == null) { + throw new IllegalArgumentException("IndividualAddressListener must not be null"); + } + return individualAddressListeners.contains(listener) ? true : individualAddressListeners.add(listener); + } + + public final boolean unregisterIndividualAddressListener(IndividualAddressListener listener) { + if (listener == null) { + throw new IllegalArgumentException("IndividualAddressListener must not be null"); + } + return individualAddressListeners.remove(listener); + } + + public final void addKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.add(typeMapper); + } + + public final void removeKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.remove(typeMapper); + } + + public final void registerKNXBusListener(KNXBusListener knxBusListener) { + if (knxBusListener != null) { + knxBusListeners.add(knxBusListener); + } + } + + public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { + if (knxBusListener != null) { + knxBusListeners.remove(knxBusListener); + } + } + + public final int getReadRetriesLimit() { + return config.getReadRetriesLimit().intValue(); + } + + public final boolean isDiscoveryEnabled() { + return config.getEnableDiscovery().booleanValue(); + } + + /** + * Establish a communication channel to the KNX gateway. + * + * @return an established link to the KNX gateway. Must not be null + * @throws KNXException if the link could not be established + * @throws InterruptedException if it occurs + * + */ + protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; + + private void connect() { + try { + closeConnection(); + + logger.debug("Bridge {} is connecting to the KNX bus", getThing().getUID()); + link = establishConnection(); + + managementProcedures = new ManagementProceduresImpl(link); + + managementClient = new ManagementClientImpl(link); + managementClient.setResponseTimeout(config.getResponseTimeout().intValue()); + + processCommunicator = new ProcessCommunicatorImpl(link); + processCommunicator.setResponseTimeout(config.getResponseTimeout().intValue()); + processCommunicator.addProcessListener(processListener); + + link.addLinkListener(this); + + errorsSinceStart = 0; + errorsSinceInterval = 0; + intervalTimestamp = 0; + + busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, + config.getReadingPause().intValue(), TimeUnit.MILLISECONDS); + + updateStatus(ThingStatus.ONLINE); + } catch (KNXException e) { + logger.error("Error connecting to the KNX bus: {}", e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + closeConnection(); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); + } catch (InterruptedException e) { + disconnect(); + } + + connectLock.lock(); + try { + connectedCondition.signalAll(); + } finally { + connectLock.unlock(); + } + } + + private void closeConnection() { + logger.debug("Bridge {} is disconnecting from the KNX bus", getThing().getUID()); + readDatapoints.clear(); + if (busJob != null) { + busJob.cancel(true); + busJob = null; + } + if (managementProcedures != null) { + managementProcedures.detach(); + managementProcedures = null; + } + if (managementClient != null) { + managementClient.detach(); + managementClient = null; + } + if (processCommunicator != null) { + processCommunicator.removeProcessListener(processListener); + processCommunicator.detach(); + processCommunicator = null; + } + if (link != null) { + link.close(); + link = null; + } + } + + private void disconnect() { + closeConnection(); + updateStatus(ThingStatus.OFFLINE); + } + + @Override + public void handleUpdate(ChannelUID channelUID, State newState) { + // Nothing to do here + } + + @Override + public void handleCommand(ChannelUID channelUID, Command command) { + // Nothing to do here + } + + private void readNextQueuedDatapoint() { + scheduleAndWaitForConnection(); + if (getThing().getStatus() != ThingStatus.ONLINE) { + return; + } + RetryDatapoint datapoint = readDatapoints.poll(); + if (datapoint != null) { + datapoint.incrementRetries(); + try { + logger.trace("Sending a Group Read Request telegram for {}", datapoint.getDatapoint().getMainAddress()); + processCommunicator.read(datapoint.getDatapoint()); + } catch (KNXException e) { + if (datapoint.getRetries() < datapoint.getLimit()) { + readDatapoints.add(datapoint); + logger.debug("Could not read value for datapoint {}: {}. Going to retry.", + datapoint.getDatapoint().getMainAddress(), e.getMessage()); + } else { + logger.warn("Giving up reading datapoint {}, the number of maximum retries ({}) is reached.", + datapoint.getDatapoint().getMainAddress(), datapoint.getLimit()); + } + } catch (InterruptedException e) { + logger.debug("Interrupted sending KNX read request"); + return; + } + } + } + + public void readDatapoint(Datapoint datapoint, int retriesLimit) { + synchronized (this) { + if (datapoint != null) { + RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, retriesLimit); + if (!readDatapoints.contains(retryDatapoint)) { + readDatapoints.add(retryDatapoint); + } + } + } + } + + /** + * Handles the given {@link ProcessEvent}. + * + * If the KNX ASDU is valid it is passed on to the {@link GroupAddressListener}s that are interested in the + * telegram, and subsequently to the {@link KNXBusListener}s that are interested in all KNX bus activity + * + * @param e the {@link ProcessEvent} to handle. + */ + private void processEvent(String task, ProcessEvent event, ListenerNotification action) { + try { + GroupAddress destination = event.getDestination(); + IndividualAddress source = event.getSourceAddr(); + byte[] asdu = event.getASDU(); + if (asdu.length == 0) { + return; + } + logger.trace("Received a {} telegram from '{}' for destination '{}'", task, source, destination); + for (IndividualAddressListener listener : individualAddressListeners) { + if (listener.listensTo(source)) { + knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); + } + } + for (GroupAddressListener listener : groupAddressListeners) { + if (listener.listensTo(destination)) { + knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); + } + } + for (KNXBusListener listener : knxBusListeners) { + listener.onActivity(source, destination, asdu); + } + } catch (RuntimeException e) { + logger.error("Error handling {} event from KNX bus: {}", task, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + } + + public void writeToKNX(GroupAddress address, String dpt, Type value) { + if (dpt == null || address == null || value == null) { + return; + } + scheduleAndWaitForConnection(); + if (getThing().getStatus() != ThingStatus.ONLINE || processCommunicator == null || link == null) { + logger.debug("Cannot write to the KNX bus (processCommuicator: {}, link: {})", + processCommunicator == null ? "Not OK" : "OK", + link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); + } + Datapoint datapoint = new CommandDP(address, getThing().getUID().toString(), 0, dpt); + String mappedValue = toDPTValue(value, datapoint.getDPT()); + if (mappedValue == null) { + logger.debug("Value '{}' cannot be mapped to datapoint '{}'", value, datapoint); + return; + } + for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { + try { + processCommunicator.write(datapoint, mappedValue); + logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", value, datapoint, i); + break; + } catch (KNXException e) { + if (i < MAX_SEND_ATTEMPTS - 1) { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", + value, datapoint, e.getMessage()); + } else { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", + value, datapoint, e.getMessage()); + closeConnection(); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage()); + } + } + } + } + + /** + * Transforms a {@link Type} into a datapoint type value for the KNX bus. + * + * @param type + * the {@link Type} to transform + * @param dpt + * the datapoint type to which should be converted + * + * @return the corresponding KNX datapoint type value as a string + */ + private String toDPTValue(Type type, String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + String value = typeMapper.toDPTValue(type, dpt); + if (value != null) { + return value; + } + } + return null; + } + + /** + * Transforms the raw KNX bus data of a given datapoint into an openHAB type (command or state) + * + * @param datapoint + * the datapoint to which the data belongs + * @param asdu + * the byte array of the raw data from the KNX bus + * @return the openHAB command or state that corresponds to the data + */ + private Type getType(Datapoint datapoint, byte[] asdu) { + for (KNXTypeMapper typeMapper : typeMappers) { + Type type = typeMapper.toType(datapoint, asdu); + if (type != null) { + return type; + } + } + return null; + } + + public final boolean isDPTSupported(String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + if (typeMapper.toTypeClass(dpt) != null) { + return true; + } + } + return false; + } + + public final Class toTypeClass(String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + Class typeClass = typeMapper.toTypeClass(dpt); + if (typeClass != null) { + return typeClass; + } + } + return null; + } + + public final Type getType(GroupAddress destination, String dpt, byte[] asdu) { + Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); + return getType(datapoint, asdu); + } + + public final synchronized boolean isReachable(IndividualAddress address) throws KNXException { + if (managementProcedures == null || address == null) { + return false; + } + try { + return managementProcedures.isAddressOccupied(address); + } catch (InterruptedException e) { + logger.error("Could not reach address '{}': {}", address.toString(), e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return false; + } + + public final synchronized void restartNetworkDevice(IndividualAddress address) { + if (address == null) { + return; + } + Destination destination = null; + try { + destination = managementClient.createDestination(address, true); + managementClient.restart(destination); + } catch (KNXException e) { + logger.error("Could not reset the device with address '{}': {}", address, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } finally { + if (destination != null) { + destination.destroy(); + } + } + } + + public synchronized IndividualAddress[] scanNetworkDevices(final int area, final int line) { + try { + return managementProcedures.scanNetworkDevices(area, line); + } catch (KNXException | InterruptedException e) { + logger.error("Error scanning the KNX bus: {}", e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return null; + } + + public synchronized IndividualAddress[] scanNetworkRouters() { + try { + return managementProcedures.scanNetworkRouters(); + } catch (KNXException | InterruptedException e) { + logger.error("An exception occurred while scanning the KNX bus: {}", e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return null; + } + + private byte[] readFromManagementClient(String task, long timeout, IndividualAddress address, + ReadFunction function) { + final long start = System.nanoTime(); + while ((System.nanoTime() - start) < TimeUnit.MILLISECONDS.toNanos(timeout)) { + Destination destination = null; + try { + logger.debug("Going to {} of {} ", task, address); + destination = managementClient.createDestination(address, true); + byte[] result = function.apply(destination); + logger.debug("Finished to {} of {}, result: {}", task, address, result == null ? null : result.length); + return result; + } catch (KNXException e) { + logger.error("Could not {} of {}: {}", task, address, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } catch (InterruptedException e) { + logger.debug("Interrupted to {}", task); + return null; + } finally { + if (destination != null) { + destination.destroy(); + } + } + } + return null; + } + + private void authorize(boolean authenticate, Destination destination) throws KNXException, InterruptedException { + if (authenticate) { + managementClient.authorize(destination, (ByteBuffer.allocate(4)).put((byte) 0xFF).put((byte) 0xFF) + .put((byte) 0xFF).put((byte) 0xFF).array()); + } + } + + public synchronized byte[] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, + long timeout) { + String task = "read the device description"; + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readDeviceDesc(destination, descType); + }); + } + + public synchronized byte[] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, + boolean authenticate, long timeout) { + String task = MessageFormat.format("read {0} bytes at memory location {1}", bytes, startAddress); + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readMemory(destination, startAddress, bytes); + }); + } + + public synchronized byte[] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, + final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { + String task = MessageFormat.format("read device property {} at index {}", propertyId, interfaceObjectIndex); + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readProperty(destination, interfaceObjectIndex, propertyId, start, elements); + }); + } + + public ScheduledExecutorService getScheduler() { + return knxScheduler; + } + + @Override + public void linkClosed(CloseEvent e) { + if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { + logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); + if (config.getAutoReconnectPeriod().intValue() > 0) { + logger.info("KNX link will be retried in '{}' seconds", config.getAutoReconnectPeriod().intValue()); + if (connectJob.isDone()) { + scheduleConnectJob(); + } + } + } + } + + @Override + public void indication(FrameEvent e) { + handleFrameEvent(e); + } + + @Override + public void confirmation(FrameEvent e) { + handleFrameEvent(e); + } + + private void handleFrameEvent(FrameEvent e) { + checkErrorCounterTimeouts(); + int messageCode = e.getFrame().getMessageCode(); + switch (messageCode) { + case CEMILData.MC_LDATA_IND: + if (((CEMILData) e.getFrame()).isRepetition()) { + incrementErrorCounter(); + } + break; + case CEMILData.MC_LDATA_CON: + if (!((CEMILData) e.getFrame()).isPositiveConfirmation()) { + incrementErrorCounter(); + } + break; + } + } + + private void checkErrorCounterTimeouts() { + if (intervalTimestamp == 0) { + intervalTimestamp = System.nanoTime(); + updateErrorCounterChannels(); + } else if ((System.nanoTime() - intervalTimestamp) > TimeUnit.MINUTES.toNanos(ERROR_INTERVAL_MINUTES)) { + intervalTimestamp = System.nanoTime(); + errorsSinceInterval = 0; + updateErrorCounterChannels(); + } + } + + private void incrementErrorCounter() { + errorsSinceStart++; + errorsSinceInterval++; + updateErrorCounterChannels(); + } + + private void updateErrorCounterChannels() { + updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_STARTUP), + new DecimalType(errorsSinceStart)); + updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_INTERVAL), + new DecimalType(errorsSinceInterval)); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java new file mode 100644 index 0000000000000..2b07d837e9f93 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import static org.openhab.binding.knx.KNXBindingConstants.SERIAL_PORT; + +import java.util.Enumeration; + +import org.eclipse.smarthome.core.thing.Bridge; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import gnu.io.CommPortIdentifier; +import gnu.io.RXTXVersion; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.KNXNetworkLinkFT12; +import tuwien.auto.calimero.link.medium.TPSettings; + +/** + * The {@link IPBridgeThingHandler} is responsible for handling commands, which are + * sent to one of the channels. It implements a KNX Serial/USB Gateway, that either acts a a + * conduit for other {@link KNXBasicThingHandler}s, or for Channels that are + * directly defined on the bridge + * + * @author Karel Goderis - Initial contribution + */ +public class SerialBridgeThingHandler extends KNXBridgeBaseThingHandler { + + private final Logger logger = LoggerFactory.getLogger(SerialBridgeThingHandler.class); + + public SerialBridgeThingHandler(Bridge bridge) { + super(bridge); + } + + @Override + public KNXNetworkLink establishConnection() throws KNXException { + String serialPort = (String) getConfig().get(SERIAL_PORT); + try { + RXTXVersion.getVersion(); + logger.debug("Establishing connection to KNX bus through FT1.2 on serial port {}.", serialPort); + return new KNXNetworkLinkFT12(serialPort, new TPSettings()); + + } catch (NoClassDefFoundError e) { + throw new KNXException( + "The serial FT1.2 KNX connection requires the RXTX libraries to be available, but they could not be found!", + e); + } catch (KNXException e) { + if (e.getMessage().startsWith("can not open serial port")) { + StringBuilder sb = new StringBuilder("Available ports are:\n"); + Enumeration portList = CommPortIdentifier.getPortIdentifiers(); + while (portList.hasMoreElements()) { + CommPortIdentifier id = (CommPortIdentifier) portList.nextElement(); + if (id.getPortType() == CommPortIdentifier.PORT_SERIAL) { + sb.append(id.getName()); + sb.append("\n"); + } + } + sb.deleteCharAt(sb.length() - 1); + throw new KNXException("Serial port '" + serialPort + "' could not be opened. " + sb.toString()); + } else { + throw e; + } + } + } +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java new file mode 100644 index 0000000000000..c0284a44cc585 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java @@ -0,0 +1,66 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.smarthome.core.items.GenericItem; +import org.eclipse.smarthome.core.items.Item; +import org.eclipse.smarthome.core.library.items.ColorItem; +import org.eclipse.smarthome.core.library.items.ContactItem; +import org.eclipse.smarthome.core.library.items.DateTimeItem; +import org.eclipse.smarthome.core.library.items.DimmerItem; +import org.eclipse.smarthome.core.library.items.NumberItem; +import org.eclipse.smarthome.core.library.items.RollershutterItem; +import org.eclipse.smarthome.core.library.items.StringItem; +import org.eclipse.smarthome.core.library.items.SwitchItem; +import org.eclipse.smarthome.core.library.types.DateTimeType; +import org.eclipse.smarthome.core.library.types.DecimalType; +import org.eclipse.smarthome.core.library.types.HSBType; +import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; +import org.eclipse.smarthome.core.library.types.OnOffType; +import org.eclipse.smarthome.core.library.types.OpenClosedType; +import org.eclipse.smarthome.core.library.types.PercentType; +import org.eclipse.smarthome.core.library.types.StopMoveType; +import org.eclipse.smarthome.core.library.types.StringType; +import org.eclipse.smarthome.core.library.types.UpDownType; +import org.eclipse.smarthome.core.types.Type; + +/** + * Provides mappings from {@link Type} classes to {@link Item} classes. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +public class TypeItemMap { + + private static final Map, Class> TYPE_ITEM_MAP; + + static { + Map, Class> typeItemMap = new HashMap<>(); + typeItemMap.put(DateTimeType.class, DateTimeItem.class); + typeItemMap.put(DecimalType.class, NumberItem.class); + typeItemMap.put(HSBType.class, ColorItem.class); + typeItemMap.put(IncreaseDecreaseType.class, DimmerItem.class); + typeItemMap.put(OnOffType.class, SwitchItem.class); + typeItemMap.put(OpenClosedType.class, ContactItem.class); + typeItemMap.put(PercentType.class, NumberItem.class); + typeItemMap.put(StopMoveType.class, RollershutterItem.class); + typeItemMap.put(StringType.class, StringItem.class); + typeItemMap.put(UpDownType.class, RollershutterItem.class); + TYPE_ITEM_MAP = Collections.unmodifiableMap(typeItemMap); + } + + public static Class get(Class type) { + return TYPE_ITEM_MAP.get(type); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java new file mode 100644 index 0000000000000..f3a6784c4939b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -0,0 +1,52 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import java.util.HashSet; +import java.util.Set; + +public final class KNXChannelSelector { + + private KNXChannelSelector() { + // prevent instantiation + } + + private static final Set types = new HashSet() { + private static final long serialVersionUID = 1L; + { + add(new TypeContact()); + add(new TypeCurrent()); + add(new TypeDimmer()); + add(new TypeEnergy()); + add(new TypeOperatingHours()); + add(new TypeRollershutter()); + add(new TypeSetpoint()); + add(new TypeStatusSwitch()); + add(new TypeSwitch()); + add(new TypeWallButton()); + + add(new TypeDateTime()); + add(new TypeNumber()); + add(new TypeString()); + } + }; + + public static KNXChannelType getValueSelectorFromChannelTypeId(String channelTypeID) + throws IllegalArgumentException { + + for (KNXChannelType c : types) { + if (c.getChannelID().equals(channelTypeID)) { + return c; + } + } + + throw new IllegalArgumentException(channelTypeID + " is not a valid value channel type ID"); + } + +} \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java new file mode 100644 index 0000000000000..3a6a04e4f876c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -0,0 +1,109 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import com.google.common.collect.Sets; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +public class KNXChannelType { + + private final String channelTypeID; + + public KNXChannelType(String channelTypeID) { + this.channelTypeID = channelTypeID; + } + + public final String getChannelID() { + return channelTypeID; + } + + protected final Set getAddresses(Configuration configuration, Iterable addresses) + throws KNXFormatException { + Set ret = new HashSet<>(); + for (String address : addresses) { + if (configuration != null && configuration.get(address) != null) { + ret.add(new GroupAddress((String) configuration.get(address))); + } + } + return ret; + } + + protected final boolean isEquals(Configuration configuration, String address, GroupAddress groupAddress) + throws KNXFormatException { + if (configuration != null && configuration.get(address) != null) { + return Objects.equals(new GroupAddress((String) configuration.get(address)), groupAddress); + } + return false; + } + + public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { + return null; + } + + protected Set getReadAddressKeys() { + return Collections.emptySet(); + } + + public final Set getReadAddresses(Configuration configuration) throws KNXFormatException { + return getAddresses(configuration, getReadAddressKeys()); + } + + protected Set getWriteAddressKeys(Type type) { + return Collections.emptySet(); + } + + public final Set getWriteAddresses(Configuration configuration, Type type) throws KNXFormatException { + return getAddresses(configuration, getWriteAddressKeys(type)); + } + + protected Set getTransmitAddressKeys(Type type) { + return Collections.emptySet(); + } + + public final Set getTransmitAddresses(Configuration configuration, Type type) + throws KNXFormatException { + return getAddresses(configuration, getTransmitAddressKeys(type)); + } + + protected Set getUpdateAddressKeys(Type type) { + return Collections.emptySet(); + } + + public Set getUpdateAddresses(Configuration configuration, Type type) throws KNXFormatException { + return getAddresses(configuration, getUpdateAddressKeys(type)); + } + + protected final Set asSet(String... values) { + return Sets.newHashSet(values); + } + + public Type convertType(Configuration configuration, Type type) { + return type; + } + + public boolean isSlave() { + return false; + } + + @Override + public String toString() { + return channelTypeID; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java new file mode 100644 index 0000000000000..32dafbc1077c3 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeContact extends KNXChannelType { + + TypeContact() { + super(CHANNEL_CONTACT); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return (String) configuration.get(DPT); + } + + @Override + public Set getReadAddressKeys() { + return asSet(GROUPADDRESS); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(GROUPADDRESS); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java new file mode 100644 index 0000000000000..a76717efd5f98 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; + +import tuwien.auto.calimero.GroupAddress; + +class TypeCurrent extends KNXChannelType { + + TypeCurrent() { + super(CHANNEL_CURRENT); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return "7.012"; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(CURRENT_GA); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java new file mode 100644 index 0000000000000..861edadbcad96 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeDateTime extends KNXChannelType { + + TypeDateTime() { + super(CHANNEL_DATETIME); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return (String) configuration.get(DPT); + } + + @Override + protected Set getReadAddressKeys() { + return asSet(GROUPADDRESS); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(GROUPADDRESS); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java new file mode 100644 index 0000000000000..43c4b3236c0b8 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Collections; +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; +import org.eclipse.smarthome.core.library.types.OnOffType; +import org.eclipse.smarthome.core.library.types.PercentType; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +class TypeDimmer extends KNXChannelType { + + TypeDimmer() { + super(CHANNEL_DIMMER); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { + if (isEquals(configuration, SWITCH_GA, groupAddress)) { + return "1.001"; + } + if (isEquals(configuration, STATUS_GA, groupAddress)) { + return "1.001"; + } + if (isEquals(configuration, POSITION_GA, groupAddress)) { + return "5.001"; + } + if (isEquals(configuration, POSITION_STATUS_GA, groupAddress)) { + return "5.001"; + } + if (isEquals(configuration, INCREASE_DECREASE_GA, groupAddress)) { + return "3.007"; + } + return null; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(STATUS_GA, POSITION_GA); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + if (type == null) { + return asSet(SWITCH_GA, INCREASE_DECREASE_GA, POSITION_GA); + } else { + if (type instanceof OnOffType) { + return asSet(SWITCH_GA); + } + if (type instanceof PercentType) { + return asSet(POSITION_GA); + } + if (type instanceof IncreaseDecreaseType) { + return asSet(INCREASE_DECREASE_GA); + } + } + return Collections.emptySet(); + } + + @Override + public Type convertType(Configuration configuration, Type type) { + if (type instanceof OnOffType) { + if (configuration.get(SWITCH_GA) != null) { + return type; + } else if (configuration.get(POSITION_GA) != null) { + return ((OnOffType) type).as(PercentType.class); + } + } + + if (type instanceof PercentType) { + if (configuration.get(POSITION_GA) != null) { + return type; + } else if (configuration.get(SWITCH_GA) != null) { + return ((PercentType) type).as(OnOffType.class); + } + } + + return type; + } +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java new file mode 100644 index 0000000000000..323e670a80433 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; + +import tuwien.auto.calimero.GroupAddress; + +class TypeEnergy extends KNXChannelType { + + TypeEnergy() { + super(CHANNEL_ENERGY); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + String unit = (String) configuration.get(UNIT); + switch (unit) { + case "Wh": + return "13.010"; + case "kWh": + return "13.013"; + } + return null; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(ENERGY_GA); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java new file mode 100644 index 0000000000000..750cd7c75b6a8 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeNumber extends KNXChannelType { + + TypeNumber() { + super(CHANNEL_NUMBER); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return (String) configuration.get(DPT); + } + + @Override + protected Set getReadAddressKeys() { + return asSet(GROUPADDRESS); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(GROUPADDRESS); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java new file mode 100644 index 0000000000000..ae195bb325d6e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; + +import tuwien.auto.calimero.GroupAddress; + +class TypeOperatingHours extends KNXChannelType { + + TypeOperatingHours() { + super(CHANNEL_OPERATING_HOURS); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return "7.001"; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(OPERATING_HOURS_GA); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java new file mode 100644 index 0000000000000..44ec43119d6e0 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -0,0 +1,98 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.library.types.PercentType; +import org.eclipse.smarthome.core.library.types.StopMoveType; +import org.eclipse.smarthome.core.library.types.UpDownType; +import org.eclipse.smarthome.core.types.Type; + +import com.google.common.collect.Sets; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +class TypeRollershutter extends KNXChannelType { + + TypeRollershutter() { + super(CHANNEL_ROLLERSHUTTER); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { + if (isEquals(configuration, UP_DOWN_GA, groupAddress)) { + return "1.008"; + } + if (isEquals(configuration, UP_DOWN_STATUS_GA, groupAddress)) { + return "1.008"; + } + if (isEquals(configuration, STOP_MOVE_GA, groupAddress)) { + return "1.010"; + } + if (isEquals(configuration, STOP_MOVE_STATUS_GA, groupAddress)) { + return "1.010"; + } + if (isEquals(configuration, POSITION_GA, groupAddress)) { + return "5.001"; + } + if (isEquals(configuration, POSITION_STATUS_GA, groupAddress)) { + return "5.001"; + } + return null; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(UP_DOWN_STATUS_GA, STOP_MOVE_STATUS_GA, POSITION_STATUS_GA); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + if (type == null) { + return asSet(UP_DOWN_GA, STOP_MOVE_GA, POSITION_GA); + } else { + if (type instanceof UpDownType) { + return asSet(UP_DOWN_GA); + } + if (type instanceof PercentType) { + return asSet(POSITION_GA); + } + if (type instanceof StopMoveType) { + return asSet(STOP_MOVE_GA); + } + } + return Sets.newHashSet(); + } + + @Override + public Type convertType(Configuration configuration, Type type) { + if (type instanceof UpDownType) { + if (configuration.get(UP_DOWN_GA) != null) { + return type; + } else if (configuration.get(POSITION_GA) != null) { + return ((UpDownType) type).as(PercentType.class); + } + } + + if (type instanceof PercentType) { + if (configuration.get(POSITION_GA) != null) { + return type; + } else if (configuration.get(UP_DOWN_GA) != null) { + return ((PercentType) type).as(UpDownType.class); + } + } + + return type; + } +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java new file mode 100644 index 0000000000000..87224abe2287a --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeSetpoint extends KNXChannelType { + + TypeSetpoint() { + super(CHANNEL_SETPOINT); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return "9.001"; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(STATUS_GA); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(SETPOINT_GA); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java new file mode 100644 index 0000000000000..e4cfd1a5ffb3b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeStatusSwitch extends KNXChannelType { + + TypeStatusSwitch() { + super(CHANNEL_STATUSSWITCH); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return "1.001"; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(STATUS_GA); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(SWITCH_GA); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java new file mode 100644 index 0000000000000..41b186eed8b21 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeString extends KNXChannelType { + + TypeString() { + super(CHANNEL_STRING); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return (String) configuration.get(DPT); + } + + @Override + protected Set getReadAddressKeys() { + return asSet(GROUPADDRESS); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(GROUPADDRESS); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java new file mode 100644 index 0000000000000..7091941e1f47d --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -0,0 +1,41 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeSwitch extends KNXChannelType { + + TypeSwitch() { + super(CHANNEL_SWITCH); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return (String) configuration.get(DPT); + } + + @Override + protected Set getReadAddressKeys() { + return asSet(GROUPADDRESS); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(GROUPADDRESS); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java new file mode 100644 index 0000000000000..bb1da8da634c7 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java @@ -0,0 +1,46 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Set; + +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +class TypeWallButton extends KNXChannelType { + + TypeWallButton() { + super(CHANNEL_WALLBUTTON); + } + + @Override + public String getDPT(GroupAddress groupAddress, Configuration configuration) { + return "1.001"; + } + + @Override + protected Set getReadAddressKeys() { + return asSet(SWITCH_GA); + } + + @Override + protected Set getWriteAddressKeys(Type type) { + return asSet(STATUS_GA); + } + + @Override + public boolean isSlave() { + return true; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java new file mode 100644 index 0000000000000..32a72d2cec3f6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -0,0 +1,957 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.dpt; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import org.eclipse.smarthome.core.library.types.DateTimeType; +import org.eclipse.smarthome.core.library.types.DecimalType; +import org.eclipse.smarthome.core.library.types.HSBType; +import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; +import org.eclipse.smarthome.core.library.types.OnOffType; +import org.eclipse.smarthome.core.library.types.OpenClosedType; +import org.eclipse.smarthome.core.library.types.PercentType; +import org.eclipse.smarthome.core.library.types.StopMoveType; +import org.eclipse.smarthome.core.library.types.StringType; +import org.eclipse.smarthome.core.library.types.UpDownType; +import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.KNXTypeMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.dptxlator.DPT; +import tuwien.auto.calimero.dptxlator.DPTXlator; +import tuwien.auto.calimero.dptxlator.DPTXlator1BitControlled; +import tuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat; +import tuwien.auto.calimero.dptxlator.DPTXlator2ByteUnsigned; +import tuwien.auto.calimero.dptxlator.DPTXlator3BitControlled; +import tuwien.auto.calimero.dptxlator.DPTXlator4ByteFloat; +import tuwien.auto.calimero.dptxlator.DPTXlator4ByteSigned; +import tuwien.auto.calimero.dptxlator.DPTXlator4ByteUnsigned; +import tuwien.auto.calimero.dptxlator.DPTXlator64BitSigned; +import tuwien.auto.calimero.dptxlator.DPTXlator8BitSigned; +import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; +import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; +import tuwien.auto.calimero.dptxlator.DPTXlatorDate; +import tuwien.auto.calimero.dptxlator.DPTXlatorDateTime; +import tuwien.auto.calimero.dptxlator.DPTXlatorRGB; +import tuwien.auto.calimero.dptxlator.DPTXlatorSceneControl; +import tuwien.auto.calimero.dptxlator.DPTXlatorSceneNumber; +import tuwien.auto.calimero.dptxlator.DPTXlatorString; +import tuwien.auto.calimero.dptxlator.DPTXlatorTime; +import tuwien.auto.calimero.dptxlator.DPTXlatorUtf8; +//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPTXlator8BitEnum; +//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPtXlator8BitSet; +//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPtXlatorMeteringValue; +import tuwien.auto.calimero.dptxlator.TranslatorTypes; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.exception.KNXIllegalArgumentException; + +/** + * This class provides type mapping between all openHAB core types and KNX data point types. + * + * @author Kai Kreuzer + * @author Volker Daube + * @author Helmut Lehmeyer + * generic DPT Mapper + * @since 0.3.0 + */ +public class KNXCoreTypeMapper implements KNXTypeMapper { + + private static final Logger LOGGER = LoggerFactory.getLogger(KNXCoreTypeMapper.class); + + private static final String TIME_DAY_FORMAT = new String("EEE, HH:mm:ss"); + private static final String DATE_FORMAT = new String("yyyy-MM-dd"); + + /** + * stores the openHAB type class for (supported) KNX datapoint types in a generic way. + * dptTypeMap stores more specific type class and exceptions. + */ + private static Map> dptMainTypeMap; + + /** stores the openHAB type class for all (supported) KNX datapoint types */ + private static Map> dptTypeMap; + + /** stores the default KNX DPT to use for each openHAB type */ + private static Map, String> defaultDptMap; + + static { + + @SuppressWarnings("unused") + final List> xlators = Arrays.> asList(DPTXlator1BitControlled.class, + DPTXlator2ByteFloat.class, DPTXlator2ByteUnsigned.class, DPTXlator3BitControlled.class, + DPTXlator4ByteFloat.class, DPTXlator4ByteSigned.class, DPTXlator4ByteUnsigned.class, + DPTXlator64BitSigned.class, DPTXlator8BitSigned.class, DPTXlator8BitUnsigned.class, + DPTXlatorBoolean.class, DPTXlatorDate.class, DPTXlatorDateTime.class, DPTXlatorRGB.class, + DPTXlatorSceneControl.class, DPTXlatorSceneNumber.class, DPTXlatorString.class, DPTXlatorTime.class, + DPTXlatorUtf8.class + // calimero 2.4 DPTXlator8BitEnum.class, + // calimero 2.4 DptXlator8BitSet.class, + // calimero 2.4 DptXlatorMeteringValue.class + ); + + dptTypeMap = new HashMap>(); + dptMainTypeMap = new HashMap>(); + + /** + * MainType: 1 + * 1.005: Alarm, values no alarm alarm + * 1.016: Acknowledge, values no action acknowledge + * 1.006: Binary value, values low high + * 1.017: Trigger, values trigger trigger + * 1.007: Step, values decrease increase + * 1.018: Occupancy, values not occupied occupied + * 1.008: Up/Down, values up down + * 1.019: Window/Door, values closed open + * 1.009: Open/Close, values open close + * 1.010: Start, values stop start + * 1.021: Logical function, values OR AND + * 1.011: State, values inactive active + * 1.022: Scene A/B, values scene A scene B + * 1.001: Switch, values off on + * 1.012: Invert, values not inverted inverted + * 1.023: Shutter/Blinds mode, values only move up/down move up/down + step-stop + * 1.100: Heat/Cool, values cooling heating + * 1.002: Boolean, values false true + * 1.013: Dim send-style, values start/stop cyclic + * 1.003: Enable, values disable enable + * 1.014: Input source, values fixed calculated + * 1.004: Ramp, values no ramp ramp + * 1.015: Reset, values no action reset + */ + dptMainTypeMap.put(1, OnOffType.class); + /** Exceptions Datapoint Types "B1", Main number 1 */ + dptTypeMap.put(DPTXlatorBoolean.DPT_UPDOWN.getID(), UpDownType.class); + dptTypeMap.put(DPTXlatorBoolean.DPT_OPENCLOSE.getID(), OpenClosedType.class); + dptTypeMap.put(DPTXlatorBoolean.DPT_START.getID(), StopMoveType.class); + dptTypeMap.put(DPTXlatorBoolean.DPT_WINDOW_DOOR.getID(), OpenClosedType.class); + dptTypeMap.put(DPTXlatorBoolean.DPT_SCENE_AB.getID(), DecimalType.class); + + /** + * MainType: 2 + * 2.002: Boolean Controlled, values 0 false 1 true + * 2.003: Enable Controlled, values 0 disable 1 enable + * 2.011: State Controlled, values 0 inactive 1 active + * 2.001: Switch Controlled, values 0 off 1 on + * 2.012: Invert Controlled, values 0 not inverted 1 inverted + * 2.010: Start Controlled, values 0 stop 1 start + * 2.008: Up/Down Controlled, values 0 up 1 down + * 2.009: Open/Close Controlled, values 0 open 1 close + * 2.006: Binary Controlled, values 0 low 1 high + * 2.007: Step Controlled, values 0 decrease 1 increase + * 2.004: Ramp Controlled, values 0 no ramp 1 ramp + * 2.005: Alarm Controlled, values 0 no alarm 1 alarm + */ + dptMainTypeMap.put(2, DecimalType.class); + /** Exceptions Datapoint Types "B2", Main number 2 */ + // Example: dptTypeMap.put(DPTXlator1BitControlled.DPT_SWITCH_CONTROL.getID(), DecimalType.class); + + /** + * MainType: 3 + * 3.007: Dimming, values decrease 7 increase 7 + * 3.008: Blinds, values up 7 down 7 + */ + dptMainTypeMap.put(3, IncreaseDecreaseType.class); + /** Exceptions Datapoint Types "B1U3", Main number 3 */ + dptTypeMap.put(DPTXlator3BitControlled.DPT_CONTROL_BLINDS.getID(), UpDownType.class); + + /** + * MainType: 5 + * 5.010: Unsigned count, values 0 255 counter pulses + * 5.001: Scaling, values 0 100 % + * 5.003: Angle, values 0 360 ° + * 5.004: Percent (8 Bit), values 0 255 % + * 5.005: Decimal factor, values 0 255 ratio + * 5.006: Tariff information, values 0 254 + */ + dptMainTypeMap.put(5, DecimalType.class); + /** Exceptions Types "8-Bit Unsigned Value", Main number 5 */ + dptTypeMap.put(DPTXlator8BitUnsigned.DPT_SCALING.getID(), PercentType.class); + + /** + * MainType: 6 + * 6.001: Percent (8 Bit), values -128 127 % + * 6.020: status with mode, values 0/0/0/0/0 0 1/1/1/1/1 2 + * 6.010: signed count, values -128 127 counter pulses + */ + dptMainTypeMap.put(6, DecimalType.class); + /** Exceptions Datapoint Types "8-Bit Signed Value", Main number 6 */ + dptTypeMap.put(DPTXlator8BitSigned.DPT_STATUS_MODE3.getID(), StringType.class); + + /** + * MainType: 7 + * 7.003: Time period (resolution 10 ms), values 0 655350 ms + * 7.004: Time period (resolution 100 ms), values 0 6553500 ms + * 7.005: Time period in seconds, values 0 65535 s + * 7.006: Time period in minutes, values 0 65535 min + * 7.010: Interface object property ID, values 0 65535 + * 7.011: Length in mm, values 0 65535 mm + * 7.001: Unsigned count, values 0 65535 pulses + * 7.012: Electrical current, values 0 65535 mA + * 7.002: Time period in ms, values 0 65535 ms + * 7.013: Brightness, values 0 65535 lx + * 7.007: Time period in hours, values 0 65535 h + */ + dptMainTypeMap.put(7, DecimalType.class); + /** Exceptions Datapoint Types "2-Octet Unsigned Value", Main number 7 */ + // Example: dptTypeMap.put(DPTXlator2ByteUnsigned.DPT_VALUE_2_UCOUNT.getID(), DecimalType.class); + + /** + * MainType: 9 + * 9.020: Voltage, values -670760 +670760 mV + * 9.010: Time difference 1, values -670760 +670760 s + * 9.021: Electrical current, values -670760 +670760 mA + * 9.011: Time difference 2, values -670760 +670760 ms + * 9.022: Power density, values -670760 +670760 W/m² + * 9.001: Temperature, values -273 +670760 °C + * 9.023: Kelvin/percent, values -670760 +670760 K/% + * 9.002: Temperature difference, values -670760 +670760 K + * 9.024: Power, values -670760 +670760 kW + * 9.003: Temperature gradient, values -670760 +670760 K/h + * 9.025: Volume flow, values -670760 +670760 l/h + * 9.004: Light intensity, values 0 +670760 lx + * 9.026: Rain amount, values -671088.64 670760.96 l/m² + * 9.005: Wind speed, values 0 +670760 m/s + * 9.027: Temperature, values -459.6 670760.96 °F + * 9.006: Air pressure, values 0 +670760 Pa + * 9.028: Wind speed, values 0 670760.96 km/h + * 9.007: Humidity, values 0 +670760 % + * 9.008: Air quality, values 0 +670760 ppm + */ + dptMainTypeMap.put(9, DecimalType.class); + /** Exceptions Datapoint Types "2-Octet Float Value", Main number 9 */ + // Example: dptTypeMap.put(DPTXlator2ByteFloat.DPT_TEMPERATURE.getID(), DecimalType.class); + + /** + * MainType: 10 + * 10.001: Time of day, values no-day, 00:00:00 Sun, 23:59:59 dow, hh:mm:ss + */ + dptMainTypeMap.put(10, DateTimeType.class); + /** Exceptions Datapoint Types "Time", Main number 10 */ + // Example: dptTypeMap.put(DPTXlatorTime.DPT_TIMEOFDAY.getID(), DateTimeType.class); + + /** + * MainType: 11 + * 11.001: Date, values 1990-01-01 2089-12-31 yyyy-mm-dd + */ + dptMainTypeMap.put(11, DateTimeType.class); + /** Exceptions Datapoint Types “Date”", Main number 11 */ + // Example: dptTypeMap.put(DPTXlatorDate.DPT_DATE.getID(), DateTimeType.class); + + /** + * MainType: 12 + * 12.001: Unsigned count, values 0 4294967295 counter pulses + */ + dptMainTypeMap.put(12, DecimalType.class); + /** Exceptions Datapoint Types "4-Octet Unsigned Value", Main number 12 */ + // Example: dptTypeMap.put(DPTXlator4ByteUnsigned.DPT_VALUE_4_UCOUNT.getID(), DecimalType.class); + + /** + * MainType: 13 + * 13.010: Active Energy, values -2147483648 2147483647 Wh + * 13.001: Counter pulses, values -2147483648 2147483647 counter pulses + * 13.012: Reactive energy, values -2147483648 2147483647 VARh + * 13.100: Delta time in seconds, values -2147483648 2147483647 s + * 13.011: Apparent energy, values -2147483648 2147483647 VAh + * 13.014: Apparent energy in kVAh, values -2147483648 2147483647 kVAh + * 13.002: Flow rate, values -2147483648 2147483647 m3/h + * 13.013: Active energy in kWh, values -2147483648 2147483647 kWh + * 13.015: Reactive energy in kVARh, values -2147483648 2147483647 kVARh + */ + dptMainTypeMap.put(13, DecimalType.class); + /** Exceptions Datapoint Types "4-Octet Signed Value", Main number 13 */ + // Example: dptTypeMap.put(DPTXlator4ByteSigned.DPT_COUNT.getID(), DecimalType.class); + + /** + * MainType: 14 + * 14.019: Electric current, values -3.40282347e+38f..3.40282347e+38f A + * 14.018: Electric charge, values -3.40282347e+38f..3.40282347e+38f C + * 14.017: Density, values -3.40282347e+38f..3.40282347e+38f kg m⁻³ + * 14.016: Conductivity, electrical, values -3.40282347e+38f..3.40282347e+38f Ω⁻¹m⁻¹ + * 14.015: Conductance, values -3.40282347e+38f..3.40282347e+38f Ω⁻¹ + * 14.059: Reactance, values -3.40282347e+38f..3.40282347e+38f Ω + * 14.014: Compressibility, values -3.40282347e+38f..3.40282347e+38f m²/N + * 14.058: Pressure, values -3.40282347e+38f..3.40282347e+38f Pa + * 14.013: Charge density (volume), values -3.40282347e+38f..3.40282347e+38f C m⁻³ + * 14.057: Power factor, values -3.40282347e+38f..3.40282347e+38f + * 14.012: Charge density (surface), values -3.40282347e+38f..3.40282347e+38f C m⁻² + * 14.056: Power, values -3.40282347e+38f..3.40282347e+38f W + * 14.011: Capacitance, values -3.40282347e+38f..3.40282347e+38f F + * 14.055: Phase angle, degree, values -3.40282347e+38f..3.40282347e+38f ° + * 14.010: Area, values -3.40282347e+38f..3.40282347e+38f m² + * 14.054: Phase angle, radiant, values -3.40282347e+38f..3.40282347e+38f rad + * 14.053: Momentum, values -3.40282347e+38f..3.40282347e+38f N/s + * 14.052: Mass flux, values -3.40282347e+38f..3.40282347e+38f kg/s + * 14.051: Mass, values -3.40282347e+38f..3.40282347e+38f kg + * 14.050: Magneto motive force, values -3.40282347e+38f..3.40282347e+38f A + * 14.060: Resistance, values -3.40282347e+38f..3.40282347e+38f Ω + * 14.029: Electromagnetic moment, values -3.40282347e+38f..3.40282347e+38f A m² + * 14.028: Electric potential difference, values -3.40282347e+38f..3.40282347e+38f V + * 14.027: Electric potential, values -3.40282347e+38f..3.40282347e+38f V + * 14.026: Electric polarization, values -3.40282347e+38f..3.40282347e+38f C m⁻² + * 14.025: Electric flux density, values -3.40282347e+38f..3.40282347e+38f C m⁻² + * 14.069: Temperature, absolute, values -3.40282347e+38f..3.40282347e+38f K + * 14.024: Electric flux, values -3.40282347e+38f..3.40282347e+38f Vm + * 14.068: Temperature in Celsius Degree, values -3.40282347e+38f..3.40282347e+38f °C + * 14.023: Electric field strength, values -3.40282347e+38f..3.40282347e+38f V/m + * 14.067: Surface tension, values -3.40282347e+38f..3.40282347e+38f N/m + * 14.022: Electric displacement, values -3.40282347e+38f..3.40282347e+38f C m⁻² + * 14.066: Stress, values -3.40282347e+38f..3.40282347e+38f Pa + * 14.021: Electric dipole moment, values -3.40282347e+38f..3.40282347e+38f Cm + * 14.065: Speed, values -3.40282347e+38f..3.40282347e+38f m/s + * 14.020: Electric current density, values -3.40282347e+38f..3.40282347e+38f A m⁻² + * 14.064: Sound intensity, values -3.40282347e+38f..3.40282347e+38f W m⁻² + * 14.063: Solid angle, values -3.40282347e+38f..3.40282347e+38f sr + * 14.062: Self inductance, values -3.40282347e+38f..3.40282347e+38f H + * 14.061: Resistivity, values -3.40282347e+38f..3.40282347e+38f Ωm + * 14.071: Thermal capacity, values -3.40282347e+38f..3.40282347e+38f J/K + * 14.070: Temperature difference, values -3.40282347e+38f..3.40282347e+38f K + * 14.039: Length, values -3.40282347e+38f..3.40282347e+38f m + * 14.038: Impedance, values -3.40282347e+38f..3.40282347e+38f Ω + * 14.037: Heat quantity, values -3.40282347e+38f..3.40282347e+38f J + * 14.036: Heat flow rate, values -3.40282347e+38f..3.40282347e+38f W + * 14.035: Heat capacity, values -3.40282347e+38f..3.40282347e+38f J/K + * 14.079: Work, values -3.40282347e+38f..3.40282347e+38f J + * 14.034: Frequency, angular, values -3.40282347e+38f..3.40282347e+38f rad/s + * 14.078: Weight, values -3.40282347e+38f..3.40282347e+38f N + * 14.033: Frequency, values -3.40282347e+38f..3.40282347e+38f Hz + * 14.077: Volume flux, values -3.40282347e+38f..3.40282347e+38f m³/s + * 14.032: Force, values -3.40282347e+38f..3.40282347e+38f N + * 14.076: Volume, values -3.40282347e+38f..3.40282347e+38f m³ + * 14.031: Energy, values -3.40282347e+38f..3.40282347e+38f J + * 14.075: Torque, values -3.40282347e+38f..3.40282347e+38f Nm + * 14.030: Electromotive force, values -3.40282347e+38f..3.40282347e+38f V + * 14.074: Time, values -3.40282347e+38f..3.40282347e+38f s + * 14.073: Thermoelectric power, values -3.40282347e+38f..3.40282347e+38f V/K + * 14.072: Thermal conductivity, values -3.40282347e+38f..3.40282347e+38f W/m K⁻¹ + * 14.009: Angular velocity, values -3.40282347e+38f..3.40282347e+38f rad/s + * 14.008: Momentum, values -3.40282347e+38f..3.40282347e+38f Js + * 14.007: Angle, values -3.40282347e+38f..3.40282347e+38f ° + * 14.006: Angle, values -3.40282347e+38f..3.40282347e+38f rad + * 14.005: Amplitude, values -3.40282347e+38f..3.40282347e+38f + * 14.049: Magnetization, values -3.40282347e+38f..3.40282347e+38f A/m + * 14.004: Mol, values -3.40282347e+38f..3.40282347e+38f mol + * 14.048: Magnetic polarization, values -3.40282347e+38f..3.40282347e+38f T + * 14.003: Activity, values -3.40282347e+38f..3.40282347e+38f s⁻¹ + * 14.047: Magnetic moment, values -3.40282347e+38f..3.40282347e+38f A m² + * 14.002: Activation energy, values -3.40282347e+38f..3.40282347e+38f J/mol + * 14.046: Magnetic flux density, values -3.40282347e+38f..3.40282347e+38f T + * 14.001: Acceleration, angular, values -3.40282347e+38f..3.40282347e+38f rad s⁻² + * 14.045: Magnetic flux, values -3.40282347e+38f..3.40282347e+38f Wb + * 14.000: Acceleration, values -3.40282347e+38f..3.40282347e+38f ms⁻² + * 14.044: Magnetic field strength, values -3.40282347e+38f..3.40282347e+38f A/m + * 14.043: Luminous intensity, values -3.40282347e+38f..3.40282347e+38f cd + * 14.042: Luminous flux, values -3.40282347e+38f..3.40282347e+38f lm + * 14.041: Luminance, values -3.40282347e+38f..3.40282347e+38f cd m⁻² + * 14.040: Quantity of Light, values -3.40282347e+38f..3.40282347e+38f J + */ + dptMainTypeMap.put(14, DecimalType.class); + /** Exceptions Datapoint Types "4-Octet Float Value", Main number 14 */ + // Example: dptTypeMap.put(DPTXlator4ByteFloat.DPT_ACCELERATION_ANGULAR.getID(), DecimalType.class); + + /** + * MainType: 16 + * 16.000: ASCII string, values + * 16.001: ISO-8859-1 string (Latin 1), values + */ + dptMainTypeMap.put(16, StringType.class); + /** Exceptions Datapoint Types "String", Main number 16 */ + // Example: dptTypeMap.put(DPTXlatorString.DPT_STRING_ASCII.getID(), StringType.class); + + /** + * MainType: 17 + * 17.001: Scene Number, values 0 63 + */ + dptMainTypeMap.put(17, DecimalType.class); + /** Exceptions Datapoint Types "Scene Number", Main number 17 */ + // Example: dptTypeMap.put(DPTXlatorSceneNumber.DPT_SCENE_NUMBER.getID(), DecimalType.class); + + /** + * MainType: 18 + * 18.001: Scene Control, values activate 0 learn 63 + */ + dptMainTypeMap.put(18, DecimalType.class); + /** Exceptions Datapoint Types "Scene Control", Main number 18 */ + // Example: dptTypeMap.put(DPTXlatorSceneControl.DPT_SCENE_CONTROL.getID(), DecimalType.class); + + /** + * MainType: 19 + * 19.001: Date with time, values 1900, 01/01 00:00:00 2155, 12/31 24:00:00 yr/mth/day hr:min:sec + */ + dptMainTypeMap.put(19, DateTimeType.class); + /** Exceptions Datapoint Types "DateTime", Main number 19 */ + // Example: dptTypeMap.put(DPTXlatorDateTime.DPT_DATE_TIME.getID(), DateTimeType.class); + + /** + * MainType: 20 + * 20.606: PB Action, enumeration [0..3] + * 20.804: Blinds Control Mode, enumeration [0..1] + * 20.607: Dimm PB Model, enumeration [1..4] + * 20.608: Switch On Mode, enumeration [0..2] + * 20.609: Load Type Set, enumeration [0..2] + * 20.008: PSU Mode, enumeration [0..2] + * 20.602: DALI Fade Time, enumeration [0..15] + * 20.603: Blinking Mode, enumeration [0..2] + * 20.801: SAB Except Behavior, enumeration [0..4] + * 20.604: Light Control Mode, enumeration [0..1] + * 20.802: SAB Behavior Lock/Unlock, enumeration [0..6] + * 20.605: Switch PB Model, enumeration [1..2] + * 20.803: SSSB Mode, enumeration [1..4] + * 20.004: Priority, enumeration [0..3] + * 20.005: Light Application Mode, enumeration [0..2] + * 20.006: Application Area, enumeration [0..14] + * 20.600: Behavior Lock/Unlock, enumeration [0..6] + * 20.007: Alarm Class Type, enumeration [0..3] + * 20.601: Behavior Bus Power Up/Down, enumeration [0..4] + * 20.121: Backup Mode, enumeration [0..1] + * 20.001: System Clock Mode, enumeration [0..2] + * 20.122: Start Synchronization, enumeration [0..2] + * 20.002: Building Mode, enumeration [0..2] + * 20.003: Occupancy Mode, enumeration [0..2] + * 20.610: Load Type Detected, enumeration [0..3] + * 20.017: Sensor Select, enumeration [0..4] + * 20.011: Error Class System, enumeration [0..18] + * 20.012: Error Class HVAC, enumeration [0..4] + * 20.013: Time Delay, enumeration [0..25] + * 20.014: Beaufort Wind Force Scale, enumeration [0..12] + * 20.020: Actuator Connect Type, enumeration [1..2] + * 20.107: Changeover Mode, enumeration [0..2] + * 20.108: Valve Mode, enumeration [1..5] + * 20.109: Damper Mode, enumeration [1..4] + * 20.103: DHW Mode, enumeration [0..4] + * 20.104: Load Priority, enumeration [0..2] + * 20.105: HVAC Control Mode, enumeration [0..20] + * 20.106: HVAC Emergency Mode, enumeration [0..5] + * 20.100: Fuel Type, enumeration [0..3] + * 20.101: Burner Type, enumeration [0..3] + * 20.102: HVAC Mode, enumeration [0..4] + * 20.114: Metering Device Type, enumeration [0..41/255] + * 20.110: Heater Mode, enumeration [1..3] + * 20.1202: Gas Measurement Condition, enumeration [0..3] + * 20.111: Fan Mode, enumeration [0..2] + * 20.1003: RF Filter Select, enumeration [0..3] + * 20.112: Master/Slave Mode, enumeration [0..2] + * 20.1002: RF Mode Select, enumeration [0..2] + * 20.1200: M-Bus Breaker/Valve State, enumeration [0..255] + * 20.113: Status Room Setpoint, enumeration [0..2] + * 20.1001: Additional Info Type, enumeration [0..7] + * 20.1000: Comm Mode, enumeration [0..255] + * 20.120: Air Damper Actuator Type, enumeration [1..2] + */ + dptMainTypeMap.put(20, StringType.class); + /** Exceptions Datapoint Types, Main number 20 */ + // Example since calimero 2.4: dptTypeMap.put(DPTXlator8BitEnum.DptSystemClockMode.getID(), StringType.class); + + /** + * MainType: 21 + * 21.106: Ventilation Controller Status, values 0..15 + * 21.601: Light Actuator Error Info, values 0..127 + * 21.001: General Status, values 0..31 + * 21.100: Forcing Signal, values 0..255 + * 21.002: Device Control, values 0..7 + * 21.101: Forcing Signal Cool, values 0..1 + * 21.1010: Channel Activation State, values 0..255 + * 21.1000: R F Comm Mode Info, values 0..7 + * 21.1001: R F Filter Modes, values 0..7 + * 21.104: Fuel Type Set, values 0..7 + * 21.105: Room Cooling Controller Status, values 0..1 + * 21.102: Room Heating Controller Status, values 0..255 + * 21.103: Solar Dhw Controller Status, values 0..7 + */ + dptMainTypeMap.put(21, StringType.class); + /** Exceptions Datapoint Types, Main number 21 */ + // Example since calimero 2.4: dptTypeMap.put(DptXlator8BitSet.DptGeneralStatus.getID(), StringType.class); + + /** + * MainType: 28 + * 28.001: UTF-8, values + */ + dptMainTypeMap.put(28, StringType.class); + /** Exceptions Datapoint Types "String" UTF-8, Main number 28 */ + // Example: dptTypeMap.put(DPTXlatorUtf8.DPT_UTF8.getID(), StringType.class); + + /** + * MainType: 29 + * 29.012: Reactive energy, values -9223372036854775808 9223372036854775807 VARh + * 29.011: Apparent energy, values -9223372036854775808 9223372036854775807 VAh + * 29.010: Active Energy, values -9223372036854775808 9223372036854775807 Wh + */ + dptMainTypeMap.put(29, DecimalType.class); + /** Exceptions Datapoint Types "64-Bit Signed Value", Main number 29 */ + // Example: dptTypeMap.put(DPTXlator64BitSigned.DPT_ACTIVE_ENERGY.getID(), DecimalType.class); + + /** + * MainType: 229 + * 229.001: Metering Value, values -2147483648..2147483647 + */ + dptMainTypeMap.put(229, DecimalType.class); + /** Exceptions Datapoint Types "4-Octet Signed Value", Main number 229 */ + // Example: dptTypeMap.put(DptXlatorMeteringValue.DptMeteringValue.getID(), DecimalType.class); + + /** + * MainType: 232 + * 232.600: RGB, values 0 0 0 255 255 255 r g b + */ + dptMainTypeMap.put(232, HSBType.class); + /** Exceptions Datapoint Types "RGB Color", Main number 232 */ + // Example: dptTypeMap.put(DPTXlatorRGB.DPT_RGB.getID(), HSBType.class); + + defaultDptMap = new HashMap, String>(); + defaultDptMap.put(OnOffType.class, DPTXlatorBoolean.DPT_SWITCH.getID()); + defaultDptMap.put(UpDownType.class, DPTXlatorBoolean.DPT_UPDOWN.getID()); + defaultDptMap.put(StopMoveType.class, DPTXlatorBoolean.DPT_START.getID()); + defaultDptMap.put(OpenClosedType.class, DPTXlatorBoolean.DPT_WINDOW_DOOR.getID()); + defaultDptMap.put(IncreaseDecreaseType.class, DPTXlator3BitControlled.DPT_CONTROL_DIMMING.getID()); + defaultDptMap.put(PercentType.class, DPTXlator8BitUnsigned.DPT_SCALING.getID()); + defaultDptMap.put(DecimalType.class, DPTXlator2ByteFloat.DPT_TEMPERATURE.getID()); + defaultDptMap.put(DateTimeType.class, DPTXlatorTime.DPT_TIMEOFDAY.getID()); + defaultDptMap.put(StringType.class, DPTXlatorString.DPT_STRING_8859_1.getID()); + defaultDptMap.put(HSBType.class, DPTXlatorRGB.DPT_RGB.getID()); + } + + /* + * (non-Javadoc) + * + * @see org.openhab.binding.knx1.config.KNXTypeMapper#toDPTValue(org.openhab.core.types.Type, java.lang.String) + */ + @Override + public String toDPTValue(Type type, String dptID) { + + DPT dpt; + int mainNumber = getMainNumber(dptID); + if (mainNumber == -1) { + LOGGER.error("toDPTValue couldn't identify mainnumber in dptID: {}", dptID); + return null; + } + + try { + DPTXlator translator = TranslatorTypes.createTranslator(mainNumber, dptID); + dpt = translator.getType(); + } catch (KNXException e) { + return null; + } + + try { + // check for HSBType first, because it extends PercentType as well + if (type instanceof HSBType) { + HSBType hc = ((HSBType) type); + return "r:" + Integer.toString(hc.getRed().intValue()) + " g:" + + Integer.toString(hc.getGreen().intValue()) + " b:" + + Integer.toString(hc.getBlue().intValue()); + } else if (type instanceof OnOffType) { + return type.equals(OnOffType.OFF) ? dpt.getLowerValue() : dpt.getUpperValue(); + } else if (type instanceof UpDownType) { + return type.equals(UpDownType.UP) ? dpt.getLowerValue() : dpt.getUpperValue(); + } else if (type instanceof IncreaseDecreaseType) { + DPT valueDPT = ((DPTXlator3BitControlled.DPT3BitControlled) dpt).getControlDPT(); + return type.equals(IncreaseDecreaseType.DECREASE) ? valueDPT.getLowerValue() + " 5" + : valueDPT.getUpperValue() + " 5"; + } else if (type instanceof OpenClosedType) { + return type.equals(OpenClosedType.CLOSED) ? dpt.getLowerValue() : dpt.getUpperValue(); + } else if (type instanceof StopMoveType) { + return type.equals(StopMoveType.STOP) ? dpt.getLowerValue() : dpt.getUpperValue(); + } else if (type instanceof PercentType) { + return type.toString(); + } else if (type instanceof DecimalType) { + switch (mainNumber) { + case 2: + DPT valueDPT = ((DPTXlator1BitControlled.DPT1BitControlled) dpt).getValueDPT(); + switch (((DecimalType) type).intValue()) { + case 0: + return "0 " + valueDPT.getLowerValue(); + case 1: + return "0 " + valueDPT.getUpperValue(); + case 2: + return "1 " + valueDPT.getLowerValue(); + default: + return "1 " + valueDPT.getUpperValue(); + } + case 3: + break; + case 18: + int intVal = ((DecimalType) type).intValue(); + if (intVal > 63) { + return "learn " + (intVal - 0x80); + } else { + return "activate " + intVal; + } + default: + return type.toString(); + } + } else if (type instanceof StringType) { + return type.toString(); + } else if (type instanceof DateTimeType) { + return formatDateTime((DateTimeType) type, dptID); + } + } catch (Exception e) { + LOGGER.error("An exception occurred converting type {} to dpt id {} : {}", + new Object[] { type, dptID, e.getMessage() }); + return null; + } + + LOGGER.debug("toDPTValue: Couldn't convert type {} to dpt id {} (no mapping).", type, dptID); + + return null; + } + + /* + * (non-Javadoc) + * + * @see org.openhab.binding.knx1.config.KNXTypeMapper#toType(tuwien.auto.calimero.datapoint.Datapoint, byte[]) + */ + @Override + public Type toType(Datapoint datapoint, byte[] data) { + try { + DPTXlator translator = TranslatorTypes.createTranslator(datapoint.getMainNumber(), datapoint.getDPT()); + translator.setData(data); + String value = translator.getValue(); + + String id = translator.getType().getID(); + + int mainNumber = getMainNumber(id); + if (mainNumber == -1) { + LOGGER.debug("toType: couldn't identify mainnumber in dptID: {}.", id); + return null; + } + int subNumber = getSubNumber(id); + if (subNumber == -1) { + LOGGER.debug("toType: couldn't identify su number in dptID: {}.", id); + return null; + } + /* + * Following code section deals with specific mapping of values from KNX to openHAB types were the String + * received from the DPTXlator is not sufficient to set the openHAB type or has bugs + */ + switch (mainNumber) { + case 1: + DPTXlatorBoolean translatorBoolean = (DPTXlatorBoolean) translator; + switch (subNumber) { + case 8: + return translatorBoolean.getValueBoolean() ? UpDownType.DOWN : UpDownType.UP; + case 9: + return translatorBoolean.getValueBoolean() ? OpenClosedType.OPEN : OpenClosedType.CLOSED; + case 10: + return translatorBoolean.getValueBoolean() ? StopMoveType.MOVE : StopMoveType.STOP; + case 19: + return translatorBoolean.getValueBoolean() ? OpenClosedType.OPEN : OpenClosedType.CLOSED; + case 22: + return DecimalType.valueOf(translatorBoolean.getValueBoolean() ? "1" : "0"); + default: + return translatorBoolean.getValueBoolean() ? OnOffType.ON : OnOffType.OFF; + } + case 2: + DPTXlator1BitControlled translator1BitControlled = (DPTXlator1BitControlled) translator; + int decValue = (translator1BitControlled.getControlBit() ? 2 : 0) + + (translator1BitControlled.getValueBit() ? 1 : 0); + return new DecimalType(decValue); + case 3: + DPTXlator3BitControlled translator3BitControlled = (DPTXlator3BitControlled) translator; + if (translator3BitControlled.getStepCode() == 0) { + // Not supported: break + LOGGER.debug("toType: KNX DPT_Control_Dimming: break ignored."); + return null; + } + switch (subNumber) { + case 7: + return translator3BitControlled.getControlBit() ? IncreaseDecreaseType.INCREASE + : IncreaseDecreaseType.DECREASE; + case 8: + return translator3BitControlled.getControlBit() ? UpDownType.DOWN : UpDownType.UP; + } + case 14: + /* + * FIXME: Workaround for a bug in Calimero / Openhab DPTXlator4ByteFloat.makeString(): is using a + * locale when + * translating a Float to String. It could happen the a ',' is used as separator, such as + * 3,14159E20. + * Openhab's DecimalType expects this to be in US format and expects '.': 3.14159E20. + * There is no issue with DPTXlator2ByteFloat since calimero is using a non-localized translation + * there. + */ + DPTXlator4ByteFloat translator4ByteFloat = (DPTXlator4ByteFloat) translator; + Float f = translator4ByteFloat.getValueFloat(); + if (Math.abs(f) < 100000) { + value = String.valueOf(f); + } else { + NumberFormat dcf = NumberFormat.getInstance(Locale.US); + if (dcf instanceof DecimalFormat) { + ((DecimalFormat) dcf).applyPattern("0.#####E0"); + } + value = dcf.format(f); + } + break; + case 18: + DPTXlatorSceneControl translatorSceneControl = (DPTXlatorSceneControl) translator; + int decimalValue = translatorSceneControl.getSceneNumber(); + if (value.startsWith("learn")) { + decimalValue += 0x80; + } + value = String.valueOf(decimalValue); + + break; + case 19: + DPTXlatorDateTime translatorDateTime = (DPTXlatorDateTime) translator; + if (translatorDateTime.isFaultyClock()) { + // Not supported: faulty clock + LOGGER.debug("toType: KNX clock msg ignored: clock faulty bit set, which is not supported"); + return null; + } else if (!translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && translatorDateTime.isValidField(DPTXlatorDateTime.DATE)) { + // Not supported: "/1/1" (month and day without year) + LOGGER.debug( + "toType: KNX clock msg ignored: no year, but day and month, which is not supported"); + return null; + } else if (translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && !translatorDateTime.isValidField(DPTXlatorDateTime.DATE)) { + // Not supported: "1900" (year without month and day) + LOGGER.debug( + "toType: KNX clock msg ignored: no day and month, but year, which is not supported"); + return null; + } else if (!translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && !translatorDateTime.isValidField(DPTXlatorDateTime.DATE) + && !translatorDateTime.isValidField(DPTXlatorDateTime.TIME)) { + // Not supported: No year, no date and no time + LOGGER.debug("toType: KNX clock msg ignored: no day and month or year, which is not supported"); + return null; + } + + Calendar cal = Calendar.getInstance(); + if (translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && !translatorDateTime.isValidField(DPTXlatorDateTime.TIME)) { + // Pure date format, no time information + cal.setTimeInMillis(translatorDateTime.getValueMilliseconds()); + value = new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(cal.getTime()); + return DateTimeType.valueOf(value); + } else if (!translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && translatorDateTime.isValidField(DPTXlatorDateTime.TIME)) { + // Pure time format, no date information + cal.clear(); + cal.set(Calendar.HOUR_OF_DAY, translatorDateTime.getHour()); + cal.set(Calendar.MINUTE, translatorDateTime.getMinute()); + cal.set(Calendar.SECOND, translatorDateTime.getSecond()); + value = new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(cal.getTime()); + return DateTimeType.valueOf(value); + } else if (translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) + && translatorDateTime.isValidField(DPTXlatorDateTime.TIME)) { + // Date format and time information + cal.setTimeInMillis(translatorDateTime.getValueMilliseconds()); + value = new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(cal.getTime()); + return DateTimeType.valueOf(value); + } + break; + } + + Class typeClass = toTypeClass(id); + if (typeClass == null) { + return null; + } + + if (typeClass.equals(PercentType.class)) { + return PercentType.valueOf(value.split(" ")[0]); + } + if (typeClass.equals(DecimalType.class)) { + return DecimalType.valueOf(value.split(" ")[0]); + } + if (typeClass.equals(StringType.class)) { + return StringType.valueOf(value); + } + + if (typeClass.equals(DateTimeType.class)) { + String date = formatDateTime(value, datapoint.getDPT()); + if ((date == null) || (date.isEmpty())) { + LOGGER.debug("toType: KNX clock msg ignored: date object null or empty {}.", date); + return null; + } else { + return DateTimeType.valueOf(date); + } + } + + if (typeClass.equals(HSBType.class)) { + // value has format of "r: g: b:" + int r = Integer.parseInt(value.split(" ")[0].split(":")[1]); + int g = Integer.parseInt(value.split(" ")[1].split(":")[1]); + int b = Integer.parseInt(value.split(" ")[2].split(":")[1]); + + return HSBType.fromRGB(r, g, b); + } + } catch (KNXFormatException kfe) { + LOGGER.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXFormatException).", + datapoint.getDPT()); + } catch (KNXIllegalArgumentException kiae) { + LOGGER.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXIllegalArgumentException).", + datapoint.getDPT()); + } catch (KNXException e) { + LOGGER.warn("Failed creating a translator for datapoint type ‘{}‘.", datapoint.getDPT(), e); + } + + return null; + } + + /** + * Converts a datapoint type id into an openHAB type class + * + * @param dptId the datapoint type id + * @return the openHAB type (command or state) class or {@code null} if the datapoint type id is not supported. + */ + @Override + public Class toTypeClass(String dptId) { + Class ohClass = dptTypeMap.get(dptId); + if (ohClass == null) { + int mainNumber = getMainNumber(dptId); + if (mainNumber == -1) { + LOGGER.debug("toType: couldn't convert dptID toTypeClass: {}.", dptId); + return null; + } + ohClass = dptMainTypeMap.get(mainNumber); + } + return ohClass; + } + + /** + * Converts an openHAB type class into a datapoint type id. + * + * @param typeClass the openHAB type class + * @return the datapoint type id + */ + public static String toDPTid(Class typeClass) { + return defaultDptMap.get(typeClass); + } + + /** + * Formats the given value according to the datapoint type + * dpt to a String which can be processed by {@link DateTimeType}. + * + * @param value + * @param dpt + * + * @return a formatted String like yyyy-MM-dd'T'HH:mm:ss which + * is target format of the {@link DateTimeType} + */ + private String formatDateTime(String value, String dpt) { + Date date = null; + + try { + if (DPTXlatorDate.DPT_DATE.getID().equals(dpt)) { + date = new SimpleDateFormat(DATE_FORMAT).parse(value); + } else if (DPTXlatorTime.DPT_TIMEOFDAY.getID().equals(dpt)) { + if (value.contains("no-day")) { + /* + * KNX "no-day" needs special treatment since openHAB's DateTimeType doesn't support "no-day". + * Workaround: remove the "no-day" String, parse the remaining time string, which will result in a + * date of "1970-01-01". + * Replace "no-day" with the current day name + */ + StringBuffer stb = new StringBuffer(value); + int start = stb.indexOf("no-day"); + int end = start + "no-day".length(); + stb.replace(start, end, String.format(Locale.US, "%1$ta", Calendar.getInstance())); + value = stb.toString(); + } + date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(value); + } + } catch (ParseException pe) { + // do nothing but logging + LOGGER.warn("Could not parse '{}' to a valid date", value); + } + + return date != null ? new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(date) : ""; + } + + /** + * Formats the given internal dateType to a knx readable String + * according to the target datapoint type dpt. + * + * @param dateType + * @param dpt the target datapoint type + * + * @return a String which contains either an ISO8601 formatted date (yyyy-mm-dd), + * a formatted 24-hour clock with the day of week prepended (Mon, 12:00:00) or + * a formatted 24-hour clock (12:00:00) + * + * @throws IllegalArgumentException if none of the datapoint types DPT_DATE or + * DPT_TIMEOFDAY has been used. + */ + private static String formatDateTime(DateTimeType dateType, String dpt) { + if (DPTXlatorDate.DPT_DATE.getID().equals(dpt)) { + return dateType.format("%tF"); + } else if (DPTXlatorTime.DPT_TIMEOFDAY.getID().equals(dpt)) { + return dateType.format(Locale.US, "%1$ta, %1$tT"); + } else if (DPTXlatorDateTime.DPT_DATE_TIME.getID().equals(dpt)) { + return dateType.format(Locale.US, "%tF %1$tT"); + } else { + throw new IllegalArgumentException("Could not format date to datapoint type '" + dpt + "'"); + } + } + + /** + * Retrieves sub number from a DTP ID such as "14.001" + * + * @param dptID String with DPT ID + * @return sub number or -1 + */ + private int getSubNumber(String dptID) { + int result = -1; + if (dptID == null) { + throw new IllegalArgumentException("Parameter dptID cannot be null"); + } + + int dptSepratorPosition = dptID.indexOf('.'); + if (dptSepratorPosition > 0) { + try { + result = Integer.parseInt(dptID.substring(dptSepratorPosition + 1, dptID.length())); + } catch (NumberFormatException nfe) { + LOGGER.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", + dptID); + } catch (IndexOutOfBoundsException ioobe) { + LOGGER.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", + dptID); + } + } + return result; + } + + /** + * Retrieves main number from a DTP ID such as "14.001" + * + * @param dptID String with DPT ID + * @return main number or -1 + */ + private static int getMainNumber(String dptID) { + int result = -1; + if (dptID == null) { + throw new IllegalArgumentException("Parameter dptID cannot be null"); + } + + int dptSepratorPosition = dptID.indexOf('.'); + if (dptSepratorPosition > 0) { + try { + result = Integer.parseInt(dptID.substring(0, dptSepratorPosition)); + } catch (NumberFormatException nfe) { + LOGGER.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", + dptID); + } catch (IndexOutOfBoundsException ioobe) { + LOGGER.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", + dptID); + } + } + return result; + } +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java new file mode 100644 index 0000000000000..f21296208d07b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -0,0 +1,173 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.factory; + +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; + +import org.apache.commons.lang.RandomStringUtils; +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.thing.Bridge; +import org.eclipse.smarthome.core.thing.Thing; +import org.eclipse.smarthome.core.thing.ThingTypeUID; +import org.eclipse.smarthome.core.thing.ThingUID; +import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory; +import org.eclipse.smarthome.core.thing.binding.ThingHandler; +import org.openhab.binding.knx.KNXBridgeHandlerTracker; +import org.openhab.binding.knx.KNXTypeMapper; +import org.openhab.binding.knx.handler.IPBridgeThingHandler; +import org.openhab.binding.knx.handler.KNXBasicThingHandler; +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; +import org.openhab.binding.knx.handler.SerialBridgeThingHandler; + +import com.google.common.collect.Lists; + +/** + * The {@link KNXHandlerFactory} is responsible for creating things and thing + * handlers. + * + * @author Karel Goderis - Initial contribution + */ +public class KNXHandlerFactory extends BaseThingHandlerFactory { + + public static final Collection SUPPORTED_THING_TYPES_UIDS = Lists.newArrayList(THING_TYPE_BASIC, + THING_TYPE_IP_BRIDGE, THING_TYPE_SERIAL_BRIDGE); + + private final Collection typeMappers = new HashSet(); + private final Collection bridgeHandlers = new HashSet(); + private final Set trackers = new CopyOnWriteArraySet<>(); + + public synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.add(typeMapper); + for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { + aBridge.addKNXTypeMapper(typeMapper); + } + } + + public synchronized void removeKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.remove(typeMapper); + for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { + aBridge.removeKNXTypeMapper(typeMapper); + } + } + + @Override + public boolean supportsThingType(ThingTypeUID thingTypeUID) { + return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID); + } + + @Override + public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, ThingUID thingUID, + ThingUID bridgeUID) { + if (THING_TYPE_IP_BRIDGE.equals(thingTypeUID)) { + ThingUID IPBridgeUID = getIPBridgeThingUID(thingTypeUID, thingUID, configuration); + return super.createThing(thingTypeUID, configuration, IPBridgeUID, null); + } + if (THING_TYPE_SERIAL_BRIDGE.equals(thingTypeUID)) { + ThingUID serialBridgeUID = getSerialBridgeThingUID(thingTypeUID, thingUID, configuration); + return super.createThing(thingTypeUID, configuration, serialBridgeUID, null); + } + if (THING_TYPE_BASIC.equals(thingTypeUID)) { + ThingUID gaUID = getGenericThingUID(thingTypeUID, thingUID, configuration, bridgeUID); + return super.createThing(thingTypeUID, configuration, gaUID, bridgeUID); + } + throw new IllegalArgumentException("The thing type " + thingTypeUID + " is not supported by the KNX binding."); + } + + @Override + protected ThingHandler createHandler(Thing thing) { + if (thing.getThingTypeUID().equals(THING_TYPE_IP_BRIDGE)) { + return new IPBridgeThingHandler((Bridge) thing); + } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { + return new SerialBridgeThingHandler((Bridge) thing); + } else if (thing.getThingTypeUID().equals(THING_TYPE_BASIC)) { + return new KNXBasicThingHandler(thing); + } + return null; + } + + private ThingUID getIPBridgeThingUID(ThingTypeUID thingTypeUID, ThingUID thingUID, Configuration configuration) { + if (thingUID != null) { + return thingUID; + } + String ipAddress = (String) configuration.get(IP_ADDRESS); + return new ThingUID(thingTypeUID, ipAddress); + } + + private ThingUID getSerialBridgeThingUID(ThingTypeUID thingTypeUID, ThingUID thingUID, + Configuration configuration) { + if (thingUID != null) { + return thingUID; + } + String serialPort = (String) configuration.get(SERIAL_PORT); + return new ThingUID(thingTypeUID, serialPort); + } + + private ThingUID getGenericThingUID(ThingTypeUID thingTypeUID, ThingUID thingUID, Configuration configuration, + ThingUID bridgeUID) { + if (thingUID != null) { + return thingUID; + } + String address = ((String) configuration.get(ADDRESS)); + if (address != null) { + return new ThingUID(thingTypeUID, address.replace(".", "_"), bridgeUID.getId()); + } else { + String randomID = RandomStringUtils.randomAlphabetic(16).toLowerCase(Locale.ENGLISH); + return new ThingUID(thingTypeUID, randomID, bridgeUID.getId()); + } + } + + @Override + public synchronized ThingHandler registerHandler(Thing thing) { + ThingHandler handler = super.registerHandler(thing); + if (handler instanceof KNXBridgeBaseThingHandler) { + KNXBridgeBaseThingHandler bridgeHandler = (KNXBridgeBaseThingHandler) handler; + bridgeHandlers.add(bridgeHandler); + typeMappers.forEach(it -> bridgeHandler.addKNXTypeMapper(it)); + for (KNXBridgeHandlerTracker tracker : trackers) { + tracker.onBridgeAdded(bridgeHandler); + } + } + return handler; + } + + @Override + public synchronized void unregisterHandler(Thing thing) { + if (thing.getHandler() instanceof KNXBridgeBaseThingHandler) { + KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) thing.getHandler(); + for (KNXBridgeHandlerTracker tracker : trackers) { + tracker.onBridgeRemoved(handler); + } + bridgeHandlers.remove(thing.getHandler()); + } + super.unregisterHandler(thing); + } + + protected synchronized void addBridgeHandlerTracker(KNXBridgeHandlerTracker tracker) { + if (trackers.add(tracker)) { + for (KNXBridgeBaseThingHandler handler : bridgeHandlers) { + tracker.onBridgeAdded(handler); + } + } + } + + protected synchronized void removeBridgeHandlerTracker(KNXBridgeHandlerTracker tracker) { + if (trackers.remove(tracker)) { + for (KNXBridgeBaseThingHandler handler : bridgeHandlers) { + tracker.onBridgeRemoved(handler); + } + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java new file mode 100644 index 0000000000000..38cc071f42f3e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java @@ -0,0 +1,94 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.factory; + +import java.util.Map; +import java.util.WeakHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import org.slf4j.LoggerFactory; + +public class KNXThreadPoolFactory { + + protected static final long THREAD_TIMEOUT = 65L; + protected static final long THREAD_MONITOR_SLEEP = 60000; + + protected static Map pools = new WeakHashMap<>(); + + public static ScheduledExecutorService getPrioritizedScheduledPool(String poolName, int coreThreads) { + ExecutorService pool = pools.get(poolName); + if (pool == null) { + synchronized (pools) { + // do a double check if it is still null or if another thread might have created it meanwhile + pool = pools.get(poolName); + if (pool == null && coreThreads > 1) { + pool = Executors.newScheduledThreadPool(coreThreads, + new NamedThreadFactory(poolName, Thread.MAX_PRIORITY)); + ((ThreadPoolExecutor) pool).setKeepAliveTime(THREAD_TIMEOUT, TimeUnit.SECONDS); + ((ThreadPoolExecutor) pool).allowCoreThreadTimeOut(true); + pools.put(poolName, pool); + LoggerFactory.getLogger(KNXThreadPoolFactory.class).debug( + "Created scheduled thread pool '{}' of size {}", new Object[] { poolName, coreThreads }); + } + } + } + if (pool instanceof ScheduledExecutorService) { + if (coreThreads > 1 && coreThreads != ((ThreadPoolExecutor) pool).getCorePoolSize()) { + LoggerFactory.getLogger(KNXThreadPoolFactory.class).debug( + "Updated the scheduled thread pool '{}' to a size of {}", + new Object[] { poolName, coreThreads }); + ((ThreadPoolExecutor) pool).setCorePoolSize(coreThreads); + } + return (ScheduledExecutorService) pool; + } else { + throw new IllegalArgumentException("Pool " + poolName + " is not a scheduled pool!"); + } + } + + protected static class NamedThreadFactory implements ThreadFactory { + + protected final ThreadGroup group; + protected final AtomicInteger threadNumber = new AtomicInteger(1); + protected final String namePrefix; + protected final String name; + protected final int priority; + + public NamedThreadFactory(String threadPool, int priority) { + this.name = threadPool; + this.namePrefix = "ESH-" + threadPool + "-"; + this.priority = priority; + SecurityManager s = System.getSecurityManager(); + group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + } + + @Override + public Thread newThread(Runnable r) { + Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0); + if (!t.isDaemon()) { + t.setDaemon(true); + } + if (t.getPriority() != priority) { + t.setPriority(priority); + } + + return t; + } + + public String getName() { + return name; + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java new file mode 100644 index 0000000000000..0a4380474f66c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +import java.math.BigDecimal; + +/** + * @author Karel Goderis - Initial contribution + */ +public class BasicConfig { + + private String address; + private Boolean fetch; + private BigDecimal interval; + + public String getAddress() { + return address; + } + + public Boolean getFetch() { + return fetch; + } + + public BigDecimal getInterval() { + return interval; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java new file mode 100644 index 0000000000000..33db27f113b9f --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +import java.math.BigDecimal; + +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; + +/** + * {@link KNXBridgeBaseThingHandler} configuration + * + * @author Simon Kaufmann - initial contribution and API + * + */ +public class BridgeConfiguration { + + private BigDecimal autoReconnectPeriod; + private Boolean enableDiscovery; + private BigDecimal readingPause; + private BigDecimal readRetriesLimit; + private BigDecimal responseTimeout; + private Boolean useNAT; + + public BigDecimal getAutoReconnectPeriod() { + return autoReconnectPeriod; + } + + public Boolean getEnableDiscovery() { + return enableDiscovery; + } + + public BigDecimal getReadingPause() { + return readingPause; + } + + public BigDecimal getReadRetriesLimit() { + return readRetriesLimit; + } + + public BigDecimal getResponseTimeout() { + return responseTimeout; + } + + public Boolean getUseNAT() { + return useNAT; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java new file mode 100644 index 0000000000000..62cd539301c61 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +/** + * @author Karel Goderis - Initial contribution + */ +public class DeviceConstants { + + private DeviceConstants() { + // prevent instantiation + } + + // Memory addresses for device information + public static final int MEM_DOA = 0x0102; // length 2 + public static final int MEM_MANUFACTURERID = 0x0104; + public static final int MEM_DEVICETYPE = 0x0105; // length 2 + public static final int MEM_VERSION = 0x0107; + public static final int MEM_PEI = 0x0109; + public static final int MEM_RUNERROR = 0x010d; + public static final int MEM_GROUPOBJECTABLEPTR = 0x0112; + public static final int MEM_PROGRAMPTR = 0x0114; + public static final int MEM_GROUPADDRESSTABLE = 0x0116; // max. length 233 + + // Interface Object indexes + public static final int DEVICE_OBJECT = 0; // Device Object + public static final int ADDRESS_TABLE_OBJECT = 1; // Addresstable Object + public static final int ASSOCIATION_TABLE_OBJECT = 2; // Associationtable Object + public static final int APPLICATION_PROGRAM_TABLE = 3; // Application Program Object + public static final int INTERFACE_PROGRAM_OBJECT = 4; // Interface Program Object + public static final int GROUPOBJECT_OBJECT = 9; // Group Object Object + public static final int KNXNET_IP_OBJECT = 11; // KNXnet/IP Parameter Object + + // Property IDs for device information; + public static final int HARDWARE_TYPE = 78; + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java new file mode 100644 index 0000000000000..59a4127b2d6a7 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +/** + * @author Karel Goderis - Initial contribution + */ +public enum Firmware { + F0(0, "BCU 1, BCU 2, BIM M113"), + F1(1, "Unidirectional devices"), + F3(3, "Property based device management"), + F7(7, "BIM M112"), + F8(8, "IR Decoder, TP1 legacy"), + F9(9, "Repeater, Coupler"); + + private int code; + private String name; + + private Firmware(int code, String name) { + this.code = code; + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public static String getName(int code) { + for (Firmware c : Firmware.values()) { + if (c.code == code) { + return c.name; + } + } + return null; + } + +}; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java new file mode 100644 index 0000000000000..53b59d5d7d57e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +/** + * @author Karel Goderis - Initial contribution + */ +public enum LoadState { + L0(0, "Unloaded"), + L1(1, "Loaded"), + L2(2, "Loading"), + L3(3, "Error"), + L4(4, "Unloading"), + L5(5, "Load Completing"); + + private int code; + private String name; + + private LoadState(int code, String name) { + this.code = code; + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public static String getName(int code) { + for (LoadState c : LoadState.values()) { + if (c.code == code) { + return c.name; + } + } + return null; + } + +}; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java new file mode 100644 index 0000000000000..0bd3ba6da55f2 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java @@ -0,0 +1,338 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +/** + * @author Karel Goderis - Initial contribution + */ +public enum Manufacturer { + M1(1, "Siemens"), + M2(2, "ABB"), + M4(4, "Albrecht Jung"), + M5(5, "Bticino"), + M6(6, "Berker"), + M7(7, "Busch-Jaeger Elektro"), + M8(8, "GIRA Giersiepen"), + M9(9, "Hager Electro"), + M10(10, "INSTA ELEKTRO"), + M11(11, "LEGRAND Appareillage électrique"), + M12(12, "Merten"), + M14(14, "ABB SpA – SACE Division"), + M22(22, "Siedle & Söhne"), + M24(24, "Eberle"), + M25(25, "GEWISS"), + M27(27, "Albert Ackermann"), + M28(28, "Schupa GmbH"), + M29(29, "ABB SCHWEIZ"), + M30(30, "Feller"), + M32(32, "DEHN & SÖHNE"), + M33(33, "CRABTREE"), + M36(36, "Paul Hochköpper"), + M37(37, "Altenburger Electronic"), + M41(41, "Grässlin"), + M42(42, "Simon"), + M44(44, "VIMAR"), + M45(45, "Moeller Gebäudeautomation KG"), + M46(46, "Eltako"), + M49(49, "Bosch-Siemens Haushaltsgeräte"), + M52(52, "RITTO GmbH&Co.KG"), + M53(53, "Power Controls"), + M55(55, "ZUMTOBEL"), + M57(57, "Phoenix Contact"), + M61(61, "WAGO Kontakttechnik"), + M66(66, "Wieland Electric"), + M67(67, "Hermann Kleinhuis"), + M69(69, "Stiebel Eltron"), + M71(71, "Tehalit"), + M72(72, "Theben AG"), + M73(73, "Wilhelm Rutenbeck"), + M75(75, "Winkhaus"), + M76(76, "Robert Bosch"), + M78(78, "Somfy"), + M80(80, "Woertz"), + M81(81, "Viessmann Werke"), + M82(82, "Theodor HEIMEIER Metallwerk"), + M83(83, "Joh. Vaillant"), + M85(85, "AMP Deutschland"), + M89(89, "Bosch Thermotechnik GmbH"), + M90(90, "SEF - ECOTEC"), + M92(92, "DORMA GmbH + Co. KG"), + M93(93, "WindowMaster A/S"), + M94(94, "Walther Werke"), + M95(95, "ORAS"), + M97(97, "Dätwyler"), + M98(98, "Electrak"), + M99(99, "Techem"), + M100(100, "Schneider Electric Industries SAS"), + M101(101, "WHD Wilhelm Huber + Söhne"), + M102(102, "Bischoff Elektronik"), + M104(104, "JEPAZ"), + M105(105, "RTS Automation"), + M106(106, "EIBMARKT GmbH"), + M107(107, "WAREMA electronic GmbH"), + M108(108, "Eelectron"), + M109(109, "Belden Wire & Cable B.V."), + M110(110, "Becker-Antriebe GmbH"), + M111(111, "J.Stehle+Söhne GmbH"), + M112(112, "AGFEO"), + M113(113, "Zennio"), + M114(114, "TAPKO Technologies"), + M115(115, "HDL"), + M116(116, "Uponor"), + M117(117, "se Lightmanagement AG"), + M118(118, "Arcus-eds"), + M119(119, "Intesis"), + M120(120, "Herholdt Controls srl"), + M121(121, "Zublin AG"), + M122(122, "Durable Technologies"), + M123(123, "Innoteam"), + M124(124, "ise GmbH"), + M125(125, "TEAM FOR TRONICS"), + M126(126, "CIAT"), + M127(127, "Remeha BV"), + M128(128, "ESYLUX"), + M129(129, "BASALTE"), + M130(130, "Vestamatic"), + M131(131, "MDT technologies"), + M132(132, "Warendorfer Küchen GmbH"), + M133(133, "Video-Star"), + M134(134, "Sitek"), + M135(135, "CONTROLtronic"), + M136(136, "function Technology"), + M137(137, "AMX"), + M138(138, "ELDAT"), + M139(139, "VIKO"), + M140(140, "Pulse Technologies"), + M141(141, "Crestron"), + M142(142, "STEINEL professional"), + M143(143, "BILTON LED Lighting"), + M144(144, "denro AG"), + M145(145, "GePro"), + M146(146, "preussen automation"), + M147(147, "Zoppas Industries"), + M148(148, "MACTECH"), + M149(149, "TECHNO-TREND"), + M150(150, "FS Cables"), + M151(151, "Delta Dore"), + M152(152, "Eissound"), + M153(153, "Cisco"), + M154(154, "Dinuy"), + M155(155, "iKNiX"), + M156(156, "Rademacher Geräte-Elektronik GmbH & Co. KG"), + M157(157, "EGi Electroacustica General Iberica"), + M158(158, "Ingenium"), + M159(159, "ElabNET"), + M160(160, "Blumotix"), + M161(161, "Hunter Douglas"), + M162(162, "APRICUM"), + M163(163, "TIANSU Automation"), + M164(164, "Bubendorff"), + M165(165, "MBS GmbH"), + M166(166, "Enertex Bayern GmbH"), + M167(167, "BMS"), + M168(168, "Sinapsi"), + M169(169, "Embedded Systems SIA"), + M170(170, "KNX1"), + M171(171, "Tokka"), + M172(172, "NanoSense"), + M173(173, "PEAR Automation GmbH"), + M174(174, "DGA"), + M175(175, "Lutron"), + M176(176, "AIRZONE – ALTRA"), + M177(177, "Lithoss Design Switches"), + M178(178, "3ATEL"), + M179(179, "Philips Controls"), + M180(180, "VELUX A/S"), + M181(181, "LOYTEC"), + M182(182, "SBS S.p.A."), + M183(183, "SIRLAN Technologies"), + M184(184, "Bleu Comm' Azur"), + M185(185, "IT GmbH"), + M186(186, "RENSON"), + M187(187, "HEP Group"), + M188(188, "Balmart"), + M189(189, "GFS GmbH"), + M190(190, "Schenker Storen AG"), + M191(191, "Algodue Elettronica S.r.L."), + M192(192, "Newron System"), + M193(193, "maintronic"), + M194(194, "Vantage"), + M195(195, "Foresis"), + M196(196, "Research & Production Association SEM"), + M197(197, "Weinzierl Engineering GmbH"), + M198(198, "Möhlenhoff Wärmetechnik GmbH"), + M199(199, "PKC-GROUP Oyj"), + M200(200, "B.E.G."), + M201(201, "Elsner Elektronik GmbH"), + M202(202, "Siemens Building Technologies (HK/China) Ltd."), + M204(204, "Eutrac"), + M205(205, "Gustav Hensel GmbH & Co. KG"), + M206(206, "GARO AB"), + M207(207, "Waldmann Lichttechnik"), + M208(208, "SCHÜCO"), + M209(209, "EMU"), + M210(210, "JNet Systems AG"), + M214(214, "O.Y.L. Electronics"), + M215(215, "Galax System"), + M216(216, "Disch"), + M217(217, "Aucoteam"), + M218(218, "Luxmate Controls"), + M219(219, "Danfoss"), + M220(220, "AST GmbH"), + M222(222, "WILA Leuchten"), + M223(223, "b+b Automations- und Steuerungstechnik"), + M225(225, "Lingg & Janke"), + M227(227, "Sauter"), + M228(228, "SIMU"), + M232(232, "Theben HTS AG"), + M233(233, "Amann GmbH"), + M234(234, "BERG Energiekontrollsysteme GmbH"), + M235(235, "Hüppe Form Sonnenschutzsysteme GmbH"), + M237(237, "Oventrop KG"), + M238(238, "Griesser AG"), + M239(239, "IPAS GmbH"), + M240(240, "elero GmbH"), + M241(241, "Ardan Production and Industrial Controls Ltd."), + M242(242, "Metec Meßtechnik GmbH"), + M244(244, "ELKA-Elektronik GmbH"), + M245(245, "ELEKTROANLAGEN D. NAGEL"), + M246(246, "Tridonic Bauelemente GmbH"), + M248(248, "Stengler Gesellschaft"), + M249(249, "Schneider Electric (MG)"), + M250(250, "KNX Association"), + M251(251, "VIVO"), + M252(252, "Hugo Müller GmbH & Co KG"), + M253(253, "Siemens HVAC"), + M254(254, "APT"), + M256(256, "HighDom"), + M257(257, "Top Services"), + M258(258, "ambiHome"), + M259(259, "DATEC electronic AG"), + M260(260, "ABUS Security-Center"), + M261(261, "Lite-Puter"), + M262(262, "Tantron Electronic"), + M263(263, "Yönnet"), + M264(264, "DKX Tech"), + M265(265, "Viatron"), + M266(266, "Nautibus"), + M268(268, "Longchuang"), + M269(269, "Air-On AG"), + M270(270, "ib-company GmbH"), + M271(271, "SATION"), + M272(272, "Agentilo GmbH"), + M273(273, "Makel Elektrik"), + M274(274, "Helios Ventilatoren"), + M275(275, "Otto Solutions Pte Ltd"), + M276(276, "Airmaster"), + M277(277, "HEINEMANN GmbH"), + M278(278, "LDS"), + M279(279, "ASIN"), + M280(280, "Bridges"), + M281(281, "ARBONIA"), + M282(282, "KERMI"), + M283(283, "PROLUX"), + M284(284, "ClicHome"), + M285(285, "COMMAX"), + M286(286, "EAE"), + M287(287, "Tense"), + M288(288, "Seyoung Electronics"), + M289(289, "Lifedomus"), + M290(290, "EUROtronic Technology GmbH"), + M291(291, "tci"), + M292(292, "Rishun Electronic"), + M293(293, "Zipato"), + M294(294, "cm-security GmbH & Co KG"), + M295(295, "Qing Cables"), + M296(296, "LABIO"), + M297(297, "Coster Tecnologie Elettroniche S.p.A."), + M298(298, "E.G.E"), + M299(299, "NETxAutomation"), + M300(300, "tecalor"), + M301(301, "Urmet Electronics (Huizhou) Ltd."), + M302(302, "Peiying Building Control"), + M303(303, "BPT S.p.A. a Socio Unico"), + M304(304, "Kanontec - KanonBUS"), + M305(305, "ISER Tech"), + M306(306, "Fineline"), + M307(307, "CP Electronics Ltd"), + M308(308, "Servodan A/S"), + M309(309, "Simon"), + M310(310, "GM modular pvt. Ltd."), + M311(311, "FU CHENG Intelligence"), + M312(312, "NexKon"), + M313(313, "FEEL s.r.l"), + M314(314, "Not Assigned"), + M315(315, "Shenzhen Fanhai Sanjiang Electronics Co., Ltd."), + M316(316, "Jiuzhou Greeble"), + M317(317, "Aumüller Aumatic GmbH"), + M318(318, "Etman Electric"), + M319(319, "EMT Controls"), + M320(320, "ZidaTech AG"), + M321(321, "IDGS bvba"), + M322(322, "dakanimo"), + M323(323, "Trebor Automation AB"), + M324(324, "Satel sp. z o.o."), + M325(325, "Russound, Inc."), + M326(326, "Midea Heating & Ventilating Equipment CO LTD"), + M327(327, "Consorzio Terranuova"), + M328(328, "Wolf Heiztechnik GmbH"), + M329(329, "SONTEC"), + M330(330, "Belcom Cables Ltd."), + M331(331, "Guangzhou SeaWin Electrical Technologies Co., Ltd."), + M332(332, "Acrel"), + M333(333, "Franke Aquarotter GmbH"), + M334(334, "Orion Systems"), + M335(335, "Schrack Technik GmbH"), + M336(336, "INSPRID"), + M337(337, "Sunricher"), + M338(338, "Menred automation system(shanghai) Co.,Ltd."), + M339(339, "Aurex"), + M340(340, "Josef Barthelme GmbH & Co. KG"), + M341(341, "Architecture Numerique"), + M342(342, "UP GROUP"), + M343(343, "Teknos-Avinno"), + M344(344, "Ningbo Dooya Mechanic & Electronic Technology"), + M345(345, "Thermokon Sensortechnik GmbH"), + M346(346, "BELIMO Automation AG"), + M347(347, "Zehnder Group International AG"), + M348(348, "sks Kinkel Elektronik"), + M349(349, "ECE Wurmitzer GmbH"), + M350(350, "LARS"), + M351(351, "URC"), + M352(352, "LightControl"), + M353(353, "ShenZhen YM"), + M354(354, "MEAN WELL Enterprises Co. Ltd."), + M355(355, "OSix"), + M356(356, "AYPRO Technology"), + M357(357, "Hefei Ecolite Software"), + M358(358, "Enno"), + M359(359, "Ohosure"); + + private int code; + private String name; + + private Manufacturer(int code, String name) { + this.code = code; + this.name = name; + } + + @Override + public String toString() { + return name; + } + + public static String getName(int code) { + for (Manufacturer c : Manufacturer.values()) { + if (c.code == code) { + return c.name; + } + } + return null; + } +} \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java new file mode 100644 index 0000000000000..bce0b39be0fb6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.handler; + +import tuwien.auto.calimero.datapoint.Datapoint; + +/** + * @author Karel Goderis - Initial contribution + */ +public class RetryDatapoint { + + private Datapoint datapoint; + private int retries; + private int limit; + + public Datapoint getDatapoint() { + return datapoint; + } + + public int getRetries() { + return retries; + } + + public void incrementRetries() { + this.retries++; + } + + public int getLimit() { + return limit; + } + + public RetryDatapoint(Datapoint datapoint, int limit) { + this.datapoint = datapoint; + this.retries = 0; + this.limit = limit; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((datapoint.getMainAddress() == null) ? 0 : datapoint.getMainAddress().hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + RetryDatapoint other = (RetryDatapoint) obj; + if (datapoint == null) { + if (other.datapoint != null) { + return false; + } + } else if (!datapoint.getMainAddress().equals(other.datapoint.getMainAddress())) { + return false; + } + return true; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java new file mode 100644 index 0000000000000..9f9e02d02bbf7 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java @@ -0,0 +1,68 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.logging; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.log.LogLevel; +import tuwien.auto.calimero.log.LogWriter; + +/** + * An adapter that works as a bridge between the logging API of calimero and slf4j. + * + * Calimero (the KNX I/O library used by this binding) has its own and very specific logging framework, + * which is not compatible with any default logging framework. Thus, this specific adapter is necessary + * in order to build a bridge between the calimero logging framework and the API of slf4j. + * + * All logging events from calimero are written to a single slf4j logger named tuwien.auto.calimero. + * + * @author Martin Renner + * @since 1.5.0 + */ +public class LogAdapter extends LogWriter { + + private final Logger logger = LoggerFactory.getLogger("tuwien.auto.calimero"); + + @Override + public void write(String logService, LogLevel logLevel, String msg) { + // Simply delegate to the method with exception. + // org.slf4j.helpers.MessageFormatter will handle this for us. + write(logService, logLevel, msg, null); + } + + @Override + public void write(String logService, LogLevel logLevel, String msg, Throwable t) { + // Unfortunately, calimero does not use package names for its loggers. So we cannot use "logService" and + // we have to map all calimero-loggers to a single slf4j logger. + + // slf4j does not offer a "log(level, msg)" api, so we have to dispatch in this rather ugly if-else block. + if (LogLevel.ALWAYS.equals(logLevel) || LogLevel.FATAL.equals(logLevel) || LogLevel.ERROR.equals(logLevel)) { + logger.error("{}: {}", logService, msg, t); + } else if (LogLevel.WARN.equals(logLevel)) { + logger.warn("{}: {}", logService, msg, t); + } else if (LogLevel.INFO.equals(logLevel)) { + logger.info("{}: {}", logService, msg, t); + } else if (LogLevel.TRACE.equals(logLevel)) { + logger.debug("{}: {}", logService, msg, t); + } else { + logger.info("{}: {}", logService, msg, t); + } + } + + @Override + public void close() { + // empty + } + + @Override + public void flush() { + // empty + } +} diff --git a/addons/binding/pom.xml b/addons/binding/pom.xml index fd321edf8a7ae..a669a75f13d79 100644 --- a/addons/binding/pom.xml +++ b/addons/binding/pom.xml @@ -47,6 +47,7 @@ org.openhab.binding.ipp org.openhab.binding.jeelink org.openhab.binding.keba + org.openhab.binding.knx org.openhab.binding.kodi org.openhab.binding.kostalinverter org.openhab.binding.lametrictime From bc2d963548bdefd9907e10b20b34ee1c3eef72ed Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Tue, 6 Jun 2017 16:16:25 +0200 Subject: [PATCH 02/52] dropped specialized numeric types Signed-off-by: Simon Kaufmann --- .../ESH-INF/thing/basic.xml | 82 ------------------- .../binding/org.openhab.binding.knx/README.md | 79 +++--------------- .../knx/handler/KNXBasicThingHandler.java | 2 +- .../internal/channel/KNXChannelSelector.java | 3 - .../knx/internal/channel/TypeCurrent.java | 35 -------- .../knx/internal/channel/TypeEnergy.java | 42 ---------- .../internal/channel/TypeOperatingHours.java | 35 -------- 7 files changed, 11 insertions(+), 267 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml index 7d58baf79cc82..df83e2749ad7e 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml @@ -95,88 +95,6 @@ - - Number - - A channel representing an energy consumption readout - Energy - - - - The group address in x/y/z notation to read the energy consumption - true - - - - Unit used to denote the energy consumption (Wh or kWh) - false - Wh - - - - Flag to indicate if the energy group address should be read at startup - true - false - - - - Interval between attempts to read the energy group address on the bus, in seconds - true - 0 - - - - - - Number - - A channel representing a current readout - - - - The group address in x/y/z notation to read the current - true - - - - Flag to indicate if the current group address should be read at startup - true - false - - - - Interval between attempts to read the current group address on the bus, in seconds - true - 0 - - - - - - Number - - A channel representing an operating hours readout - - - - The group address in x/y/z notation to read the operating hours - true - - - - Flag to indicate if the operating hours group address should be read at startup - true - false - - - - Interval between attempts to read the operating hours group address on the bus, in seconds - true - 0 - - - - Dimmer diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index c9908cf0272b6..423f8117543e5 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -9,14 +9,6 @@ To access your KNX bus you either need an KNX IP gateway (like e.g. the [Gira KN The KNX binding supports two kinds of Bridges, and two kinds of Things to access actors on the KNX bus. There is an *ip* bridge to connect to KNX IP Gateways, and a *serial* bridge for connection over a serial port to a host-attached gateway. The configuration of the two kinds of bridges is very similar (see below). -With respect to accessing actors on the KNX bus, one has different options: - -1. Let the KNX binding automatically parse ETS5 generated knxproj files, and define Things automatically based on what is stored in the knxproj file. This will generate a complete set of KNX Thing and Channels 100% in line with what is defined through ETS5. - -2. use a *generic* Thing to represent a physical actor on the bus. In this case, a number of Channels like *switch*, *dimmer*,... can be used to group together one or more Group Addresses that make up the functionality of the given Channel - -The KNX binding also sports an autodiscovery feature. The discovery feature will scan the KNX bus for Individual Addresses it sees flying by, and will create a *generic* Thing for each actor it sees. However, because of the dynamic nature of channels (see below), no channels will be added to this Thing. There is experimental code in the binding to read-out the configuration tables of the actor over the bus. Beware, this is not the same as parsing the knxproj file mentioned here above. - ## Binding Configuration The binding itself does not require any special configuration. @@ -39,7 +31,6 @@ The IP Gateway is the most commonly used way to connect to the KNX bus. At its b |readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| |autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| |enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| -|knxProj|N|KNX Project File (knxproj) to parse and add to the Things managed by this Bridge|| |useNAT|Y|Whether there is network address translation between the server and the gateway|false| ### Serial Gateway @@ -54,30 +45,18 @@ The *serial* bridge accepts the following configuration parameters: |readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| |autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| |enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| -|knxProj|N|KNX Project File (knxproj) to parse and add to the Things managed by this Bridge|| ## Thing Configuration -### *generic* Things +### *basic* Things -*generic* Things are placeholders to identify Individual Addresses / actors on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actor is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or either the whole bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actor in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. +*basic* Things are wrappers around an arbitrary group addresses on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actor is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or the entire bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actor in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. |Name|Required|Description|Default value| |----|--------|-----------|-------------| |address|N|The individual address in x.y.z notation|Required if *fetch* is set to true| |fetch|N|Read out the device parameters and address/communication object tables|false| -### Things provided to knxproj parsing - -If a *knxProj* file is defined in the configuration of the Bridge, then the KNX binding will parse that ETS5 configuration file. For each Individual Address defined in the ETS5 file, a *generic* Thing will be created and provided to the runtime. - -In order to enable automatic parsing of the knxproj files provided to the runtime, the entry - -``` -org.openhab.binding.knx.folder:knx=knxproj -``` - -has to be added to *services.cfg* in the etc folder. In the *conf* folder a subdirectory *knx* should be created, and the knxproj files, as exported by the ETS5 application, can be directly placed in that folder ## Channels @@ -88,56 +67,26 @@ The Bridges support the following channels: | errorsall|Number|The number of errors that occurred on the KNX bus since the start of the binding| | errors5min|Number|The number of errors that occurred on the KNX bus during the last 5 minutes| -### *generic* Thing Channels of Things defined by the end-user +### *basic* Thing Channels of Things defined by the end-user -Different kinds of Channels are defined and can be used to group together Group Addresses. All Channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) +Different kinds of Channels are defined and can be used to group together Group Addresses. All channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) -For specific configurations reference is made to the *generic.xml* ESH-INF file of the source distribution. For example, the *statusswitch* Channel type defines two configuration parameters: *switchGA*, the group address in x/y/z notation to toggle the switch, and *statusGA*, the group address in x/y/z notation to read the switch status. Since it is about a switch, the DPT does not have to be defined, e.g. it is supposed to be 1.001. For example, the *number* Channel type is used to define Channels to read/write ordinary Numbers. +For specific configurations reference is made to the *basic.xml* ESH-INF file of the source distribution. For example, the *statusswitch* Channel type defines two configuration parameters: *switchGA*, the group address in x/y/z notation to toggle the switch, and *statusGA*, the group address in x/y/z notation to read the switch status. Since it is about a switch, the DPT does not have to be defined, e.g. it is supposed to be 1.001. For example, the *number* Channel type is used to define Channels to read/write ordinary Numbers. ``` -Thing generic someactor { +Thing basic someactor { Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] } ``` -### *generic* Thing Channels of Things derived from the knxproj file - -The ETS5 parser contained in the Binding will automatically create a *generic* Channel for each Group Address that is used, either for reading or writing, for every *generic* Thing that it discovered in the knxproj file. The Type of the Channel will automatically be set to an Item Type that is compatible with the Datapoint type (DPT) that is defined in the knxproj file. In addition, the *read* parameter will be set to true, and the *interval* parameter will be set to 3600 seconds. The *generic* Channel type is specifically used by the parser, and can not be manually defined through the .things DSL files. - -The *generic* Thing will be named x_y_z, and the Channels will be equally named x_y_z based on the Individual Address and Group Address respectively - -As a result, entries similar to the ones here below will be found in the openHAB logs: - -``` -Found KNX master data with version '459' -Found KNX hardware description for 'PKC-GROUP Oyj' -Found KNX product 'Gateway between Ventilation unit and EIB' by 'PKC-GROUP Oyj' -Found KNX hardware description for 'Elsner Elektronik GmbH' -... -Found KNX product 'KNX TH-UP basic' by 'Elsner Elektronik GmbH' -Found KNX product 'KNX TH-UP basic' by 'Elsner Elektronik GmbH' -Found KNX product 'JAL-0810D.01 Shutter Actuator 8-fold, 8TE,24VDC,8A' by 'MDT technologies' -Found KNX product 'JAL-0410.01 Shutter Actuator 4-fold, 4TE, 230VAC, 10A' by 'MDT technologies' -Found KNX product 'JAL-0410D.01 Shutter Actuator 4-fold,4TE,24VDC,8A' by 'MDT technologies' -... -Added a Thing knx:generic:ip1:1_1_67 for an actor of type Presence detector - brightness sensor UP 258/E11 made by Siemens -Added the Channel knx:generic:ip1:1_1_67:7_1_23 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Stop') -Added the Channel knx:generic:ip1:1_1_67:7_1_22 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Start') -Added the Channel knx:generic:ip1:1_1_67:7_1_21 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Motion Status') -Added the Channel knx:generic:ip1:1_1_67:7_1_27 (Type Number, DPT 9.004, true/true, 'TechnicalFacilities-Server-Brightness') -Added the Channel knx:generic:ip1:1_1_67:7_1_26 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Stop') -Added the Channel knx:generic:ip1:1_1_67:7_1_25 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Start') -Added the Channel knx:generic:ip1:1_1_67:7_1_24 (Type Switch, DPT 1.001, true/true, 'TechnicalFacilities-Server-Presence Status') -``` - ## Full Example demo.Things: ``` -Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.166", ipConnectionType="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1,localSourceAddr="0.0.0", knxProj="Export 20161222.knxproj"] { - Thing generic someactor { +Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.166", ipConnectionType="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1,localSourceAddr="0.0.0"] { + Thing basic someactor { Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] } @@ -146,22 +95,14 @@ Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168. demo.items: -[Manually defined] ``` -Switch someSwitchItem "Manually Defined Switch" { channel="knx:generic:ip1:someactor:someswitch" } +Switch someSwitchItem "Manually Defined Switch" { channel="knx:basic:ip1:someactor:someswitch" } ``` -[knxproj parsing] -``` -Number WellnessWifiCurrent "Wellness - Wifi - Current [%.0f mA]" (gWellness,gOutlets,gCurrent,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_28" } -Number WellnessWifiEnergy "Wellness - Wifi - Energy [%.0f Wh]" (gWellness,gOutlets,gEnergy,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_29" } -Number WellnessWifiOperatingHours "Wellness - Wifi - Operating Hours [%.1f h]" (gWellness,gOutlets,gOperatingHours,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_27" } -Switch WellnessWifiSwitch "Wellness - Wifi - Switch" (gWellness,gOutlets,gSwitch,gWellness) { channel="knx:generic:ip1:1_4_103:2_6_25", channel="knx:generic:ip1:1_4_103:2_6_26" } -``` ## Supported Datapoint Types -The KNX binding supports a limited set of Datapoint types (DPTs). If your thing configuration contains a DPT that is not supported by the KNX binding, openHAB 1.4.0 and later will throw an exception during startup ("DPT n.nnn is not supported by the KNX binding"). +The KNX binding supports a limited set of Datapoint types (DPTs). If your thing configuration contains a DPT that is not supported by the KNX binding, an error will be logged ("DPT n.nnn is not supported by the KNX binding"). To get an overview of the supported DPTs, it's best to look into the source code of the KNX binding and the library it depends on. The DPTs for the binding are defined in [KNXCoreTypeMapper](https://github.com/openhab/openhab/blob/master/bundles/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java). The constants (and their mapping to DPTs) are defined in the library [calimero](https://github.com/calimero-project/calimero/tree/master/src/tuwien/auto/calimero/dptxlator). diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java index cae2277561401..55e29473ef7a5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -438,7 +438,7 @@ private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress } logger.warn( - "Ignoring KNX bus data: couldn't transform to an openHAB type (not supported). Destination='{}', datapoint='{}', data='{}'", + "Ignoring KNX bus data: couldn't transform to Type (not supported). Destination='{}', datapoint='{}', data='{}'", destination, datapoint, sb); return; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java index f3a6784c4939b..d58fc5fd6226d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -21,10 +21,7 @@ private KNXChannelSelector() { private static final long serialVersionUID = 1L; { add(new TypeContact()); - add(new TypeCurrent()); add(new TypeDimmer()); - add(new TypeEnergy()); - add(new TypeOperatingHours()); add(new TypeRollershutter()); add(new TypeSetpoint()); add(new TypeStatusSwitch()); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java deleted file mode 100644 index a76717efd5f98..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeCurrent.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.util.Set; - -import org.eclipse.smarthome.config.core.Configuration; - -import tuwien.auto.calimero.GroupAddress; - -class TypeCurrent extends KNXChannelType { - - TypeCurrent() { - super(CHANNEL_CURRENT); - } - - @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return "7.012"; - } - - @Override - protected Set getReadAddressKeys() { - return asSet(CURRENT_GA); - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java deleted file mode 100644 index 323e670a80433..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeEnergy.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.util.Set; - -import org.eclipse.smarthome.config.core.Configuration; - -import tuwien.auto.calimero.GroupAddress; - -class TypeEnergy extends KNXChannelType { - - TypeEnergy() { - super(CHANNEL_ENERGY); - } - - @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - String unit = (String) configuration.get(UNIT); - switch (unit) { - case "Wh": - return "13.010"; - case "kWh": - return "13.013"; - } - return null; - } - - @Override - protected Set getReadAddressKeys() { - return asSet(ENERGY_GA); - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java deleted file mode 100644 index ae195bb325d6e..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeOperatingHours.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.util.Set; - -import org.eclipse.smarthome.config.core.Configuration; - -import tuwien.auto.calimero.GroupAddress; - -class TypeOperatingHours extends KNXChannelType { - - TypeOperatingHours() { - super(CHANNEL_OPERATING_HOURS); - } - - @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return "7.001"; - } - - @Override - protected Set getReadAddressKeys() { - return asSet(OPERATING_HOURS_GA); - } - -} From 5d840a0df3dcbe3ac170d530ab9c4a0ccfa0cc51 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 11 Dec 2017 16:45:22 +0100 Subject: [PATCH 03/52] review feedback Signed-off-by: Simon Kaufmann --- .../ESH-INF/thing/basic.xml | 616 +++++++++--------- .../ESH-INF/thing/ip.xml | 196 +++--- .../ESH-INF/thing/serial.xml | 104 +-- .../META-INF/MANIFEST.MF | 4 +- .../binding/org.openhab.binding.knx/README.md | 56 +- .../binding/org.openhab.binding.knx/pom.xml | 30 +- .../binding/knx/GroupAddressListener.java | 3 + .../knx/IndividualAddressListener.java | 3 + .../openhab/binding/knx/KNXTypeMapper.java | 11 +- .../openhab/binding/knx/TelegramListener.java | 2 + .../knx/handler/IPBridgeThingHandler.java | 6 +- .../knx/handler/KNXBasicThingHandler.java | 219 +++---- .../handler/KNXBridgeBaseThingHandler.java | 107 +-- .../binding/knx/handler/TypeItemMap.java | 66 -- .../internal/channel/KNXChannelSelector.java | 17 +- .../knx/internal/channel/KNXChannelType.java | 36 +- .../knx/internal/channel/TypeDimmer.java | 2 +- .../internal/channel/TypeRollershutter.java | 2 +- .../internal/channel/TypeStatusSwitch.java | 41 -- .../knx/internal/channel/TypeWallButton.java | 5 - .../knx/internal/dpt/KNXCoreTypeMapper.java | 59 +- .../knx/internal/handler/BasicConfig.java | 2 +- .../internal/handler/BridgeConfiguration.java | 4 +- .../knx/internal/handler/Manufacturer.java | 7 +- .../knx/internal/logging/LogAdapter.java | 1 - 25 files changed, 707 insertions(+), 892 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml index df83e2749ad7e..9c234cbb41c1d 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml @@ -1,8 +1,7 @@ - + @@ -21,333 +20,303 @@ false - - Read out the device parameters and address/communication object tables - true - false - - - - Interval between attempts to contact the device, in seconds - true - 60 - + + Read out the device parameters and address/communication object tables + true + false + + + + Interval between attempts to contact the device, in seconds + true + 60 + + + + Dimmer + + A channel to control a dimmer + + + + The group address in x/y/z notation to toggle the dimmer on or off + false + + + + The group address in x/y/z notation to read the actual status of the dimmer + false + + + + The group address in x/y/z notation to set the absolute position of the dimmer + false + + + + The group address in x/y/z notation to read the actual position of the dimmer + false + + + + The group address in x/y/z notation to increase or decrease the dimmer + false + + + + Flag to indicate if the status group addresses should be read at startup + true + false + + + + Interval between attempts to read the status group addresses on the bus, in seconds + true + 0 + + + + + + Rollershutter + + A channel to control a rollershutter + + + + The group address in x/y/z notation to move the shutter in the DOWN or UP direction + false + + + + The group address in x/y/z notation to read actual direction the shutter is moving + false + + + + The group address in x/y/z notation to start (MOVE) or STOP shutter movement + false + + + + The group address in x/y/z notation to read the motion status of the shutters + false + + + + The group address in x/y/z notation to set the absolute position of the shutter, in % + false + + + + The group address in x/y/z notation to read the absolute position of the shutter + false + + + + Flag to indicate if the status group addresses should be read at startup + true + false + + + + Interval between attempts to read the status group addresses on the bus, in seconds + true + 0 + + + + + + Number + + A channel to control the setpoint of a thermostat + + + + The group address in x/y/z notation to set the thermostat setpoint + true + + + + The group address in x/y/z notation to read the current thermostat setpoint + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Number + + A channel to manage a generic Group Addresses with a DPT compatible with Number Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + - - Switch - - A channel to control a simple DPT 1.001 switch that reports back its status - - - - The group address in x/y/z notation to toggle the switch - true - - - - The group address in x/y/z notation to read the switch status - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - + + String + + A channel to manage a generic Group Addresses with a DPT compatible with String Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + DateTime + + A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + Contact + + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + - - Switch - + + Switch + + A channel to manage a generic Group Addresses with a DPT compatible with Switch Items + + + + The group address in x/y/z notation + true + + + + The DPT in "x.y" notation + true + + + + Flag to indicate if the status group address should be read at startup + true + false + + + + Interval between attempts to read the status group address on the bus, in seconds + true + 0 + + + + + + trigger + A channel to control a simple DPT 1.001 switch that reports back its status - The group address in x/y/z notation to toggle the switch - true - - - - The group address in x/y/z notation to read the switch status - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Dimmer - - A channel to control a dimmer - - - - The group address in x/y/z notation to toggle the dimmer on or off - false - - - - The group address in x/y/z notation to read the actual status of the dimmer - false - - - - The group address in x/y/z notation to set the absolute position of the dimmer - false - - - - The group address in x/y/z notation to read the actual position of the dimmer - false - - - - The group address in x/y/z notation to increase or decrease the dimmer - false - - - - Flag to indicate if the status group addresses should be read at startup - true - false - - - - Interval between attempts to read the status group addresses on the bus, in seconds - true - 0 - - - - - - Rollershutter - - A channel to control a rollershutter - - - - The group address in x/y/z notation to move the shutter in the DOWN or UP direction - false - - - - The group address in x/y/z notation to read actual direction the shutter is moving - false - - - - The group address in x/y/z notation to start (MOVE) or STOP shutter movement - false - - - - The group address in x/y/z notation to read the motion status of the shutters - false - - - - The group address in x/y/z notation to set the absolute position of the shutter, in % - false - - - - The group address in x/y/z notation to read the absolute position of the shutter - false - - - - Flag to indicate if the status group addresses should be read at startup - true - false - - - - Interval between attempts to read the status group addresses on the bus, in seconds - true - 0 - - - - - - Number - - A channel to control the setpoint of a thermostat - - - - The group address in x/y/z notation to set the thermostat setpoint - true - - - - The group address in x/y/z notation to read the current thermostat setpoint - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Number - - A channel to manage a generic Group Addresses with a DPT compatible with Number Items - - - - The group address in x/y/z notation - true - - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - String - - A channel to manage a generic Group Addresses with a DPT compatible with String Items - - - - The group address in x/y/z notation - true - - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - DateTime - - A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items - - - - The group address in x/y/z notation - true - - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Contact - - A channel to manage a generic Group Addresses with a DPT compatible with Contact Items - - - - The group address in x/y/z notation - true - - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Switch - - A channel to manage a generic Group Addresses with a DPT compatible with Switch Items - - - - The group address in x/y/z notation + The group address in x/y/z where the button sends its commands true @@ -369,4 +338,5 @@ + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml index 2602383266193..5ec47b647ddde 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -1,101 +1,101 @@ - + + + + + + This Bridge is for IP based KNX gateways + + + + + + + + + + The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER + true + + + + + + + + Network address of the KNX/IP gateway + false + network-address + + + Port number of the KNX/IP gateway + false + + 3671 + + + + Network address of the local host to be used to set up the connection to the KNX/IP gateway + network-address + false + + + + The group address for identification of this KNX/IP gateway within the KNX bus + true + 0.0.0 + + + + Set to "true" when having network address translation between this server and the gateway + false + true + + + + Time in milliseconds of how long should be paused between two read requests to the bus during + initialization + true + 50 + + + + Seconds to wait for a response from the KNX bus + true + 10 + + + + Limits the read retries while initialization from the KNX bus + true + 3 + + + + Seconds between connection retries when KNX link has been lost, 0 means never retry + true + 0 + + + + Enable or disable automatic Individual Address discovery + true + true + + + + KNX Project File (knxproj) to parse automatically add to the system + false + + + + + + Number + + The number of errors that occurred on the KNX bus since the start of the binding + - - - - This Bridge is for IP based KNX gateways - - - - - - - - - - The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER - true - - - - - - - - Network address of the KNX/IP gateway - false - network-address - - - Port number of the KNX/IP gateway - false - - 3671 - - - - Network address of the local host to be used to set up the connection to the KNX/IP gateway - network-address - false - - - - The group address for identification of this KNX/IP gateway within the KNX bus - true - 0.0.0 - - - - Set to "true" when having network address translation between this server and the gateway - false - true - - - - Time in milliseconds of how long should be paused between two read requests to the bus during initialization - true - 50 - - - - Seconds to wait for a response from the KNX bus - true - 10 - - - - Limits the read retries while initialization from the KNX bus - true - 3 - - - - Seconds between connection retries when KNX link has been lost, 0 means never retry - true - 0 - - - - Enable or disable automatic Individual Address discovery - true - true - - - - KNX Project File (knxproj) to parse automatically add to the system - false - - - - - - Number - - The number of errors that occurred on the KNX bus since the start of the binding, during the last 5 minutes - - diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml index 91053f8d026b4..4213b51d750cc 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml @@ -1,55 +1,55 @@ - + + + + + + This Bridge is for the serial KNX gateway running on the openHAB host + + + + The serial port to use for connecting to the KNX bus + true + + + + Time in milliseconds of how long should be paused between two read requests to the bus during + initialization + true + 50 + + + + Seconds to wait for a response from the KNX bus + true + 10 + + + + Limits the read retries while initialization from the KNX bus + true + 3 + + + + Seconds between connect retries when KNX link has been lost, 0 means never retry + true + 0 + + + + Enable or disable automatic Individual Address discovery + true + true + + + + KNX Project File (knxproj) to parse and add to the Things managed by this Bridge + false + + + - - - - This Bridge is for the serial KNX gateway running on the openHAB host - - - - The serial port to use for connecting to the KNX bus - true - - - - Time in milliseconds of how long should be paused between two read requests to the bus during initialization - true - 50 - - - - Seconds to wait for a response from the KNX bus - true - 10 - - - - Limits the read retries while initialization from the KNX bus - true - 3 - - - - Seconds between connect retries when KNX link has been lost, 0 means never retry - true - 0 - - - - Enable or disable automatic Individual Address discovery - true - true - - - - KNX Project File (knxproj) to parse and add to the Things managed by this Bridge - false - - - - diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index e9349d07a60b9..82a2cec0db1a4 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -11,14 +11,13 @@ Import-Package: com.google.common.base, org.apache.commons.collections, org.apache.commons.io, org.apache.commons.lang, + org.eclipse.jdt.annotation;resolution:=optional, org.eclipse.smarthome.config.core, org.eclipse.smarthome.config.discovery, org.eclipse.smarthome.core.autoupdate, org.eclipse.smarthome.core.common, org.eclipse.smarthome.core.common.registry, org.eclipse.smarthome.core.i18n, - org.eclipse.smarthome.core.items, - org.eclipse.smarthome.core.library.items, org.eclipse.smarthome.core.library.types, org.eclipse.smarthome.core.service, org.eclipse.smarthome.core.thing, @@ -28,7 +27,6 @@ Import-Package: com.google.common.base, org.eclipse.smarthome.core.thing.type, org.eclipse.smarthome.core.thing.util, org.eclipse.smarthome.core.types, - org.eclipse.smarthome.model.core, org.osgi.framework, org.osgi.service.cm, org.slf4j diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 423f8117543e5..5998d068e68db 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -19,32 +19,32 @@ The binding itself does not require any special configuration. The IP Gateway is the most commonly used way to connect to the KNX bus. At its base, the *ip* bridge accepts the following configuration parameters: -|Name|Required|Description|Default value| -|----|--------|-----------|-------------| -|ipConnectionType|Y|The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER|| -|ipAddress|N|Network address of the KNX/IP gateway|Not required if ipConnectionType is ROUTER| -|portNumber|N|Port number of the KNX/IP gateway|Not required if ipConnectionType is ROUTER; 3671| -|localIp|N|Network address of the local host to be used to set up the connection to the KNX/IP gateway|| -|localSourceAddr|N|The group address for identification of this KNX/IP gateway within the KNX bus|0.0.0| -|readingPause|N|Time in milliseconds of how long should be paused between two read requests to the bus during initialization|50| -|responseTimeout|N|Timeout in seconds to wait for a response from the KNX bus|10| -|readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| -|autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| -|enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| -|useNAT|Y|Whether there is network address translation between the server and the gateway|false| +| Name | Required | Description | Default value | +|---------------------|----------|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------| +| ipConnectionType | Y | The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER | | +| ipAddress | N | Network address of the KNX/IP gateway | Not required if ipConnectionType is ROUTER | +| portNumber | N | Port number of the KNX/IP gateway | Not required if ipConnectionType is ROUTER; 3671 | +| localIp | N | Network address of the local host to be used to set up the connection to the KNX/IP gateway | | +| localSourceAddr | N | The group address for identification of this KNX/IP gateway within the KNX bus | 0.0.0 | +| readingPause | N | Time in milliseconds of how long should be paused between two read requests to the bus during initialization | 50 | +| responseTimeout | N | Timeout in seconds to wait for a response from the KNX bus | 10 | +| readRetriesLimit | N | Limits the read retries while initialization from the KNX bus | 3 | +| autoReconnectPeriod | N | Seconds between connect retries when KNX link has been lost, 0 means never retry | 0 | +| enableDiscovery | N | Enable or disable automatic Individual Address discovery | true | +| useNAT | Y | Whether there is network address translation between the server and the gateway | false | ### Serial Gateway The *serial* bridge accepts the following configuration parameters: -|Name|Required|Description|Default value| -|----|--------|-----------|-------------| -|serialPort|Y|The serial port to use for connecting to the KNX bus|| -|readingPause|N|Time in milliseconds of how long should be paused between two read requests to the bus during initialization|50| -|responseTimeout|N|Timeout in seconds to wait for a response from the KNX bus|10| -|readRetriesLimit|N|Limits the read retries while initialization from the KNX bus|3| -|autoReconnectPeriod|N|Seconds between connect retries when KNX link has been lost, 0 means never retry|0| -|enableDiscovery|N|Enable or disable automatic Individual Address discovery|true| +| Name | Required | Description | Default value | +|---------------------|----------|--------------------------------------------------------------------------------------------------------------|---------------| +| serialPort | Y | The serial port to use for connecting to the KNX bus | | +| readingPause | N | Time in milliseconds of how long should be paused between two read requests to the bus during initialization | 50 | +| responseTimeout | N | Timeout in seconds to wait for a response from the KNX bus | 10 | +| readRetriesLimit | N | Limits the read retries while initialization from the KNX bus | 3 | +| autoReconnectPeriod | N | Seconds between connect retries when KNX link has been lost, 0 means never retry | 0 | +| enableDiscovery | N | Enable or disable automatic Individual Address discovery | true | ## Thing Configuration @@ -62,10 +62,10 @@ The *serial* bridge accepts the following configuration parameters: The Bridges support the following channels: -| Channel Type ID | Item Type | Description | -|-----------------|--------------|--------------| -| errorsall|Number|The number of errors that occurred on the KNX bus since the start of the binding| -| errors5min|Number|The number of errors that occurred on the KNX bus during the last 5 minutes| +| Channel Type ID | Item Type | Description | +|-----------------|-----------|----------------------------------------------------------------------------------| +| errorsall | Number | The number of errors that occurred on the KNX bus since the start of the binding | +| errors5min | Number | The number of errors that occurred on the KNX bus during the last 5 minutes | ### *basic* Thing Channels of Things defined by the end-user @@ -73,7 +73,7 @@ Different kinds of Channels are defined and can be used to group together Group For specific configurations reference is made to the *basic.xml* ESH-INF file of the source distribution. For example, the *statusswitch* Channel type defines two configuration parameters: *switchGA*, the group address in x/y/z notation to toggle the switch, and *statusGA*, the group address in x/y/z notation to read the switch status. Since it is about a switch, the DPT does not have to be defined, e.g. it is supposed to be 1.001. For example, the *number* Channel type is used to define Channels to read/write ordinary Numbers. -``` +```xtend Thing basic someactor { Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] @@ -84,7 +84,7 @@ Thing basic someactor { demo.Things: -``` +```xtend Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.166", ipConnectionType="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1,localSourceAddr="0.0.0"] { Thing basic someactor { Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] @@ -95,7 +95,7 @@ Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168. demo.items: -``` +```xtend Switch someSwitchItem "Manually Defined Switch" { channel="knx:basic:ip1:someactor:someswitch" } ``` diff --git a/addons/binding/org.openhab.binding.knx/pom.xml b/addons/binding/org.openhab.binding.knx/pom.xml index 3a113036eca6e..4c5c0abc4d3b3 100644 --- a/addons/binding/org.openhab.binding.knx/pom.xml +++ b/addons/binding/org.openhab.binding.knx/pom.xml @@ -1,24 +1,20 @@ - + - 4.0.0 + 4.0.0 - - org.openhab.binding - pom - 2.1.0-SNAPSHOT - + + org.openhab.binding + pom + 2.1.0-SNAPSHOT + - - org.openhab.binding.knx - org.openhab.binding.knx - + org.openhab.binding + org.openhab.binding.knx + 2.1.0-SNAPSHOT - org.openhab.binding - org.openhab.binding.knx - 2.1.0-SNAPSHOT - - KNX Binding - eclipse-plugin + KNX Binding + eclipse-plugin diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java index 1fe4c08e4d80e..8c6beba22b3ad 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java @@ -8,6 +8,8 @@ */ package org.openhab.binding.knx; +import org.eclipse.jdt.annotation.NonNullByDefault; + import tuwien.auto.calimero.GroupAddress; /** @@ -17,6 +19,7 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public interface GroupAddressListener extends TelegramListener { /** diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java index 74b9ca1137048..455b0ecfaa2d0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java @@ -8,6 +8,8 @@ */ package org.openhab.binding.knx; +import org.eclipse.jdt.annotation.NonNullByDefault; + import tuwien.auto.calimero.IndividualAddress; /** @@ -17,6 +19,7 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public interface IndividualAddressListener extends TelegramListener { /** diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java index cf8e5974103c7..518c93f275fe9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java @@ -8,6 +8,8 @@ */ package org.openhab.binding.knx; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.datapoint.Datapoint; @@ -20,9 +22,9 @@ * it must be clear, in which format it must be sent to KNX and vice versa. * * @author Kai Kreuzer - * @since 0.3.0 * */ +@NonNullByDefault public interface KNXTypeMapper { /** @@ -32,7 +34,8 @@ public interface KNXTypeMapper { * @param dpt the corresponding datapoint type * @return datapoint value as a string */ - public String toDPTValue(Type type, String dpt); + @Nullable + public String toDPTValue(Type type, @Nullable String dpt); /** * maps a datapoint value to an openHAB command or state @@ -41,8 +44,10 @@ public interface KNXTypeMapper { * @param data the datapoint value as an ASDU byte array (see {@link ProcessEvent}.getASDU()) * @return a command or state of openHAB */ + @Nullable public Type toType(Datapoint datapoint, byte[] data); - public Class toTypeClass(String dpt); + @Nullable + public Class toTypeClass(@Nullable String dpt); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java index 3a0ec0b66866d..48864bbf5d352 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java @@ -8,6 +8,7 @@ */ package org.openhab.binding.knx; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; import tuwien.auto.calimero.GroupAddress; @@ -20,6 +21,7 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public interface TelegramListener { /** diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index a304b52521d50..7be9a9b60306e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -51,7 +51,7 @@ public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { private String localSource; private int port; private InetSocketAddress localEndPoint; - private Boolean useNAT; + private boolean useNAT; public IPBridgeThingHandler(Bridge bridge) { super(bridge); @@ -67,8 +67,10 @@ public void initialize() { ip = (String) getConfig().get(IP_ADDRESS); port = ((BigDecimal) getConfig().get(PORT_NUMBER)).intValue(); ipConnectionType = KNXNetworkLinkIP.TUNNELING; - useNAT = getConfigAs(BridgeConfiguration.class).getUseNAT(); + BridgeConfiguration config = getConfigAs(BridgeConfiguration.class); + useNAT = config.getUseNAT() != null ? config.getUseNAT() : false; } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { + useNAT = false; ipConnectionType = KNXNetworkLinkIP.ROUTING; if (StringUtils.isBlank(ip)) { ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java index 55e29473ef7a5..0703574897b51 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -22,7 +22,10 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.lang.StringUtils; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.Channel; import org.eclipse.smarthome.core.thing.ChannelUID; import org.eclipse.smarthome.core.thing.Thing; @@ -32,7 +35,6 @@ import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; -import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.GroupAddressListener; import org.openhab.binding.knx.IndividualAddressListener; @@ -61,6 +63,7 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public class KNXBasicThingHandler extends BaseThingHandler implements IndividualAddressListener, GroupAddressListener { private final Random random = new Random(); @@ -68,19 +71,25 @@ public class KNXBasicThingHandler extends BaseThingHandler implements Individual private final Logger logger = LoggerFactory.getLogger(KNXBasicThingHandler.class); // the physical address of the KNX actor represented by this Thing + @Nullable protected IndividualAddress address; // group addresses the handler is monitoring - protected Set groupAddresses = new HashSet(); + protected Set groupAddresses = new HashSet<>(); // group addresses read out from the device's firmware tables - protected Set foundGroupAddresses = new HashSet(); + protected Set foundGroupAddresses = new HashSet<>(); - private Map> readFutures = new HashMap<>(); + private final Map> readFutures = new HashMap<>(); + + @Nullable private ScheduledFuture pollingJob; + + @Nullable private ScheduledFuture descriptionJob; + + @Nullable private ScheduledExecutorService knxScheduler; - private BasicConfig config; private static final long OPERATION_TIMEOUT = 5000; private static final long OPERATION_INTERVAL = 2000; @@ -92,7 +101,7 @@ public KNXBasicThingHandler(Thing thing) { @Override public void initialize() { - config = getConfigAs(BasicConfig.class); + BasicConfig config = getConfigAs(BasicConfig.class); initializeGroupAddresses(); @@ -114,10 +123,7 @@ public void initialize() { } } catch (KNXFormatException e) { logger.error("An exception occurred while setting the individual address '{}': {}", config.getAddress(), - e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + e.getMessage(), e); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); } @@ -135,23 +141,28 @@ private void initializeGroupAddresses() { } private KNXChannelType getKNXChannelType(Channel channel) { - String channelID = channel.getChannelTypeUID().getId(); - KNXChannelType selector = KNXChannelSelector.getValueSelectorFromChannelTypeId(channelID); - return selector; + return KNXChannelSelector.getValueSelectorFromChannelTypeId(channel.getChannelTypeUID()); } private KNXBridgeBaseThingHandler getBridgeHandler() { - return (KNXBridgeBaseThingHandler) getBridge().getHandler(); + Bridge bridge = getBridge(); + if (bridge != null) { + KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) bridge.getHandler(); + if (handler != null) { + return handler; + } + } + throw new IllegalStateException("The bridge must not be null and must be initialized"); } @Override public void dispose() { - if (pollingJob != null && !pollingJob.isCancelled()) { + if (pollingJob != null) { pollingJob.cancel(true); pollingJob = null; } - if (descriptionJob != null && !descriptionJob.isCancelled()) { + if (descriptionJob != null) { descriptionJob.cancel(true); descriptionJob = null; } @@ -159,19 +170,16 @@ public void dispose() { cancelReadFutures(); KNXBridgeBaseThingHandler bridgeHandler = getBridgeHandler(); - if (bridgeHandler != null) { - bridgeHandler.unregisterGroupAddressListener(this); - } + bridgeHandler.unregisterGroupAddressListener(this); } private void cancelReadFutures() { - if (readFutures != null) { - for (ScheduledFuture future : readFutures.values()) { - if (!future.isDone()) { - future.cancel(true); - } + for (ScheduledFuture future : readFutures.values()) { + if (!future.isDone()) { + future.cancel(true); } } + readFutures.clear(); } @FunctionalInterface @@ -195,21 +203,9 @@ private void withKNXType(String channelId, ChannelFunction function) { private void withKNXType(Channel channel, ChannelFunction function) { try { KNXChannelType selector = getKNXChannelType(channel); - if (selector != null) { - Configuration channelConfiguration = channel.getConfiguration(); - if (channelConfiguration != null) { - function.apply(selector, channelConfiguration); - } else { - logger.warn("The configuration of channel {} is empty", channel.getUID()); - } - } else { - logger.warn("The KNX channel type {} is not implemented", channel.getChannelTypeUID().getId()); - } + function.apply(selector, channel.getConfiguration()); } catch (KNXException e) { - logger.error("An error occurred on channel {}: {}", channel.getUID(), e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + logger.error("An error occurred on channel {}: {}", channel.getUID(), e.getMessage(), e); } } @@ -249,23 +245,33 @@ private void scheduleReadJobs() { } } - private void scheduleReadJob(GroupAddress groupAddress, String dpt, boolean immediate, BigDecimal readInterval) { + private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, boolean immediate, + @Nullable BigDecimal readInterval) { if (knxScheduler == null) { return; } boolean recurring = readInterval != null && readInterval.intValue() > 0; + Runnable readRunnable = () -> { + if (getThing().getStatus() == ThingStatus.ONLINE && getBridge().getStatus() == ThingStatus.ONLINE) { + if (!getBridgeHandler().isDPTSupported(dpt)) { + logger.warn("DPT '{}' is not supported by the KNX binding", dpt); + return; + } + Datapoint datapoint = new CommandDP(groupAddress, getThing().getUID().toString(), 0, dpt); + getBridgeHandler().readDatapoint(datapoint, getBridgeHandler().getReadRetriesLimit()); + } + }; if (immediate) { - knxScheduler.schedule(new ReadRunnable(groupAddress, dpt), 0, TimeUnit.SECONDS); + knxScheduler.schedule(readRunnable, 0, TimeUnit.SECONDS); } - if (recurring && readInterval != null) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { int initialDelay = immediate ? 0 : readInterval.intValue(); - future = knxScheduler.scheduleWithFixedDelay(new ReadRunnable(groupAddress, dpt), initialDelay, - readInterval.intValue(), TimeUnit.SECONDS); + future = knxScheduler.scheduleWithFixedDelay(readRunnable, initialDelay, readInterval.intValue(), + TimeUnit.SECONDS); readFutures.put(groupAddress, future); } } @@ -288,11 +294,7 @@ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { @Override public boolean listensTo(IndividualAddress source) { - if (address != null) { - return address.equals(source); - } else { - return false; - } + return address != null && address.equals(source); } @Override @@ -300,24 +302,6 @@ public boolean listensTo(GroupAddress destination) { return groupAddresses.contains(destination) || foundGroupAddresses.contains(destination); } - @Override - public void handleUpdate(ChannelUID channelUID, State newState) { - if (getBridgeHandler() == null) { - logger.warn("KNX bridge handler not found. Cannot handle updates without bridge."); - } - logger.trace("Handling a State ({}) update for Channel {}", newState, channelUID); - switch (channelUID.getId()) { - case CHANNEL_RESET: - if (address != null) { - restart(); - } - break; - default: - sendToKNX(channelUID, newState, true); - break; - } - } - @Override public void handleCommand(ChannelUID channelUID, Command command) { if (getBridgeHandler() == null) { @@ -339,18 +323,15 @@ public void handleCommand(ChannelUID channelUID, Command command) { } break; default: - sendToKNX(channelUID, command, false); + sendToKNX(channelUID, command); break; } } } - private void sendToKNX(ChannelUID channelUID, Type type, boolean toSlaves) { + private void sendToKNX(ChannelUID channelUID, Type type) { withKNXType(channelUID, (selector, channelConfiguration) -> { - if (selector.isSlave() != toSlaves) { - return; - } Type convertedType = selector.convertType(channelConfiguration, type); if (logger.isTraceEnabled()) { logger.trace("Sending to channel {} {} {} {}/{} : {} -> {}", channelUID.getId(), @@ -398,14 +379,14 @@ public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress sou logger.trace("Thing {} processes a Group Write telegram for destination '{}' for channel '{}'", getThing().getUID(), destination, channel.getUID()); processDataReceived(bridge, destination, asdu, selector.getDPT(destination, channelConfiguration), - channel.getUID(), selector.isSlave()); + channel.getUID()); } }); } } private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress destination, byte[] asdu, - String dpt, ChannelUID channelUID, boolean slave) { + @Nullable String dpt, ChannelUID channelUID) { if (dpt != null) { @@ -418,16 +399,7 @@ private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress Type type = bridge.getType(destination, dpt, asdu); if (type != null) { - if (slave) { - if (type instanceof Command) { - postCommand(channelUID, (Command) type); - } - } else { - if (type instanceof State) { - updateState(channelUID, (State) type); - } - } - + postCommand(channelUID, (Command) type); } else { final char[] hexCode = "0123456789ABCDEF".toCharArray(); StringBuilder sb = new StringBuilder(2 + asdu.length * 2); @@ -454,10 +426,12 @@ public void restart() { class ReadRunnable implements Runnable { - private GroupAddress address; - private String dpt; + private final GroupAddress address; - ReadRunnable(GroupAddress address, String dpt) { + @Nullable + private final String dpt; + + ReadRunnable(GroupAddress address, @Nullable String dpt) { this.address = address; this.dpt = dpt; } @@ -478,10 +452,11 @@ public void run() { private void pollDeviceStatus() { try { if (address != null && getBridge().getStatus() == ThingStatus.ONLINE) { - logger.debug("Polling the individual address {}", address.toString()); + logger.debug("Polling the individual address {}", address); boolean isReachable = getBridgeHandler().isReachable(address); if (isReachable) { updateStatus(ThingStatus.ONLINE); + BasicConfig config = getConfigAs(BasicConfig.class); if (!filledDescription && config.getFetch()) { if (descriptionJob == null || descriptionJob.isCancelled()) { descriptionJob = knxScheduler.schedule(descriptionRunnable, 0, TimeUnit.MILLISECONDS); @@ -493,21 +468,22 @@ private void pollDeviceStatus() { } } catch (KNXException e) { logger.error("An error occurred while testing the reachability of a thing '{}' : {}", getThing().getUID(), - e.getLocalizedMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + e.getLocalizedMessage(), e); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); } } - private Runnable descriptionRunnable = new Runnable() { + private final Runnable descriptionRunnable = new Runnable() { @Override public void run() { try { if (getBridge().getStatus() == ThingStatus.ONLINE) { - logger.debug("Fetching device information for address {}", address.toString()); + IndividualAddress address = KNXBasicThingHandler.this.address; + if (address == null) { + return; + } + logger.debug("Fetching device information for address {}", address); Thread.sleep(OPERATION_INTERVAL); byte[] data = getBridgeHandler().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); @@ -519,12 +495,7 @@ public void run() { properties.put(FIRMWARE_TYPE, Firmware.getName(dd.getFirmwareType())); properties.put(FIRMWARE_VERSION, Firmware.getName(dd.getFirmwareVersion())); properties.put(FIRMWARE_SUBVERSION, Firmware.getName(dd.getSubcode())); - try { - updateProperties(properties); - } catch (Exception e) { - // TODO : ignore for now, but for Things created through the DSL, this should also NOT throw - // an exception! See forum discussions - } + updateProperties(properties); logger.info("The device with address {} is of type {}, version {}, subversion {}", address, Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), Firmware.getName(dd.getSubcode())); @@ -558,19 +529,14 @@ public void run() { properties.put(MANUFACTURER_SERIAL_NO, serialNo); properties.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); properties.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); - try { - updateProperties(properties); - } catch (Exception e) { - // TODO : ignore for now, but for Things created through the DSL, this should also NOT throw - // an exception! See forum discussions - } + updateProperties(properties); logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, ManufacturerID, hardwareType, firmwareRevision, serialNo); } else { logger.warn("The KNX Actor with address {} does not expose a Device Object", address); } - // TODO : According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE + // According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE // object, but it seems that a lot, if not all, devices do not do this. In this list we can find out // what other kind of objects the device is exposing. Most devices do implement some set of objects, // we will just go ahead and try to read them out irrespective of what is in the IO_LIST @@ -621,42 +587,6 @@ public void run() { } else { logger.warn("The KNX Actor with address {} does not expose a Group Address table", address); } - - Thread.sleep(OPERATION_INTERVAL); - byte[] objecttableaddress = getBridgeHandler().readDeviceProperties(address, GROUPOBJECT_OBJECT, - PID.TABLE_REFERENCE, 1, 1, true, OPERATION_TIMEOUT); - - if (objecttableaddress != null) { - Thread.sleep(OPERATION_INTERVAL); - elements = getBridgeHandler().readDeviceMemory(address, toUnsigned(objecttableaddress), 1, - false, OPERATION_TIMEOUT); - if (elements != null) { - int numberOfElements = toUnsigned(elements); - logger.debug("The KNX Actor with address {} has {} objects", address, numberOfElements); - - for (int i = 1; i < numberOfElements; i++) { - byte[] objectData = null; - while (objectData == null) { - Thread.sleep(OPERATION_INTERVAL); - objectData = getBridgeHandler().readDeviceMemory(address, - toUnsigned(objecttableaddress) + 1 + (i * 3), 3, false, OPERATION_TIMEOUT); - - logger.debug("Byte 1 {}", - String.format("%8s", Integer.toBinaryString(objectData[0] & 0xFF)) - .replace(' ', '0')); - logger.debug("Byte 2 {}", - String.format("%8s", Integer.toBinaryString(objectData[1] & 0xFF)) - .replace(' ', '0')); - logger.debug("Byte 3 {}", - String.format("%8s", Integer.toBinaryString(objectData[2] & 0xFF)) - .replace(' ', '0')); - } - } - } - } else { - logger.warn("The KNX Actor with address {} does not expose a Group Object table", address); - } - filledDescription = true; } } catch (Exception e) { @@ -665,7 +595,10 @@ public void run() { } } - private int toUnsigned(final byte[] data) { + private int toUnsigned(final byte @Nullable [] data) { + if (data == null) { + return 0; + } int value = data[0] & 0xff; if (data.length == 1) { return value; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 0a682ddaec1ac..dd1d8970688f3 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -10,7 +10,10 @@ import java.nio.ByteBuffer; import java.text.MessageFormat; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -22,6 +25,8 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ChannelUID; @@ -74,6 +79,7 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements NetworkLinkListener { private static final int ERROR_INTERVAL_MINUTES = 5; @@ -83,29 +89,42 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implem private final Logger logger = LoggerFactory.getLogger(KNXBridgeBaseThingHandler.class); // Data structures related to the communication infrastructure - private Set groupAddressListeners = new ConcurrentHashMap() + private final Set groupAddressListeners = new ConcurrentHashMap() .keySet(Boolean.TRUE); - private Set individualAddressListeners = new ConcurrentHashMap() + private final Set individualAddressListeners = new ConcurrentHashMap() .keySet(Boolean.TRUE); - private Set knxBusListeners = new CopyOnWriteArraySet<>(); + private final Set knxBusListeners = new CopyOnWriteArraySet<>(); private final Collection typeMappers = new CopyOnWriteArraySet<>(); - private final LinkedBlockingQueue readDatapoints = new LinkedBlockingQueue(); - protected ConcurrentHashMap destinations = new ConcurrentHashMap(); + private final LinkedBlockingQueue readDatapoints = new LinkedBlockingQueue<>(); + protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); // Data structures related to the KNX protocol stack - private ProcessCommunicator processCommunicator = null; + @Nullable + private ProcessCommunicator processCommunicator; + + @Nullable private ManagementProcedures managementProcedures; + + @Nullable private ManagementClient managementClient; + + @Nullable private KNXNetworkLink link; + private final LogAdapter logAdapter = new LogAdapter(); // Data structures related to the various jobs + @Nullable private ScheduledFuture connectJob; + + @Nullable private ScheduledFuture busJob; - private Lock connectLock = new ReentrantLock(); - private Condition connectedCondition = connectLock.newCondition(); + private final Lock connectLock = new ReentrantLock(); + private final Condition connectedCondition = connectLock.newCondition(); + + @Nullable private ScheduledExecutorService knxScheduler; private boolean shutdown = false; @@ -113,8 +132,10 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implem private long errorsSinceStart; private long errorsSinceInterval; + @Nullable private BridgeConfiguration config; + @NonNullByDefault({}) private final ProcessListenerEx processListener = new ProcessListenerEx() { @Override @@ -216,7 +237,7 @@ private void scheduleAndWaitForConnection() { try { connectedCondition.await(); } catch (InterruptedException e) { - // Nothing to do here - we move on + return; } } } finally { @@ -240,30 +261,18 @@ private void unregisterLogAdapter() { } public final boolean registerGroupAddressListener(GroupAddressListener listener) { - if (listener == null) { - throw new IllegalArgumentException("GroupAddressListener must not be null"); - } return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); } public final boolean unregisterGroupAddressListener(GroupAddressListener listener) { - if (listener == null) { - throw new IllegalArgumentException("GroupAddressListener must not be null"); - } return groupAddressListeners.remove(listener); } public final boolean registerIndividualAddressListener(IndividualAddressListener listener) { - if (listener == null) { - throw new IllegalArgumentException("IndividualAddressListener must not be null"); - } return individualAddressListeners.contains(listener) ? true : individualAddressListeners.add(listener); } public final boolean unregisterIndividualAddressListener(IndividualAddressListener listener) { - if (listener == null) { - throw new IllegalArgumentException("IndividualAddressListener must not be null"); - } return individualAddressListeners.remove(listener); } @@ -276,15 +285,11 @@ public final void removeKNXTypeMapper(KNXTypeMapper typeMapper) { } public final void registerKNXBusListener(KNXBusListener knxBusListener) { - if (knxBusListener != null) { - knxBusListeners.add(knxBusListener); - } + knxBusListeners.add(knxBusListener); } public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { - if (knxBusListener != null) { - knxBusListeners.remove(knxBusListener); - } + knxBusListeners.remove(knxBusListener); } public final int getReadRetriesLimit() { @@ -467,7 +472,7 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification } } - public void writeToKNX(GroupAddress address, String dpt, Type value) { + public void writeToKNX(GroupAddress address, @Nullable String dpt, Type value) { if (dpt == null || address == null || value == null) { return; } @@ -512,6 +517,7 @@ public void writeToKNX(GroupAddress address, String dpt, Type value) { * * @return the corresponding KNX datapoint type value as a string */ + @Nullable private String toDPTValue(Type type, String dpt) { for (KNXTypeMapper typeMapper : typeMappers) { String value = typeMapper.toDPTValue(type, dpt); @@ -531,6 +537,7 @@ private String toDPTValue(Type type, String dpt) { * the byte array of the raw data from the KNX bus * @return the openHAB command or state that corresponds to the data */ + @Nullable private Type getType(Datapoint datapoint, byte[] asdu) { for (KNXTypeMapper typeMapper : typeMappers) { Type type = typeMapper.toType(datapoint, asdu); @@ -541,7 +548,7 @@ private Type getType(Datapoint datapoint, byte[] asdu) { return null; } - public final boolean isDPTSupported(String dpt) { + public final boolean isDPTSupported(@Nullable String dpt) { for (KNXTypeMapper typeMapper : typeMappers) { if (typeMapper.toTypeClass(dpt) != null) { return true; @@ -550,6 +557,7 @@ public final boolean isDPTSupported(String dpt) { return false; } + @Nullable public final Class toTypeClass(String dpt) { for (KNXTypeMapper typeMapper : typeMappers) { Class typeClass = typeMapper.toTypeClass(dpt); @@ -560,12 +568,13 @@ public final Class toTypeClass(String dpt) { return null; } + @Nullable public final Type getType(GroupAddress destination, String dpt, byte[] asdu) { Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); return getType(datapoint, asdu); } - public final synchronized boolean isReachable(IndividualAddress address) throws KNXException { + public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { if (managementProcedures == null || address == null) { return false; } @@ -580,7 +589,7 @@ public final synchronized boolean isReachable(IndividualAddress address) throws return false; } - public final synchronized void restartNetworkDevice(IndividualAddress address) { + public final synchronized void restartNetworkDevice(@Nullable IndividualAddress address) { if (address == null) { return; } @@ -600,31 +609,33 @@ public final synchronized void restartNetworkDevice(IndividualAddress address) { } } - public synchronized IndividualAddress[] scanNetworkDevices(final int area, final int line) { + public synchronized List scanNetworkDevices(final int area, final int line) { try { - return managementProcedures.scanNetworkDevices(area, line); + IndividualAddress[] ret = managementProcedures.scanNetworkDevices(area, line); + return ret != null ? Arrays.asList(ret) : Collections.emptyList(); } catch (KNXException | InterruptedException e) { logger.error("Error scanning the KNX bus: {}", e.getMessage()); if (logger.isDebugEnabled()) { logger.error("", e); } } - return null; + return Collections.emptyList(); } - public synchronized IndividualAddress[] scanNetworkRouters() { + public synchronized List scanNetworkRouters() { try { - return managementProcedures.scanNetworkRouters(); + IndividualAddress[] ret = managementProcedures.scanNetworkRouters(); + return ret != null ? Arrays.asList(ret) : Collections.emptyList(); } catch (KNXException | InterruptedException e) { logger.error("An exception occurred while scanning the KNX bus: {}", e.getMessage()); if (logger.isDebugEnabled()) { logger.error("", e); } } - return null; + return Collections.emptyList(); } - private byte[] readFromManagementClient(String task, long timeout, IndividualAddress address, + private byte @Nullable [] readFromManagementClient(String task, long timeout, IndividualAddress address, ReadFunction function) { final long start = System.nanoTime(); while ((System.nanoTime() - start) < TimeUnit.MILLISECONDS.toNanos(timeout)) { @@ -659,8 +670,8 @@ private void authorize(boolean authenticate, Destination destination) throws KNX } } - public synchronized byte[] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, - long timeout) { + public synchronized byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, + boolean authenticate, long timeout) { String task = "read the device description"; return readFromManagementClient(task, timeout, address, destination -> { authorize(authenticate, destination); @@ -668,7 +679,7 @@ public synchronized byte[] readDeviceDescription(IndividualAddress address, int }); } - public synchronized byte[] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, + public synchronized byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, boolean authenticate, long timeout) { String task = MessageFormat.format("read {0} bytes at memory location {1}", bytes, startAddress); return readFromManagementClient(task, timeout, address, destination -> { @@ -677,8 +688,9 @@ public synchronized byte[] readDeviceMemory(IndividualAddress address, int start }); } - public synchronized byte[] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, - final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { + public synchronized byte @Nullable [] readDeviceProperties(IndividualAddress address, + final int interfaceObjectIndex, final int propertyId, final int start, final int elements, + boolean authenticate, long timeout) { String task = MessageFormat.format("read device property {} at index {}", propertyId, interfaceObjectIndex); return readFromManagementClient(task, timeout, address, destination -> { authorize(authenticate, destination); @@ -686,12 +698,13 @@ public synchronized byte[] readDeviceProperties(IndividualAddress address, final }); } + @Nullable public ScheduledExecutorService getScheduler() { return knxScheduler; } @Override - public void linkClosed(CloseEvent e) { + public void linkClosed(@Nullable CloseEvent e) { if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); if (config.getAutoReconnectPeriod().intValue() > 0) { @@ -704,16 +717,16 @@ public void linkClosed(CloseEvent e) { } @Override - public void indication(FrameEvent e) { + public void indication(@Nullable FrameEvent e) { handleFrameEvent(e); } @Override - public void confirmation(FrameEvent e) { + public void confirmation(@Nullable FrameEvent e) { handleFrameEvent(e); } - private void handleFrameEvent(FrameEvent e) { + private void handleFrameEvent(@Nullable FrameEvent e) { checkErrorCounterTimeouts(); int messageCode = e.getFrame().getMessageCode(); switch (messageCode) { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java deleted file mode 100644 index c0284a44cc585..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeItemMap.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.handler; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.smarthome.core.items.GenericItem; -import org.eclipse.smarthome.core.items.Item; -import org.eclipse.smarthome.core.library.items.ColorItem; -import org.eclipse.smarthome.core.library.items.ContactItem; -import org.eclipse.smarthome.core.library.items.DateTimeItem; -import org.eclipse.smarthome.core.library.items.DimmerItem; -import org.eclipse.smarthome.core.library.items.NumberItem; -import org.eclipse.smarthome.core.library.items.RollershutterItem; -import org.eclipse.smarthome.core.library.items.StringItem; -import org.eclipse.smarthome.core.library.items.SwitchItem; -import org.eclipse.smarthome.core.library.types.DateTimeType; -import org.eclipse.smarthome.core.library.types.DecimalType; -import org.eclipse.smarthome.core.library.types.HSBType; -import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; -import org.eclipse.smarthome.core.library.types.OnOffType; -import org.eclipse.smarthome.core.library.types.OpenClosedType; -import org.eclipse.smarthome.core.library.types.PercentType; -import org.eclipse.smarthome.core.library.types.StopMoveType; -import org.eclipse.smarthome.core.library.types.StringType; -import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Type; - -/** - * Provides mappings from {@link Type} classes to {@link Item} classes. - * - * @author Simon Kaufmann - initial contribution and API - * - */ -public class TypeItemMap { - - private static final Map, Class> TYPE_ITEM_MAP; - - static { - Map, Class> typeItemMap = new HashMap<>(); - typeItemMap.put(DateTimeType.class, DateTimeItem.class); - typeItemMap.put(DecimalType.class, NumberItem.class); - typeItemMap.put(HSBType.class, ColorItem.class); - typeItemMap.put(IncreaseDecreaseType.class, DimmerItem.class); - typeItemMap.put(OnOffType.class, SwitchItem.class); - typeItemMap.put(OpenClosedType.class, ContactItem.class); - typeItemMap.put(PercentType.class, NumberItem.class); - typeItemMap.put(StopMoveType.class, RollershutterItem.class); - typeItemMap.put(StringType.class, StringItem.class); - typeItemMap.put(UpDownType.class, RollershutterItem.class); - TYPE_ITEM_MAP = Collections.unmodifiableMap(typeItemMap); - } - - public static Class get(Class type) { - return TYPE_ITEM_MAP.get(type); - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java index d58fc5fd6226d..f170dd40ec077 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -11,6 +11,11 @@ import java.util.HashSet; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; + +@NonNullByDefault public final class KNXChannelSelector { private KNXChannelSelector() { @@ -24,7 +29,6 @@ private KNXChannelSelector() { add(new TypeDimmer()); add(new TypeRollershutter()); add(new TypeSetpoint()); - add(new TypeStatusSwitch()); add(new TypeSwitch()); add(new TypeWallButton()); @@ -34,16 +38,19 @@ private KNXChannelSelector() { } }; - public static KNXChannelType getValueSelectorFromChannelTypeId(String channelTypeID) + public static KNXChannelType getValueSelectorFromChannelTypeId(@Nullable ChannelTypeUID channelTypeUID) throws IllegalArgumentException { + if (channelTypeUID == null) { + throw new IllegalArgumentException("channel type UID was null"); + } for (KNXChannelType c : types) { - if (c.getChannelID().equals(channelTypeID)) { + if (c.getChannelID().equals(channelTypeUID.getId())) { return c; } } + throw new IllegalArgumentException(channelTypeUID.getId() + " is not a valid value channel type ID"); - throw new IllegalArgumentException(channelTypeID + " is not a valid value channel type ID"); } -} \ No newline at end of file +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index 3a6a04e4f876c..47091c954f627 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -13,6 +13,8 @@ import java.util.Objects; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.types.Type; @@ -21,7 +23,8 @@ import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; -public class KNXChannelType { +@NonNullByDefault +public abstract class KNXChannelType { private final String channelTypeID; @@ -33,7 +36,7 @@ public final String getChannelID() { return channelTypeID; } - protected final Set getAddresses(Configuration configuration, Iterable addresses) + protected final Set getAddresses(@Nullable Configuration configuration, Iterable addresses) throws KNXFormatException { Set ret = new HashSet<>(); for (String address : addresses) { @@ -44,7 +47,7 @@ protected final Set getAddresses(Configuration configuration, Iter return ret; } - protected final boolean isEquals(Configuration configuration, String address, GroupAddress groupAddress) + protected final boolean isEquals(@Nullable Configuration configuration, String address, GroupAddress groupAddress) throws KNXFormatException { if (configuration != null && configuration.get(address) != null) { return Objects.equals(new GroupAddress((String) configuration.get(address)), groupAddress); @@ -52,40 +55,40 @@ protected final boolean isEquals(Configuration configuration, String address, Gr return false; } - public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { - return null; - } + public abstract String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException; protected Set getReadAddressKeys() { return Collections.emptySet(); } - public final Set getReadAddresses(Configuration configuration) throws KNXFormatException { + public final Set getReadAddresses(@Nullable Configuration configuration) throws KNXFormatException { return getAddresses(configuration, getReadAddressKeys()); } - protected Set getWriteAddressKeys(Type type) { + protected Set getWriteAddressKeys(@Nullable Type type) { return Collections.emptySet(); } - public final Set getWriteAddresses(Configuration configuration, Type type) throws KNXFormatException { + public final Set getWriteAddresses(@Nullable Configuration configuration, @Nullable Type type) + throws KNXFormatException { return getAddresses(configuration, getWriteAddressKeys(type)); } - protected Set getTransmitAddressKeys(Type type) { + protected Set getTransmitAddressKeys(@Nullable Type type) { return Collections.emptySet(); } - public final Set getTransmitAddresses(Configuration configuration, Type type) + public final Set getTransmitAddresses(Configuration configuration, @Nullable Type type) throws KNXFormatException { return getAddresses(configuration, getTransmitAddressKeys(type)); } - protected Set getUpdateAddressKeys(Type type) { + protected Set getUpdateAddressKeys(@Nullable Type type) { return Collections.emptySet(); } - public Set getUpdateAddresses(Configuration configuration, Type type) throws KNXFormatException { + public Set getUpdateAddresses(Configuration configuration, @Nullable Type type) + throws KNXFormatException { return getAddresses(configuration, getUpdateAddressKeys(type)); } @@ -93,14 +96,11 @@ protected final Set asSet(String... values) { return Sets.newHashSet(values); } - public Type convertType(Configuration configuration, Type type) { + @Nullable + public Type convertType(Configuration configuration, @Nullable Type type) { return type; } - public boolean isSlave() { - return false; - } - @Override public String toString() { return channelTypeID; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index 43c4b3236c0b8..7e7f6d9ca4f79 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -45,7 +45,7 @@ public String getDPT(GroupAddress groupAddress, Configuration configuration) thr if (isEquals(configuration, INCREASE_DECREASE_GA, groupAddress)) { return "3.007"; } - return null; + throw new IllegalArgumentException("Group address " + groupAddress + " is none of the configured addresses"); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index 44ec43119d6e0..247c4ee5835ae 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -49,7 +49,7 @@ public String getDPT(GroupAddress groupAddress, Configuration configuration) thr if (isEquals(configuration, POSITION_STATUS_GA, groupAddress)) { return "5.001"; } - return null; + throw new IllegalArgumentException("Group address " + groupAddress + " is none of the configured addresses"); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java deleted file mode 100644 index e4cfd1a5ffb3b..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeStatusSwitch.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.util.Set; - -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; - -import tuwien.auto.calimero.GroupAddress; - -class TypeStatusSwitch extends KNXChannelType { - - TypeStatusSwitch() { - super(CHANNEL_STATUSSWITCH); - } - - @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return "1.001"; - } - - @Override - protected Set getReadAddressKeys() { - return asSet(STATUS_GA); - } - - @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(SWITCH_GA); - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java index bb1da8da634c7..92a18b99fe37e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java @@ -38,9 +38,4 @@ protected Set getWriteAddressKeys(Type type) { return asSet(STATUS_GA); } - @Override - public boolean isSlave() { - return true; - } - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 32a72d2cec3f6..04c1d9a81997f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -20,6 +20,7 @@ import java.util.Locale; import java.util.Map; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.library.types.DateTimeType; import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.library.types.HSBType; @@ -57,9 +58,6 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorString; import tuwien.auto.calimero.dptxlator.DPTXlatorTime; import tuwien.auto.calimero.dptxlator.DPTXlatorUtf8; -//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPTXlator8BitEnum; -//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPtXlator8BitSet; -//calimero 2.4 import tuwien.auto.calimero.dptxlator.DPtXlatorMeteringValue; import tuwien.auto.calimero.dptxlator.TranslatorTypes; import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.exception.KNXFormatException; @@ -70,13 +68,11 @@ * * @author Kai Kreuzer * @author Volker Daube - * @author Helmut Lehmeyer - * generic DPT Mapper - * @since 0.3.0 + * @author Helmut Lehmeyer - generic DPT Mapper */ public class KNXCoreTypeMapper implements KNXTypeMapper { - private static final Logger LOGGER = LoggerFactory.getLogger(KNXCoreTypeMapper.class); + private final Logger logger = LoggerFactory.getLogger(KNXCoreTypeMapper.class); private static final String TIME_DAY_FORMAT = new String("EEE, HH:mm:ss"); private static final String DATE_FORMAT = new String("yyyy-MM-dd"); @@ -102,11 +98,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { DPTXlator64BitSigned.class, DPTXlator8BitSigned.class, DPTXlator8BitUnsigned.class, DPTXlatorBoolean.class, DPTXlatorDate.class, DPTXlatorDateTime.class, DPTXlatorRGB.class, DPTXlatorSceneControl.class, DPTXlatorSceneNumber.class, DPTXlatorString.class, DPTXlatorTime.class, - DPTXlatorUtf8.class - // calimero 2.4 DPTXlator8BitEnum.class, - // calimero 2.4 DptXlator8BitSet.class, - // calimero 2.4 DptXlatorMeteringValue.class - ); + DPTXlatorUtf8.class); dptTypeMap = new HashMap>(); dptMainTypeMap = new HashMap>(); @@ -538,7 +530,7 @@ public String toDPTValue(Type type, String dptID) { DPT dpt; int mainNumber = getMainNumber(dptID); if (mainNumber == -1) { - LOGGER.error("toDPTValue couldn't identify mainnumber in dptID: {}", dptID); + logger.error("toDPTValue couldn't identify mainnumber in dptID: {}", dptID); return null; } @@ -602,12 +594,12 @@ public String toDPTValue(Type type, String dptID) { return formatDateTime((DateTimeType) type, dptID); } } catch (Exception e) { - LOGGER.error("An exception occurred converting type {} to dpt id {} : {}", + logger.error("An exception occurred converting type {} to dpt id {} : {}", new Object[] { type, dptID, e.getMessage() }); return null; } - LOGGER.debug("toDPTValue: Couldn't convert type {} to dpt id {} (no mapping).", type, dptID); + logger.debug("toDPTValue: Couldn't convert type {} to dpt id {} (no mapping).", type, dptID); return null; } @@ -618,6 +610,7 @@ public String toDPTValue(Type type, String dptID) { * @see org.openhab.binding.knx1.config.KNXTypeMapper#toType(tuwien.auto.calimero.datapoint.Datapoint, byte[]) */ @Override + @Nullable public Type toType(Datapoint datapoint, byte[] data) { try { DPTXlator translator = TranslatorTypes.createTranslator(datapoint.getMainNumber(), datapoint.getDPT()); @@ -628,12 +621,12 @@ public Type toType(Datapoint datapoint, byte[] data) { int mainNumber = getMainNumber(id); if (mainNumber == -1) { - LOGGER.debug("toType: couldn't identify mainnumber in dptID: {}.", id); + logger.debug("toType: couldn't identify mainnumber in dptID: {}.", id); return null; } int subNumber = getSubNumber(id); if (subNumber == -1) { - LOGGER.debug("toType: couldn't identify su number in dptID: {}.", id); + logger.debug("toType: couldn't identify su number in dptID: {}.", id); return null; } /* @@ -666,7 +659,7 @@ public Type toType(Datapoint datapoint, byte[] data) { DPTXlator3BitControlled translator3BitControlled = (DPTXlator3BitControlled) translator; if (translator3BitControlled.getStepCode() == 0) { // Not supported: break - LOGGER.debug("toType: KNX DPT_Control_Dimming: break ignored."); + logger.debug("toType: KNX DPT_Control_Dimming: break ignored."); return null; } switch (subNumber) { @@ -711,25 +704,25 @@ public Type toType(Datapoint datapoint, byte[] data) { DPTXlatorDateTime translatorDateTime = (DPTXlatorDateTime) translator; if (translatorDateTime.isFaultyClock()) { // Not supported: faulty clock - LOGGER.debug("toType: KNX clock msg ignored: clock faulty bit set, which is not supported"); + logger.debug("toType: KNX clock msg ignored: clock faulty bit set, which is not supported"); return null; } else if (!translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) && translatorDateTime.isValidField(DPTXlatorDateTime.DATE)) { // Not supported: "/1/1" (month and day without year) - LOGGER.debug( + logger.debug( "toType: KNX clock msg ignored: no year, but day and month, which is not supported"); return null; } else if (translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) && !translatorDateTime.isValidField(DPTXlatorDateTime.DATE)) { // Not supported: "1900" (year without month and day) - LOGGER.debug( + logger.debug( "toType: KNX clock msg ignored: no day and month, but year, which is not supported"); return null; } else if (!translatorDateTime.isValidField(DPTXlatorDateTime.YEAR) && !translatorDateTime.isValidField(DPTXlatorDateTime.DATE) && !translatorDateTime.isValidField(DPTXlatorDateTime.TIME)) { // Not supported: No year, no date and no time - LOGGER.debug("toType: KNX clock msg ignored: no day and month or year, which is not supported"); + logger.debug("toType: KNX clock msg ignored: no day and month or year, which is not supported"); return null; } @@ -777,7 +770,7 @@ public Type toType(Datapoint datapoint, byte[] data) { if (typeClass.equals(DateTimeType.class)) { String date = formatDateTime(value, datapoint.getDPT()); if ((date == null) || (date.isEmpty())) { - LOGGER.debug("toType: KNX clock msg ignored: date object null or empty {}.", date); + logger.debug("toType: KNX clock msg ignored: date object null or empty {}.", date); return null; } else { return DateTimeType.valueOf(date); @@ -793,13 +786,13 @@ public Type toType(Datapoint datapoint, byte[] data) { return HSBType.fromRGB(r, g, b); } } catch (KNXFormatException kfe) { - LOGGER.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXFormatException).", + logger.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXFormatException).", datapoint.getDPT()); } catch (KNXIllegalArgumentException kiae) { - LOGGER.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXIllegalArgumentException).", + logger.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXIllegalArgumentException).", datapoint.getDPT()); } catch (KNXException e) { - LOGGER.warn("Failed creating a translator for datapoint type ‘{}‘.", datapoint.getDPT(), e); + logger.warn("Failed creating a translator for datapoint type ‘{}‘.", datapoint.getDPT(), e); } return null; @@ -817,7 +810,7 @@ public Class toTypeClass(String dptId) { if (ohClass == null) { int mainNumber = getMainNumber(dptId); if (mainNumber == -1) { - LOGGER.debug("toType: couldn't convert dptID toTypeClass: {}.", dptId); + logger.debug("toType: couldn't convert dptID toTypeClass: {}.", dptId); return null; } ohClass = dptMainTypeMap.get(mainNumber); @@ -869,7 +862,7 @@ private String formatDateTime(String value, String dpt) { } } catch (ParseException pe) { // do nothing but logging - LOGGER.warn("Could not parse '{}' to a valid date", value); + logger.warn("Could not parse '{}' to a valid date", value); } return date != null ? new SimpleDateFormat(DateTimeType.DATE_PATTERN).format(date) : ""; @@ -918,10 +911,10 @@ private int getSubNumber(String dptID) { try { result = Integer.parseInt(dptID.substring(dptSepratorPosition + 1, dptID.length())); } catch (NumberFormatException nfe) { - LOGGER.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", + logger.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", dptID); } catch (IndexOutOfBoundsException ioobe) { - LOGGER.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", + logger.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", dptID); } } @@ -934,7 +927,7 @@ private int getSubNumber(String dptID) { * @param dptID String with DPT ID * @return main number or -1 */ - private static int getMainNumber(String dptID) { + private int getMainNumber(String dptID) { int result = -1; if (dptID == null) { throw new IllegalArgumentException("Parameter dptID cannot be null"); @@ -945,10 +938,10 @@ private static int getMainNumber(String dptID) { try { result = Integer.parseInt(dptID.substring(0, dptSepratorPosition)); } catch (NumberFormatException nfe) { - LOGGER.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", + logger.error("toType couldn't identify main and/or sub number in dptID (NumberFormatException): {}", dptID); } catch (IndexOutOfBoundsException ioobe) { - LOGGER.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", + logger.error("toType couldn't identify main and/or sub number in dptID (IndexOutOfBoundsException): {}", dptID); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java index 0a4380474f66c..e5d86f2e1b9db 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java @@ -16,7 +16,7 @@ public class BasicConfig { private String address; - private Boolean fetch; + private boolean fetch; private BigDecimal interval; public String getAddress() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java index 33db27f113b9f..221a28a7dd5cb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java @@ -21,11 +21,11 @@ public class BridgeConfiguration { private BigDecimal autoReconnectPeriod; - private Boolean enableDiscovery; + private boolean enableDiscovery; private BigDecimal readingPause; private BigDecimal readRetriesLimit; private BigDecimal responseTimeout; - private Boolean useNAT; + private boolean useNAT; public BigDecimal getAutoReconnectPeriod() { return autoReconnectPeriod; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java index 0bd3ba6da55f2..09f38432c5a65 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java @@ -8,9 +8,12 @@ */ package org.openhab.binding.knx.internal.handler; +import org.eclipse.jdt.annotation.NonNullByDefault; + /** * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public enum Manufacturer { M1(1, "Siemens"), M2(2, "ABB"), @@ -333,6 +336,6 @@ public static String getName(int code) { return c.name; } } - return null; + return "Unknown"; } -} \ No newline at end of file +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java index 9f9e02d02bbf7..560a481ea0b1f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java @@ -24,7 +24,6 @@ * All logging events from calimero are written to a single slf4j logger named tuwien.auto.calimero. * * @author Martin Renner - * @since 1.5.0 */ public class LogAdapter extends LogWriter { From 108890d3b84db760e8f49460c9eb281a6ba6071d Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Tue, 12 Dec 2017 10:54:56 +0100 Subject: [PATCH 04/52] factored knx client communication out of bridge handler Signed-off-by: Simon Kaufmann --- .../META-INF/MANIFEST.MF | 1 + .../OSGI-INF/KNXCoreTypeMapper.xml | 17 - ...ing.knx.internal.dpt.KNXCoreTypeMapper.xml | 7 + ...nx.internal.factory.KNXHandlerFactory.xml} | 22 +- .../binding/knx/KNXBindingConstants.java | 3 - .../openhab/binding/knx/TelegramListener.java | 11 +- .../knx/handler/IPBridgeThingHandler.java | 93 ++- .../knx/handler/KNXBasicThingHandler.java | 103 ++- .../handler/KNXBridgeBaseThingHandler.java | 628 +----------------- .../knx/handler/SerialBridgeThingHandler.java | 65 +- .../knx/handler/StatusUpdateCallback.java | 17 + .../knx/internal/client/DeviceInfoClient.java | 96 +++ .../binding/knx/internal/client/IPClient.java | 60 ++ .../knx/internal/client/KNXClient.java | 621 +++++++++++++++++ .../knx/internal/client/SerialClient.java | 63 ++ .../{handler => config}/BasicConfig.java | 2 +- .../BridgeConfiguration.java | 7 +- .../config/IPBridgeConfiguration.java | 54 ++ .../config/SerialBridgeConfiguration.java | 11 + .../knx/internal/dpt/KNXCoreTypeMapper.java | 2 + .../internal/factory/KNXHandlerFactory.java | 48 +- 21 files changed, 1107 insertions(+), 824 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml create mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml rename addons/binding/org.openhab.binding.knx/OSGI-INF/{KNXHandlerFactory.xml => org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml} (54%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/{handler => config}/BasicConfig.java (93%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/{handler => config}/BridgeConfiguration.java (89%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 82a2cec0db1a4..7f742db1feaa6 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -19,6 +19,7 @@ Import-Package: com.google.common.base, org.eclipse.smarthome.core.common.registry, org.eclipse.smarthome.core.i18n, org.eclipse.smarthome.core.library.types, + org.eclipse.smarthome.core.net, org.eclipse.smarthome.core.service, org.eclipse.smarthome.core.thing, org.eclipse.smarthome.core.thing.binding, diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml deleted file mode 100644 index 7f6b59b5a352c..0000000000000 --- a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXCoreTypeMapper.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml new file mode 100644 index 0000000000000..b77a353d21143 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml similarity index 54% rename from addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml rename to addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml index 9ff29f8a3c7bf..29ddbf6227e3d 100644 --- a/addons/binding/org.openhab.binding.knx/OSGI-INF/KNXHandlerFactory.xml +++ b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml @@ -1,20 +1,10 @@ - - - - - + - - + + + + + \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java index f6dcdffb85a32..31084b74266bf 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -97,7 +97,4 @@ public class KNXBindingConstants { // href="http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml">iana EIBnet/IP public static final String DEFAULT_MULTICAST_IP = "224.0.23.12"; - // The group address for identification of this KNX/IP gateway within the KNX bus. Default is 0.0.0 - public static final String DEFAULT_LOCAL_SOURCE_ADDRESS = "0.0.0"; - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java index 48864bbf5d352..9ac25c26f1494 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java @@ -9,7 +9,7 @@ package org.openhab.binding.knx; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; +import org.openhab.binding.knx.internal.client.KNXClient; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; @@ -32,8 +32,7 @@ public interface TelegramListener { * @param destination * @param asdu */ - public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, - byte[] asdu); + public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** * @@ -43,8 +42,7 @@ public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress sou * @param destination * @param asdu */ - public void onGroupRead(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, - byte[] asdu); + public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** * @@ -54,7 +52,6 @@ public void onGroupRead(KNXBridgeBaseThingHandler bridge, IndividualAddress sour * @param destination * @param asdu */ - public void onGroupReadResponse(KNXBridgeBaseThingHandler bridge, IndividualAddress source, - GroupAddress destination, byte[] asdu); + public void onGroupReadResponse(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index 7be9a9b60306e..e9309284c3445 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -8,28 +8,23 @@ */ package org.openhab.binding.knx.handler; -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.math.BigDecimal; -import java.net.InetAddress; import java.net.InetSocketAddress; -import java.net.UnknownHostException; import java.text.MessageFormat; import org.apache.commons.lang.StringUtils; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.openhab.binding.knx.KNXBindingConstants; -import org.openhab.binding.knx.internal.handler.BridgeConfiguration; +import org.openhab.binding.knx.internal.client.IPClient; +import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.config.IPBridgeConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.KNXNetworkLinkIP; -import tuwien.auto.calimero.link.medium.TPSettings; /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are @@ -39,45 +34,45 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { + private final Logger logger = LoggerFactory.getLogger(IPBridgeThingHandler.class); + private static final String MODE_ROUTER = "ROUTER"; private static final String MODE_TUNNEL = "TUNNEL"; - private final Logger logger = LoggerFactory.getLogger(IPBridgeThingHandler.class); + @NonNullByDefault({}) + private IPClient client; - private int ipConnectionType; - private String ip; - private String localSource; - private int port; - private InetSocketAddress localEndPoint; - private boolean useNAT; + private final NetworkAddressService networkAddressService; - public IPBridgeThingHandler(Bridge bridge) { + public IPBridgeThingHandler(Bridge bridge, NetworkAddressService networkAddressService) { super(bridge); + this.networkAddressService = networkAddressService; } @Override public void initialize() { - localSource = (String) getConfig().get(LOCAL_SOURCE_ADDRESS); - - String connectionTypeString = (String) getConfig().get(IP_CONNECTION_TYPE); + IPBridgeConfiguration config = getConfigAs(IPBridgeConfiguration.class); + String localSource = config.getLocalSourceAddr(); + String connectionTypeString = config.getIpConnectionType(); + String ip = ""; + int port = 0; + InetSocketAddress localEndPoint = null; + boolean useNAT = false; + int ipConnectionType = MODE_ROUTER.equalsIgnoreCase(connectionTypeString) ? KNXNetworkLinkIP.ROUTING + : KNXNetworkLinkIP.TUNNELING; if (StringUtils.isNotBlank(connectionTypeString)) { if (MODE_TUNNEL.equalsIgnoreCase(connectionTypeString)) { - ip = (String) getConfig().get(IP_ADDRESS); - port = ((BigDecimal) getConfig().get(PORT_NUMBER)).intValue(); - ipConnectionType = KNXNetworkLinkIP.TUNNELING; - BridgeConfiguration config = getConfigAs(BridgeConfiguration.class); + ip = config.getIpAddress(); + port = config.getPortNumber().intValue(); useNAT = config.getUseNAT() != null ? config.getUseNAT() : false; } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { useNAT = false; - ipConnectionType = KNXNetworkLinkIP.ROUTING; if (StringUtils.isBlank(ip)) { ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; } - if (StringUtils.isBlank(localSource)) { - localSource = KNXBindingConstants.DEFAULT_LOCAL_SOURCE_ADDRESS; - } } else { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, MessageFormat.format( @@ -85,37 +80,31 @@ public void initialize() { connectionTypeString)); return; } - } else { - ipConnectionType = KNXNetworkLinkIP.TUNNELING; } - try { - if (!useNAT) { - if (StringUtils.isNotBlank((String) getConfig().get(LOCAL_IP))) { - localEndPoint = new InetSocketAddress((String) getConfig().get(LOCAL_IP), 0); - } else { - InetAddress localHost = InetAddress.getLocalHost(); - localEndPoint = new InetSocketAddress(localHost, 0); - } - } - } catch (UnknownHostException uhe) { - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, - "Couldn't find an IP address for this host. Please check the .hosts configuration or use the 'localIp' parameter to configure a valid IP address."); - return; + if (StringUtils.isNotBlank(config.getLocalIp())) { + localEndPoint = new InetSocketAddress(config.getLocalIp(), 0); + } else { + localEndPoint = new InetSocketAddress(networkAddressService.getPrimaryIpv4HostAddress(), 0); } - super.initialize(); + client = new IPClient(ipConnectionType, ip, localSource, port, localEndPoint, useNAT, + config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), + config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), this); + + client.initialize(); + updateStatus(ThingStatus.UNKNOWN); } @Override - public KNXNetworkLink establishConnection() throws KNXException, InterruptedException { - logger.debug("Establishing connection to KNX bus on {}:{} in mode {}.", ip, port, connectionTypeToString()); - TPSettings settings = new TPSettings(new IndividualAddress(localSource)); - return new KNXNetworkLinkIP(ipConnectionType, localEndPoint, new InetSocketAddress(ip, port), useNAT, settings); - + public void dispose() { + super.dispose(); + client.dispose(); } - private String connectionTypeToString() { - return ipConnectionType == KNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; + @Override + protected KNXClient getClient() { + return client; } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java index 0703574897b51..ee72cd904c574 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -17,7 +17,6 @@ import java.util.Map; import java.util.Random; import java.util.Set; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -40,7 +39,8 @@ import org.openhab.binding.knx.IndividualAddressListener; import org.openhab.binding.knx.internal.channel.KNXChannelSelector; import org.openhab.binding.knx.internal.channel.KNXChannelType; -import org.openhab.binding.knx.internal.handler.BasicConfig; +import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.config.BasicConfig; import org.openhab.binding.knx.internal.handler.Firmware; import org.openhab.binding.knx.internal.handler.Manufacturer; import org.slf4j.Logger; @@ -88,9 +88,6 @@ public class KNXBasicThingHandler extends BaseThingHandler implements Individual @Nullable private ScheduledFuture descriptionJob; - @Nullable - private ScheduledExecutorService knxScheduler; - private static final long OPERATION_TIMEOUT = 5000; private static final long OPERATION_INTERVAL = 2000; private boolean filledDescription = false; @@ -105,7 +102,6 @@ public void initialize() { initializeGroupAddresses(); - knxScheduler = getBridgeHandler().getScheduler(); try { if (StringUtils.isNotBlank(config.getAddress())) { address = new IndividualAddress(config.getAddress()); @@ -115,8 +111,8 @@ public void initialize() { if ((pollingJob == null || pollingJob.isCancelled())) { logger.debug("'{}' will be polled every {}s", getThing().getUID(), pollingInterval); - pollingJob = knxScheduler.scheduleWithFixedDelay(() -> pollDeviceStatus(), initialDelay, - pollingInterval, TimeUnit.SECONDS); + pollingJob = getBridgeHandler().getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), + initialDelay, pollingInterval, TimeUnit.SECONDS); } } else { updateStatus(ThingStatus.ONLINE); @@ -127,7 +123,7 @@ public void initialize() { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); } - getBridgeHandler().registerGroupAddressListener(this); + getClient().registerGroupAddressListener(this); scheduleReadJobs(); } @@ -155,6 +151,10 @@ private KNXBridgeBaseThingHandler getBridgeHandler() { throw new IllegalStateException("The bridge must not be null and must be initialized"); } + private KNXClient getClient() { + return getBridgeHandler().getClient(); + } + @Override public void dispose() { if (pollingJob != null) { @@ -168,9 +168,7 @@ public void dispose() { } cancelReadFutures(); - - KNXBridgeBaseThingHandler bridgeHandler = getBridgeHandler(); - bridgeHandler.unregisterGroupAddressListener(this); + getClient().unregisterGroupAddressListener(this); } private void cancelReadFutures() { @@ -247,10 +245,6 @@ private void scheduleReadJobs() { private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, boolean immediate, @Nullable BigDecimal readInterval) { - if (knxScheduler == null) { - return; - } - boolean recurring = readInterval != null && readInterval.intValue() > 0; Runnable readRunnable = () -> { @@ -260,18 +254,18 @@ private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, bo return; } Datapoint datapoint = new CommandDP(groupAddress, getThing().getUID().toString(), 0, dpt); - getBridgeHandler().readDatapoint(datapoint, getBridgeHandler().getReadRetriesLimit()); + getClient().readDatapoint(datapoint); } }; if (immediate) { - knxScheduler.schedule(readRunnable, 0, TimeUnit.SECONDS); + getBridgeHandler().getScheduler().schedule(readRunnable, 0, TimeUnit.SECONDS); } if (recurring && readInterval != null) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { int initialDelay = immediate ? 0 : readInterval.intValue(); - future = knxScheduler.scheduleWithFixedDelay(readRunnable, initialDelay, readInterval.intValue(), - TimeUnit.SECONDS); + future = getBridgeHandler().getScheduler().scheduleWithFixedDelay(readRunnable, initialDelay, + readInterval.intValue(), TimeUnit.SECONDS); readFutures.put(groupAddress, future); } } @@ -282,12 +276,12 @@ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { super.bridgeStatusChanged(bridgeStatusInfo); if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE) { - getBridgeHandler().registerGroupAddressListener(this); + getClient().registerGroupAddressListener(this); scheduleReadJobs(); updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE); } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { cancelReadFutures(); - getBridgeHandler().unregisterGroupAddressListener(this); + getClient().unregisterGroupAddressListener(this); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); } } @@ -304,9 +298,6 @@ public boolean listensTo(GroupAddress destination) { @Override public void handleCommand(ChannelUID channelUID, Command command) { - if (getBridgeHandler() == null) { - logger.warn("KNX bridge handler not found. Cannot handle commands without bridge."); - } logger.trace("Handling a Command ({}) for Channel {}", command, channelUID); if (command instanceof RefreshType) { logger.debug("Refreshing channel {}", channelUID); @@ -342,30 +333,26 @@ private void sendToKNX(ChannelUID channelUID, Type type) { } if (convertedType != null) { for (GroupAddress address : selector.getWriteAddresses(channelConfiguration, convertedType)) { - getBridgeHandler().writeToKNX(address, selector.getDPT(address, channelConfiguration), - convertedType); + getClient().writeToKNX(address, selector.getDPT(address, channelConfiguration), convertedType); } } }); } @Override - public void onGroupRead(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, - byte[] asdu) { + public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { // Nothing to do here - Software representations of physical actors should not respond to GroupRead requests, as // the physical device will be responding to these instead } @Override - public void onGroupReadResponse(KNXBridgeBaseThingHandler bridge, IndividualAddress source, - GroupAddress destination, byte[] asdu) { + public void onGroupReadResponse(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { // Group Read Responses are treated the same as Group Write telegrams - onGroupWrite(bridge, source, destination, asdu); + onGroupWrite(client, source, destination, asdu); } @Override - public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress source, GroupAddress destination, - byte[] asdu) { + public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { logger.trace("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); @@ -378,25 +365,25 @@ public void onGroupWrite(KNXBridgeBaseThingHandler bridge, IndividualAddress sou if (addresses.contains(destination)) { logger.trace("Thing {} processes a Group Write telegram for destination '{}' for channel '{}'", getThing().getUID(), destination, channel.getUID()); - processDataReceived(bridge, destination, asdu, selector.getDPT(destination, channelConfiguration), + processDataReceived(destination, asdu, selector.getDPT(destination, channelConfiguration), channel.getUID()); } }); } } - private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress destination, byte[] asdu, - @Nullable String dpt, ChannelUID channelUID) { + private void processDataReceived(GroupAddress destination, byte[] asdu, @Nullable String dpt, + ChannelUID channelUID) { if (dpt != null) { - if (!bridge.isDPTSupported(dpt)) { + if (!((KNXBridgeBaseThingHandler) getBridge().getHandler()).isDPTSupported(dpt)) { logger.warn("DPT {} is not supported by the KNX binding.", dpt); return; } Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); - Type type = bridge.getType(destination, dpt, asdu); + Type type = ((KNXBridgeBaseThingHandler) getBridge().getHandler()).getType(destination, dpt, asdu); if (type != null) { postCommand(channelUID, (Command) type); @@ -420,7 +407,7 @@ private void processDataReceived(KNXBridgeBaseThingHandler bridge, GroupAddress public void restart() { if (address != null) { - getBridgeHandler().restartNetworkDevice(address); + getClient().restartNetworkDevice(address); } } @@ -444,7 +431,7 @@ public void run() { return; } Datapoint datapoint = new CommandDP(address, getThing().getUID().toString(), 0, dpt); - getBridgeHandler().readDatapoint(datapoint, getBridgeHandler().getReadRetriesLimit()); + getClient().readDatapoint(datapoint); } } }; @@ -453,13 +440,14 @@ private void pollDeviceStatus() { try { if (address != null && getBridge().getStatus() == ThingStatus.ONLINE) { logger.debug("Polling the individual address {}", address); - boolean isReachable = getBridgeHandler().isReachable(address); + boolean isReachable = getClient().isReachable(address); if (isReachable) { updateStatus(ThingStatus.ONLINE); BasicConfig config = getConfigAs(BasicConfig.class); if (!filledDescription && config.getFetch()) { if (descriptionJob == null || descriptionJob.isCancelled()) { - descriptionJob = knxScheduler.schedule(descriptionRunnable, 0, TimeUnit.MILLISECONDS); + descriptionJob = getBridgeHandler().getScheduler().schedule(descriptionRunnable, 0, + TimeUnit.MILLISECONDS); } } } else { @@ -486,7 +474,7 @@ public void run() { logger.debug("Fetching device information for address {}", address); Thread.sleep(OPERATION_INTERVAL); - byte[] data = getBridgeHandler().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); + byte[] data = getClient().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); if (data != null) { final DD0 dd = DeviceDescriptor.DD0.fromType0(data); @@ -505,24 +493,23 @@ public void run() { // check if there is a Device Object in the KNX Actor Thread.sleep(OPERATION_INTERVAL); - byte[] elements = getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, - 0, 1, false, OPERATION_TIMEOUT); + byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, + false, OPERATION_TIMEOUT); if ((elements == null ? 0 : toUnsigned(elements)) == 1) { Thread.sleep(OPERATION_INTERVAL); String ManufacturerID = Manufacturer - .getName(toUnsigned(getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, + .getName(toUnsigned(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); Thread.sleep(OPERATION_INTERVAL); - String serialNo = DataUnitBuilder.toHex(getBridgeHandler().readDeviceProperties(address, - DEVICE_OBJECT, PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); + String serialNo = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, + PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); Thread.sleep(OPERATION_INTERVAL); - String hardwareType = DataUnitBuilder.toHex(getBridgeHandler().readDeviceProperties(address, + String hardwareType = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, HARDWARE_TYPE, 1, 1, false, OPERATION_TIMEOUT), " "); Thread.sleep(OPERATION_INTERVAL); - String firmwareRevision = Integer - .toString(toUnsigned(getBridgeHandler().readDeviceProperties(address, DEVICE_OBJECT, - PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); + String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, + DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); Map properties = editProperties(); properties.put(MANUFACTURER_NAME, ManufacturerID); @@ -542,12 +529,12 @@ public void run() { // we will just go ahead and try to read them out irrespective of what is in the IO_LIST Thread.sleep(OPERATION_INTERVAL); - byte[] tableaddress = getBridgeHandler().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, + byte[] tableaddress = getClient().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, PID.TABLE_REFERENCE, 1, 1, false, OPERATION_TIMEOUT); if (tableaddress != null) { Thread.sleep(OPERATION_INTERVAL); - elements = getBridgeHandler().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, + elements = getClient().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, OPERATION_TIMEOUT); if (elements != null) { int numberOfElements = toUnsigned(elements); @@ -557,8 +544,8 @@ public void run() { byte[] addressData = null; while (addressData == null) { Thread.sleep(OPERATION_INTERVAL); - addressData = getBridgeHandler().readDeviceMemory(address, toUnsigned(tableaddress) + 1, - 2, false, OPERATION_TIMEOUT); + addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1, 2, + false, OPERATION_TIMEOUT); if (addressData != null) { IndividualAddress individualAddress = new IndividualAddress(addressData); logger.debug( @@ -571,7 +558,7 @@ public void run() { addressData = null; while (addressData == null) { Thread.sleep(OPERATION_INTERVAL); - addressData = getBridgeHandler().readDeviceMemory(address, + addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1 + i * 2, 2, false, OPERATION_TIMEOUT); if (addressData != null) { GroupAddress groupAddress = new GroupAddress(addressData); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index dd1d8970688f3..9fe52bc2457bf 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -8,26 +8,13 @@ */ package org.openhab.binding.knx.handler; -import java.nio.ByteBuffer; -import java.text.MessageFormat; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; -import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ChannelUID; import org.eclipse.smarthome.core.thing.Thing; @@ -38,40 +25,18 @@ import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.GroupAddressListener; -import org.openhab.binding.knx.IndividualAddressListener; -import org.openhab.binding.knx.KNXBindingConstants; -import org.openhab.binding.knx.KNXBusListener; import org.openhab.binding.knx.KNXTypeMapper; -import org.openhab.binding.knx.TelegramListener; +import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.factory.KNXThreadPoolFactory; -import org.openhab.binding.knx.internal.handler.BridgeConfiguration; -import org.openhab.binding.knx.internal.handler.RetryDatapoint; -import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import tuwien.auto.calimero.CloseEvent; -import tuwien.auto.calimero.DetachEvent; -import tuwien.auto.calimero.FrameEvent; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.cemi.CEMILData; import tuwien.auto.calimero.datapoint.CommandDP; import tuwien.auto.calimero.datapoint.Datapoint; import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.link.KNXNetworkLink; -import tuwien.auto.calimero.link.NetworkLinkListener; -import tuwien.auto.calimero.log.LogManager; import tuwien.auto.calimero.mgmt.Destination; -import tuwien.auto.calimero.mgmt.ManagementClient; -import tuwien.auto.calimero.mgmt.ManagementClientImpl; -import tuwien.auto.calimero.mgmt.ManagementProcedures; -import tuwien.auto.calimero.mgmt.ManagementProceduresImpl; -import tuwien.auto.calimero.process.ProcessCommunicator; -import tuwien.auto.calimero.process.ProcessCommunicatorImpl; -import tuwien.auto.calimero.process.ProcessEvent; -import tuwien.auto.calimero.process.ProcessListenerEx; /** * The {@link KNXBridgeBaseThingHandler} is responsible for handling commands, which are @@ -80,124 +45,30 @@ * @author Karel Goderis - Initial contribution */ @NonNullByDefault -public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements NetworkLinkListener { +public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements StatusUpdateCallback { - private static final int ERROR_INTERVAL_MINUTES = 5; - private static final int MAX_SEND_ATTEMPTS = 2; private static final int CORE_POOL_SIZE = 5; private final Logger logger = LoggerFactory.getLogger(KNXBridgeBaseThingHandler.class); // Data structures related to the communication infrastructure - private final Set groupAddressListeners = new ConcurrentHashMap() - .keySet(Boolean.TRUE); - private final Set individualAddressListeners = new ConcurrentHashMap() - .keySet(Boolean.TRUE); - private final Set knxBusListeners = new CopyOnWriteArraySet<>(); private final Collection typeMappers = new CopyOnWriteArraySet<>(); - private final LinkedBlockingQueue readDatapoints = new LinkedBlockingQueue<>(); protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); - // Data structures related to the KNX protocol stack - @Nullable - private ProcessCommunicator processCommunicator; - - @Nullable - private ManagementProcedures managementProcedures; - - @Nullable - private ManagementClient managementClient; - - @Nullable - private KNXNetworkLink link; - - private final LogAdapter logAdapter = new LogAdapter(); - - // Data structures related to the various jobs - @Nullable - private ScheduledFuture connectJob; - - @Nullable - private ScheduledFuture busJob; - - private final Lock connectLock = new ReentrantLock(); - private final Condition connectedCondition = connectLock.newCondition(); - @Nullable private ScheduledExecutorService knxScheduler; - private boolean shutdown = false; - private long intervalTimestamp; - private long errorsSinceStart; - private long errorsSinceInterval; - - @Nullable - private BridgeConfiguration config; - - @NonNullByDefault({}) - private final ProcessListenerEx processListener = new ProcessListenerEx() { - - @Override - public void detached(DetachEvent e) { - logger.error("The KNX network link was detached from the process communicator", e.getSource()); - } - - @Override - public void groupWrite(ProcessEvent e) { - processEvent("Group Write Request", e, (listener, source, destination, asdu) -> { - listener.onGroupWrite(KNXBridgeBaseThingHandler.this, source, destination, asdu); - }); - } - - @Override - public void groupReadRequest(ProcessEvent e) { - processEvent("Group Read Request", e, (listener, source, destination, asdu) -> { - listener.onGroupRead(KNXBridgeBaseThingHandler.this, source, destination, asdu); - }); - } - - @Override - public void groupReadResponse(ProcessEvent e) { - processEvent("Group Read Response", e, (listener, source, destination, asdu) -> { - listener.onGroupReadResponse(KNXBridgeBaseThingHandler.this, source, destination, asdu); - }); - } - }; - @FunctionalInterface private interface ReadFunction { R apply(T t) throws KNXException, InterruptedException; } - @FunctionalInterface - private interface ListenerNotification { - void apply(TelegramListener listener, IndividualAddress source, GroupAddress destination, byte[] asdu); - } - public KNXBridgeBaseThingHandler(Bridge bridge) { super(bridge); } - @Override - public void initialize() { - errorsSinceStart = 0; - errorsSinceInterval = 0; - - shutdown = false; - config = getConfigAs(BridgeConfiguration.class); - registerLogAdapter(); - initializeScheduler(); - scheduleConnectJob(); - } - - @Override - public void dispose() { - shutdown = true; - cancelConnectJob(); - disconnect(); - unregisterLogAdapter(); - } + protected abstract KNXClient getClient(); @Override public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) { @@ -211,71 +82,6 @@ public void childHandlerDisposed(ThingHandler childHandler, Thing childThing) { CORE_POOL_SIZE + getThing().getThings().size() / 10); } - private void initializeScheduler() { - if (knxScheduler == null) { - knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), - CORE_POOL_SIZE); - } - } - - private void scheduleConnectJob() { - logger.trace("Scheduling the connection attempt to the KNX bus"); - connectJob = knxScheduler.schedule(() -> { - if (!shutdown) { - connect(); - } - }, config.getAutoReconnectPeriod().intValue(), TimeUnit.SECONDS); - } - - private void scheduleAndWaitForConnection() { - connectLock.lock(); - try { - while (!(getThing().getStatus() == ThingStatus.ONLINE)) { - if (connectJob.isDone()) { - scheduleConnectJob(); - } - try { - connectedCondition.await(); - } catch (InterruptedException e) { - return; - } - } - } finally { - connectLock.unlock(); - } - } - - private void cancelConnectJob() { - if (connectJob != null) { - connectJob.cancel(true); - connectJob = null; - } - } - - private void registerLogAdapter() { - LogManager.getManager().addWriter(null, logAdapter); - } - - private void unregisterLogAdapter() { - LogManager.getManager().removeWriter(null, logAdapter); - } - - public final boolean registerGroupAddressListener(GroupAddressListener listener) { - return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); - } - - public final boolean unregisterGroupAddressListener(GroupAddressListener listener) { - return groupAddressListeners.remove(listener); - } - - public final boolean registerIndividualAddressListener(IndividualAddressListener listener) { - return individualAddressListeners.contains(listener) ? true : individualAddressListeners.add(listener); - } - - public final boolean unregisterIndividualAddressListener(IndividualAddressListener listener) { - return individualAddressListeners.remove(listener); - } - public final void addKNXTypeMapper(KNXTypeMapper typeMapper) { typeMappers.add(typeMapper); } @@ -284,108 +90,6 @@ public final void removeKNXTypeMapper(KNXTypeMapper typeMapper) { typeMappers.remove(typeMapper); } - public final void registerKNXBusListener(KNXBusListener knxBusListener) { - knxBusListeners.add(knxBusListener); - } - - public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { - knxBusListeners.remove(knxBusListener); - } - - public final int getReadRetriesLimit() { - return config.getReadRetriesLimit().intValue(); - } - - public final boolean isDiscoveryEnabled() { - return config.getEnableDiscovery().booleanValue(); - } - - /** - * Establish a communication channel to the KNX gateway. - * - * @return an established link to the KNX gateway. Must not be null - * @throws KNXException if the link could not be established - * @throws InterruptedException if it occurs - * - */ - protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; - - private void connect() { - try { - closeConnection(); - - logger.debug("Bridge {} is connecting to the KNX bus", getThing().getUID()); - link = establishConnection(); - - managementProcedures = new ManagementProceduresImpl(link); - - managementClient = new ManagementClientImpl(link); - managementClient.setResponseTimeout(config.getResponseTimeout().intValue()); - - processCommunicator = new ProcessCommunicatorImpl(link); - processCommunicator.setResponseTimeout(config.getResponseTimeout().intValue()); - processCommunicator.addProcessListener(processListener); - - link.addLinkListener(this); - - errorsSinceStart = 0; - errorsSinceInterval = 0; - intervalTimestamp = 0; - - busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, - config.getReadingPause().intValue(), TimeUnit.MILLISECONDS); - - updateStatus(ThingStatus.ONLINE); - } catch (KNXException e) { - logger.error("Error connecting to the KNX bus: {}", e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - closeConnection(); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); - } catch (InterruptedException e) { - disconnect(); - } - - connectLock.lock(); - try { - connectedCondition.signalAll(); - } finally { - connectLock.unlock(); - } - } - - private void closeConnection() { - logger.debug("Bridge {} is disconnecting from the KNX bus", getThing().getUID()); - readDatapoints.clear(); - if (busJob != null) { - busJob.cancel(true); - busJob = null; - } - if (managementProcedures != null) { - managementProcedures.detach(); - managementProcedures = null; - } - if (managementClient != null) { - managementClient.detach(); - managementClient = null; - } - if (processCommunicator != null) { - processCommunicator.removeProcessListener(processListener); - processCommunicator.detach(); - processCommunicator = null; - } - if (link != null) { - link.close(); - link = null; - } - } - - private void disconnect() { - closeConnection(); - updateStatus(ThingStatus.OFFLINE); - } - @Override public void handleUpdate(ChannelUID channelUID, State newState) { // Nothing to do here @@ -396,138 +100,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { // Nothing to do here } - private void readNextQueuedDatapoint() { - scheduleAndWaitForConnection(); - if (getThing().getStatus() != ThingStatus.ONLINE) { - return; - } - RetryDatapoint datapoint = readDatapoints.poll(); - if (datapoint != null) { - datapoint.incrementRetries(); - try { - logger.trace("Sending a Group Read Request telegram for {}", datapoint.getDatapoint().getMainAddress()); - processCommunicator.read(datapoint.getDatapoint()); - } catch (KNXException e) { - if (datapoint.getRetries() < datapoint.getLimit()) { - readDatapoints.add(datapoint); - logger.debug("Could not read value for datapoint {}: {}. Going to retry.", - datapoint.getDatapoint().getMainAddress(), e.getMessage()); - } else { - logger.warn("Giving up reading datapoint {}, the number of maximum retries ({}) is reached.", - datapoint.getDatapoint().getMainAddress(), datapoint.getLimit()); - } - } catch (InterruptedException e) { - logger.debug("Interrupted sending KNX read request"); - return; - } - } - } - - public void readDatapoint(Datapoint datapoint, int retriesLimit) { - synchronized (this) { - if (datapoint != null) { - RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, retriesLimit); - if (!readDatapoints.contains(retryDatapoint)) { - readDatapoints.add(retryDatapoint); - } - } - } - } - - /** - * Handles the given {@link ProcessEvent}. - * - * If the KNX ASDU is valid it is passed on to the {@link GroupAddressListener}s that are interested in the - * telegram, and subsequently to the {@link KNXBusListener}s that are interested in all KNX bus activity - * - * @param e the {@link ProcessEvent} to handle. - */ - private void processEvent(String task, ProcessEvent event, ListenerNotification action) { - try { - GroupAddress destination = event.getDestination(); - IndividualAddress source = event.getSourceAddr(); - byte[] asdu = event.getASDU(); - if (asdu.length == 0) { - return; - } - logger.trace("Received a {} telegram from '{}' for destination '{}'", task, source, destination); - for (IndividualAddressListener listener : individualAddressListeners) { - if (listener.listensTo(source)) { - knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); - } - } - for (GroupAddressListener listener : groupAddressListeners) { - if (listener.listensTo(destination)) { - knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); - } - } - for (KNXBusListener listener : knxBusListeners) { - listener.onActivity(source, destination, asdu); - } - } catch (RuntimeException e) { - logger.error("Error handling {} event from KNX bus: {}", task, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - } - - public void writeToKNX(GroupAddress address, @Nullable String dpt, Type value) { - if (dpt == null || address == null || value == null) { - return; - } - scheduleAndWaitForConnection(); - if (getThing().getStatus() != ThingStatus.ONLINE || processCommunicator == null || link == null) { - logger.debug("Cannot write to the KNX bus (processCommuicator: {}, link: {})", - processCommunicator == null ? "Not OK" : "OK", - link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); - } - Datapoint datapoint = new CommandDP(address, getThing().getUID().toString(), 0, dpt); - String mappedValue = toDPTValue(value, datapoint.getDPT()); - if (mappedValue == null) { - logger.debug("Value '{}' cannot be mapped to datapoint '{}'", value, datapoint); - return; - } - for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { - try { - processCommunicator.write(datapoint, mappedValue); - logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", value, datapoint, i); - break; - } catch (KNXException e) { - if (i < MAX_SEND_ATTEMPTS - 1) { - logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", - value, datapoint, e.getMessage()); - } else { - logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", - value, datapoint, e.getMessage()); - closeConnection(); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage()); - } - } - } - } - - /** - * Transforms a {@link Type} into a datapoint type value for the KNX bus. - * - * @param type - * the {@link Type} to transform - * @param dpt - * the datapoint type to which should be converted - * - * @return the corresponding KNX datapoint type value as a string - */ - @Nullable - private String toDPTValue(Type type, String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - String value = typeMapper.toDPTValue(type, dpt); - if (value != null) { - return value; - } - } - return null; - } - /** * Transforms the raw KNX bus data of a given datapoint into an openHAB type (command or state) * @@ -574,197 +146,29 @@ public final Type getType(GroupAddress destination, String dpt, byte[] asdu) { return getType(datapoint, asdu); } - public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { - if (managementProcedures == null || address == null) { - return false; - } - try { - return managementProcedures.isAddressOccupied(address); - } catch (InterruptedException e) { - logger.error("Could not reach address '{}': {}", address.toString(), e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - return false; - } - - public final synchronized void restartNetworkDevice(@Nullable IndividualAddress address) { - if (address == null) { - return; - } - Destination destination = null; - try { - destination = managementClient.createDestination(address, true); - managementClient.restart(destination); - } catch (KNXException e) { - logger.error("Could not reset the device with address '{}': {}", address, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } finally { - if (destination != null) { - destination.destroy(); - } - } - } - - public synchronized List scanNetworkDevices(final int area, final int line) { - try { - IndividualAddress[] ret = managementProcedures.scanNetworkDevices(area, line); - return ret != null ? Arrays.asList(ret) : Collections.emptyList(); - } catch (KNXException | InterruptedException e) { - logger.error("Error scanning the KNX bus: {}", e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - return Collections.emptyList(); - } - - public synchronized List scanNetworkRouters() { - try { - IndividualAddress[] ret = managementProcedures.scanNetworkRouters(); - return ret != null ? Arrays.asList(ret) : Collections.emptyList(); - } catch (KNXException | InterruptedException e) { - logger.error("An exception occurred while scanning the KNX bus: {}", e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - return Collections.emptyList(); - } - - private byte @Nullable [] readFromManagementClient(String task, long timeout, IndividualAddress address, - ReadFunction function) { - final long start = System.nanoTime(); - while ((System.nanoTime() - start) < TimeUnit.MILLISECONDS.toNanos(timeout)) { - Destination destination = null; - try { - logger.debug("Going to {} of {} ", task, address); - destination = managementClient.createDestination(address, true); - byte[] result = function.apply(destination); - logger.debug("Finished to {} of {}, result: {}", task, address, result == null ? null : result.length); - return result; - } catch (KNXException e) { - logger.error("Could not {} of {}: {}", task, address, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } catch (InterruptedException e) { - logger.debug("Interrupted to {}", task); - return null; - } finally { - if (destination != null) { - destination.destroy(); - } - } - } - return null; - } - - private void authorize(boolean authenticate, Destination destination) throws KNXException, InterruptedException { - if (authenticate) { - managementClient.authorize(destination, (ByteBuffer.allocate(4)).put((byte) 0xFF).put((byte) 0xFF) - .put((byte) 0xFF).put((byte) 0xFF).array()); - } - } - - public synchronized byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, - boolean authenticate, long timeout) { - String task = "read the device description"; - return readFromManagementClient(task, timeout, address, destination -> { - authorize(authenticate, destination); - return managementClient.readDeviceDesc(destination, descType); - }); - } - - public synchronized byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, - boolean authenticate, long timeout) { - String task = MessageFormat.format("read {0} bytes at memory location {1}", bytes, startAddress); - return readFromManagementClient(task, timeout, address, destination -> { - authorize(authenticate, destination); - return managementClient.readMemory(destination, startAddress, bytes); - }); - } - - public synchronized byte @Nullable [] readDeviceProperties(IndividualAddress address, - final int interfaceObjectIndex, final int propertyId, final int start, final int elements, - boolean authenticate, long timeout) { - String task = MessageFormat.format("read device property {} at index {}", propertyId, interfaceObjectIndex); - return readFromManagementClient(task, timeout, address, destination -> { - authorize(authenticate, destination); - return managementClient.readProperty(destination, interfaceObjectIndex, propertyId, start, elements); - }); - } - - @Nullable public ScheduledExecutorService getScheduler() { - return knxScheduler; - } - - @Override - public void linkClosed(@Nullable CloseEvent e) { - if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { - logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); - if (config.getAutoReconnectPeriod().intValue() > 0) { - logger.info("KNX link will be retried in '{}' seconds", config.getAutoReconnectPeriod().intValue()); - if (connectJob.isDone()) { - scheduleConnectJob(); - } - } + ScheduledExecutorService scheduler = knxScheduler; + if (scheduler == null) { + scheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), + CORE_POOL_SIZE); + knxScheduler = scheduler; } + return scheduler; } @Override - public void indication(@Nullable FrameEvent e) { - handleFrameEvent(e); + public void updateStatus(ThingStatus status) { + super.updateStatus(status); } @Override - public void confirmation(@Nullable FrameEvent e) { - handleFrameEvent(e); - } - - private void handleFrameEvent(@Nullable FrameEvent e) { - checkErrorCounterTimeouts(); - int messageCode = e.getFrame().getMessageCode(); - switch (messageCode) { - case CEMILData.MC_LDATA_IND: - if (((CEMILData) e.getFrame()).isRepetition()) { - incrementErrorCounter(); - } - break; - case CEMILData.MC_LDATA_CON: - if (!((CEMILData) e.getFrame()).isPositiveConfirmation()) { - incrementErrorCounter(); - } - break; - } + public void updateStatus(ThingStatus status, ThingStatusDetail statusDetail) { + super.updateStatus(status, statusDetail); } - private void checkErrorCounterTimeouts() { - if (intervalTimestamp == 0) { - intervalTimestamp = System.nanoTime(); - updateErrorCounterChannels(); - } else if ((System.nanoTime() - intervalTimestamp) > TimeUnit.MINUTES.toNanos(ERROR_INTERVAL_MINUTES)) { - intervalTimestamp = System.nanoTime(); - errorsSinceInterval = 0; - updateErrorCounterChannels(); - } - } - - private void incrementErrorCounter() { - errorsSinceStart++; - errorsSinceInterval++; - updateErrorCounterChannels(); - } - - private void updateErrorCounterChannels() { - updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_STARTUP), - new DecimalType(errorsSinceStart)); - updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_INTERVAL), - new DecimalType(errorsSinceInterval)); + @Override + public void updateStatus(ThingStatus status, ThingStatusDetail statusDetail, @Nullable String description) { + super.updateStatus(status, statusDetail, description); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java index 2b07d837e9f93..41894ae2d3568 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -8,21 +8,15 @@ */ package org.openhab.binding.knx.handler; -import static org.openhab.binding.knx.KNXBindingConstants.SERIAL_PORT; - -import java.util.Enumeration; - +import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.smarthome.core.thing.Bridge; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.client.SerialClient; +import org.openhab.binding.knx.internal.config.SerialBridgeConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import gnu.io.CommPortIdentifier; -import gnu.io.RXTXVersion; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.link.KNXNetworkLink; -import tuwien.auto.calimero.link.KNXNetworkLinkFT12; -import tuwien.auto.calimero.link.medium.TPSettings; - /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are * sent to one of the channels. It implements a KNX Serial/USB Gateway, that either acts a a @@ -31,42 +25,37 @@ * * @author Karel Goderis - Initial contribution */ +@NonNullByDefault public class SerialBridgeThingHandler extends KNXBridgeBaseThingHandler { private final Logger logger = LoggerFactory.getLogger(SerialBridgeThingHandler.class); + @NonNullByDefault({}) + private SerialClient client; + public SerialBridgeThingHandler(Bridge bridge) { super(bridge); } @Override - public KNXNetworkLink establishConnection() throws KNXException { - String serialPort = (String) getConfig().get(SERIAL_PORT); - try { - RXTXVersion.getVersion(); - logger.debug("Establishing connection to KNX bus through FT1.2 on serial port {}.", serialPort); - return new KNXNetworkLinkFT12(serialPort, new TPSettings()); + public void initialize() { + SerialBridgeConfiguration config = getConfigAs(SerialBridgeConfiguration.class); + client = new SerialClient(config.getAutoReconnectPeriod().intValue(), thing.getUID(), + config.getResponseTimeout().intValue(), config.getReadingPause().intValue(), + config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this); + client.initialize(); + updateStatus(ThingStatus.UNKNOWN); + } + + @Override + public void dispose() { + super.dispose(); + client.dispose(); + } - } catch (NoClassDefFoundError e) { - throw new KNXException( - "The serial FT1.2 KNX connection requires the RXTX libraries to be available, but they could not be found!", - e); - } catch (KNXException e) { - if (e.getMessage().startsWith("can not open serial port")) { - StringBuilder sb = new StringBuilder("Available ports are:\n"); - Enumeration portList = CommPortIdentifier.getPortIdentifiers(); - while (portList.hasMoreElements()) { - CommPortIdentifier id = (CommPortIdentifier) portList.nextElement(); - if (id.getPortType() == CommPortIdentifier.PORT_SERIAL) { - sb.append(id.getName()); - sb.append("\n"); - } - } - sb.deleteCharAt(sb.length() - 1); - throw new KNXException("Serial port '" + serialPort + "' could not be opened. " + sb.toString()); - } else { - throw e; - } - } + @Override + protected KNXClient getClient() { + return client; } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java new file mode 100644 index 0000000000000..b07de09a03d7a --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java @@ -0,0 +1,17 @@ +package org.openhab.binding.knx.handler; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; + +@NonNullByDefault +public interface StatusUpdateCallback { + + void updateStatus(ThingStatus status, ThingStatusDetail statusDetail, @Nullable String description); + + void updateStatus(ThingStatus status, ThingStatusDetail statusDetail); + + void updateStatus(ThingStatus status); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java new file mode 100644 index 0000000000000..fd4a20969c323 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java @@ -0,0 +1,96 @@ +package org.openhab.binding.knx.internal.client; + +import java.nio.ByteBuffer; +import java.text.MessageFormat; +import java.util.concurrent.TimeUnit; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.mgmt.Destination; +import tuwien.auto.calimero.mgmt.ManagementClient; + +@NonNullByDefault +public class DeviceInfoClient { + + private final Logger logger = LoggerFactory.getLogger(DeviceInfoClient.class); + private final ManagementClient managementClient; + + public DeviceInfoClient(ManagementClient managementClient) { + this.managementClient = managementClient; + } + + @FunctionalInterface + private interface ReadFunction { + @Nullable + R apply(T t) throws KNXException, InterruptedException; + } + + private byte @Nullable [] readFromManagementClient(String task, long timeout, IndividualAddress address, + ReadFunction function) { + final long start = System.nanoTime(); + while ((System.nanoTime() - start) < TimeUnit.MILLISECONDS.toNanos(timeout)) { + Destination destination = null; + try { + logger.debug("Going to {} of {} ", task, address); + destination = managementClient.createDestination(address, true); + byte[] result = function.apply(destination); + logger.debug("Finished to {} of {}, result: {}", task, address, result == null ? null : result.length); + return result; + } catch (KNXException e) { + logger.error("Could not {} of {}: {}", task, address, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } catch (InterruptedException e) { + logger.debug("Interrupted to {}", task); + return null; + } finally { + if (destination != null) { + destination.destroy(); + } + } + } + return null; + } + + private void authorize(boolean authenticate, Destination destination) throws KNXException, InterruptedException { + if (authenticate) { + managementClient.authorize(destination, (ByteBuffer.allocate(4)).put((byte) 0xFF).put((byte) 0xFF) + .put((byte) 0xFF).put((byte) 0xFF).array()); + } + } + + public synchronized byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, + boolean authenticate, long timeout) { + String task = "read the device description"; + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readDeviceDesc(destination, descType); + }); + } + + public synchronized byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, + boolean authenticate, long timeout) { + String task = MessageFormat.format("read {0} bytes at memory location {1}", bytes, startAddress); + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readMemory(destination, startAddress, bytes); + }); + } + + public synchronized byte @Nullable [] readDeviceProperties(IndividualAddress address, + final int interfaceObjectIndex, final int propertyId, final int start, final int elements, + boolean authenticate, long timeout) { + String task = MessageFormat.format("read device property {} at index {}", propertyId, interfaceObjectIndex); + return readFromManagementClient(task, timeout, address, destination -> { + authorize(authenticate, destination); + return managementClient.readProperty(destination, interfaceObjectIndex, propertyId, start, elements); + }); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java new file mode 100644 index 0000000000000..cd733ff1812a3 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -0,0 +1,60 @@ +package org.openhab.binding.knx.internal.client; + +import java.net.InetSocketAddress; +import java.util.concurrent.ScheduledExecutorService; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.ThingUID; +import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.KNXNetworkLinkIP; +import tuwien.auto.calimero.link.medium.TPSettings; + +@NonNullByDefault +public class IPClient extends KNXClient { + + private final Logger logger = LoggerFactory.getLogger(IPClient.class); + + private static final String MODE_ROUTER = "ROUTER"; + private static final String MODE_TUNNEL = "TUNNEL"; + + private final int ipConnectionType; + private final String ip; + private final String localSource; + private final int port; + @Nullable + private final InetSocketAddress localEndPoint; + private final boolean useNAT; + + public IPClient(int ipConnectionType, String ip, String localSource, int port, + @Nullable InetSocketAddress localEndPoint, boolean useNAT, int autoReconnectPeriod, ThingUID thingUID, + int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, + StatusUpdateCallback statusUpdateCallback) { + super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, + statusUpdateCallback); + this.ipConnectionType = ipConnectionType; + this.ip = ip; + this.localSource = localSource; + this.port = port; + this.localEndPoint = localEndPoint; + this.useNAT = useNAT; + } + + @Override + protected KNXNetworkLink establishConnection() throws KNXException, InterruptedException { + logger.debug("Establishing connection to KNX bus on {}:{} in mode {}.", ip, port, connectionTypeToString()); + TPSettings settings = new TPSettings(new IndividualAddress(localSource)); + return new KNXNetworkLinkIP(ipConnectionType, localEndPoint, new InetSocketAddress(ip, port), useNAT, settings); + } + + private String connectionTypeToString() { + return ipConnectionType == KNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java new file mode 100644 index 0000000000000..136bcfd7015b6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -0,0 +1,621 @@ +package org.openhab.binding.knx.internal.client; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Condition; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingUID; +import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.GroupAddressListener; +import org.openhab.binding.knx.IndividualAddressListener; +import org.openhab.binding.knx.KNXBusListener; +import org.openhab.binding.knx.KNXTypeMapper; +import org.openhab.binding.knx.TelegramListener; +import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.internal.handler.RetryDatapoint; +import org.openhab.binding.knx.internal.logging.LogAdapter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.CloseEvent; +import tuwien.auto.calimero.DetachEvent; +import tuwien.auto.calimero.FrameEvent; +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.datapoint.CommandDP; +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.NetworkLinkListener; +import tuwien.auto.calimero.log.LogManager; +import tuwien.auto.calimero.mgmt.Destination; +import tuwien.auto.calimero.mgmt.ManagementClient; +import tuwien.auto.calimero.mgmt.ManagementClientImpl; +import tuwien.auto.calimero.mgmt.ManagementProcedures; +import tuwien.auto.calimero.mgmt.ManagementProceduresImpl; +import tuwien.auto.calimero.process.ProcessCommunicator; +import tuwien.auto.calimero.process.ProcessCommunicatorImpl; +import tuwien.auto.calimero.process.ProcessEvent; +import tuwien.auto.calimero.process.ProcessListenerEx; + +@NonNullByDefault +public abstract class KNXClient implements NetworkLinkListener { + + // private static final int ERROR_INTERVAL_MINUTES = 5; + private static final int MAX_SEND_ATTEMPTS = 2; + + private final Logger logger = LoggerFactory.getLogger(KNXClient.class); + private final LogAdapter logAdapter = new LogAdapter(); + + // private long errorsSinceStart = 0; + // private long errorsSinceInterval = 0; + // private final long intervalTimestamp = 0; + private boolean shutdown = false; + private final int autoReconnectPeriod; + private final Lock connectLock = new ReentrantLock(); + private final Condition connectedCondition = connectLock.newCondition(); + private final int readRetriesLimit; + private volatile boolean connected = false; + + @Nullable + private ScheduledFuture busJob; + + @Nullable + private ProcessCommunicator processCommunicator; + + @Nullable + private ManagementProcedures managementProcedures; + + @Nullable + private ManagementClient managementClient; + + @Nullable + private DeviceInfoClient deviceInfoClient; + + @Nullable + private KNXNetworkLink link; + + private final ScheduledExecutorService knxScheduler; + + @Nullable + private ScheduledFuture connectJob; + + private final Set groupAddressListeners = new ConcurrentHashMap() + .keySet(Boolean.TRUE); + private final Set individualAddressListeners = new ConcurrentHashMap() + .keySet(Boolean.TRUE); + private final Set knxBusListeners = new CopyOnWriteArraySet<>(); + private final Collection typeMappers = new CopyOnWriteArraySet<>(); + + protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); + + @FunctionalInterface + private interface ListenerNotification { + void apply(TelegramListener listener, IndividualAddress source, GroupAddress destination, byte[] asdu); + } + + @NonNullByDefault({}) + private final ProcessListenerEx processListener = new ProcessListenerEx() { + + @Override + public void detached(DetachEvent e) { + logger.error("The KNX network link was detached from the process communicator", e.getSource()); + } + + @Override + public void groupWrite(ProcessEvent e) { + processEvent("Group Write Request", e, (listener, source, destination, asdu) -> { + listener.onGroupWrite(KNXClient.this, source, destination, asdu); + }); + } + + @Override + public void groupReadRequest(ProcessEvent e) { + processEvent("Group Read Request", e, (listener, source, destination, asdu) -> { + listener.onGroupRead(KNXClient.this, source, destination, asdu); + }); + } + + @Override + public void groupReadResponse(ProcessEvent e) { + processEvent("Group Read Response", e, (listener, source, destination, asdu) -> { + listener.onGroupReadResponse(KNXClient.this, source, destination, asdu); + }); + } + }; + + private final LinkedBlockingQueue<@Nullable RetryDatapoint> readDatapoints = new LinkedBlockingQueue<>(); + + private final ThingUID thingUID; + + private final int responseTimeout; + + private final int readingPause; + + private final StatusUpdateCallback statusUpdateCallback; + + public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, + int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback) { + this.autoReconnectPeriod = autoReconnectPeriod; + this.thingUID = thingUID; + this.responseTimeout = responseTimeout; + this.readingPause = readingPause; + this.readRetriesLimit = readRetriesLimit; + // errorsSinceStart = 0; + // errorsSinceInterval = 0; + this.knxScheduler = knxScheduler; + this.statusUpdateCallback = statusUpdateCallback; + + shutdown = false; + } + + public void initialize() { + registerLogAdapter(); + scheduleConnectJob(); + } + + private void registerLogAdapter() { + LogManager.getManager().addWriter(null, logAdapter); + } + + private void unregisterLogAdapter() { + LogManager.getManager().removeWriter(null, logAdapter); + } + + public void connect() throws KNXException, InterruptedException { + try { + closeConnection(); + + logger.debug("Bridge {} is connecting to the KNX bus", thingUID); + + KNXNetworkLink link = establishConnection(); + this.link = link; + + managementProcedures = new ManagementProceduresImpl(link); + + ManagementClient managementClient = new ManagementClientImpl(link); + managementClient.setResponseTimeout(responseTimeout); + this.managementClient = managementClient; + + deviceInfoClient = new DeviceInfoClient(managementClient); + + ProcessCommunicator processCommunicator = new ProcessCommunicatorImpl(link); + processCommunicator.setResponseTimeout(responseTimeout); + processCommunicator.addProcessListener(processListener); + this.processCommunicator = processCommunicator; + + link.addLinkListener(this); + + // errorsSinceStart = 0; + // errorsSinceInterval = 0; + // intervalTimestamp = 0; + + busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, readingPause, + TimeUnit.MILLISECONDS); + + connected = true; + statusUpdateCallback.updateStatus(ThingStatus.ONLINE); + } catch (KNXException | InterruptedException e) { + closeConnection(); + throw e; + } + + connectLock.lock(); + try { + connectedCondition.signalAll(); + } finally { + connectLock.unlock(); + } + } + + private void closeConnection() { + logger.debug("Bridge {} is disconnecting from the KNX bus", thingUID); + readDatapoints.clear(); + if (busJob != null) { + busJob.cancel(true); + busJob = null; + } + if (managementProcedures != null) { + managementProcedures.detach(); + managementProcedures = null; + } + deviceInfoClient = null; + if (managementClient != null) { + managementClient.detach(); + managementClient = null; + } + if (processCommunicator != null) { + processCommunicator.removeProcessListener(processListener); + } + if (processCommunicator != null) { + processCommunicator.detach(); + processCommunicator = null; + } + if (link != null) { + link.close(); + link = null; + } + + statusUpdateCallback.updateStatus(ThingStatus.OFFLINE); + } + + private void processEvent(String task, ProcessEvent event, ListenerNotification action) { + try { + GroupAddress destination = event.getDestination(); + IndividualAddress source = event.getSourceAddr(); + byte[] asdu = event.getASDU(); + if (asdu.length == 0) { + return; + } + logger.trace("Received a {} telegram from '{}' for destination '{}'", task, source, destination); + for (IndividualAddressListener listener : individualAddressListeners) { + if (listener.listensTo(source)) { + knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); + } + } + for (GroupAddressListener listener : groupAddressListeners) { + if (listener.listensTo(destination)) { + knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); + } + } + for (KNXBusListener listener : knxBusListeners) { + listener.onActivity(source, destination, asdu); + } + } catch (RuntimeException e) { + logger.error("Error handling {} event from KNX bus: {}", task, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + } + + public void writeToKNX(GroupAddress address, @Nullable String dpt, Type value) throws KNXException { + if (dpt == null /* || address == null || value == null */) { + return; + } + scheduleAndWaitForConnection(); + + KNXNetworkLink link = this.link; + ProcessCommunicator processCommunicator = this.processCommunicator; + + if (processCommunicator == null || link == null) { + logger.debug("Cannot write to the KNX bus (processCommuicator: {}, link: {})", + processCommunicator == null ? "Not OK" : "OK", + link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); + return; + } + Datapoint datapoint = new CommandDP(address, thingUID.toString(), 0, dpt); + String mappedValue = toDPTValue(value, datapoint.getDPT()); + if (mappedValue == null) { + logger.debug("Value '{}' cannot be mapped to datapoint '{}'", value, datapoint); + return; + } + for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { + try { + processCommunicator.write(datapoint, mappedValue); + logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", value, datapoint, i); + break; + } catch (KNXException e) { + if (i < MAX_SEND_ATTEMPTS - 1) { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", + value, datapoint, e.getMessage()); + } else { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", + value, datapoint, e.getMessage()); + closeConnection(); + throw e; + } + } + } + } + + public void scheduleConnectJob() { + if (connectJob != null && !connectJob.isDone()) { + return; + } + logger.trace("Scheduling the connection attempt to the KNX bus"); + connectJob = knxScheduler.schedule(() -> { + if (!shutdown) { + try { + connect(); + } catch (KNXException | InterruptedException e) { + logger.debug("Error connecting to the bus: {}", e.getMessage(), e); + } + } + }, autoReconnectPeriod, TimeUnit.SECONDS); + } + + private void scheduleAndWaitForConnection() { + connectLock.lock(); + try { + while (!(connected)) { + scheduleConnectJob(); + try { + connectedCondition.await(); + } catch (InterruptedException e) { + return; + } + } + } finally { + connectLock.unlock(); + } + } + + private void cancelConnectJob() { + if (connectJob != null) { + connectJob.cancel(true); + connectJob = null; + } + } + + protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; + + /** + * Transforms a {@link Type} into a datapoint type value for the KNX bus. + * + * @param type + * the {@link Type} to transform + * @param dpt + * the datapoint type to which should be converted + * + * @return the corresponding KNX datapoint type value as a string + */ + @Nullable + private String toDPTValue(Type type, String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + String value = typeMapper.toDPTValue(type, dpt); + if (value != null) { + return value; + } + } + return null; + } + + private void readNextQueuedDatapoint() { + scheduleAndWaitForConnection(); + ProcessCommunicator processCommunicator = this.processCommunicator; + if (!connected || processCommunicator == null) { + return; + } + RetryDatapoint datapoint = readDatapoints.poll(); + if (datapoint != null) { + datapoint.incrementRetries(); + try { + logger.trace("Sending a Group Read Request telegram for {}", datapoint.getDatapoint().getMainAddress()); + processCommunicator.read(datapoint.getDatapoint()); + } catch (KNXException e) { + if (datapoint.getRetries() < datapoint.getLimit()) { + readDatapoints.add(datapoint); + logger.debug("Could not read value for datapoint {}: {}. Going to retry.", + datapoint.getDatapoint().getMainAddress(), e.getMessage()); + } else { + logger.warn("Giving up reading datapoint {}, the number of maximum retries ({}) is reached.", + datapoint.getDatapoint().getMainAddress(), datapoint.getLimit()); + } + } catch (InterruptedException e) { + logger.debug("Interrupted sending KNX read request"); + return; + } + } + } + + public void dispose() { + shutdown = true; + cancelConnectJob(); + closeConnection(); + unregisterLogAdapter(); + } + + @Override + public void linkClosed(@Nullable CloseEvent e) { + KNXNetworkLink link = this.link; + if (link == null || e == null) { + return; + } + if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { + logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); + if (autoReconnectPeriod > 0) { + logger.info("KNX link will be retried in '{}' seconds", autoReconnectPeriod); + scheduleConnectJob(); + } + } + } + + @Override + public void indication(@Nullable FrameEvent e) { + // handleFrameEvent(e); + } + + @Override + public void confirmation(@Nullable FrameEvent e) { + // handleFrameEvent(e); + } + + // private void handleFrameEvent(@Nullable FrameEvent e) { + // checkErrorCounterTimeouts(); + // int messageCode = e.getFrame().getMessageCode(); + // switch (messageCode) { + // case CEMILData.MC_LDATA_IND: + // if (((CEMILData) e.getFrame()).isRepetition()) { + // incrementErrorCounter(); + // } + // break; + // case CEMILData.MC_LDATA_CON: + // if (!((CEMILData) e.getFrame()).isPositiveConfirmation()) { + // incrementErrorCounter(); + // } + // break; + // } + // } + // + // private void checkErrorCounterTimeouts() { + // if (intervalTimestamp == 0) { + // intervalTimestamp = System.nanoTime(); + // updateErrorCounterChannels(); + // } else if ((System.nanoTime() - intervalTimestamp) > TimeUnit.MINUTES.toNanos(ERROR_INTERVAL_MINUTES)) { + // intervalTimestamp = System.nanoTime(); + // errorsSinceInterval = 0; + // updateErrorCounterChannels(); + // } + // } + // + // private void incrementErrorCounter() { + // errorsSinceStart++; + // errorsSinceInterval++; + // updateErrorCounterChannels(); + // } + // + // private void updateErrorCounterChannels() { + // updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_STARTUP), + // new DecimalType(errorsSinceStart)); + // updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_INTERVAL), + // new DecimalType(errorsSinceInterval)); + // } + + public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { + ManagementProcedures managementProcedures = this.managementProcedures; + if (managementProcedures == null || address == null) { + return false; + } + try { + return managementProcedures.isAddressOccupied(address); + } catch (InterruptedException e) { + logger.error("Could not reach address '{}': {}", address.toString(), e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return false; + } + + public final synchronized void restartNetworkDevice(@Nullable IndividualAddress address) { + ManagementClient managementClient = this.managementClient; + if (address == null || managementClient == null) { + return; + } + Destination destination = null; + try { + destination = managementClient.createDestination(address, true); + managementClient.restart(destination); + } catch (KNXException e) { + logger.error("Could not reset the device with address '{}': {}", address, e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } finally { + if (destination != null) { + destination.destroy(); + } + } + } + + public synchronized List scanNetworkDevices(final int area, final int line) { + ManagementProcedures managementProcedures = this.managementProcedures; + if (managementProcedures == null) { + return Collections.emptyList(); + } + try { + IndividualAddress[] ret = managementProcedures.scanNetworkDevices(area, line); + return ret != null ? Arrays.asList(ret) : Collections.emptyList(); + } catch (KNXException | InterruptedException e) { + logger.error("Error scanning the KNX bus: {}", e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return Collections.emptyList(); + } + + public synchronized List scanNetworkRouters() { + ManagementProcedures managementProcedures = this.managementProcedures; + if (managementProcedures == null) { + return Collections.emptyList(); + } + try { + IndividualAddress[] ret = managementProcedures.scanNetworkRouters(); + return ret != null ? Arrays.asList(ret) : Collections.emptyList(); + } catch (KNXException | InterruptedException e) { + logger.error("An exception occurred while scanning the KNX bus: {}", e.getMessage()); + if (logger.isDebugEnabled()) { + logger.error("", e); + } + } + return Collections.emptyList(); + } + + public void readDatapoint(Datapoint datapoint) { + synchronized (this) { + RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, readRetriesLimit); + if (!readDatapoints.contains(retryDatapoint)) { + readDatapoints.add(retryDatapoint); + } + } + } + + public byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, + long timeout) { + DeviceInfoClient deviceInfoClient = this.deviceInfoClient; + if (deviceInfoClient == null) { + return null; + } + return deviceInfoClient.readDeviceDescription(address, descType, authenticate, timeout); + } + + public byte @Nullable [] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, + final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { + DeviceInfoClient deviceInfoClient = this.deviceInfoClient; + if (deviceInfoClient == null) { + return null; + } + return deviceInfoClient.readDeviceProperties(address, interfaceObjectIndex, propertyId, start, elements, + authenticate, timeout); + } + + public byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, + boolean authenticate, long timeout) { + DeviceInfoClient deviceInfoClient = this.deviceInfoClient; + if (deviceInfoClient == null) { + return null; + } + return deviceInfoClient.readDeviceMemory(address, startAddress, bytes, authenticate, timeout); + } + + public final boolean registerGroupAddressListener(GroupAddressListener listener) { + return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); + } + + public final boolean unregisterGroupAddressListener(GroupAddressListener listener) { + return groupAddressListeners.remove(listener); + } + + public final boolean registerIndividualAddressListener(IndividualAddressListener listener) { + return individualAddressListeners.contains(listener) ? true : individualAddressListeners.add(listener); + } + + public final boolean unregisterIndividualAddressListener(IndividualAddressListener listener) { + return individualAddressListeners.remove(listener); + } + + public final void registerKNXBusListener(KNXBusListener knxBusListener) { + knxBusListeners.add(knxBusListener); + } + + public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { + knxBusListeners.remove(knxBusListener); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java new file mode 100644 index 0000000000000..7f57122e98ff8 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -0,0 +1,63 @@ +package org.openhab.binding.knx.internal.client; + +import java.util.Enumeration; +import java.util.concurrent.ScheduledExecutorService; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.smarthome.core.thing.ThingUID; +import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import gnu.io.CommPortIdentifier; +import gnu.io.RXTXVersion; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.link.KNXNetworkLink; +import tuwien.auto.calimero.link.KNXNetworkLinkFT12; +import tuwien.auto.calimero.link.medium.TPSettings; + +public class SerialClient extends KNXClient { + + private final Logger logger = LoggerFactory.getLogger(SerialClient.class); + + private final String serialPort; + + public SerialClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, + int readRetriesLimit, ScheduledExecutorService knxScheduler, String serialPort, + StatusUpdateCallback statusUpdateCallback) { + super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, + statusUpdateCallback); + this.serialPort = serialPort; + } + + @Override + protected @NonNull KNXNetworkLink establishConnection() throws KNXException, InterruptedException { + try { + RXTXVersion.getVersion(); + logger.debug("Establishing connection to KNX bus through FT1.2 on serial port {}.", serialPort); + return new KNXNetworkLinkFT12(serialPort, new TPSettings()); + + } catch (NoClassDefFoundError e) { + throw new KNXException( + "The serial FT1.2 KNX connection requires the RXTX libraries to be available, but they could not be found!", + e); + } catch (KNXException e) { + if (e.getMessage().startsWith("can not open serial port")) { + StringBuilder sb = new StringBuilder("Available ports are:\n"); + Enumeration portList = CommPortIdentifier.getPortIdentifiers(); + while (portList.hasMoreElements()) { + CommPortIdentifier id = (CommPortIdentifier) portList.nextElement(); + if (id.getPortType() == CommPortIdentifier.PORT_SERIAL) { + sb.append(id.getName()); + sb.append("\n"); + } + } + sb.deleteCharAt(sb.length() - 1); + throw new KNXException("Serial port '" + serialPort + "' could not be opened. " + sb.toString()); + } else { + throw e; + } + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java similarity index 93% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java index e5d86f2e1b9db..03b6077628eb8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BasicConfig.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.internal.handler; +package org.openhab.binding.knx.internal.config; import java.math.BigDecimal; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java similarity index 89% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java index 221a28a7dd5cb..f68ac03c4b055 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/BridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.internal.handler; +package org.openhab.binding.knx.internal.config; import java.math.BigDecimal; @@ -25,7 +25,6 @@ public class BridgeConfiguration { private BigDecimal readingPause; private BigDecimal readRetriesLimit; private BigDecimal responseTimeout; - private boolean useNAT; public BigDecimal getAutoReconnectPeriod() { return autoReconnectPeriod; @@ -47,8 +46,4 @@ public BigDecimal getResponseTimeout() { return responseTimeout; } - public Boolean getUseNAT() { - return useNAT; - } - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java new file mode 100644 index 0000000000000..fd9cdfe1ec5ab --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.config; + +import java.math.BigDecimal; + +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; + +/** + * {@link KNXBridgeBaseThingHandler} configuration + * + * @author Simon Kaufmann - initial contribution and API + * + */ +public class IPBridgeConfiguration extends BridgeConfiguration { + + private boolean useNAT; + private String ipConnectionType; + private String ipAddress; + private BigDecimal portNumber; + private String localIp; + private String localSourceAddr; + + public Boolean getUseNAT() { + return useNAT; + } + + public String getIpConnectionType() { + return ipConnectionType; + } + + public String getIpAddress() { + return ipAddress; + } + + public BigDecimal getPortNumber() { + return portNumber; + } + + public String getLocalIp() { + return localIp; + } + + public String getLocalSourceAddr() { + return localSourceAddr; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java new file mode 100644 index 0000000000000..c39fbd414f71c --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java @@ -0,0 +1,11 @@ +package org.openhab.binding.knx.internal.config; + +public class SerialBridgeConfiguration extends BridgeConfiguration { + + private String serialPort; + + public String getSerialPort() { + return serialPort; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 04c1d9a81997f..f24ab1e37f194 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -33,6 +33,7 @@ import org.eclipse.smarthome.core.library.types.UpDownType; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.KNXTypeMapper; +import org.osgi.service.component.annotations.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,6 +71,7 @@ * @author Volker Daube * @author Helmut Lehmeyer - generic DPT Mapper */ +@Component public class KNXCoreTypeMapper implements KNXTypeMapper { private final Logger logger = LoggerFactory.getLogger(KNXCoreTypeMapper.class); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index f21296208d07b..a28051fe6846c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -18,18 +18,24 @@ import org.apache.commons.lang.RandomStringUtils; import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.Thing; import org.eclipse.smarthome.core.thing.ThingTypeUID; import org.eclipse.smarthome.core.thing.ThingUID; import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory; import org.eclipse.smarthome.core.thing.binding.ThingHandler; +import org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory; import org.openhab.binding.knx.KNXBridgeHandlerTracker; import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.handler.IPBridgeThingHandler; import org.openhab.binding.knx.handler.KNXBasicThingHandler; import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; import org.openhab.binding.knx.handler.SerialBridgeThingHandler; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.component.annotations.ReferenceCardinality; +import org.osgi.service.component.annotations.ReferencePolicy; import com.google.common.collect.Lists; @@ -39,6 +45,7 @@ * * @author Karel Goderis - Initial contribution */ +@Component(service = ThingHandlerFactory.class) public class KNXHandlerFactory extends BaseThingHandlerFactory { public static final Collection SUPPORTED_THING_TYPES_UIDS = Lists.newArrayList(THING_TYPE_BASIC, @@ -48,19 +55,7 @@ public class KNXHandlerFactory extends BaseThingHandlerFactory { private final Collection bridgeHandlers = new HashSet(); private final Set trackers = new CopyOnWriteArraySet<>(); - public synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.add(typeMapper); - for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { - aBridge.addKNXTypeMapper(typeMapper); - } - } - - public synchronized void removeKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.remove(typeMapper); - for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { - aBridge.removeKNXTypeMapper(typeMapper); - } - } + private NetworkAddressService networkAddressService; @Override public boolean supportsThingType(ThingTypeUID thingTypeUID) { @@ -88,7 +83,7 @@ public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, @Override protected ThingHandler createHandler(Thing thing) { if (thing.getThingTypeUID().equals(THING_TYPE_IP_BRIDGE)) { - return new IPBridgeThingHandler((Bridge) thing); + return new IPBridgeThingHandler((Bridge) thing, networkAddressService); } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { return new SerialBridgeThingHandler((Bridge) thing); } else if (thing.getThingTypeUID().equals(THING_TYPE_BASIC)) { @@ -154,6 +149,7 @@ public synchronized void unregisterHandler(Thing thing) { super.unregisterHandler(thing); } + @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) protected synchronized void addBridgeHandlerTracker(KNXBridgeHandlerTracker tracker) { if (trackers.add(tracker)) { for (KNXBridgeBaseThingHandler handler : bridgeHandlers) { @@ -170,4 +166,28 @@ protected synchronized void removeBridgeHandlerTracker(KNXBridgeHandlerTracker t } } + @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC) + protected synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.add(typeMapper); + for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { + aBridge.addKNXTypeMapper(typeMapper); + } + } + + protected synchronized void removeKNXTypeMapper(KNXTypeMapper typeMapper) { + typeMappers.remove(typeMapper); + for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { + aBridge.removeKNXTypeMapper(typeMapper); + } + } + + @Reference + protected void setNetworkAddressService(NetworkAddressService networkAddressService) { + this.networkAddressService = networkAddressService; + } + + protected void unsetNetworkAddressService(NetworkAddressService networkAddressService) { + this.networkAddressService = null; + } + } From 88a340e21d7683b9f36a2e15a92210a038beca56 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Tue, 12 Dec 2017 14:45:35 +0100 Subject: [PATCH 05/52] updated pom Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/pom.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/pom.xml b/addons/binding/org.openhab.binding.knx/pom.xml index 4c5c0abc4d3b3..22650b83d6450 100644 --- a/addons/binding/org.openhab.binding.knx/pom.xml +++ b/addons/binding/org.openhab.binding.knx/pom.xml @@ -7,12 +7,10 @@ org.openhab.binding pom - 2.1.0-SNAPSHOT + 2.2.0-SNAPSHOT - org.openhab.binding org.openhab.binding.knx - 2.1.0-SNAPSHOT KNX Binding eclipse-plugin From fca642da155d45852cbd0a4963f7166a3b6cf5e5 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 20 Dec 2017 09:58:45 +0100 Subject: [PATCH 06/52] review feedbacks Signed-off-by: Simon Kaufmann --- .../ESH-INF/thing/ip.xml | 13 +- .../ESH-INF/thing/serial.xml | 12 +- .../META-INF/MANIFEST.MF | 6 +- .../OSGI-INF/.gitignore | 1 + ...ing.knx.internal.dpt.KNXCoreTypeMapper.xml | 7 - ...knx.internal.factory.KNXHandlerFactory.xml | 10 - .../binding/knx/KNXBridgeHandlerTracker.java | 11 - .../{ => handler}/GroupAddressListener.java | 2 +- .../knx/handler/IPBridgeThingHandler.java | 17 +- .../IndividualAddressListener.java | 2 +- .../knx/handler/KNXBasicThingHandler.java | 210 ++++-------------- .../handler/KNXBridgeBaseThingHandler.java | 73 ------ .../knx/handler/SerialBridgeThingHandler.java | 15 +- .../knx/handler/StatusUpdateCallback.java | 7 +- .../knx/{ => handler}/TelegramListener.java | 2 +- .../binding/knx/handler/TypeHelper.java | 27 +++ .../internal/channel/KNXChannelSelector.java | 34 ++- .../knx/internal/client/DeviceInfoClient.java | 4 + .../knx/internal/client/KNXClient.java | 137 ++---------- .../internal/config/BridgeConfiguration.java | 5 - .../knx/internal/dpt/KNXCoreTypeMapper.java | 11 +- .../internal/factory/KNXHandlerFactory.java | 66 +++--- .../knx/internal/handler/DeviceInspector.java | 203 +++++++++++++++++ 23 files changed, 375 insertions(+), 500 deletions(-) create mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/.gitignore delete mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml delete mode 100644 addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => handler}/GroupAddressListener.java (95%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => handler}/IndividualAddressListener.java (95%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => handler}/TelegramListener.java (97%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml index 5ec47b647ddde..f5aca69af6871 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -78,24 +78,13 @@ true 0 - - - Enable or disable automatic Individual Address discovery - true - true - - - - KNX Project File (knxproj) to parse automatically add to the system - false - Number - The number of errors that occurred on the KNX bus since the start of the binding + The number of errors that occurred on the KNX bus diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml index 4213b51d750cc..2a7b932c1b655 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml @@ -9,6 +9,7 @@ This Bridge is for the serial KNX gateway running on the openHAB host + serial-port The serial port to use for connecting to the KNX bus true @@ -38,17 +39,6 @@ true 0 - - - Enable or disable automatic Individual Address discovery - true - true - - - - KNX Project File (knxproj) to parse and add to the Things managed by this Bridge - false - diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 7f742db1feaa6..898b66c3d39c6 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -3,10 +3,9 @@ Bundle-ManifestVersion: 2 Bundle-Name: KNX Binding Bundle-SymbolicName: org.openhab.binding.knx;singleton:=true Bundle-Vendor: openHAB -Bundle-Version: 2.1.0.qualifier +Bundle-Version: 2.2.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: com.google.common.base, - com.google.common.collect, +Import-Package: com.google.common.collect, gnu.io;resolution:=optional, org.apache.commons.collections, org.apache.commons.io, @@ -16,7 +15,6 @@ Import-Package: com.google.common.base, org.eclipse.smarthome.config.discovery, org.eclipse.smarthome.core.autoupdate, org.eclipse.smarthome.core.common, - org.eclipse.smarthome.core.common.registry, org.eclipse.smarthome.core.i18n, org.eclipse.smarthome.core.library.types, org.eclipse.smarthome.core.net, diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/.gitignore b/addons/binding/org.openhab.binding.knx/OSGI-INF/.gitignore new file mode 100644 index 0000000000000..b85a194314c13 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/OSGI-INF/.gitignore @@ -0,0 +1 @@ +/*.xml \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml deleted file mode 100644 index b77a353d21143..0000000000000 --- a/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml b/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml deleted file mode 100644 index 29ddbf6227e3d..0000000000000 --- a/addons/binding/org.openhab.binding.knx/OSGI-INF/org.openhab.binding.knx.internal.factory.KNXHandlerFactory.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java deleted file mode 100644 index ffecdcd415c6c..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBridgeHandlerTracker.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.openhab.binding.knx; - -import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; - -public interface KNXBridgeHandlerTracker { - - void onBridgeAdded(KNXBridgeBaseThingHandler handler); - - void onBridgeRemoved(KNXBridgeBaseThingHandler handler); - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java similarity index 95% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java index 8c6beba22b3ad..58a220a7ab36c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/GroupAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx; +package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index e9309284c3445..30b0259dc4fed 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -13,6 +13,7 @@ import org.apache.commons.lang.StringUtils; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ThingStatus; @@ -21,8 +22,6 @@ import org.openhab.binding.knx.internal.client.IPClient; import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.config.IPBridgeConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import tuwien.auto.calimero.link.KNXNetworkLinkIP; @@ -37,12 +36,10 @@ @NonNullByDefault public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { - private final Logger logger = LoggerFactory.getLogger(IPBridgeThingHandler.class); - private static final String MODE_ROUTER = "ROUTER"; private static final String MODE_TUNNEL = "TUNNEL"; - @NonNullByDefault({}) + @Nullable private IPClient client; private final NetworkAddressService networkAddressService; @@ -99,12 +96,18 @@ public void initialize() { @Override public void dispose() { super.dispose(); - client.dispose(); + if (client != null) { + client.dispose(); + } } @Override protected KNXClient getClient() { - return client; + KNXClient ret = client; + if (ret == null) { + throw new IllegalStateException(); + } + return ret; } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java similarity index 95% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java index 455b0ecfaa2d0..540aa4ad7a80a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/IndividualAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx; +package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java index ee72cd904c574..452162d9bade0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -9,7 +9,6 @@ package org.openhab.binding.knx.handler; import static org.openhab.binding.knx.KNXBindingConstants.*; -import static org.openhab.binding.knx.internal.handler.DeviceConstants.*; import java.math.BigDecimal; import java.util.HashMap; @@ -35,27 +34,21 @@ import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.GroupAddressListener; -import org.openhab.binding.knx.IndividualAddressListener; import org.openhab.binding.knx.internal.channel.KNXChannelSelector; import org.openhab.binding.knx.internal.channel.KNXChannelType; import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.config.BasicConfig; -import org.openhab.binding.knx.internal.handler.Firmware; -import org.openhab.binding.knx.internal.handler.Manufacturer; +import org.openhab.binding.knx.internal.handler.DeviceInspector; +import org.openhab.binding.knx.internal.handler.DeviceInspector.Result; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import tuwien.auto.calimero.DataUnitBuilder; -import tuwien.auto.calimero.DeviceDescriptor; -import tuwien.auto.calimero.DeviceDescriptor.DD0; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; import tuwien.auto.calimero.datapoint.CommandDP; import tuwien.auto.calimero.datapoint.Datapoint; import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.exception.KNXFormatException; -import tuwien.auto.calimero.mgmt.PropertyAccess.PID; /** * The {@link KNXBasicThingHandler} is responsible for handling commands, which are @@ -88,12 +81,13 @@ public class KNXBasicThingHandler extends BaseThingHandler implements Individual @Nullable private ScheduledFuture descriptionJob; - private static final long OPERATION_TIMEOUT = 5000; - private static final long OPERATION_INTERVAL = 2000; private boolean filledDescription = false; - public KNXBasicThingHandler(Thing thing) { + private final TypeHelper typeHelper; + + public KNXBasicThingHandler(Thing thing, TypeHelper typeHelper) { super(thing); + this.typeHelper = typeHelper; } @Override @@ -109,9 +103,10 @@ public void initialize() { long pollingInterval = config.getInterval().longValue(); long initialDelay = Math.round(pollingInterval * random.nextFloat()); + ScheduledFuture pollingJob = this.pollingJob; if ((pollingJob == null || pollingJob.isCancelled())) { logger.debug("'{}' will be polled every {}s", getThing().getUID(), pollingInterval); - pollingJob = getBridgeHandler().getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), + this.pollingJob = getBridgeHandler().getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialDelay, pollingInterval, TimeUnit.SECONDS); } } else { @@ -173,7 +168,7 @@ public void dispose() { private void cancelReadFutures() { for (ScheduledFuture future : readFutures.values()) { - if (!future.isDone()) { + if (future != null && !future.isDone()) { future.cancel(true); } } @@ -248,8 +243,8 @@ private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, bo boolean recurring = readInterval != null && readInterval.intValue() > 0; Runnable readRunnable = () -> { - if (getThing().getStatus() == ThingStatus.ONLINE && getBridge().getStatus() == ThingStatus.ONLINE) { - if (!getBridgeHandler().isDPTSupported(dpt)) { + if (getThing().getStatus() == ThingStatus.ONLINE && getClient().isConnected()) { + if (!typeHelper.isDPTSupported(dpt)) { logger.warn("DPT '{}' is not supported by the KNX binding", dpt); return; } @@ -325,11 +320,13 @@ private void sendToKNX(ChannelUID channelUID, Type type) { withKNXType(channelUID, (selector, channelConfiguration) -> { Type convertedType = selector.convertType(channelConfiguration, type); if (logger.isTraceEnabled()) { - logger.trace("Sending to channel {} {} {} {}/{} : {} -> {}", channelUID.getId(), - getThing().getChannel(channelUID.getId()).getConfiguration().get(DPT), - getThing().getChannel(channelUID.getId()).getAcceptedItemType(), - getThing().getChannel(channelUID.getId()).getConfiguration().get(READ), - getThing().getChannel(channelUID.getId()).getConfiguration().get(WRITE), type, convertedType); + Channel channel = getThing().getChannel(channelUID.getId()); + if (channel != null) { + logger.trace("Sending to channel {} {} {} {}/{} : {} -> {}", channelUID.getId(), + channel.getConfiguration().get(DPT), channel.getAcceptedItemType(), + channel.getConfiguration().get(READ), channel.getConfiguration().get(WRITE), type, + convertedType); + } } if (convertedType != null) { for (GroupAddress address : selector.getWriteAddresses(channelConfiguration, convertedType)) { @@ -374,16 +371,14 @@ public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddres private void processDataReceived(GroupAddress destination, byte[] asdu, @Nullable String dpt, ChannelUID channelUID) { - if (dpt != null) { - - if (!((KNXBridgeBaseThingHandler) getBridge().getHandler()).isDPTSupported(dpt)) { + if (!typeHelper.isDPTSupported(dpt)) { logger.warn("DPT {} is not supported by the KNX binding.", dpt); return; } Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); - Type type = ((KNXBridgeBaseThingHandler) getBridge().getHandler()).getType(destination, dpt, asdu); + Type type = typeHelper.getType(datapoint, asdu); if (type != null) { postCommand(channelUID, (Command) type); @@ -401,7 +396,6 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, @Nullabl destination, datapoint, sb); return; } - } } @@ -425,8 +419,8 @@ class ReadRunnable implements Runnable { @Override public void run() { - if (getThing().getStatus() == ThingStatus.ONLINE && getBridge().getStatus() == ThingStatus.ONLINE) { - if (!getBridgeHandler().isDPTSupported(dpt)) { + if (getThing().getStatus() == ThingStatus.ONLINE && getClient().isConnected()) { + if (!typeHelper.isDPTSupported(dpt)) { logger.warn("DPT '{}' is not supported by the KNX binding", dpt); return; } @@ -438,16 +432,32 @@ public void run() { private void pollDeviceStatus() { try { - if (address != null && getBridge().getStatus() == ThingStatus.ONLINE) { + if (address != null && getClient().isConnected()) { logger.debug("Polling the individual address {}", address); boolean isReachable = getClient().isReachable(address); if (isReachable) { updateStatus(ThingStatus.ONLINE); BasicConfig config = getConfigAs(BasicConfig.class); if (!filledDescription && config.getFetch()) { + ScheduledFuture descriptionJob = this.descriptionJob; if (descriptionJob == null || descriptionJob.isCancelled()) { - descriptionJob = getBridgeHandler().getScheduler().schedule(descriptionRunnable, 0, - TimeUnit.MILLISECONDS); + this.descriptionJob = getBridgeHandler().getScheduler().schedule(() -> { + IndividualAddress address = KNXBasicThingHandler.this.address; + if (address != null) { + DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), + address); + Result result = inspector.readDeviceInfo(); + if (result != null) { + filledDescription = true; + + Map properties = editProperties(); + properties.putAll(result.getProperties()); + updateProperties(properties); + + foundGroupAddresses.addAll(result.getGroupAddresses()); + } + } + }, 0, TimeUnit.MILLISECONDS); } } } else { @@ -461,142 +471,4 @@ private void pollDeviceStatus() { } } - private final Runnable descriptionRunnable = new Runnable() { - - @Override - public void run() { - try { - if (getBridge().getStatus() == ThingStatus.ONLINE) { - IndividualAddress address = KNXBasicThingHandler.this.address; - if (address == null) { - return; - } - logger.debug("Fetching device information for address {}", address); - - Thread.sleep(OPERATION_INTERVAL); - byte[] data = getClient().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); - - if (data != null) { - final DD0 dd = DeviceDescriptor.DD0.fromType0(data); - - Map properties = editProperties(); - properties.put(FIRMWARE_TYPE, Firmware.getName(dd.getFirmwareType())); - properties.put(FIRMWARE_VERSION, Firmware.getName(dd.getFirmwareVersion())); - properties.put(FIRMWARE_SUBVERSION, Firmware.getName(dd.getSubcode())); - updateProperties(properties); - logger.info("The device with address {} is of type {}, version {}, subversion {}", address, - Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), - Firmware.getName(dd.getSubcode())); - } else { - logger.warn("The KNX Actor with address {} does not expose a Device Descriptor", address); - } - - // check if there is a Device Object in the KNX Actor - Thread.sleep(OPERATION_INTERVAL); - byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, - false, OPERATION_TIMEOUT); - if ((elements == null ? 0 : toUnsigned(elements)) == 1) { - - Thread.sleep(OPERATION_INTERVAL); - String ManufacturerID = Manufacturer - .getName(toUnsigned(getClient().readDeviceProperties(address, DEVICE_OBJECT, - PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); - Thread.sleep(OPERATION_INTERVAL); - String serialNo = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, - PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); - Thread.sleep(OPERATION_INTERVAL); - String hardwareType = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, - DEVICE_OBJECT, HARDWARE_TYPE, 1, 1, false, OPERATION_TIMEOUT), " "); - Thread.sleep(OPERATION_INTERVAL); - String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, - DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); - - Map properties = editProperties(); - properties.put(MANUFACTURER_NAME, ManufacturerID); - properties.put(MANUFACTURER_SERIAL_NO, serialNo); - properties.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); - properties.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); - updateProperties(properties); - logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, - ManufacturerID, hardwareType, firmwareRevision, serialNo); - } else { - logger.warn("The KNX Actor with address {} does not expose a Device Object", address); - } - - // According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE - // object, but it seems that a lot, if not all, devices do not do this. In this list we can find out - // what other kind of objects the device is exposing. Most devices do implement some set of objects, - // we will just go ahead and try to read them out irrespective of what is in the IO_LIST - - Thread.sleep(OPERATION_INTERVAL); - byte[] tableaddress = getClient().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, - PID.TABLE_REFERENCE, 1, 1, false, OPERATION_TIMEOUT); - - if (tableaddress != null) { - Thread.sleep(OPERATION_INTERVAL); - elements = getClient().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, - OPERATION_TIMEOUT); - if (elements != null) { - int numberOfElements = toUnsigned(elements); - logger.debug("The KNX Actor with address {} uses {} group addresses", address, - numberOfElements - 1); - - byte[] addressData = null; - while (addressData == null) { - Thread.sleep(OPERATION_INTERVAL); - addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1, 2, - false, OPERATION_TIMEOUT); - if (addressData != null) { - IndividualAddress individualAddress = new IndividualAddress(addressData); - logger.debug( - "The KNX Actor with address {} its real reported individual address is {}", - address, individualAddress); - } - } - - for (int i = 1; i < numberOfElements; i++) { - addressData = null; - while (addressData == null) { - Thread.sleep(OPERATION_INTERVAL); - addressData = getClient().readDeviceMemory(address, - toUnsigned(tableaddress) + 1 + i * 2, 2, false, OPERATION_TIMEOUT); - if (addressData != null) { - GroupAddress groupAddress = new GroupAddress(addressData); - foundGroupAddresses.add(groupAddress); - } - } - } - - for (GroupAddress anAddress : foundGroupAddresses) { - logger.debug("The KNX Actor with address {} uses Group Address {}", address, anAddress); - } - } - } else { - logger.warn("The KNX Actor with address {} does not expose a Group Address table", address); - } - filledDescription = true; - } - } catch (Exception e) { - logger.error("An exception occurred while fetching the device description for a Thing '{}' : {}", - getThing().getUID(), e.getMessage(), e); - } - } - - private int toUnsigned(final byte @Nullable [] data) { - if (data == null) { - return 0; - } - int value = data[0] & 0xff; - if (data.length == 1) { - return value; - } - value = value << 8 | data[1] & 0xff; - if (data.length == 2) { - return value; - } - value = value << 16 | data[2] & 0xff << 8 | data[3] & 0xff; - return value; - } - }; - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 9fe52bc2457bf..965ffc7f362c4 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -8,9 +8,7 @@ */ package org.openhab.binding.knx.handler; -import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.ScheduledExecutorService; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -24,17 +22,10 @@ import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; -import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.factory.KNXThreadPoolFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.datapoint.CommandDP; -import tuwien.auto.calimero.datapoint.Datapoint; import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.mgmt.Destination; @@ -49,11 +40,6 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implem private static final int CORE_POOL_SIZE = 5; - private final Logger logger = LoggerFactory.getLogger(KNXBridgeBaseThingHandler.class); - - // Data structures related to the communication infrastructure - private final Collection typeMappers = new CopyOnWriteArraySet<>(); - protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); @Nullable @@ -82,14 +68,6 @@ public void childHandlerDisposed(ThingHandler childHandler, Thing childThing) { CORE_POOL_SIZE + getThing().getThings().size() / 10); } - public final void addKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.add(typeMapper); - } - - public final void removeKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.remove(typeMapper); - } - @Override public void handleUpdate(ChannelUID channelUID, State newState) { // Nothing to do here @@ -100,52 +78,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { // Nothing to do here } - /** - * Transforms the raw KNX bus data of a given datapoint into an openHAB type (command or state) - * - * @param datapoint - * the datapoint to which the data belongs - * @param asdu - * the byte array of the raw data from the KNX bus - * @return the openHAB command or state that corresponds to the data - */ - @Nullable - private Type getType(Datapoint datapoint, byte[] asdu) { - for (KNXTypeMapper typeMapper : typeMappers) { - Type type = typeMapper.toType(datapoint, asdu); - if (type != null) { - return type; - } - } - return null; - } - - public final boolean isDPTSupported(@Nullable String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - if (typeMapper.toTypeClass(dpt) != null) { - return true; - } - } - return false; - } - - @Nullable - public final Class toTypeClass(String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - Class typeClass = typeMapper.toTypeClass(dpt); - if (typeClass != null) { - return typeClass; - } - } - return null; - } - - @Nullable - public final Type getType(GroupAddress destination, String dpt, byte[] asdu) { - Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); - return getType(datapoint, asdu); - } - public ScheduledExecutorService getScheduler() { ScheduledExecutorService scheduler = knxScheduler; if (scheduler == null) { @@ -161,11 +93,6 @@ public void updateStatus(ThingStatus status) { super.updateStatus(status); } - @Override - public void updateStatus(ThingStatus status, ThingStatusDetail statusDetail) { - super.updateStatus(status, statusDetail); - } - @Override public void updateStatus(ThingStatus status, ThingStatusDetail statusDetail, @Nullable String description) { super.updateStatus(status, statusDetail, description); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java index 41894ae2d3568..5140bbc5832e4 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -14,8 +14,6 @@ import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.client.SerialClient; import org.openhab.binding.knx.internal.config.SerialBridgeConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are @@ -28,21 +26,18 @@ @NonNullByDefault public class SerialBridgeThingHandler extends KNXBridgeBaseThingHandler { - private final Logger logger = LoggerFactory.getLogger(SerialBridgeThingHandler.class); - - @NonNullByDefault({}) - private SerialClient client; + private final SerialClient client; public SerialBridgeThingHandler(Bridge bridge) { super(bridge); - } - - @Override - public void initialize() { SerialBridgeConfiguration config = getConfigAs(SerialBridgeConfiguration.class); client = new SerialClient(config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this); + } + + @Override + public void initialize() { client.initialize(); updateStatus(ThingStatus.UNKNOWN); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java index b07de09a03d7a..ed273c9a83d77 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java @@ -1,17 +1,14 @@ package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; @NonNullByDefault public interface StatusUpdateCallback { - void updateStatus(ThingStatus status, ThingStatusDetail statusDetail, @Nullable String description); - - void updateStatus(ThingStatus status, ThingStatusDetail statusDetail); - void updateStatus(ThingStatus status); + void updateStatus(ThingStatus status, ThingStatusDetail thingStatusDetail, String message); + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java similarity index 97% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java index 9ac25c26f1494..a79f7bf51112e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/TelegramListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx; +package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.binding.knx.internal.client.KNXClient; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java new file mode 100644 index 0000000000000..230b2afb25009 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java @@ -0,0 +1,27 @@ +package org.openhab.binding.knx.handler; + +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.datapoint.Datapoint; + +public interface TypeHelper { + + /** + * Transforms the raw KNX bus data of a given datapoint into an openHAB type (command or state) + * + * @param datapoint + * the datapoint to which the data belongs + * @param asdu + * the byte array of the raw data from the KNX bus + * @return the openHAB command or state that corresponds to the data + */ + @Nullable + Type getType(Datapoint datapoint, byte[] asdu); + + boolean isDPTSupported(@Nullable String dpt); + + @Nullable + Class toTypeClass(String dpt); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java index f170dd40ec077..15b3f95204cd8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -8,8 +8,11 @@ */ package org.openhab.binding.knx.internal.channel; -import java.util.HashSet; +import static java.util.stream.Collectors.toSet; + +import java.util.Collections; import java.util.Set; +import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -18,33 +21,28 @@ @NonNullByDefault public final class KNXChannelSelector { + private static final Set TYPES = Collections.unmodifiableSet(Stream.of(// + new TypeContact(), // + new TypeDimmer(), // + new TypeRollershutter(), // + new TypeSetpoint(), // + new TypeSwitch(), // + new TypeWallButton(), // + new TypeDateTime(), // + new TypeNumber(), // + new TypeString()).collect(toSet())); + private KNXChannelSelector() { // prevent instantiation } - private static final Set types = new HashSet() { - private static final long serialVersionUID = 1L; - { - add(new TypeContact()); - add(new TypeDimmer()); - add(new TypeRollershutter()); - add(new TypeSetpoint()); - add(new TypeSwitch()); - add(new TypeWallButton()); - - add(new TypeDateTime()); - add(new TypeNumber()); - add(new TypeString()); - } - }; - public static KNXChannelType getValueSelectorFromChannelTypeId(@Nullable ChannelTypeUID channelTypeUID) throws IllegalArgumentException { if (channelTypeUID == null) { throw new IllegalArgumentException("channel type UID was null"); } - for (KNXChannelType c : types) { + for (KNXChannelType c : TYPES) { if (c.getChannelID().equals(channelTypeUID.getId())) { return c; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java index fd4a20969c323..f2f953fe6a351 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java @@ -93,4 +93,8 @@ private void authorize(boolean authenticate, Destination destination) throws KNX }); } + public boolean isConnected() { + return managementClient.isOpen(); + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java index 136bcfd7015b6..8556f5c72756e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -1,9 +1,6 @@ package org.openhab.binding.knx.internal.client; -import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -18,14 +15,15 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.ThingUID; import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.GroupAddressListener; -import org.openhab.binding.knx.IndividualAddressListener; import org.openhab.binding.knx.KNXBusListener; import org.openhab.binding.knx.KNXTypeMapper; -import org.openhab.binding.knx.TelegramListener; +import org.openhab.binding.knx.handler.GroupAddressListener; +import org.openhab.binding.knx.handler.IndividualAddressListener; import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.handler.TelegramListener; import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; @@ -55,15 +53,11 @@ @NonNullByDefault public abstract class KNXClient implements NetworkLinkListener { - // private static final int ERROR_INTERVAL_MINUTES = 5; private static final int MAX_SEND_ATTEMPTS = 2; private final Logger logger = LoggerFactory.getLogger(KNXClient.class); private final LogAdapter logAdapter = new LogAdapter(); - // private long errorsSinceStart = 0; - // private long errorsSinceInterval = 0; - // private final long intervalTimestamp = 0; private boolean shutdown = false; private final int autoReconnectPeriod; private final Lock connectLock = new ReentrantLock(); @@ -155,8 +149,6 @@ public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout this.responseTimeout = responseTimeout; this.readingPause = readingPause; this.readRetriesLimit = readRetriesLimit; - // errorsSinceStart = 0; - // errorsSinceInterval = 0; this.knxScheduler = knxScheduler; this.statusUpdateCallback = statusUpdateCallback; @@ -200,10 +192,6 @@ public void connect() throws KNXException, InterruptedException { link.addLinkListener(this); - // errorsSinceStart = 0; - // errorsSinceInterval = 0; - // intervalTimestamp = 0; - busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, readingPause, TimeUnit.MILLISECONDS); @@ -427,6 +415,8 @@ public void linkClosed(@Nullable CloseEvent e) { return; } if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { + statusUpdateCallback.updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + e.getReason()); logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); if (autoReconnectPeriod > 0) { logger.info("KNX link will be retried in '{}' seconds", autoReconnectPeriod); @@ -445,47 +435,6 @@ public void confirmation(@Nullable FrameEvent e) { // handleFrameEvent(e); } - // private void handleFrameEvent(@Nullable FrameEvent e) { - // checkErrorCounterTimeouts(); - // int messageCode = e.getFrame().getMessageCode(); - // switch (messageCode) { - // case CEMILData.MC_LDATA_IND: - // if (((CEMILData) e.getFrame()).isRepetition()) { - // incrementErrorCounter(); - // } - // break; - // case CEMILData.MC_LDATA_CON: - // if (!((CEMILData) e.getFrame()).isPositiveConfirmation()) { - // incrementErrorCounter(); - // } - // break; - // } - // } - // - // private void checkErrorCounterTimeouts() { - // if (intervalTimestamp == 0) { - // intervalTimestamp = System.nanoTime(); - // updateErrorCounterChannels(); - // } else if ((System.nanoTime() - intervalTimestamp) > TimeUnit.MINUTES.toNanos(ERROR_INTERVAL_MINUTES)) { - // intervalTimestamp = System.nanoTime(); - // errorsSinceInterval = 0; - // updateErrorCounterChannels(); - // } - // } - // - // private void incrementErrorCounter() { - // errorsSinceStart++; - // errorsSinceInterval++; - // updateErrorCounterChannels(); - // } - // - // private void updateErrorCounterChannels() { - // updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_STARTUP), - // new DecimalType(errorsSinceStart)); - // updateState(new ChannelUID(getThing().getUID(), KNXBindingConstants.ERRORS_INTERVAL), - // new DecimalType(errorsSinceInterval)); - // } - public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { ManagementProcedures managementProcedures = this.managementProcedures; if (managementProcedures == null || address == null) { @@ -523,40 +472,6 @@ public final synchronized void restartNetworkDevice(@Nullable IndividualAddress } } - public synchronized List scanNetworkDevices(final int area, final int line) { - ManagementProcedures managementProcedures = this.managementProcedures; - if (managementProcedures == null) { - return Collections.emptyList(); - } - try { - IndividualAddress[] ret = managementProcedures.scanNetworkDevices(area, line); - return ret != null ? Arrays.asList(ret) : Collections.emptyList(); - } catch (KNXException | InterruptedException e) { - logger.error("Error scanning the KNX bus: {}", e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - return Collections.emptyList(); - } - - public synchronized List scanNetworkRouters() { - ManagementProcedures managementProcedures = this.managementProcedures; - if (managementProcedures == null) { - return Collections.emptyList(); - } - try { - IndividualAddress[] ret = managementProcedures.scanNetworkRouters(); - return ret != null ? Arrays.asList(ret) : Collections.emptyList(); - } catch (KNXException | InterruptedException e) { - logger.error("An exception occurred while scanning the KNX bus: {}", e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } - } - return Collections.emptyList(); - } - public void readDatapoint(Datapoint datapoint) { synchronized (this) { RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, readRetriesLimit); @@ -566,34 +481,6 @@ public void readDatapoint(Datapoint datapoint) { } } - public byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, - long timeout) { - DeviceInfoClient deviceInfoClient = this.deviceInfoClient; - if (deviceInfoClient == null) { - return null; - } - return deviceInfoClient.readDeviceDescription(address, descType, authenticate, timeout); - } - - public byte @Nullable [] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, - final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { - DeviceInfoClient deviceInfoClient = this.deviceInfoClient; - if (deviceInfoClient == null) { - return null; - } - return deviceInfoClient.readDeviceProperties(address, interfaceObjectIndex, propertyId, start, elements, - authenticate, timeout); - } - - public byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, - boolean authenticate, long timeout) { - DeviceInfoClient deviceInfoClient = this.deviceInfoClient; - if (deviceInfoClient == null) { - return null; - } - return deviceInfoClient.readDeviceMemory(address, startAddress, bytes, authenticate, timeout); - } - public final boolean registerGroupAddressListener(GroupAddressListener listener) { return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); } @@ -618,4 +505,16 @@ public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { knxBusListeners.remove(knxBusListener); } + public boolean isConnected() { + return connected; + } + + public DeviceInfoClient getDeviceInfoClient() { + if (deviceInfoClient != null) { + return deviceInfoClient; + } else { + throw new IllegalStateException(); + } + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java index f68ac03c4b055..5fbf77d414a5c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java @@ -21,7 +21,6 @@ public class BridgeConfiguration { private BigDecimal autoReconnectPeriod; - private boolean enableDiscovery; private BigDecimal readingPause; private BigDecimal readRetriesLimit; private BigDecimal responseTimeout; @@ -30,10 +29,6 @@ public BigDecimal getAutoReconnectPeriod() { return autoReconnectPeriod; } - public Boolean getEnableDiscovery() { - return enableDiscovery; - } - public BigDecimal getReadingPause() { return readingPause; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index f24ab1e37f194..c46fd2f95be70 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -847,20 +847,21 @@ private String formatDateTime(String value, String dpt) { if (DPTXlatorDate.DPT_DATE.getID().equals(dpt)) { date = new SimpleDateFormat(DATE_FORMAT).parse(value); } else if (DPTXlatorTime.DPT_TIMEOFDAY.getID().equals(dpt)) { - if (value.contains("no-day")) { + String convertedValue = value; + if (convertedValue.contains("no-day")) { /* - * KNX "no-day" needs special treatment since openHAB's DateTimeType doesn't support "no-day". + * KNX "no-day" needs special treatment since the DateTimeType doesn't support "no-day". * Workaround: remove the "no-day" String, parse the remaining time string, which will result in a * date of "1970-01-01". * Replace "no-day" with the current day name */ - StringBuffer stb = new StringBuffer(value); + StringBuffer stb = new StringBuffer(convertedValue); int start = stb.indexOf("no-day"); int end = start + "no-day".length(); stb.replace(start, end, String.format(Locale.US, "%1$ta", Calendar.getInstance())); - value = stb.toString(); + convertedValue = stb.toString(); } - date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(value); + date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(convertedValue); } } catch (ParseException pe) { // do nothing but logging diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index a28051fe6846c..0e9ac5dd9a7b5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -10,13 +10,13 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.Locale; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArraySet; import org.apache.commons.lang.RandomStringUtils; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; @@ -26,18 +26,19 @@ import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory; import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory; -import org.openhab.binding.knx.KNXBridgeHandlerTracker; +import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.handler.IPBridgeThingHandler; import org.openhab.binding.knx.handler.KNXBasicThingHandler; import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; import org.openhab.binding.knx.handler.SerialBridgeThingHandler; +import org.openhab.binding.knx.handler.TypeHelper; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import com.google.common.collect.Lists; +import tuwien.auto.calimero.datapoint.Datapoint; /** * The {@link KNXHandlerFactory} is responsible for creating things and thing @@ -46,14 +47,13 @@ * @author Karel Goderis - Initial contribution */ @Component(service = ThingHandlerFactory.class) -public class KNXHandlerFactory extends BaseThingHandlerFactory { +public class KNXHandlerFactory extends BaseThingHandlerFactory implements TypeHelper { - public static final Collection SUPPORTED_THING_TYPES_UIDS = Lists.newArrayList(THING_TYPE_BASIC, + public static final Collection SUPPORTED_THING_TYPES_UIDS = Arrays.asList(THING_TYPE_BASIC, THING_TYPE_IP_BRIDGE, THING_TYPE_SERIAL_BRIDGE); private final Collection typeMappers = new HashSet(); private final Collection bridgeHandlers = new HashSet(); - private final Set trackers = new CopyOnWriteArraySet<>(); private NetworkAddressService networkAddressService; @@ -87,7 +87,7 @@ protected ThingHandler createHandler(Thing thing) { } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { return new SerialBridgeThingHandler((Bridge) thing); } else if (thing.getThingTypeUID().equals(THING_TYPE_BASIC)) { - return new KNXBasicThingHandler(thing); + return new KNXBasicThingHandler(thing, this); } return null; } @@ -129,10 +129,6 @@ public synchronized ThingHandler registerHandler(Thing thing) { if (handler instanceof KNXBridgeBaseThingHandler) { KNXBridgeBaseThingHandler bridgeHandler = (KNXBridgeBaseThingHandler) handler; bridgeHandlers.add(bridgeHandler); - typeMappers.forEach(it -> bridgeHandler.addKNXTypeMapper(it)); - for (KNXBridgeHandlerTracker tracker : trackers) { - tracker.onBridgeAdded(bridgeHandler); - } } return handler; } @@ -141,44 +137,52 @@ public synchronized ThingHandler registerHandler(Thing thing) { public synchronized void unregisterHandler(Thing thing) { if (thing.getHandler() instanceof KNXBridgeBaseThingHandler) { KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) thing.getHandler(); - for (KNXBridgeHandlerTracker tracker : trackers) { - tracker.onBridgeRemoved(handler); - } - bridgeHandlers.remove(thing.getHandler()); + bridgeHandlers.remove(handler); } super.unregisterHandler(thing); } - @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) - protected synchronized void addBridgeHandlerTracker(KNXBridgeHandlerTracker tracker) { - if (trackers.add(tracker)) { - for (KNXBridgeBaseThingHandler handler : bridgeHandlers) { - tracker.onBridgeAdded(handler); + @Override + @Nullable + public Type getType(Datapoint datapoint, byte[] asdu) { + for (KNXTypeMapper typeMapper : typeMappers) { + Type type = typeMapper.toType(datapoint, asdu); + if (type != null) { + return type; } } + return null; } - protected synchronized void removeBridgeHandlerTracker(KNXBridgeHandlerTracker tracker) { - if (trackers.remove(tracker)) { - for (KNXBridgeBaseThingHandler handler : bridgeHandlers) { - tracker.onBridgeRemoved(handler); + @Override + public final boolean isDPTSupported(@Nullable String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + if (typeMapper.toTypeClass(dpt) != null) { + return true; } } + return false; + } + + @Override + @Nullable + public final Class toTypeClass(String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + Class typeClass = typeMapper.toTypeClass(dpt); + if (typeClass != null) { + return typeClass; + } + } + return null; } @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC) protected synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { typeMappers.add(typeMapper); - for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { - aBridge.addKNXTypeMapper(typeMapper); - } } protected synchronized void removeKNXTypeMapper(KNXTypeMapper typeMapper) { typeMappers.remove(typeMapper); - for (KNXBridgeBaseThingHandler aBridge : bridgeHandlers) { - aBridge.removeKNXTypeMapper(typeMapper); - } } @Reference diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java new file mode 100644 index 0000000000000..97c4fc0fb51c0 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java @@ -0,0 +1,203 @@ +package org.openhab.binding.knx.internal.handler; + +import static org.openhab.binding.knx.KNXBindingConstants.*; +import static org.openhab.binding.knx.internal.handler.DeviceConstants.*; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.internal.client.DeviceInfoClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.DataUnitBuilder; +import tuwien.auto.calimero.DeviceDescriptor; +import tuwien.auto.calimero.DeviceDescriptor.DD0; +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.mgmt.PropertyAccess.PID; + +@NonNullByDefault +public class DeviceInspector { + + private static final long OPERATION_TIMEOUT = 5000; + private static final long OPERATION_INTERVAL = 2000; + + private final Logger logger = LoggerFactory.getLogger(DeviceInspector.class); + private final DeviceInfoClient client; + private final IndividualAddress address; + + public static class Result { + private final Map properties; + private final Set groupAddresses; + + public Result(Map properties, Set groupAddresses) { + super(); + this.properties = properties; + this.groupAddresses = groupAddresses; + } + + public Map getProperties() { + return properties; + } + + public Set getGroupAddresses() { + return groupAddresses; + } + + } + + public DeviceInspector(DeviceInfoClient client, IndividualAddress address) { + this.client = client; + this.address = address; + } + + private DeviceInfoClient getClient() { + return client; + } + + @Nullable + public Result readDeviceInfo() { + try { + if (getClient().isConnected()) { + logger.debug("Fetching device information for address {}", address); + + Map properties = new HashMap<>(); + properties.putAll(readDeviceDescription(address)); + properties.putAll(readDeviceProperties(address)); + Set groupAddresses = readDeviceMemory(address); + + return new Result(properties, groupAddresses); + } + } catch (Exception e) { + logger.error("An exception occurred while fetching the device description for a device '{}' : {}", address, + e.getMessage(), e); + } + return null; + } + + private Set readDeviceMemory(IndividualAddress address) throws InterruptedException { + Thread.sleep(OPERATION_INTERVAL); + byte[] tableaddress = getClient().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, PID.TABLE_REFERENCE, 1, 1, + false, OPERATION_TIMEOUT); + // According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE + // object, but it seems that a lot, if not all, devices do not do this. In this list we can find out + // what other kind of objects the device is exposing. Most devices do implement some set of objects, + // we will just go ahead and try to read them out irrespective of what is in the IO_LIST + + Set ret = new HashSet<>(); + if (tableaddress != null) { + Thread.sleep(OPERATION_INTERVAL); + byte[] elements = getClient().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, + OPERATION_TIMEOUT); + if (elements != null) { + int numberOfElements = toUnsigned(elements); + logger.debug("The KNX Actor with address {} uses {} group addresses", address, numberOfElements - 1); + + byte[] addressData = null; + while (addressData == null) { + Thread.sleep(OPERATION_INTERVAL); + addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1, 2, false, + OPERATION_TIMEOUT); + if (addressData != null) { + IndividualAddress individualAddress = new IndividualAddress(addressData); + logger.debug("The KNX Actor with address {} its real reported individual address is {}", + address, individualAddress); + } + } + + for (int i = 1; i < numberOfElements; i++) { + addressData = null; + while (addressData == null) { + Thread.sleep(OPERATION_INTERVAL); + addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1 + i * 2, 2, + false, OPERATION_TIMEOUT); + if (addressData != null) { + GroupAddress groupAddress = new GroupAddress(addressData); + ret.add(groupAddress); + } + } + } + + for (GroupAddress anAddress : ret) { + logger.debug("The KNX Actor with address {} uses Group Address {}", address, anAddress); + } + } + } else { + logger.warn("The KNX Actor with address {} does not expose a Group Address table", address); + } + return ret; + } + + private Map readDeviceProperties(IndividualAddress address) throws InterruptedException { + Map ret = new HashMap<>(); + Thread.sleep(OPERATION_INTERVAL); + // check if there is a Device Object in the KNX Actor + byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, false, + OPERATION_TIMEOUT); + if ((elements == null ? 0 : toUnsigned(elements)) == 1) { + + Thread.sleep(OPERATION_INTERVAL); + String ManufacturerID = Manufacturer.getName(toUnsigned(getClient().readDeviceProperties(address, + DEVICE_OBJECT, PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); + Thread.sleep(OPERATION_INTERVAL); + String serialNo = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, + PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); + Thread.sleep(OPERATION_INTERVAL); + String hardwareType = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, + HARDWARE_TYPE, 1, 1, false, OPERATION_TIMEOUT), " "); + Thread.sleep(OPERATION_INTERVAL); + String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, + DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); + + ret.put(MANUFACTURER_NAME, ManufacturerID); + ret.put(MANUFACTURER_SERIAL_NO, serialNo); + ret.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); + ret.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); + logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, ManufacturerID, + hardwareType, firmwareRevision, serialNo); + } else { + logger.warn("The KNX Actor with address {} does not expose a Device Object", address); + } + return ret; + } + + private Map readDeviceDescription(IndividualAddress address) { + Map ret = new HashMap<>(); + byte[] data = getClient().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); + if (data != null) { + final DD0 dd = DeviceDescriptor.DD0.fromType0(data); + + ret.put(FIRMWARE_TYPE, Firmware.getName(dd.getFirmwareType())); + ret.put(FIRMWARE_VERSION, Firmware.getName(dd.getFirmwareVersion())); + ret.put(FIRMWARE_SUBVERSION, Firmware.getName(dd.getSubcode())); + logger.info("The device with address {} is of type {}, version {}, subversion {}", address, + Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), + Firmware.getName(dd.getSubcode())); + } else { + logger.warn("The KNX Actor with address {} does not expose a Device Descriptor", address); + } + return ret; + } + + private int toUnsigned(final byte @Nullable [] data) { + if (data == null) { + return 0; + } + int value = data[0] & 0xff; + if (data.length == 1) { + return value; + } + value = value << 8 | data[1] & 0xff; + if (data.length == 2) { + return value; + } + value = value << 16 | data[2] & 0xff << 8 | data[3] & 0xff; + return value; + } + +} From da3d8e633f535b4000f7745b68133ce4c61e7c07 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Sat, 23 Dec 2017 19:50:15 +0100 Subject: [PATCH 07/52] changed configuration syntax Signed-off-by: Simon Kaufmann --- .../ESH-INF/thing/basic.xml | 124 +---------- .../binding/knx/KNXBindingConstants.java | 31 +-- .../openhab/binding/knx/KNXBusListener.java | 32 --- .../knx/handler/IPBridgeThingHandler.java | 48 ++-- .../handler/IndividualAddressListener.java | 31 --- .../knx/handler/KNXBasicThingHandler.java | 141 +++++------- .../handler/KNXBridgeBaseThingHandler.java | 26 --- .../knx/handler/SerialBridgeThingHandler.java | 6 +- .../binding/knx/handler/TypeHelper.java | 13 ++ .../channel/ChannelConfiguration.java | 41 ++++ .../knx/internal/channel/CommandSpec.java | 39 ++++ .../channel/GroupAddressConfiguration.java | 22 ++ .../internal/channel/KNXChannelSelector.java | 14 +- .../knx/internal/channel/KNXChannelType.java | 135 +++++++---- .../knx/internal/channel/ListenSpec.java | 41 ++++ .../knx/internal/channel/ReadSpec.java | 41 ++++ .../knx/internal/channel/TypeContact.java | 22 +- .../knx/internal/channel/TypeDateTime.java | 22 +- .../knx/internal/channel/TypeDimmer.java | 100 ++++----- .../knx/internal/channel/TypeNumber.java | 21 +- .../internal/channel/TypeRollershutter.java | 96 ++++---- .../knx/internal/channel/TypeSetpoint.java | 22 +- .../knx/internal/channel/TypeString.java | 22 +- .../knx/internal/channel/TypeSwitch.java | 22 +- .../knx/internal/channel/TypeWallButton.java | 25 ++- .../binding/knx/internal/client/IPClient.java | 5 +- .../knx/internal/client/KNXClient.java | 210 ++++++------------ .../knx/internal/client/SerialClient.java | 5 +- .../internal/factory/KNXHandlerFactory.java | 21 +- .../factory/KNXThreadPoolFactory.java | 94 -------- 30 files changed, 676 insertions(+), 796 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml index 9c234cbb41c1d..e7016dd4b4794 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml @@ -44,32 +44,16 @@ The group address in x/y/z notation to toggle the dimmer on or off false - - - The group address in x/y/z notation to read the actual status of the dimmer - false - The group address in x/y/z notation to set the absolute position of the dimmer false - - - The group address in x/y/z notation to read the actual position of the dimmer - false - The group address in x/y/z notation to increase or decrease the dimmer false - - - Flag to indicate if the status group addresses should be read at startup - true - false - Interval between attempts to read the status group addresses on the bus, in seconds @@ -86,40 +70,19 @@ - The group address in x/y/z notation to move the shutter in the DOWN or UP direction - false - - - - The group address in x/y/z notation to read actual direction the shutter is moving + The group address(es) in FANCY notation to move the shutter in the DOWN or UP direction false - The group address in x/y/z notation to start (MOVE) or STOP shutter movement - false - - - - The group address in x/y/z notation to read the motion status of the shutters + The group address(es) in FANCY notation to start (MOVE) or STOP shutter movement false - The group address in x/y/z notation to set the absolute position of the shutter, in % + The group address(es) in FANCY notation to set the absolute position of the shutter, in % false - - - The group address in x/y/z notation to read the absolute position of the shutter - false - - - - Flag to indicate if the status group addresses should be read at startup - true - false - Interval between attempts to read the status group addresses on the bus, in seconds @@ -139,17 +102,6 @@ The group address in x/y/z notation to set the thermostat setpoint true - - - The group address in x/y/z notation to read the current thermostat setpoint - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -169,17 +121,6 @@ The group address in x/y/z notation true - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -199,17 +140,6 @@ The group address in x/y/z notation true - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -229,17 +159,6 @@ The group address in x/y/z notation true - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -259,17 +178,6 @@ The group address in x/y/z notation true - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -284,22 +192,11 @@ A channel to manage a generic Group Addresses with a DPT compatible with Switch Items - + - The group address in x/y/z notation - true - - - - The DPT in "x.y" notation + The group address(es) in FANCY notation true - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds @@ -319,17 +216,6 @@ The group address in x/y/z where the button sends its commands true - - - The DPT in "x.y" notation - true - - - - Flag to indicate if the status group address should be read at startup - true - false - Interval between attempts to read the status group address on the bus, in seconds diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java index 31084b74266bf..15f4b36f3ee90 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -26,21 +26,23 @@ public class KNXBindingConstants { public static final ThingTypeUID THING_TYPE_BASIC = new ThingTypeUID(BINDING_ID, "basic"); // List of all Channel ids - public static final String CHANNEL_CURRENT = "current"; public static final String CHANNEL_DIMMER = "dimmer"; - public static final String CHANNEL_ENERGY = "energy"; public static final String CHANNEL_NUMBER = "number"; public static final String CHANNEL_STRING = "string"; public static final String CHANNEL_CONTACT = "contact"; public static final String CHANNEL_DATETIME = "datetime"; - public static final String CHANNEL_OPERATING_HOURS = "operatinghours"; public static final String CHANNEL_RESET = "reset"; public static final String CHANNEL_ROLLERSHUTTER = "rollershutter"; public static final String CHANNEL_SETPOINT = "setpoint"; - public static final String CHANNEL_STATUSSWITCH = "statusswitch"; public static final String CHANNEL_SWITCH = "switch"; public static final String CHANNEL_GENERIC = "generic"; + public static final String CHANNEL_WALLBUTTON = "wallbutton"; + + public static final String CHANNEL_OPERATING_HOURS = "operatinghours"; + public static final String CHANNEL_CURRENT = "current"; + public static final String CHANNEL_ENERGY = "energy"; + public static final String ERRORS_INTERVAL = "errors5min"; public static final String ERRORS_STARTUP = "errorsall"; @@ -56,42 +58,21 @@ public class KNXBindingConstants { // List of all Configuration parameters public static final String ADDRESS = "address"; public static final String CURRENT_GA = "currentGA"; - public static final String DPT = "dpt"; - public static final String DESCRIPTION = "description"; public static final String ENERGY_GA = "energyGA"; - public static final String FETCH = "fetch"; public static final String GROUPADDRESS = "groupaddress"; - public static final String INCREASE_DECREASE_ADDRESS = "increasedecreaseGA"; - public static final String INCREASE_DECREASE_DPT = "increasedecreaseDPT"; public static final String INCREASE_DECREASE_GA = "increaseDecreaseGA"; public static final String INTERVAL = "interval"; public static final String IP_ADDRESS = "ipAddress"; public static final String IP_CONNECTION_TYPE = "ipConnectionType"; public static final String LOCAL_IP = "localIp"; public static final String LOCAL_SOURCE_ADDRESS = "localSourceAddr"; - public static final String OPERATING_HOURS_GA = "operatingGA"; - public static final String PERCENT_DPT = "percentDPT"; - public static final String PERCENT_GA = "percentGA"; public static final String PORT_NUMBER = "portNumber"; public static final String POSITION_GA = "positionGA"; - public static final String POSITION_STATUS_GA = "positionStatusGA"; - public static final String READ = "read"; public static final String SERIAL_PORT = "serialPort"; public static final String SETPOINT_GA = "setpointGA"; - public static final String STATUS_GA = "statusGA"; public static final String STOP_MOVE_GA = "stopMoveGA"; - public static final String STOP_MOVE_STATUS_GA = "stopMoveStatusGA"; public static final String SWITCH_GA = "switchGA"; - public static final String TRANSMIT = "transmit"; - public static final String UNIT = "unit"; public static final String UP_DOWN_GA = "upDownGA"; - public static final String UP_DOWN_STATUS_GA = "upDownStatusGA"; - public static final String UPDATE = "update"; - public static final String WRITE = "write"; - - // List of all knxproj Namespace Identifierss - public static final String KNX_PROJECT_12 = "http://knx.org/xml/project/12"; - public static final String KNX_PROJECT_13 = "http://knx.org/xml/project/13"; // The default multicast ip address (see iana EIBnet/IP diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java deleted file mode 100644 index 94bb8face090a..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBusListener.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx; - -import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.IndividualAddress; - -/** - * The {@link KNXBusListener} is an interface that needs to be - * implemented by classes that want to listen to KNX bus - * - * @author Karel Goderis - Initial contribution - */ -public interface KNXBusListener { - - /** - * - * Called when a KNX telegram is seen on the KNX bus - * - * @param source - the KNX source sending the telegram - * @param destination - the destination group address - * @param asdu - the telegram payload - */ - public void onActivity(IndividualAddress source, GroupAddress destination, byte[] asdu); - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index 30b0259dc4fed..4e966f8831f84 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -43,10 +43,12 @@ public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { private IPClient client; private final NetworkAddressService networkAddressService; + private final TypeHelper typeHelper; - public IPBridgeThingHandler(Bridge bridge, NetworkAddressService networkAddressService) { + public IPBridgeThingHandler(Bridge bridge, NetworkAddressService networkAddressService, TypeHelper typeHelper) { super(bridge); this.networkAddressService = networkAddressService; + this.typeHelper = typeHelper; } @Override @@ -54,29 +56,25 @@ public void initialize() { IPBridgeConfiguration config = getConfigAs(IPBridgeConfiguration.class); String localSource = config.getLocalSourceAddr(); String connectionTypeString = config.getIpConnectionType(); - String ip = ""; - int port = 0; + int port = config.getPortNumber().intValue(); + String ip = config.getIpAddress(); InetSocketAddress localEndPoint = null; boolean useNAT = false; - int ipConnectionType = MODE_ROUTER.equalsIgnoreCase(connectionTypeString) ? KNXNetworkLinkIP.ROUTING - : KNXNetworkLinkIP.TUNNELING; - if (StringUtils.isNotBlank(connectionTypeString)) { - if (MODE_TUNNEL.equalsIgnoreCase(connectionTypeString)) { - ip = config.getIpAddress(); - port = config.getPortNumber().intValue(); - useNAT = config.getUseNAT() != null ? config.getUseNAT() : false; - } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { - useNAT = false; - if (StringUtils.isBlank(ip)) { - ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; - } - } else { - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, - MessageFormat.format( - "Unknown IP connection type {0}. Known types are either 'TUNNEL' or 'ROUTER'", - connectionTypeString)); - return; + int ipConnectionType; + if (MODE_TUNNEL.equalsIgnoreCase(connectionTypeString)) { + useNAT = config.getUseNAT() != null ? config.getUseNAT() : false; + ipConnectionType = KNXNetworkLinkIP.TUNNELING; + } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { + useNAT = false; + if (StringUtils.isBlank(ip)) { + ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; } + ipConnectionType = KNXNetworkLinkIP.ROUTING; + } else { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + MessageFormat.format("Unknown IP connection type {0}. Known types are either 'TUNNEL' or 'ROUTER'", + connectionTypeString)); + return; } if (StringUtils.isNotBlank(config.getLocalIp())) { @@ -85,12 +83,13 @@ public void initialize() { localEndPoint = new InetSocketAddress(networkAddressService.getPrimaryIpv4HostAddress(), 0); } + updateStatus(ThingStatus.UNKNOWN); client = new IPClient(ipConnectionType, ip, localSource, port, localEndPoint, useNAT, config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), - config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), this); + config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), this, + typeHelper); client.initialize(); - updateStatus(ThingStatus.UNKNOWN); } @Override @@ -98,6 +97,7 @@ public void dispose() { super.dispose(); if (client != null) { client.dispose(); + client = null; } } @@ -105,7 +105,7 @@ public void dispose() { protected KNXClient getClient() { KNXClient ret = client; if (ret == null) { - throw new IllegalStateException(); + throw new IllegalStateException("Thing handler is not initialized"); } return ret; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java deleted file mode 100644 index 540aa4ad7a80a..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IndividualAddressListener.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.handler; - -import org.eclipse.jdt.annotation.NonNullByDefault; - -import tuwien.auto.calimero.IndividualAddress; - -/** - * The {@link IndividualAddressListener} is an interface that needs to be - * implemented by classes that want to listen to specific Individual Addresses - * on the KNX bus - * - * @author Karel Goderis - Initial contribution - */ -@NonNullByDefault -public interface IndividualAddressListener extends TelegramListener { - - /** - * Called to verify if the IndividualAddressListener has an interest in the given Individual Address - * - * @param destination - */ - public boolean listensTo(IndividualAddress source); -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java index 452162d9bade0..0d5c33589c75b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java @@ -13,6 +13,7 @@ import java.math.BigDecimal; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; @@ -33,9 +34,13 @@ import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; +import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.internal.channel.CommandSpec; import org.openhab.binding.knx.internal.channel.KNXChannelSelector; import org.openhab.binding.knx.internal.channel.KNXChannelType; +import org.openhab.binding.knx.internal.channel.ListenSpec; +import org.openhab.binding.knx.internal.channel.ReadSpec; import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.config.BasicConfig; import org.openhab.binding.knx.internal.handler.DeviceInspector; @@ -57,7 +62,7 @@ * @author Karel Goderis - Initial contribution */ @NonNullByDefault -public class KNXBasicThingHandler extends BaseThingHandler implements IndividualAddressListener, GroupAddressListener { +public class KNXBasicThingHandler extends BaseThingHandler implements GroupAddressListener { private final Random random = new Random(); @@ -125,9 +130,8 @@ public void initialize() { private void initializeGroupAddresses() { forAllChannels((selector, channelConfiguration) -> { groupAddresses.addAll(selector.getReadAddresses(channelConfiguration)); - groupAddresses.addAll(selector.getWriteAddresses(channelConfiguration, null)); - groupAddresses.addAll(selector.getTransmitAddresses(channelConfiguration, null)); - groupAddresses.addAll(selector.getUpdateAddresses(channelConfiguration, null)); + groupAddresses.addAll(selector.getWriteAddresses(channelConfiguration)); + groupAddresses.addAll(selector.getListenAddresses(channelConfiguration)); }); } @@ -211,13 +215,7 @@ private void forAllChannels(ChannelFunction function) { @Override public void channelLinked(ChannelUID channelUID) { withKNXType(channelUID, (selector, configuration) -> { - Boolean mustRead = (Boolean) configuration.get(READ); - BigDecimal readInterval = (BigDecimal) configuration.get(INTERVAL); - for (GroupAddress address : selector.getReadAddresses(configuration)) { - if (mustRead || readInterval.intValue() > 0) { - scheduleReadJob(address, selector.getDPT(address, configuration), true, BigDecimal.ZERO); - } - } + scheduleRead(selector, configuration); }); } @@ -226,20 +224,24 @@ private void scheduleReadJobs() { for (Channel channel : getThing().getChannels()) { if (isLinked(channel.getUID().getId())) { - withKNXType(channel, (selector, channelConfiguration) -> { - Boolean mustRead = (Boolean) channelConfiguration.get(READ); - BigDecimal readInterval = (BigDecimal) channelConfiguration.get(INTERVAL); - for (GroupAddress address : selector.getReadAddresses(channelConfiguration)) { - scheduleReadJob(address, selector.getDPT(address, channelConfiguration), mustRead, - readInterval); - } + withKNXType(channel, (selector, configuration) -> { + scheduleRead(selector, configuration); }); } } } - private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, boolean immediate, - @Nullable BigDecimal readInterval) { + private void scheduleRead(KNXChannelType selector, Configuration configuration) throws KNXFormatException { + BigDecimal readInterval = (BigDecimal) configuration.get(INTERVAL); + List readSpecs = selector.getReadSpec(configuration); + for (ReadSpec readSpec : readSpecs) { + for (GroupAddress groupAddress : readSpec.getReadAddresses()) { + scheduleReadJob(groupAddress, readSpec.getDPT(), readInterval); + } + } + } + + private void scheduleReadJob(GroupAddress groupAddress, String dpt, @Nullable BigDecimal readInterval) { boolean recurring = readInterval != null && readInterval.intValue() > 0; Runnable readRunnable = () -> { @@ -252,17 +254,15 @@ private void scheduleReadJob(GroupAddress groupAddress, @Nullable String dpt, bo getClient().readDatapoint(datapoint); } }; - if (immediate) { - getBridgeHandler().getScheduler().schedule(readRunnable, 0, TimeUnit.SECONDS); - } - if (recurring && readInterval != null) { + if (recurring) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { - int initialDelay = immediate ? 0 : readInterval.intValue(); - future = getBridgeHandler().getScheduler().scheduleWithFixedDelay(readRunnable, initialDelay, + future = getBridgeHandler().getScheduler().scheduleWithFixedDelay(readRunnable, 0, readInterval.intValue(), TimeUnit.SECONDS); readFutures.put(groupAddress, future); } + } else { + getBridgeHandler().getScheduler().submit(readRunnable); } } @@ -281,11 +281,6 @@ public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { } } - @Override - public boolean listensTo(IndividualAddress source) { - return address != null && address.equals(source); - } - @Override public boolean listensTo(GroupAddress destination) { return groupAddresses.contains(destination) || foundGroupAddresses.contains(destination); @@ -296,10 +291,8 @@ public void handleCommand(ChannelUID channelUID, Command command) { logger.trace("Handling a Command ({}) for Channel {}", command, channelUID); if (command instanceof RefreshType) { logger.debug("Refreshing channel {}", channelUID); - withKNXType(channelUID, (selector, channelConfiguration) -> { - for (GroupAddress address : selector.getReadAddresses(channelConfiguration)) { - scheduleReadJob(address, selector.getDPT(address, channelConfiguration), true, BigDecimal.ZERO); - } + withKNXType(channelUID, (selector, configuration) -> { + scheduleRead(selector, configuration); }); } else { switch (channelUID.getId()) { @@ -316,22 +309,11 @@ public void handleCommand(ChannelUID channelUID, Command command) { } - private void sendToKNX(ChannelUID channelUID, Type type) { + private void sendToKNX(ChannelUID channelUID, Command command) { withKNXType(channelUID, (selector, channelConfiguration) -> { - Type convertedType = selector.convertType(channelConfiguration, type); - if (logger.isTraceEnabled()) { - Channel channel = getThing().getChannel(channelUID.getId()); - if (channel != null) { - logger.trace("Sending to channel {} {} {} {}/{} : {} -> {}", channelUID.getId(), - channel.getConfiguration().get(DPT), channel.getAcceptedItemType(), - channel.getConfiguration().get(READ), channel.getConfiguration().get(WRITE), type, - convertedType); - } - } - if (convertedType != null) { - for (GroupAddress address : selector.getWriteAddresses(channelConfiguration, convertedType)) { - getClient().writeToKNX(address, selector.getDPT(address, channelConfiguration), convertedType); - } + CommandSpec commandSpec = selector.getCommandSpec(channelConfiguration, command); + if (commandSpec != null) { + getClient().writeToKNX(commandSpec); } }); } @@ -350,53 +332,50 @@ public void onGroupReadResponse(KNXClient client, IndividualAddress source, Grou @Override public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { - logger.trace("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { - withKNXType(channel, (selector, channelConfiguration) -> { - Set addresses = selector.getReadAddresses(channelConfiguration); - addresses.addAll(selector.getTransmitAddresses(channelConfiguration, null)); - - if (addresses.contains(destination)) { + withKNXType(channel, (selector, configuration) -> { + ListenSpec listenSpec = selector.getListenSpec(configuration, destination); + if (listenSpec != null) { logger.trace("Thing {} processes a Group Write telegram for destination '{}' for channel '{}'", getThing().getUID(), destination, channel.getUID()); - processDataReceived(destination, asdu, selector.getDPT(destination, channelConfiguration), - channel.getUID()); + processDataReceived(destination, asdu, listenSpec, channel.getUID()); } }); } } - private void processDataReceived(GroupAddress destination, byte[] asdu, @Nullable String dpt, + private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSpec listenSpec, ChannelUID channelUID) { - if (dpt != null) { - if (!typeHelper.isDPTSupported(dpt)) { - logger.warn("DPT {} is not supported by the KNX binding.", dpt); - return; - } + if (!typeHelper.isDPTSupported(listenSpec.getDPT())) { + logger.warn("DPT {} is not supported by the KNX binding.", listenSpec.getDPT()); + return; + } - Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, dpt); - Type type = typeHelper.getType(datapoint, asdu); + Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, listenSpec.getDPT()); + Type type = typeHelper.getType(datapoint, asdu); - if (type != null) { - postCommand(channelUID, (Command) type); - } else { - final char[] hexCode = "0123456789ABCDEF".toCharArray(); - StringBuilder sb = new StringBuilder(2 + asdu.length * 2); - sb.append("0x"); - for (byte b : asdu) { - sb.append(hexCode[(b >> 4) & 0xF]); - sb.append(hexCode[(b & 0xF)]); - } + if (type != null) { + updateState(channelUID, (State) type); + } else { + String s = asduToHex(asdu); + logger.warn( + "Ignoring KNX bus data: couldn't transform to Type (not supported). Destination='{}', datapoint='{}', data='{}'", + destination, datapoint, s); + } + } - logger.warn( - "Ignoring KNX bus data: couldn't transform to Type (not supported). Destination='{}', datapoint='{}', data='{}'", - destination, datapoint, sb); - return; - } + private String asduToHex(byte[] asdu) { + final char[] hexCode = "0123456789ABCDEF".toCharArray(); + StringBuilder sb = new StringBuilder(2 + asdu.length * 2); + sb.append("0x"); + for (byte b : asdu) { + sb.append(hexCode[(b >> 4) & 0xF]); + sb.append(hexCode[(b & 0xF)]); } + return sb.toString(); } public void restart() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 965ffc7f362c4..99142a49440ca 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -15,15 +15,12 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ChannelUID; -import org.eclipse.smarthome.core.thing.Thing; import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.binding.BaseBridgeHandler; -import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; import org.openhab.binding.knx.internal.client.KNXClient; -import org.openhab.binding.knx.internal.factory.KNXThreadPoolFactory; import tuwien.auto.calimero.IndividualAddress; import tuwien.auto.calimero.exception.KNXException; @@ -38,13 +35,8 @@ @NonNullByDefault public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements StatusUpdateCallback { - private static final int CORE_POOL_SIZE = 5; - protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); - @Nullable - private ScheduledExecutorService knxScheduler; - @FunctionalInterface private interface ReadFunction { R apply(T t) throws KNXException, InterruptedException; @@ -56,18 +48,6 @@ public KNXBridgeBaseThingHandler(Bridge bridge) { protected abstract KNXClient getClient(); - @Override - public void childHandlerInitialized(ThingHandler childHandler, Thing childThing) { - knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), - CORE_POOL_SIZE + getThing().getThings().size() / 10); - } - - @Override - public void childHandlerDisposed(ThingHandler childHandler, Thing childThing) { - knxScheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), - CORE_POOL_SIZE + getThing().getThings().size() / 10); - } - @Override public void handleUpdate(ChannelUID channelUID, State newState) { // Nothing to do here @@ -79,12 +59,6 @@ public void handleCommand(ChannelUID channelUID, Command command) { } public ScheduledExecutorService getScheduler() { - ScheduledExecutorService scheduler = knxScheduler; - if (scheduler == null) { - scheduler = KNXThreadPoolFactory.getPrioritizedScheduledPool(getThing().getUID().getBindingId(), - CORE_POOL_SIZE); - knxScheduler = scheduler; - } return scheduler; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java index 5140bbc5832e4..cce35b472e840 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -28,18 +28,18 @@ public class SerialBridgeThingHandler extends KNXBridgeBaseThingHandler { private final SerialClient client; - public SerialBridgeThingHandler(Bridge bridge) { + public SerialBridgeThingHandler(Bridge bridge, TypeHelper typeHelper) { super(bridge); SerialBridgeConfiguration config = getConfigAs(SerialBridgeConfiguration.class); client = new SerialClient(config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), config.getReadingPause().intValue(), - config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this); + config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this, typeHelper); } @Override public void initialize() { - client.initialize(); updateStatus(ThingStatus.UNKNOWN); + client.initialize(); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java index 230b2afb25009..e5694a3e875c5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java @@ -24,4 +24,17 @@ public interface TypeHelper { @Nullable Class toTypeClass(String dpt); + /** + * Transforms a {@link Type} into a datapoint type value for the KNX bus. + * + * @param type + * the {@link Type} to transform + * @param dpt + * the datapoint type to which should be converted + * + * @return the corresponding KNX datapoint type value as a string + */ + @Nullable + String toDPTValue(Type type, String dpt); + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java new file mode 100644 index 0000000000000..a889095e71043 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java @@ -0,0 +1,41 @@ +package org.openhab.binding.knx.internal.channel; + +import static java.util.stream.Collectors.toList; + +import java.util.List; +import java.util.stream.Stream; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +@NonNullByDefault +public class ChannelConfiguration { + + private final @Nullable String dpt; + private final GroupAddressConfiguration mainGA; + private final List listenGAs; + + public ChannelConfiguration(@Nullable String dpt, GroupAddressConfiguration mainGA, + List listenGAs) { + this.dpt = dpt; + this.mainGA = mainGA; + this.listenGAs = listenGAs; + } + + public @Nullable String getDPT() { + return dpt; + } + + public GroupAddressConfiguration getMainGA() { + return mainGA; + } + + public List getListenGAs() { + return Stream.concat(Stream.of(mainGA), listenGAs.stream()).collect(toList()); + } + + public List getReadGAs() { + return getListenGAs().stream().filter(ga -> ga.isRead()).collect(toList()); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java new file mode 100644 index 0000000000000..7cf3c1f0135d8 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java @@ -0,0 +1,39 @@ +package org.openhab.binding.knx.internal.channel; + +import org.eclipse.smarthome.core.types.Command; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +public class CommandSpec { + + private final Command command; + private final String dpt; + private final GroupAddress groupAddress; + + private CommandSpec(String dpt, GroupAddress groupAddress, Command command) { + super(); + this.dpt = dpt; + this.groupAddress = groupAddress; + this.command = command; + } + + public CommandSpec(ChannelConfiguration channelConfiguration, String defaultDPT, Command command) + throws KNXFormatException { + this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, + new GroupAddress(channelConfiguration.getMainGA().getGA()), command); + } + + public Command getCommand() { + return command; + } + + public String getDpt() { + return dpt; + } + + public GroupAddress getGroupAddress() { + return groupAddress; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java new file mode 100644 index 0000000000000..5539eb4f41dc6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java @@ -0,0 +1,22 @@ +package org.openhab.binding.knx.internal.channel; + +public class GroupAddressConfiguration { + + private final String ga; + private final boolean read; + + public GroupAddressConfiguration(String ga, boolean read) { + super(); + this.ga = ga; + this.read = read; + } + + public String getGA() { + return ga; + } + + public boolean isRead() { + return read; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java index 15b3f95204cd8..53dd5c261ed8d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -22,15 +22,15 @@ public final class KNXChannelSelector { private static final Set TYPES = Collections.unmodifiableSet(Stream.of(// - new TypeContact(), // - new TypeDimmer(), // + // new TypeContact(), // + // new TypeDimmer(), // new TypeRollershutter(), // - new TypeSetpoint(), // + // new TypeSetpoint(), // new TypeSwitch(), // - new TypeWallButton(), // - new TypeDateTime(), // - new TypeNumber(), // - new TypeString()).collect(toSet())); + // new TypeWallButton(), // + // new TypeDateTime(), // + // new TypeString(), // + new TypeNumber()).collect(toSet())); private KNXChannelSelector() { // prevent instantiation diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index 47091c954f627..ff8b2c38ab94f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -8,17 +8,22 @@ */ package org.openhab.binding.knx.internal.channel; +import static java.util.stream.Collectors.*; + +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; import java.util.Objects; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; - -import com.google.common.collect.Sets; +import org.eclipse.smarthome.core.types.Command; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -26,13 +31,82 @@ @NonNullByDefault public abstract class KNXChannelType { + private static final Pattern PATTERN = Pattern.compile( + "^((?[0-9]{1,2}\\.[0-9]{3}):)?(?\\<)?(?[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3})(?(\\+(\\\\<)?(?[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}))"); + + @Nullable + protected ChannelConfiguration parse(String fancy) { + Matcher matcher = PATTERN.matcher(fancy); + + if (matcher.matches()) { + + // Listen GAs + String input = matcher.group("listenGAs"); + Matcher m2 = PATTERN_LISTEN.matcher(input); + List listenGAs = new LinkedList<>(); + while (m2.find()) { + listenGAs.add(new GroupAddressConfiguration(m2.group("GA"), m2.group("read") != null)); + } + + // Main GA + GroupAddressConfiguration mainGA = new GroupAddressConfiguration(matcher.group("mainGA"), + matcher.group("read") != null); + + return new ChannelConfiguration(matcher.group("dpt"), mainGA, listenGAs); + } + return null; + } + + protected abstract Set getAllGAKeys(); + + public Set getListenAddresses(Configuration channelConfiguration) { + Set ret = new HashSet<>(); + for (String key : getAllGAKeys()) { + ret.addAll(parse((String) channelConfiguration.get(key)).getListenGAs().stream() + .map(KNXChannelType::toGroupAddress).collect(toSet())); + } + return ret; + } + + public Set getReadAddresses(Configuration channelConfiguration) { + Set ret = new HashSet<>(); + for (String key : getAllGAKeys()) { + ret.addAll(parse((String) channelConfiguration.get(key)).getReadGAs().stream() + .map(KNXChannelType::toGroupAddress).collect(toSet())); + } + return ret; + } + + public Set getWriteAddresses(Configuration channelConfiguration) { + Set ret = new HashSet<>(); + for (String key : getAllGAKeys()) { + GroupAddress ga = toGroupAddress(parse((String) channelConfiguration.get(key)).getMainGA()); + if (ga != null) { + ret.add(ga); + } + } + return ret; + } + + private static @Nullable GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + try { + return new GroupAddress(ga.getGA()); + } catch (KNXFormatException e) { + e.printStackTrace(); + } + return null; + } + private final String channelTypeID; - public KNXChannelType(String channelTypeID) { + KNXChannelType(String channelTypeID) { this.channelTypeID = channelTypeID; } - public final String getChannelID() { + final String getChannelID() { return channelTypeID; } @@ -55,51 +129,32 @@ protected final boolean isEquals(@Nullable Configuration configuration, String a return false; } - public abstract String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException; - - protected Set getReadAddressKeys() { - return Collections.emptySet(); - } - - public final Set getReadAddresses(@Nullable Configuration configuration) throws KNXFormatException { - return getAddresses(configuration, getReadAddressKeys()); - } - - protected Set getWriteAddressKeys(@Nullable Type type) { - return Collections.emptySet(); - } - - public final Set getWriteAddresses(@Nullable Configuration configuration, @Nullable Type type) - throws KNXFormatException { - return getAddresses(configuration, getWriteAddressKeys(type)); + protected final Set asSet(String... values) { + return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(values))); } - protected Set getTransmitAddressKeys(@Nullable Type type) { - return Collections.emptySet(); - } + public abstract @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException; - public final Set getTransmitAddresses(Configuration configuration, @Nullable Type type) + protected final CommandSpec getDefaultCommandSpec(Configuration configuration, String key, Command command) throws KNXFormatException { - return getAddresses(configuration, getTransmitAddressKeys(type)); + return new CommandSpec(parse((String) configuration.get(key)), getDefaultDPT(key), command); } - protected Set getUpdateAddressKeys(@Nullable Type type) { - return Collections.emptySet(); + public final List getReadSpec(Configuration configuration) throws KNXFormatException { + return getAllGAKeys().stream() + .map(key -> new ReadSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) + .filter(spec -> !spec.getReadAddresses().isEmpty()).collect(toList()); } - public Set getUpdateAddresses(Configuration configuration, @Nullable Type type) - throws KNXFormatException { - return getAddresses(configuration, getUpdateAddressKeys(type)); - } - - protected final Set asSet(String... values) { - return Sets.newHashSet(values); + public final @Nullable ListenSpec getListenSpec(Configuration configuration, GroupAddress groupAddress) { + return getAllGAKeys().stream() + .map(key -> new ListenSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) + .filter(spec -> !spec.getListenAddresses().isEmpty()) + .filter(spec -> spec.getListenAddresses().contains(groupAddress)).findFirst().orElse(null); } - @Nullable - public Type convertType(Configuration configuration, @Nullable Type type) { - return type; - } + protected abstract String getDefaultDPT(String gaConfigKey); @Override public String toString() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java new file mode 100644 index 0000000000000..6e6ab1e0c26fb --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java @@ -0,0 +1,41 @@ +package org.openhab.binding.knx.internal.channel; + +import static java.util.stream.Collectors.toList; + +import java.util.List; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +public class ListenSpec { + + private final String dpt; + private final List listenAddresses; + + public ListenSpec(ChannelConfiguration channelConfiguration, String defaultDPT) { + this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, + channelConfiguration.getListenGAs().stream().map(ListenSpec::toGroupAddress).collect(toList())); + } + + private ListenSpec(String dpt, List listenAddresses) { + this.dpt = dpt; + this.listenAddresses = listenAddresses; + } + + public String getDPT() { + return dpt; + } + + public List getListenAddresses() { + return listenAddresses; + } + + private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + try { + return new GroupAddress(ga.getGA()); + } catch (KNXFormatException e) { + return null; + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java new file mode 100644 index 0000000000000..e62ee5c176622 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java @@ -0,0 +1,41 @@ +package org.openhab.binding.knx.internal.channel; + +import static java.util.stream.Collectors.toList; + +import java.util.List; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +public class ReadSpec { + + private final String dpt; + private final List readAddresses; + + public ReadSpec(ChannelConfiguration channelConfiguration, String defaultDPT) { + this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, + channelConfiguration.getReadGAs().stream().map(ReadSpec::toGroupAddress).collect(toList())); + } + + public ReadSpec(String dpt, List readAddresses) { + this.dpt = dpt; + this.readAddresses = readAddresses; + } + + public String getDPT() { + return dpt; + } + + public List getReadAddresses() { + return readAddresses; + } + + private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + try { + return new GroupAddress(ga.getGA()); + } catch (KNXFormatException e) { + return null; + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java index 32dafbc1077c3..f147c041ff785 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java @@ -10,13 +10,18 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeContact extends KNXChannelType { TypeContact() { @@ -24,18 +29,19 @@ class TypeContact extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return (String) configuration.get(DPT); + protected Set getAllGAKeys() { + return Collections.singleton(GROUPADDRESS); } @Override - public Set getReadAddressKeys() { - return asSet(GROUPADDRESS); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return getDefaultCommandSpec(configuration, GROUPADDRESS, command); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(GROUPADDRESS); + protected String getDefaultDPT(String gaConfigKey) { + return DPTXlatorBoolean.DPT_OPENCLOSE.getID(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java index 861edadbcad96..1844218c1549e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java @@ -10,13 +10,18 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlatorDateTime; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeDateTime extends KNXChannelType { TypeDateTime() { @@ -24,18 +29,19 @@ class TypeDateTime extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return (String) configuration.get(DPT); + protected Set getAllGAKeys() { + return Collections.singleton(GROUPADDRESS); } @Override - protected Set getReadAddressKeys() { - return asSet(GROUPADDRESS); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return getDefaultCommandSpec(configuration, GROUPADDRESS, command); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(GROUPADDRESS); + protected String getDefaultDPT(String gaConfigKey) { + return DPTXlatorDateTime.DPT_DATE_TIME.getID(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index 7e7f6d9ca4f79..cf4f11b4e4f44 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -8,20 +8,27 @@ */ package org.openhab.binding.knx.internal.channel; +import static java.util.stream.Collectors.toSet; import static org.openhab.binding.knx.KNXBindingConstants.*; -import java.util.Collections; +import java.util.Objects; import java.util.Set; +import java.util.stream.Stream; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; import org.eclipse.smarthome.core.library.types.OnOffType; import org.eclipse.smarthome.core.library.types.PercentType; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.library.types.UpDownType; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlator3BitControlled; +import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; +import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeDimmer extends KNXChannelType { TypeDimmer() { @@ -29,66 +36,53 @@ class TypeDimmer extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { - if (isEquals(configuration, SWITCH_GA, groupAddress)) { - return "1.001"; - } - if (isEquals(configuration, STATUS_GA, groupAddress)) { - return "1.001"; - } - if (isEquals(configuration, POSITION_GA, groupAddress)) { - return "5.001"; + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + ChannelConfiguration confSwitch = parse((String) configuration.get(SWITCH_GA)); + ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); + + if (command instanceof OnOffType) { + if (confSwitch != null) { + return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), command); + } else if (confPosition != null) { + return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), + (PercentType) ((OnOffType) command).as(PercentType.class)); + } } - if (isEquals(configuration, POSITION_STATUS_GA, groupAddress)) { - return "5.001"; + + if (command instanceof PercentType) { + if (confPosition != null) { + return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); + } else if (confSwitch != null) { + return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), + (OnOffType) ((PercentType) command).as(OnOffType.class)); + } } - if (isEquals(configuration, INCREASE_DECREASE_GA, groupAddress)) { - return "3.007"; + + if (command instanceof UpDownType) { + return new CommandSpec(parse((String) configuration.get(INCREASE_DECREASE_GA)), + getDefaultDPT(INCREASE_DECREASE_GA), command); } - throw new IllegalArgumentException("Group address " + groupAddress + " is none of the configured addresses"); - } - @Override - protected Set getReadAddressKeys() { - return asSet(STATUS_GA, POSITION_GA); + return null; } @Override - protected Set getWriteAddressKeys(Type type) { - if (type == null) { - return asSet(SWITCH_GA, INCREASE_DECREASE_GA, POSITION_GA); - } else { - if (type instanceof OnOffType) { - return asSet(SWITCH_GA); - } - if (type instanceof PercentType) { - return asSet(POSITION_GA); - } - if (type instanceof IncreaseDecreaseType) { - return asSet(INCREASE_DECREASE_GA); - } - } - return Collections.emptySet(); + protected Set getAllGAKeys() { + return Stream.of(SWITCH_GA, POSITION_GA, INCREASE_DECREASE_GA).collect(toSet()); } @Override - public Type convertType(Configuration configuration, Type type) { - if (type instanceof OnOffType) { - if (configuration.get(SWITCH_GA) != null) { - return type; - } else if (configuration.get(POSITION_GA) != null) { - return ((OnOffType) type).as(PercentType.class); - } + protected String getDefaultDPT(String gaConfigKey) { + if (Objects.equals(gaConfigKey, INCREASE_DECREASE_GA)) { + return DPTXlator3BitControlled.DPT_CONTROL_DIMMING.getID(); } - - if (type instanceof PercentType) { - if (configuration.get(POSITION_GA) != null) { - return type; - } else if (configuration.get(SWITCH_GA) != null) { - return ((PercentType) type).as(OnOffType.class); - } + if (Objects.equals(gaConfigKey, SWITCH_GA)) { + return DPTXlatorBoolean.DPT_SWITCH.getID(); } - - return type; + if (Objects.equals(gaConfigKey, POSITION_GA)) { + return DPTXlator8BitUnsigned.DPT_SCALING.getID(); + } + throw new IllegalArgumentException("GA configuration '" + gaConfigKey + "' is not supported"); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java index 750cd7c75b6a8..abd7a3402869f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java @@ -10,13 +10,17 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeNumber extends KNXChannelType { TypeNumber() { @@ -24,18 +28,19 @@ class TypeNumber extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return (String) configuration.get(DPT); + protected String getDefaultDPT(String gaConfigKey) { + return "9.001"; } @Override - protected Set getReadAddressKeys() { - return asSet(GROUPADDRESS); + protected Set getAllGAKeys() { + return Collections.singleton(GROUPADDRESS); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(GROUPADDRESS); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return new CommandSpec(parse((String) configuration.get(GROUPADDRESS)), getDefaultDPT(GROUPADDRESS), command); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index 247c4ee5835ae..7fbee5b802565 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -8,21 +8,26 @@ */ package org.openhab.binding.knx.internal.channel; +import static java.util.stream.Collectors.toSet; import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Objects; import java.util.Set; +import java.util.stream.Stream; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.library.types.PercentType; import org.eclipse.smarthome.core.library.types.StopMoveType; import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import com.google.common.collect.Sets; - -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; +import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeRollershutter extends KNXChannelType { TypeRollershutter() { @@ -30,69 +35,54 @@ class TypeRollershutter extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) throws KNXFormatException { - if (isEquals(configuration, UP_DOWN_GA, groupAddress)) { - return "1.008"; - } - if (isEquals(configuration, UP_DOWN_STATUS_GA, groupAddress)) { - return "1.008"; - } - if (isEquals(configuration, STOP_MOVE_GA, groupAddress)) { - return "1.010"; - } - if (isEquals(configuration, STOP_MOVE_STATUS_GA, groupAddress)) { - return "1.010"; + protected String getDefaultDPT(String gaConfigKey) { + if (Objects.equals(gaConfigKey, UP_DOWN_GA)) { + return DPTXlatorBoolean.DPT_UPDOWN.getID(); } - if (isEquals(configuration, POSITION_GA, groupAddress)) { - return "5.001"; + if (Objects.equals(gaConfigKey, STOP_MOVE_GA)) { + return DPTXlatorBoolean.DPT_START.getID(); } - if (isEquals(configuration, POSITION_STATUS_GA, groupAddress)) { - return "5.001"; + if (Objects.equals(gaConfigKey, POSITION_GA)) { + return DPTXlator8BitUnsigned.DPT_SCALING.getID(); } - throw new IllegalArgumentException("Group address " + groupAddress + " is none of the configured addresses"); + throw new IllegalArgumentException("GA configuration '" + gaConfigKey + "' is not supported"); } @Override - protected Set getReadAddressKeys() { - return asSet(UP_DOWN_STATUS_GA, STOP_MOVE_STATUS_GA, POSITION_STATUS_GA); - } + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + ChannelConfiguration confUpDown = parse((String) configuration.get(UP_DOWN_GA)); + ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); - @Override - protected Set getWriteAddressKeys(Type type) { - if (type == null) { - return asSet(UP_DOWN_GA, STOP_MOVE_GA, POSITION_GA); - } else { - if (type instanceof UpDownType) { - return asSet(UP_DOWN_GA); - } - if (type instanceof PercentType) { - return asSet(POSITION_GA); - } - if (type instanceof StopMoveType) { - return asSet(STOP_MOVE_GA); + if (command instanceof UpDownType) { + if (confUpDown != null) { + return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), command); + } else if (confPosition != null) { + return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), + (PercentType) ((UpDownType) command).as(PercentType.class)); } } - return Sets.newHashSet(); - } - @Override - public Type convertType(Configuration configuration, Type type) { - if (type instanceof UpDownType) { - if (configuration.get(UP_DOWN_GA) != null) { - return type; - } else if (configuration.get(POSITION_GA) != null) { - return ((UpDownType) type).as(PercentType.class); + if (command instanceof PercentType) { + if (confPosition != null) { + return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); + } else if (confUpDown != null) { + return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), + (UpDownType) ((PercentType) command).as(UpDownType.class)); } } - if (type instanceof PercentType) { - if (configuration.get(POSITION_GA) != null) { - return type; - } else if (configuration.get(UP_DOWN_GA) != null) { - return ((PercentType) type).as(UpDownType.class); - } + if (command instanceof StopMoveType) { + return new CommandSpec(parse((String) configuration.get(STOP_MOVE_GA)), getDefaultDPT(STOP_MOVE_GA), + command); } - return type; + return null; } + + @Override + protected Set getAllGAKeys() { + return Stream.of(UP_DOWN_GA, STOP_MOVE_GA, POSITION_GA).collect(toSet()); + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java index 87224abe2287a..e4bcc7bd6e2af 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java @@ -10,13 +10,18 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeSetpoint extends KNXChannelType { TypeSetpoint() { @@ -24,18 +29,19 @@ class TypeSetpoint extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return "9.001"; + protected Set getAllGAKeys() { + return Collections.singleton(SETPOINT_GA); } @Override - protected Set getReadAddressKeys() { - return asSet(STATUS_GA); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return getDefaultCommandSpec(configuration, SETPOINT_GA, command); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(SETPOINT_GA); + protected String getDefaultDPT(String gaConfigKey) { + return DPTXlator2ByteFloat.DPT_TEMPERATURE.getID(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java index 41b186eed8b21..e6c7ed9b80668 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java @@ -10,13 +10,18 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlatorString; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeString extends KNXChannelType { TypeString() { @@ -24,18 +29,19 @@ class TypeString extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return (String) configuration.get(DPT); + protected Set getAllGAKeys() { + return Collections.singleton(GROUPADDRESS); } @Override - protected Set getReadAddressKeys() { - return asSet(GROUPADDRESS); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return getDefaultCommandSpec(configuration, GROUPADDRESS, command); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(GROUPADDRESS); + protected String getDefaultDPT(String gaConfigKey) { + return DPTXlatorString.DPT_STRING_8859_1.getID(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java index 7091941e1f47d..97237c325aa0c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -10,13 +10,18 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeSwitch extends KNXChannelType { TypeSwitch() { @@ -24,18 +29,19 @@ class TypeSwitch extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return (String) configuration.get(DPT); + protected Set getAllGAKeys() { + return Collections.singleton(SWITCH_GA); } @Override - protected Set getReadAddressKeys() { - return asSet(GROUPADDRESS); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + return getDefaultCommandSpec(configuration, SWITCH_GA, command); } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(GROUPADDRESS); + protected String getDefaultDPT(String gaConfigKey) { + return DPTXlatorBoolean.DPT_SWITCH.getID(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java index 92a18b99fe37e..2562095f7605b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java @@ -8,15 +8,19 @@ */ package org.openhab.binding.knx.internal.channel; -import static org.openhab.binding.knx.KNXBindingConstants.*; +import static org.openhab.binding.knx.KNXBindingConstants.CHANNEL_WALLBUTTON; +import java.util.Collections; import java.util.Set; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.Command; -import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; +@NonNullByDefault class TypeWallButton extends KNXChannelType { TypeWallButton() { @@ -24,18 +28,21 @@ class TypeWallButton extends KNXChannelType { } @Override - public String getDPT(GroupAddress groupAddress, Configuration configuration) { - return "1.001"; + protected Set getAllGAKeys() { + // TODO Auto-generated method stub + return Collections.emptySet(); } @Override - protected Set getReadAddressKeys() { - return asSet(SWITCH_GA); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) + throws KNXFormatException { + // TODO Auto-generated method stub + return null; } @Override - protected Set getWriteAddressKeys(Type type) { - return asSet(STATUS_GA); + protected String getDefaultDPT(String gaConfigKey) { + return ""; } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java index cd733ff1812a3..66b45f468c109 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -7,6 +7,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.ThingUID; import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.handler.TypeHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,9 +36,9 @@ public class IPClient extends KNXClient { public IPClient(int ipConnectionType, String ip, String localSource, int port, @Nullable InetSocketAddress localEndPoint, boolean useNAT, int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, - StatusUpdateCallback statusUpdateCallback) { + StatusUpdateCallback statusUpdateCallback, TypeHelper typeHelper) { super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, - statusUpdateCallback); + statusUpdateCallback, typeHelper); this.ipConnectionType = ipConnectionType; this.ip = ip; this.localSource = localSource; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java index 8556f5c72756e..fde644dabcb68 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -1,16 +1,11 @@ package org.openhab.binding.knx.internal.client; -import java.util.Collection; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -18,12 +13,11 @@ import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.ThingUID; import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.KNXBusListener; -import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.handler.GroupAddressListener; -import org.openhab.binding.knx.handler.IndividualAddressListener; import org.openhab.binding.knx.handler.StatusUpdateCallback; import org.openhab.binding.knx.handler.TelegramListener; +import org.openhab.binding.knx.handler.TypeHelper; +import org.openhab.binding.knx.internal.channel.CommandSpec; import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; @@ -58,42 +52,40 @@ public abstract class KNXClient implements NetworkLinkListener { private final Logger logger = LoggerFactory.getLogger(KNXClient.class); private final LogAdapter logAdapter = new LogAdapter(); - private boolean shutdown = false; private final int autoReconnectPeriod; - private final Lock connectLock = new ReentrantLock(); - private final Condition connectedCondition = connectLock.newCondition(); + private boolean shutdown = false; // FIXME + private final int readRetriesLimit; - private volatile boolean connected = false; @Nullable private ScheduledFuture busJob; @Nullable private ProcessCommunicator processCommunicator; - @Nullable private ManagementProcedures managementProcedures; - @Nullable private ManagementClient managementClient; - @Nullable - private DeviceInfoClient deviceInfoClient; + private KNXNetworkLink link; @Nullable - private KNXNetworkLink link; + private DeviceInfoClient deviceInfoClient; private final ScheduledExecutorService knxScheduler; - @Nullable - private ScheduledFuture connectJob; + private final LinkedBlockingQueue<@Nullable RetryDatapoint> readDatapoints = new LinkedBlockingQueue<>(); + + private final ThingUID thingUID; + + private final int responseTimeout; + + private final int readingPause; + + private final StatusUpdateCallback statusUpdateCallback; private final Set groupAddressListeners = new ConcurrentHashMap() .keySet(Boolean.TRUE); - private final Set individualAddressListeners = new ConcurrentHashMap() - .keySet(Boolean.TRUE); - private final Set knxBusListeners = new CopyOnWriteArraySet<>(); - private final Collection typeMappers = new CopyOnWriteArraySet<>(); protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); @@ -132,18 +124,14 @@ public void groupReadResponse(ProcessEvent e) { } }; - private final LinkedBlockingQueue<@Nullable RetryDatapoint> readDatapoints = new LinkedBlockingQueue<>(); - - private final ThingUID thingUID; - - private final int responseTimeout; - - private final int readingPause; + @Nullable + private ScheduledFuture connectJob; - private final StatusUpdateCallback statusUpdateCallback; + private final TypeHelper typeHelper; public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, - int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback) { + int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback, + TypeHelper typeHelper) { this.autoReconnectPeriod = autoReconnectPeriod; this.thingUID = thingUID; this.responseTimeout = responseTimeout; @@ -151,13 +139,16 @@ public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout this.readRetriesLimit = readRetriesLimit; this.knxScheduler = knxScheduler; this.statusUpdateCallback = statusUpdateCallback; + this.typeHelper = typeHelper; shutdown = false; } public void initialize() { registerLogAdapter(); - scheduleConnectJob(); + connectJob = knxScheduler.scheduleWithFixedDelay(() -> { + connect(); + }, 0, autoReconnectPeriod, TimeUnit.SECONDS); } private void registerLogAdapter() { @@ -168,9 +159,12 @@ private void unregisterLogAdapter() { LogManager.getManager().removeWriter(null, logAdapter); } - public void connect() throws KNXException, InterruptedException { + private synchronized boolean connect() { + if (isConnected() || shutdown) { + return true; + } try { - closeConnection(); + closeConnection(null); logger.debug("Bridge {} is connecting to the KNX bus", thingUID); @@ -195,22 +189,16 @@ public void connect() throws KNXException, InterruptedException { busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, readingPause, TimeUnit.MILLISECONDS); - connected = true; statusUpdateCallback.updateStatus(ThingStatus.ONLINE); + return true; } catch (KNXException | InterruptedException e) { - closeConnection(); - throw e; - } - - connectLock.lock(); - try { - connectedCondition.signalAll(); - } finally { - connectLock.unlock(); + logger.debug("Error connecting to the bus: {}", e.getMessage(), e); + closeConnection(e); + return false; } } - private void closeConnection() { + private void closeConnection(@Nullable Exception e) { logger.debug("Bridge {} is disconnecting from the KNX bus", thingUID); readDatapoints.clear(); if (busJob != null) { @@ -238,7 +226,12 @@ private void closeConnection() { link = null; } - statusUpdateCallback.updateStatus(ThingStatus.OFFLINE); + if (e != null) { + statusUpdateCallback.updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, + e.getLocalizedMessage()); + } else { + statusUpdateCallback.updateStatus(ThingStatus.OFFLINE); + } } private void processEvent(String task, ProcessEvent event, ListenerNotification action) { @@ -250,19 +243,11 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification return; } logger.trace("Received a {} telegram from '{}' for destination '{}'", task, source, destination); - for (IndividualAddressListener listener : individualAddressListeners) { - if (listener.listensTo(source)) { - knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); - } - } for (GroupAddressListener listener : groupAddressListeners) { if (listener.listensTo(destination)) { knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); } } - for (KNXBusListener listener : knxBusListeners) { - listener.onActivity(source, destination, asdu); - } } catch (RuntimeException e) { logger.error("Error handling {} event from KNX bus: {}", task, e.getMessage()); if (logger.isDebugEnabled()) { @@ -271,11 +256,10 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification } } - public void writeToKNX(GroupAddress address, @Nullable String dpt, Type value) throws KNXException { - if (dpt == null /* || address == null || value == null */) { + public void writeToKNX(CommandSpec commandSpec) throws KNXException { + if (!connect()) { return; } - scheduleAndWaitForConnection(); KNXNetworkLink link = this.link; ProcessCommunicator processCommunicator = this.processCommunicator; @@ -286,70 +270,33 @@ public void writeToKNX(GroupAddress address, @Nullable String dpt, Type value) t link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); return; } - Datapoint datapoint = new CommandDP(address, thingUID.toString(), 0, dpt); - String mappedValue = toDPTValue(value, datapoint.getDPT()); + Datapoint datapoint = new CommandDP(commandSpec.getGroupAddress(), thingUID.toString(), 0, + commandSpec.getDpt()); + String mappedValue = toDPTValue(commandSpec.getCommand(), datapoint.getDPT()); if (mappedValue == null) { - logger.debug("Value '{}' cannot be mapped to datapoint '{}'", value, datapoint); + logger.debug("Value '{}' cannot be mapped to datapoint '{}'", commandSpec.getCommand(), datapoint); return; } for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { try { processCommunicator.write(datapoint, mappedValue); - logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", value, datapoint, i); + logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", commandSpec.getCommand(), datapoint, + i); break; } catch (KNXException e) { if (i < MAX_SEND_ATTEMPTS - 1) { logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", - value, datapoint, e.getMessage()); + commandSpec.getCommand(), datapoint, e.getMessage()); } else { logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", - value, datapoint, e.getMessage()); - closeConnection(); + commandSpec.getCommand(), datapoint, e.getMessage()); + closeConnection(e); throw e; } } } } - public void scheduleConnectJob() { - if (connectJob != null && !connectJob.isDone()) { - return; - } - logger.trace("Scheduling the connection attempt to the KNX bus"); - connectJob = knxScheduler.schedule(() -> { - if (!shutdown) { - try { - connect(); - } catch (KNXException | InterruptedException e) { - logger.debug("Error connecting to the bus: {}", e.getMessage(), e); - } - } - }, autoReconnectPeriod, TimeUnit.SECONDS); - } - - private void scheduleAndWaitForConnection() { - connectLock.lock(); - try { - while (!(connected)) { - scheduleConnectJob(); - try { - connectedCondition.await(); - } catch (InterruptedException e) { - return; - } - } - } finally { - connectLock.unlock(); - } - } - - private void cancelConnectJob() { - if (connectJob != null) { - connectJob.cancel(true); - connectJob = null; - } - } - protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; /** @@ -364,19 +311,15 @@ private void cancelConnectJob() { */ @Nullable private String toDPTValue(Type type, String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - String value = typeMapper.toDPTValue(type, dpt); - if (value != null) { - return value; - } - } - return null; + return typeHelper.toDPTValue(type, dpt); } private void readNextQueuedDatapoint() { - scheduleAndWaitForConnection(); + if (!connect()) { + return; + } ProcessCommunicator processCommunicator = this.processCommunicator; - if (!connected || processCommunicator == null) { + if (processCommunicator == null) { return; } RetryDatapoint datapoint = readDatapoints.poll(); @@ -402,26 +345,27 @@ private void readNextQueuedDatapoint() { } public void dispose() { + if (connectJob != null) { + connectJob.cancel(true); + connectJob = null; + } shutdown = true; - cancelConnectJob(); - closeConnection(); + closeConnection(null); unregisterLogAdapter(); } @Override - public void linkClosed(@Nullable CloseEvent e) { + public void linkClosed(@Nullable CloseEvent closeEvent) { KNXNetworkLink link = this.link; - if (link == null || e == null) { + if (link == null || closeEvent == null) { return; } - if (!link.isOpen() && !(CloseEvent.USER_REQUEST == e.getInitiator()) && !shutdown) { + if (!link.isOpen() && CloseEvent.USER_REQUEST != closeEvent.getInitiator() && !shutdown) { statusUpdateCallback.updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, - e.getReason()); - logger.warn("KNX link has been lost (reason: {} on object {})", e.getReason(), e.getSource().toString()); - if (autoReconnectPeriod > 0) { - logger.info("KNX link will be retried in '{}' seconds", autoReconnectPeriod); - scheduleConnectJob(); - } + closeEvent.getReason()); + logger.debug("KNX link has been lost (reason: {} on object {})", closeEvent.getReason(), + closeEvent.getSource().toString()); + connect(); } } @@ -489,24 +433,8 @@ public final boolean unregisterGroupAddressListener(GroupAddressListener listene return groupAddressListeners.remove(listener); } - public final boolean registerIndividualAddressListener(IndividualAddressListener listener) { - return individualAddressListeners.contains(listener) ? true : individualAddressListeners.add(listener); - } - - public final boolean unregisterIndividualAddressListener(IndividualAddressListener listener) { - return individualAddressListeners.remove(listener); - } - - public final void registerKNXBusListener(KNXBusListener knxBusListener) { - knxBusListeners.add(knxBusListener); - } - - public final void unregisterKNXBusListener(KNXBusListener knxBusListener) { - knxBusListeners.remove(knxBusListener); - } - public boolean isConnected() { - return connected; + return link != null && link.isOpen(); } public DeviceInfoClient getDeviceInfoClient() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java index 7f57122e98ff8..7cea75e069bb9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -6,6 +6,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.smarthome.core.thing.ThingUID; import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.handler.TypeHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,9 +25,9 @@ public class SerialClient extends KNXClient { public SerialClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, String serialPort, - StatusUpdateCallback statusUpdateCallback) { + StatusUpdateCallback statusUpdateCallback, TypeHelper typeHelper) { super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, - statusUpdateCallback); + statusUpdateCallback, typeHelper); this.serialPort = serialPort; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index 0e9ac5dd9a7b5..d1a02c5c474c4 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -83,9 +83,9 @@ public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, @Override protected ThingHandler createHandler(Thing thing) { if (thing.getThingTypeUID().equals(THING_TYPE_IP_BRIDGE)) { - return new IPBridgeThingHandler((Bridge) thing, networkAddressService); + return new IPBridgeThingHandler((Bridge) thing, networkAddressService, this); } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { - return new SerialBridgeThingHandler((Bridge) thing); + return new SerialBridgeThingHandler((Bridge) thing, this); } else if (thing.getThingTypeUID().equals(THING_TYPE_BASIC)) { return new KNXBasicThingHandler(thing, this); } @@ -143,8 +143,7 @@ public synchronized void unregisterHandler(Thing thing) { } @Override - @Nullable - public Type getType(Datapoint datapoint, byte[] asdu) { + public @Nullable Type getType(Datapoint datapoint, byte[] asdu) { for (KNXTypeMapper typeMapper : typeMappers) { Type type = typeMapper.toType(datapoint, asdu); if (type != null) { @@ -165,8 +164,7 @@ public final boolean isDPTSupported(@Nullable String dpt) { } @Override - @Nullable - public final Class toTypeClass(String dpt) { + public final @Nullable Class toTypeClass(String dpt) { for (KNXTypeMapper typeMapper : typeMappers) { Class typeClass = typeMapper.toTypeClass(dpt); if (typeClass != null) { @@ -176,6 +174,17 @@ public final Class toTypeClass(String dpt) { return null; } + @Override + public final @Nullable String toDPTValue(Type type, String dpt) { + for (KNXTypeMapper typeMapper : typeMappers) { + String value = typeMapper.toDPTValue(type, dpt); + if (value != null) { + return value; + } + } + return null; + } + @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC) protected synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { typeMappers.add(typeMapper); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java deleted file mode 100644 index 38cc071f42f3e..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXThreadPoolFactory.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.factory; - -import java.util.Map; -import java.util.WeakHashMap; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import org.slf4j.LoggerFactory; - -public class KNXThreadPoolFactory { - - protected static final long THREAD_TIMEOUT = 65L; - protected static final long THREAD_MONITOR_SLEEP = 60000; - - protected static Map pools = new WeakHashMap<>(); - - public static ScheduledExecutorService getPrioritizedScheduledPool(String poolName, int coreThreads) { - ExecutorService pool = pools.get(poolName); - if (pool == null) { - synchronized (pools) { - // do a double check if it is still null or if another thread might have created it meanwhile - pool = pools.get(poolName); - if (pool == null && coreThreads > 1) { - pool = Executors.newScheduledThreadPool(coreThreads, - new NamedThreadFactory(poolName, Thread.MAX_PRIORITY)); - ((ThreadPoolExecutor) pool).setKeepAliveTime(THREAD_TIMEOUT, TimeUnit.SECONDS); - ((ThreadPoolExecutor) pool).allowCoreThreadTimeOut(true); - pools.put(poolName, pool); - LoggerFactory.getLogger(KNXThreadPoolFactory.class).debug( - "Created scheduled thread pool '{}' of size {}", new Object[] { poolName, coreThreads }); - } - } - } - if (pool instanceof ScheduledExecutorService) { - if (coreThreads > 1 && coreThreads != ((ThreadPoolExecutor) pool).getCorePoolSize()) { - LoggerFactory.getLogger(KNXThreadPoolFactory.class).debug( - "Updated the scheduled thread pool '{}' to a size of {}", - new Object[] { poolName, coreThreads }); - ((ThreadPoolExecutor) pool).setCorePoolSize(coreThreads); - } - return (ScheduledExecutorService) pool; - } else { - throw new IllegalArgumentException("Pool " + poolName + " is not a scheduled pool!"); - } - } - - protected static class NamedThreadFactory implements ThreadFactory { - - protected final ThreadGroup group; - protected final AtomicInteger threadNumber = new AtomicInteger(1); - protected final String namePrefix; - protected final String name; - protected final int priority; - - public NamedThreadFactory(String threadPool, int priority) { - this.name = threadPool; - this.namePrefix = "ESH-" + threadPool + "-"; - this.priority = priority; - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); - } - - @Override - public Thread newThread(Runnable r) { - Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0); - if (!t.isDaemon()) { - t.setDaemon(true); - } - if (t.getPriority() != priority) { - t.setPriority(priority); - } - - return t; - } - - public String getName() { - return name; - } - } - -} From 671134721aa8cacfc142a517689a3e833d433f53 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Sat, 23 Dec 2017 19:51:40 +0100 Subject: [PATCH 08/52] added knx test project Signed-off-by: Simon Kaufmann --- .../org.openhab.binding.knx.test/.classpath | 7 + .../org.openhab.binding.knx.test/.project | 28 ++++ .../META-INF/MANIFEST.MF | 31 +++++ .../org.openhab.binding.knx.test/about.html | 32 +++++ .../build.properties | 5 + .../org.openhab.binding.knx.test.launch | 45 +++++++ .../org.openhab.binding.knx.test/pom.xml | 126 ++++++++++++++++++ .../internal/channel/KNXChannelTypeTest.java | 93 +++++++++++++ addons/binding/pom.xml | 1 + 9 files changed, 368 insertions(+) create mode 100644 addons/binding/org.openhab.binding.knx.test/.classpath create mode 100644 addons/binding/org.openhab.binding.knx.test/.project create mode 100644 addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF create mode 100644 addons/binding/org.openhab.binding.knx.test/about.html create mode 100644 addons/binding/org.openhab.binding.knx.test/build.properties create mode 100644 addons/binding/org.openhab.binding.knx.test/org.openhab.binding.knx.test.launch create mode 100644 addons/binding/org.openhab.binding.knx.test/pom.xml create mode 100644 addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java diff --git a/addons/binding/org.openhab.binding.knx.test/.classpath b/addons/binding/org.openhab.binding.knx.test/.classpath new file mode 100644 index 0000000000000..3827701922c92 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx.test/.project b/addons/binding/org.openhab.binding.knx.test/.project new file mode 100644 index 0000000000000..7d8cc95c3a1f5 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/.project @@ -0,0 +1,28 @@ + + + org.openhab.binding.knx.test + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000..e7ac912c4089d --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF @@ -0,0 +1,31 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: KNX Binding Tests +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Bundle-SymbolicName: org.openhab.binding.knx.test;singleton:=true +Bundle-Vendor: openHAB +Bundle-Version: 2.2.0.qualifier +Export-Package: org.openhab.binding.knx;uses:="org.eclipse.smarthome.test" +Fragment-Host: org.openhab.binding.knx +Import-Package: + org.openhab.binding.knx, + org.openhab.binding.knx.handler, + org.eclipse.jdt.annotation;resolution:=optional, + org.eclipse.smarthome.core.common.registry, + org.eclipse.smarthome.core.events, + org.eclipse.smarthome.core.thing, + org.eclipse.smarthome.core.thing.binding, + org.eclipse.smarthome.core.thing.binding.builder, + org.eclipse.smarthome.core.thing.util, + org.eclipse.smarthome.test.java, + org.eclipse.smarthome.test.storage, + org.hamcrest;core=split, + org.junit;version="4.0.0", + org.mockito, + org.osgi.framework, + org.osgi.service.device, + org.slf4j +Require-Bundle: + org.hamcrest, + org.junit, + org.mockito diff --git a/addons/binding/org.openhab.binding.knx.test/about.html b/addons/binding/org.openhab.binding.knx.test/about.html new file mode 100644 index 0000000000000..37e00c200e39f --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/about.html @@ -0,0 +1,32 @@ + + + + + About + + +

About This Content

+ +

March 30, 2017

+

License

+ +

+ The openHAB community makes available all content in this plug-in ("Content"). Unless otherwise + indicated below, the Content is provided to you under the terms and conditions of the + Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available + at http://www.eclipse.org/legal/epl-v10.html. + For purposes of the EPL, "Program" will mean the Content. +

+ +

+ If you did not receive this Content directly from the openHAB community, the Content is + being redistributed by another party ("Redistributor") and different terms and conditions may + apply to your use of any object code in the Content. Check the Redistributor's license that was + provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise + indicated below, the terms and conditions of the EPL still apply to any source code in the Content + and such source code may be obtained at openhab.org. +

+ + + diff --git a/addons/binding/org.openhab.binding.knx.test/build.properties b/addons/binding/org.openhab.binding.knx.test/build.properties new file mode 100644 index 0000000000000..3f0a98dbc94dc --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/build.properties @@ -0,0 +1,5 @@ +source.. = src/test/java/ +output.. = target/test-classes +bin.includes = META-INF/,\ + .,\ + about.html diff --git a/addons/binding/org.openhab.binding.knx.test/org.openhab.binding.knx.test.launch b/addons/binding/org.openhab.binding.knx.test/org.openhab.binding.knx.test.launch new file mode 100644 index 0000000000000..acb133847689b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/org.openhab.binding.knx.test.launch @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx.test/pom.xml b/addons/binding/org.openhab.binding.knx.test/pom.xml new file mode 100644 index 0000000000000..b6dd775c095de --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/pom.xml @@ -0,0 +1,126 @@ + + + 4.0.0 + + + org.openhab.binding + pom + 2.2.0-SNAPSHOT + + + org.openhab.binding + org.openhab.binding.knx.test + 2.2.0-SNAPSHOT + eclipse-test-plugin + + knx Binding Tests + + + org.openhab.binding.knx.test + org.openhab.binding.knx + + + + + + + org.eclipse.tycho + target-platform-configuration + + + + + + eclipse-plugin + org.eclipse.equinox.event + 0.0.0 + + + eclipse-plugin + org.eclipse.equinox.ds + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.config.xml + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.core.thing.xml + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.core.binding.xml + 0.0.0 + + + + + + + org.eclipse.tycho + tycho-surefire-plugin + + + + eclipse-plugin + ch.qos.logback.classic + 0.0.0 + + + eclipse-plugin + ch.qos.logback.core + 0.0.0 + + + eclipse-plugin + ch.qos.logback.slf4j + 0.0.0 + + + + + org.eclipse.equinox.ds + 1 + true + + + org.eclipse.equinox.event + 2 + true + + + org.eclipse.smarthome.core + 4 + true + + + org.eclipse.smarthome.core.thing + 4 + true + + + org.eclipse.smarthome.config.xml + 4 + true + + + org.eclipse.smarthome.core.thing.xml + 4 + true + + + org.eclipse.smarthome.core.binding.xml + 4 + true + + + + + + + + diff --git a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java new file mode 100644 index 0000000000000..a3bb170e30294 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java @@ -0,0 +1,93 @@ +package org.openhab.binding.knx.internal.channel; + +import static org.junit.Assert.*; + +import java.util.Collections; +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.types.Command; +import org.junit.Before; +import org.junit.Test; + +import tuwien.auto.calimero.exception.KNXFormatException; + +public class KNXChannelTypeTest { + + private KNXChannelType ct; + + @Before + public void setup() { + ct = new MyKNXChannelType(""); + } + + @Test + public void testParse_withDPT_multiple_withRead() { + ChannelConfiguration res = ct.parse("5.001:<1/3/22+0/3/22+<0/8/15"); + + assertEquals("5.001", res.getDPT()); + assertEquals("1/3/22", res.getMainGA().getGA()); + assertTrue(res.getMainGA().isRead()); + assertEquals(3, res.getListenGAs().size()); + assertEquals(2, res.getReadGAs().size()); + } + + @Test + public void testParse_withDPT_multiple_withoutRead() { + ChannelConfiguration res = ct.parse("5.001:1/3/22+0/3/22+0/8/15"); + + assertEquals("5.001", res.getDPT()); + assertEquals("1/3/22", res.getMainGA().getGA()); + assertFalse(res.getMainGA().isRead()); + assertEquals(3, res.getListenGAs().size()); + assertEquals(0, res.getReadGAs().size()); + } + + @Test + public void testParse_withoutDPT_single_withoutRead() { + ChannelConfiguration res = ct.parse("1/3/22"); + + assertNull(res.getDPT()); + assertEquals("1/3/22", res.getMainGA().getGA()); + assertFalse(res.getMainGA().isRead()); + assertEquals(1, res.getListenGAs().size()); + assertEquals(0, res.getReadGAs().size()); + } + + @Test + public void testParse_withoutDPT_single_witRead() { + ChannelConfiguration res = ct.parse("<1/3/22"); + + assertNull(res.getDPT()); + assertEquals("1/3/22", res.getMainGA().getGA()); + assertTrue(res.getMainGA().isRead()); + assertEquals(1, res.getListenGAs().size()); + assertEquals(1, res.getReadGAs().size()); + } + + private static class MyKNXChannelType extends KNXChannelType { + public MyKNXChannelType(String channelTypeID) { + super(channelTypeID); + } + + @Override + protected @NonNull Set<@NonNull String> getAllGAKeys() { + return Collections.emptySet(); + } + + @Override + public @Nullable CommandSpec getCommandSpec(@NonNull Configuration configuration, @NonNull Command command) + throws KNXFormatException { + return null; + } + + @Override + protected @NonNull String getDefaultDPT(@NonNull String gaConfigKey) { + return ""; + } + + } + +} diff --git a/addons/binding/pom.xml b/addons/binding/pom.xml index a669a75f13d79..1763ee88db039 100644 --- a/addons/binding/pom.xml +++ b/addons/binding/pom.xml @@ -48,6 +48,7 @@ org.openhab.binding.jeelink org.openhab.binding.keba org.openhab.binding.knx + org.openhab.binding.knx.test org.openhab.binding.kodi org.openhab.binding.kostalinverter org.openhab.binding.lametrictime From 1b698e40eeef78bcfbad88eebbf9baf2c5b26bba Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Sat, 23 Dec 2017 19:53:10 +0100 Subject: [PATCH 09/52] updated versions to 2.3.0-SNAPSHOT Signed-off-by: Simon Kaufmann --- .../org.openhab.binding.knx.test/META-INF/MANIFEST.MF | 2 +- addons/binding/org.openhab.binding.knx.test/pom.xml | 8 +------- .../binding/org.openhab.binding.knx/META-INF/MANIFEST.MF | 2 +- addons/binding/org.openhab.binding.knx/pom.xml | 2 +- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF index e7ac912c4089d..bb4df9a802004 100644 --- a/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: KNX Binding Tests Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-SymbolicName: org.openhab.binding.knx.test;singleton:=true Bundle-Vendor: openHAB -Bundle-Version: 2.2.0.qualifier +Bundle-Version: 2.3.0.qualifier Export-Package: org.openhab.binding.knx;uses:="org.eclipse.smarthome.test" Fragment-Host: org.openhab.binding.knx Import-Package: diff --git a/addons/binding/org.openhab.binding.knx.test/pom.xml b/addons/binding/org.openhab.binding.knx.test/pom.xml index b6dd775c095de..c8eca1b869fa8 100644 --- a/addons/binding/org.openhab.binding.knx.test/pom.xml +++ b/addons/binding/org.openhab.binding.knx.test/pom.xml @@ -6,20 +6,14 @@ org.openhab.binding pom - 2.2.0-SNAPSHOT + 2.3.0-SNAPSHOT - org.openhab.binding org.openhab.binding.knx.test - 2.2.0-SNAPSHOT eclipse-test-plugin knx Binding Tests - - org.openhab.binding.knx.test - org.openhab.binding.knx - diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 898b66c3d39c6..b10f7429905bc 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: KNX Binding Bundle-SymbolicName: org.openhab.binding.knx;singleton:=true Bundle-Vendor: openHAB -Bundle-Version: 2.2.0.qualifier +Bundle-Version: 2.3.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Import-Package: com.google.common.collect, gnu.io;resolution:=optional, diff --git a/addons/binding/org.openhab.binding.knx/pom.xml b/addons/binding/org.openhab.binding.knx/pom.xml index 22650b83d6450..f656b4b8197c6 100644 --- a/addons/binding/org.openhab.binding.knx/pom.xml +++ b/addons/binding/org.openhab.binding.knx/pom.xml @@ -7,7 +7,7 @@ org.openhab.binding pom - 2.2.0-SNAPSHOT + 2.3.0-SNAPSHOT org.openhab.binding.knx From 8d5b4fff5b94817b7ad83abbd1543191550b71ce Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Tue, 2 Jan 2018 16:19:26 +0100 Subject: [PATCH 10/52] control types, renamings Signed-off-by: Simon Kaufmann --- .../internal/channel/KNXChannelTypeTest.java | 11 - .../ESH-INF/config/channelConfig.xml | 87 ++++ .../ESH-INF/thing/basic.xml | 228 --------- .../ESH-INF/thing/device.xml | 137 ++++++ .../ESH-INF/thing/ip.xml | 10 +- .../META-INF/MANIFEST.MF | 1 + .../binding/org.openhab.binding.knx/README.md | 210 ++++++-- .../binding/knx/KNXBindingConstants.java | 84 ++-- ...ngHandler.java => DeviceThingHandler.java} | 129 +++-- .../knx/handler/IPBridgeThingHandler.java | 2 +- .../knx/handler/SerialBridgeThingHandler.java | 2 +- .../knx/internal/channel/CommandSpec.java | 22 +- .../internal/channel/KNXChannelSelector.java | 23 +- .../knx/internal/channel/KNXChannelType.java | 71 ++- .../knx/internal/channel/ListenSpec.java | 12 +- .../knx/internal/channel/ReadSpec.java | 14 +- .../knx/internal/channel/ResponseSpec.java | 39 ++ .../knx/internal/channel/TypeContact.java | 14 +- .../knx/internal/channel/TypeDateTime.java | 14 +- .../knx/internal/channel/TypeDimmer.java | 11 +- .../knx/internal/channel/TypeNumber.java | 15 +- .../internal/channel/TypeRollershutter.java | 11 +- .../knx/internal/channel/TypeSetpoint.java | 47 -- .../knx/internal/channel/TypeString.java | 14 +- .../knx/internal/channel/TypeSwitch.java | 12 +- .../knx/internal/channel/TypeWallButton.java | 48 -- .../knx/internal/client/KNXClient.java | 135 ++--- .../{BasicConfig.java => DeviceConfig.java} | 13 +- .../knx/internal/dpt/KNXCoreTypeMapper.java | 465 +++++++++--------- .../internal/factory/KNXHandlerFactory.java | 12 +- .../internal/profiles/KNXControlProfile.java | 49 ++ .../internal/profiles/KNXDefaultProfile.java | 49 ++ .../internal/profiles/KNXProfileAdvisor.java | 92 ++++ 33 files changed, 1179 insertions(+), 904 deletions(-) create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml delete mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml create mode 100644 addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/{KNXBasicThingHandler.java => DeviceThingHandler.java} (77%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/{BasicConfig.java => DeviceConfig.java} (72%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java diff --git a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java index a3bb170e30294..94d78f7ef5a2c 100644 --- a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java +++ b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java @@ -6,14 +6,9 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; import org.junit.Before; import org.junit.Test; -import tuwien.auto.calimero.exception.KNXFormatException; - public class KNXChannelTypeTest { private KNXChannelType ct; @@ -77,12 +72,6 @@ public MyKNXChannelType(String channelTypeID) { return Collections.emptySet(); } - @Override - public @Nullable CommandSpec getCommandSpec(@NonNull Configuration configuration, @NonNull Command command) - throws KNXFormatException { - return null; - } - @Override protected @NonNull String getDefaultDPT(@NonNull String gaConfigKey) { return ""; diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml new file mode 100644 index 0000000000000..d2f2e0563e53e --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml @@ -0,0 +1,87 @@ + + + + + + + + The group address(es) in FANCY notation + true + + + + + + + + The group address(es) in FANCY notation to toggle the dimmer on or off + false + + + + The group address(es) in FANCY notation to set the absolute position of the dimmer + false + + + + The group address(es) in FANCY notation to increase or decrease the dimmer + false + + + + + + The group address(es) in FANCY notation to toggle the dimmer on or off + false + + + + The group address(es) in FANCY notation to set the absolute position of the dimmer + false + + + + The group address(es) in FANCY notation to increase or decrease the dimmer + false + + + + + true + 500 + + + + + + + + The group address(es) in FANCY notation to move the shutter in the DOWN or UP direction + false + + + + The group address(es) in FANCY notation to start (MOVE) or STOP shutter movement + false + + + + The group address(es) in FANCY notation to set the absolute position of the shutter, in % + false + + + + + + + + The group address(es) in FANCY notation + true + + + + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml deleted file mode 100644 index e7016dd4b4794..0000000000000 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/basic.xml +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - An addressable basic KNX actor - - - - - The individual address in x.y.z notation - false - - - - Read out the device parameters and address/communication object tables - true - false - - - - Interval between attempts to contact the device, in seconds - true - 60 - - - - - - Dimmer - - A channel to control a dimmer - - - - The group address in x/y/z notation to toggle the dimmer on or off - false - - - - The group address in x/y/z notation to set the absolute position of the dimmer - false - - - - The group address in x/y/z notation to increase or decrease the dimmer - false - - - - Interval between attempts to read the status group addresses on the bus, in seconds - true - 0 - - - - - - Rollershutter - - A channel to control a rollershutter - - - - The group address(es) in FANCY notation to move the shutter in the DOWN or UP direction - false - - - - The group address(es) in FANCY notation to start (MOVE) or STOP shutter movement - false - - - - The group address(es) in FANCY notation to set the absolute position of the shutter, in % - false - - - - Interval between attempts to read the status group addresses on the bus, in seconds - true - 0 - - - - - - Number - - A channel to control the setpoint of a thermostat - - - - The group address in x/y/z notation to set the thermostat setpoint - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Number - - A channel to manage a generic Group Addresses with a DPT compatible with Number Items - - - - The group address in x/y/z notation - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - String - - A channel to manage a generic Group Addresses with a DPT compatible with String Items - - - - The group address in x/y/z notation - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - DateTime - - A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items - - - - The group address in x/y/z notation - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Contact - - A channel to manage a generic Group Addresses with a DPT compatible with Contact Items - - - - The group address in x/y/z notation - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - Switch - - A channel to manage a generic Group Addresses with a DPT compatible with Switch Items - - - - The group address(es) in FANCY notation - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - - trigger - - A channel to control a simple DPT 1.001 switch that reports back its status - - - - The group address in x/y/z where the button sends its commands - true - - - - Interval between attempts to read the status group address on the bus, in seconds - true - 0 - - - - - diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml new file mode 100644 index 0000000000000..311aa62cab23b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + An addressable basic KNX actor + + + + + The individual address in x.y.z notation + + + + Read out the device parameters and address/communication object tables + false + + + + Interval (in seconds) between attempts to poll the device status + 600 + + + + Interval (in seconds) between attempts to read the status group addresses on the bus + 0 + + + + + + + Switch + + A channel to manage a generic Group Addresses with a DPT compatible with Switch Items + + + + Switch + + A channel to control a simple DPT 1.001 switch that reports back its status + + + + + + Dimmer + + A channel to control a dimmer + + + + Dimmer + + A channel to control a dimmer + + + + + + Rollershutter + + A channel to control a rollershutter + + + + Rollershutter + + A channel to control a rollershutter + + + + + + Contact + + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items + + + + Contact + + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items + + + + + + Number + + A channel to manage a generic Group Addresses with a DPT compatible with Number Items + + + + Number + + A channel to manage a generic Group Addresses with a DPT compatible with Number Items + + + + + + String + + A channel to manage a generic Group Addresses with a DPT compatible with String Items + + + + String + + A channel to manage a generic Group Addresses with a DPT compatible with String Items + + + + + + DateTime + + A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items + + + + DateTime + + A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items + + + + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml index f5aca69af6871..b1a41bfd40b80 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -14,7 +14,7 @@ - + The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER true @@ -26,7 +26,6 @@ Network address of the KNX/IP gateway - false network-address @@ -39,43 +38,36 @@ Network address of the local host to be used to set up the connection to the KNX/IP gateway network-address - false The group address for identification of this KNX/IP gateway within the KNX bus - true 0.0.0 Set to "true" when having network address translation between this server and the gateway false - true Time in milliseconds of how long should be paused between two read requests to the bus during initialization - true 50 Seconds to wait for a response from the KNX bus - true 10 Limits the read retries while initialization from the KNX bus - true 3 Seconds between connection retries when KNX link has been lost, 0 means never retry - true 0 diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index b10f7429905bc..f21a250f06c40 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -23,6 +23,7 @@ Import-Package: com.google.common.collect, org.eclipse.smarthome.core.thing.binding, org.eclipse.smarthome.core.thing.binding.builder, org.eclipse.smarthome.core.thing.link, + org.eclipse.smarthome.core.thing.profiles, org.eclipse.smarthome.core.thing.type, org.eclipse.smarthome.core.thing.util, org.eclipse.smarthome.core.types, diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 5998d068e68db..728106515f048 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -3,35 +3,37 @@ The openHAB KNX binding allows to connect to [KNX Home Automation](http://www.knx.org/) installations. Switching lights on and off, activating your roller shutters or changing room temperatures are only some examples. -To access your KNX bus you either need an KNX IP gateway (like e.g. the [Gira KNX IP Router](http://www.gira.com/en/gebaeudetechnik/systeme/knx-eib_system/knx-produkte/systemgeraete/knx-ip-router.html)) or a PC running [KNXD](https://github.com/knxd/knxd) (free open source component that enables communication with the KNX bus), which is the successor of the no longer maintained [EIBD](http://www.auto.tuwien.ac.at/~mkoegler/index.php/eibd). +To access your KNX bus you either need a gateway device which is connected to the KNX bus and allows computers to access the bus communication. This can be either an Ethernet (as a Router or a Tunne type) or a serial gateway. The KNX binding then can communicate directly with this gateway. Alternatively a PC running [KNXD](https://github.com/knxd/knxd) (free open source component sofware) can be put in between which then acts as a broker allowing multiple client to connect to the same gateway. Since the protocol is identical, the KNX binding can also communicate with it transparently. ## Supported Things -The KNX binding supports two kinds of Bridges, and two kinds of Things to access actors on the KNX bus. There is an *ip* bridge to connect to KNX IP Gateways, and a *serial* bridge for connection over a serial port to a host-attached gateway. The configuration of the two kinds of bridges is very similar (see below). +The KNX binding supports two types of bridges, and one type of things to access the KNX bus. There is an *ip* bridge to connect to KNX IP Gateways, and a *serial* bridge for connection over a serial port to a host-attached gateway. ## Binding Configuration The binding itself does not require any special configuration. -## Bridge Configuration +## Bridges + +The following two bridge types are supported. Bridges don't have channels on their own. ### IP Gateway The IP Gateway is the most commonly used way to connect to the KNX bus. At its base, the *ip* bridge accepts the following configuration parameters: -| Name | Required | Description | Default value | -|---------------------|----------|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------| -| ipConnectionType | Y | The ip connection type for connecting to the KNX bus. Could be either TUNNEL or ROUTER | | -| ipAddress | N | Network address of the KNX/IP gateway | Not required if ipConnectionType is ROUTER | -| portNumber | N | Port number of the KNX/IP gateway | Not required if ipConnectionType is ROUTER; 3671 | -| localIp | N | Network address of the local host to be used to set up the connection to the KNX/IP gateway | | -| localSourceAddr | N | The group address for identification of this KNX/IP gateway within the KNX bus | 0.0.0 | -| readingPause | N | Time in milliseconds of how long should be paused between two read requests to the bus during initialization | 50 | -| responseTimeout | N | Timeout in seconds to wait for a response from the KNX bus | 10 | -| readRetriesLimit | N | Limits the read retries while initialization from the KNX bus | 3 | -| autoReconnectPeriod | N | Seconds between connect retries when KNX link has been lost, 0 means never retry | 0 | -| enableDiscovery | N | Enable or disable automatic Individual Address discovery | true | -| useNAT | Y | Whether there is network address translation between the server and the gateway | false | +| Name | Required | Description | Default value | +|---------------------|--------------|--------------------------------------------------------------------------------------------------------------|------------------------------------------------------| +| type | Yes | The IP connection type for connecting to the KNX bus (`TUNNEL` or `ROUTER`) | - | +| ipAddress | for `TUNNEL` | Network address of the KNX/IP gateway | Required if type is ROUTER | +| portNumber | for `TUNNEL` | Port number of the KNX/IP gateway | Not required if type is ROUTER; 3671 | +| localIp | No | Network address of the local host to be used to set up the connection to the KNX/IP gateway | the system-wide configured primary interface address | +| localSourceAddr | No | The group address for identification of this KNX/IP gateway within the KNX bus | 0.0.0 | +| useNAT | No | Whether there is network address translation between the server and the gateway | false | +| readingPause | No | Time in milliseconds of how long should be paused between two read requests to the bus during initialization | 50 | +| responseTimeout | No | Timeout in seconds to wait for a response from the KNX bus | 10 | +| readRetriesLimit | No | Limits the read retries while initialization from the KNX bus | 3 | +| autoReconnectPeriod | No | Seconds between connect retries when KNX link has been lost (0 means never). | 0 | + ### Serial Gateway @@ -39,77 +41,179 @@ The *serial* bridge accepts the following configuration parameters: | Name | Required | Description | Default value | |---------------------|----------|--------------------------------------------------------------------------------------------------------------|---------------| -| serialPort | Y | The serial port to use for connecting to the KNX bus | | +| serialPort | Y | The serial port to use for connecting to the KNX bus | - | | readingPause | N | Time in milliseconds of how long should be paused between two read requests to the bus during initialization | 50 | | responseTimeout | N | Timeout in seconds to wait for a response from the KNX bus | 10 | | readRetriesLimit | N | Limits the read retries while initialization from the KNX bus | 3 | | autoReconnectPeriod | N | Seconds between connect retries when KNX link has been lost, 0 means never retry | 0 | -| enableDiscovery | N | Enable or disable automatic Individual Address discovery | true | -## Thing Configuration +## Things -### *basic* Things +### *device* Things *basic* Things are wrappers around an arbitrary group addresses on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actor is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or the entire bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actor in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. -|Name|Required|Description|Default value| -|----|--------|-----------|-------------| -|address|N|The individual address in x.y.z notation|Required if *fetch* is set to true| -|fetch|N|Read out the device parameters and address/communication object tables|false| +| Name | Required | Description | Default value | +|--------------|----------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| +| address | N | The individual device address (in 0.0.0 notation) | - | +| fetch | N | Read out the device parameters and address/communication object tables (requires the address) | false | +| pingInterval | N | Interval (in seconds) to contact the device and set the thing status based on the result (requires the address) | 600 | +| readInterval | N | Interval (in seconds) to actively request reading of values from the bus (0 if they should only be read once at startup) | 0 | +Different kinds of channels are defined and can be used to group together Group Addresses. All channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) -## Channels +#### Standard Channels -The Bridges support the following channels: +Standard channels are used most of the time. They are used in the common case where the physical state is owned by a decive within the KNX bus, e.g. by a switch actor who "knows" whether the light is turned on or of or by a temperature sensor which reports the room temperature regularly. -| Channel Type ID | Item Type | Description | -|-----------------|-----------|----------------------------------------------------------------------------------| -| errorsall | Number | The number of errors that occurred on the KNX bus since the start of the binding | -| errors5min | Number | The number of errors that occurred on the KNX bus during the last 5 minutes | +##### Switch -### *basic* Thing Channels of Things defined by the end-user +| Parameter | Description | Default DPT | +|----|----|-----| +| switch | Group address | 1.001 | -Different kinds of Channels are defined and can be used to group together Group Addresses. All channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) -For specific configurations reference is made to the *basic.xml* ESH-INF file of the source distribution. For example, the *statusswitch* Channel type defines two configuration parameters: *switchGA*, the group address in x/y/z notation to toggle the switch, and *statusGA*, the group address in x/y/z notation to read the switch status. Since it is about a switch, the DPT does not have to be defined, e.g. it is supposed to be 1.001. For example, the *number* Channel type is used to define Channels to read/write ordinary Numbers. +##### Dimmer -```xtend -Thing basic someactor { - Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] - Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] -} +| Parameter | Description | Default DPT | +|----|----|-----| +| switch | Group address | 1.001 | +| position | Group address | 5.001 | +| increaseDecrease | Group address | 3.007 | + +##### Rollershutter + +| Parameter | Description | Default DPT | +|----|----|-----| +| upDown | Group address | 1.008 | +| stopMove | Group address | 1.010 | +| position | Group address | 5.001 | + +##### Contact + +| Parameter | Description | Default DPT | +|----|----|-----| +| ga | Group address | 1.009 | + +##### Number + +| Parameter | Description | Default DPT | +|----|----|-----| +| ga | Group address | 9.001 | + +##### String + +| Parameter | Description | Default DPT | +|----|----|-----| +| ga | Group address | 16.001 | + +##### Datetime + +| Parameter | Description | Default DPT | +|----|----|-----| +| ga | Group address | 19.001 | + + +#### Control Channels + +In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. + +TODO + +#### Group Address Notation + +``` +="[<][:][[+[<]]+[<]..]]" ``` -## Full Example +where parts in brackets `[]` denote optional information. + +The optional `<` sign tells whether the group address of the datapoint accepts read requests on the KNX bus (it does, if the sign is there). + +Each configuration parameter has a `mainGA` where commands are written to and optionally several `listeningGA`s. + +The `dpt` element is optional. If ommitted, the corresponding default value will be used (see the channel descriptions above). -demo.Things: +## Examples + +### Full Example + +knx.things: ```xtend -Bridge knx:ip:ip1 [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.166", ipConnectionType="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1,localSourceAddr="0.0.0"] { - Thing basic someactor { - Type statusswitch : someswitch [ switchGA="2/4/99", statusGA="2/4/100", read=true, interval=3600] - Type number : ga_2_4_101 [ groupaddress="2/4/101", dpt="9.001", read=true, interval=3600] +Bridge knx:ip:bridge [ + ipAddress="192.168.0.10", + portNumber=3671, + localIp="192.168.0.11", + tape="TUNNEL", + readingPause=50, + responseTimeout=10, + readRetriesLimit=3, + autoReconnectPeriod=1, + localSourceAddr="0.0.0" +] { + Thing device magicActor [ + address="1.2.3", + fetch=true, + pingInterval=300, + readInterval=3600 + ] { + Type number : demoTemperature1 "Demo Temperature 1" [ ga="9.001:<5/0/0" ] + Type number : demoTemperature2 "Demo Temperature 2" [ ga="<5/0/0" ] + + Type rollershutter : demoRollershutter "Demo Rollershutter" [ upDown="4/3/50+<4/3/51", stopMove="4/3/52+<4/3/53", position="4/3/54+<4/3/55" ] + + /* TODO: complete */ } } ``` -demo.items: +knx.items: ```xtend -Switch someSwitchItem "Manually Defined Switch" { channel="knx:basic:ip1:someactor:someswitch" } + /* TODO: complete */ ``` +knx.sitemap: -## Supported Datapoint Types +```xtend + /* TODO: complete */ +``` -The KNX binding supports a limited set of Datapoint types (DPTs). If your thing configuration contains a DPT that is not supported by the KNX binding, an error will be logged ("DPT n.nnn is not supported by the KNX binding"). +### Control Example -To get an overview of the supported DPTs, it's best to look into the source code of the KNX binding and the library it depends on. The DPTs for the binding are defined in [KNXCoreTypeMapper](https://github.com/openhab/openhab/blob/master/bundles/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java). The constants (and their mapping to DPTs) are defined in the library [calimero](https://github.com/calimero-project/calimero/tree/master/src/tuwien/auto/calimero/dptxlator). -## KNX Logging +control.things: -Since version 1.5.0 of this binding, it is possible to capture log events from calimero. These log events contain detailed information from the KNX bus (what is written to the bus, what gets read from the bus, ...) +```xtend +Bridge knx:ip:bridge [ + ipAddress="192.168.0.10", + portNumber=3671, + localIp="192.168.0.11", + tape="TUNNEL", + readingPause=50, + responseTimeout=10, + readRetriesLimit=3, + autoReconnectPeriod=1, + localSourceAddr="0.0.0" +] { + Thing device generic { + Type switch-control : demoSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] + Type dimmer-control : controlSwitch "Control Dimmer" [ switch="3/3/50+3/3/48", increaseDecrease="3/3/49" ] + + /* TODO: complete */ + } +} +``` -To enable this logging, the following line has to be added to `logback.xml`: +control.items: - +```xtend + /* TODO: complete */ +``` + +control.sitemap: + +```xtend + /* TODO: complete */ +``` diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java index 15f4b36f3ee90..55ac1006a6108 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -8,6 +8,12 @@ */ package org.openhab.binding.knx; +import static java.util.stream.Collectors.toSet; + +import java.util.Collections; +import java.util.Set; +import java.util.stream.Stream; + import org.eclipse.smarthome.core.thing.ThingTypeUID; /** @@ -20,33 +26,12 @@ public class KNXBindingConstants { public static final String BINDING_ID = "knx"; - // List of all Thing Type UIDs + // Thing Type UIDs public static final ThingTypeUID THING_TYPE_IP_BRIDGE = new ThingTypeUID(BINDING_ID, "ip"); public static final ThingTypeUID THING_TYPE_SERIAL_BRIDGE = new ThingTypeUID(BINDING_ID, "serial"); - public static final ThingTypeUID THING_TYPE_BASIC = new ThingTypeUID(BINDING_ID, "basic"); - - // List of all Channel ids - public static final String CHANNEL_DIMMER = "dimmer"; - public static final String CHANNEL_NUMBER = "number"; - public static final String CHANNEL_STRING = "string"; - public static final String CHANNEL_CONTACT = "contact"; - public static final String CHANNEL_DATETIME = "datetime"; - public static final String CHANNEL_RESET = "reset"; - public static final String CHANNEL_ROLLERSHUTTER = "rollershutter"; - public static final String CHANNEL_SETPOINT = "setpoint"; - public static final String CHANNEL_SWITCH = "switch"; - public static final String CHANNEL_GENERIC = "generic"; - - public static final String CHANNEL_WALLBUTTON = "wallbutton"; - - public static final String CHANNEL_OPERATING_HOURS = "operatinghours"; - public static final String CHANNEL_CURRENT = "current"; - public static final String CHANNEL_ENERGY = "energy"; + public static final ThingTypeUID THING_TYPE_DEVICE = new ThingTypeUID(BINDING_ID, "device"); - public static final String ERRORS_INTERVAL = "errors5min"; - public static final String ERRORS_STARTUP = "errorsall"; - - // List of Property ids + // Property IDs public static final String FIRMWARE_TYPE = "firmwaretype"; public static final String FIRMWARE_VERSION = "firmwareversion"; public static final String FIRMWARE_SUBVERSION = "firmwaresubversion"; @@ -55,27 +40,52 @@ public class KNXBindingConstants { public static final String MANUFACTURER_HARDWARE_TYPE = "manfacturerhardwaretype"; public static final String MANUFACTURER_FIRMWARE_REVISION = "manfacturerfirmwarerevision"; - // List of all Configuration parameters - public static final String ADDRESS = "address"; - public static final String CURRENT_GA = "currentGA"; - public static final String ENERGY_GA = "energyGA"; - public static final String GROUPADDRESS = "groupaddress"; - public static final String INCREASE_DECREASE_GA = "increaseDecreaseGA"; - public static final String INTERVAL = "interval"; + // Thing Configuration parameters public static final String IP_ADDRESS = "ipAddress"; - public static final String IP_CONNECTION_TYPE = "ipConnectionType"; + public static final String IP_CONNECTION_TYPE = "type"; public static final String LOCAL_IP = "localIp"; public static final String LOCAL_SOURCE_ADDRESS = "localSourceAddr"; public static final String PORT_NUMBER = "portNumber"; - public static final String POSITION_GA = "positionGA"; public static final String SERIAL_PORT = "serialPort"; - public static final String SETPOINT_GA = "setpointGA"; - public static final String STOP_MOVE_GA = "stopMoveGA"; - public static final String SWITCH_GA = "switchGA"; - public static final String UP_DOWN_GA = "upDownGA"; // The default multicast ip address (see iana EIBnet/IP public static final String DEFAULT_MULTICAST_IP = "224.0.23.12"; + // Channel Type IDs + public static final String CHANNEL_CONTACT = "contact"; + public static final String CHANNEL_CONTACT_CONTROL = "contact-control"; + public static final String CHANNEL_DATETIME = "datetime"; + public static final String CHANNEL_DATETIME_CONTROL = "datetime-control"; + public static final String CHANNEL_DIMMER = "dimmer"; + public static final String CHANNEL_DIMMER_CONTROL = "dimmer-control"; + public static final String CHANNEL_NUMBER = "number"; + public static final String CHANNEL_NUMBER_CONTROL = "number-control"; + public static final String CHANNEL_ROLLERSHUTTER = "rollershutter"; + public static final String CHANNEL_ROLLERSHUTTER_CONTROL = "rollershutter-control"; + public static final String CHANNEL_STRING = "string"; + public static final String CHANNEL_STRING_CONTROL = "string-control"; + public static final String CHANNEL_SWITCH = "switch"; + public static final String CHANNEL_SWITCH_CONTROL = "switch-control"; + + public static final Set CONTROL_CHANNEL_TYPES = Collections + .unmodifiableSet(Stream.of(CHANNEL_CONTACT_CONTROL, // + CHANNEL_DATETIME_CONTROL, // + CHANNEL_DIMMER_CONTROL, // + CHANNEL_NUMBER_CONTROL, // + CHANNEL_ROLLERSHUTTER_CONTROL, // + CHANNEL_STRING_CONTROL, // + CHANNEL_SWITCH_CONTROL // + ).collect(toSet())); + + public static final String CHANNEL_RESET = "reset"; + + // Channel Configuration parameters + public static final String GA = "ga"; + public static final String INCREASE_DECREASE_GA = "increaseDecrease"; + public static final String POSITION_GA = "position"; + public static final String STOP_MOVE_GA = "stopMove"; + public static final String SWITCH_GA = "switch"; + public static final String UP_DOWN_GA = "upDown"; + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java similarity index 77% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java index 0d5c33589c75b..11bb329aa6a87 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBasicThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java @@ -15,6 +15,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Random; import java.util.Set; import java.util.concurrent.ScheduledFuture; @@ -24,6 +25,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; +import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.Channel; import org.eclipse.smarthome.core.thing.ChannelUID; @@ -32,17 +34,20 @@ import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.ThingStatusInfo; import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; +import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; -import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.UnDefType; +import org.openhab.binding.knx.KNXBindingConstants; import org.openhab.binding.knx.internal.channel.CommandSpec; import org.openhab.binding.knx.internal.channel.KNXChannelSelector; import org.openhab.binding.knx.internal.channel.KNXChannelType; import org.openhab.binding.knx.internal.channel.ListenSpec; import org.openhab.binding.knx.internal.channel.ReadSpec; +import org.openhab.binding.knx.internal.channel.ResponseSpec; import org.openhab.binding.knx.internal.client.KNXClient; -import org.openhab.binding.knx.internal.config.BasicConfig; +import org.openhab.binding.knx.internal.config.DeviceConfig; import org.openhab.binding.knx.internal.handler.DeviceInspector; import org.openhab.binding.knx.internal.handler.DeviceInspector.Result; import org.slf4j.Logger; @@ -56,21 +61,20 @@ import tuwien.auto.calimero.exception.KNXFormatException; /** - * The {@link KNXBasicThingHandler} is responsible for handling commands, which are + * The {@link DeviceThingHandler} is responsible for handling commands, which are * sent to one of the channels. * * @author Karel Goderis - Initial contribution */ @NonNullByDefault -public class KNXBasicThingHandler extends BaseThingHandler implements GroupAddressListener { +public class DeviceThingHandler extends BaseThingHandler implements GroupAddressListener { private final Random random = new Random(); - private final Logger logger = LoggerFactory.getLogger(KNXBasicThingHandler.class); + private final Logger logger = LoggerFactory.getLogger(DeviceThingHandler.class); // the physical address of the KNX actor represented by this Thing - @Nullable - protected IndividualAddress address; + protected @Nullable IndividualAddress address; // group addresses the handler is monitoring protected Set groupAddresses = new HashSet<>(); @@ -80,24 +84,24 @@ public class KNXBasicThingHandler extends BaseThingHandler implements GroupAddre private final Map> readFutures = new HashMap<>(); - @Nullable - private ScheduledFuture pollingJob; + private @Nullable ScheduledFuture pollingJob; - @Nullable - private ScheduledFuture descriptionJob; + private @Nullable ScheduledFuture descriptionJob; private boolean filledDescription = false; private final TypeHelper typeHelper; - public KNXBasicThingHandler(Thing thing, TypeHelper typeHelper) { + private @Nullable BigDecimal readInterval; + + public DeviceThingHandler(Thing thing, TypeHelper typeHelper) { super(thing); this.typeHelper = typeHelper; } @Override public void initialize() { - BasicConfig config = getConfigAs(BasicConfig.class); + DeviceConfig config = getConfigAs(DeviceConfig.class); initializeGroupAddresses(); @@ -105,7 +109,7 @@ public void initialize() { if (StringUtils.isNotBlank(config.getAddress())) { address = new IndividualAddress(config.getAddress()); - long pollingInterval = config.getInterval().longValue(); + long pollingInterval = config.getPingInterval().longValue(); long initialDelay = Math.round(pollingInterval * random.nextFloat()); ScheduledFuture pollingJob = this.pollingJob; @@ -114,6 +118,8 @@ public void initialize() { this.pollingJob = getBridgeHandler().getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialDelay, pollingInterval, TimeUnit.SECONDS); } + + readInterval = config.getReadInterval(); } else { updateStatus(ThingStatus.ONLINE); } @@ -214,16 +220,18 @@ private void forAllChannels(ChannelFunction function) { @Override public void channelLinked(ChannelUID channelUID) { - withKNXType(channelUID, (selector, configuration) -> { - scheduleRead(selector, configuration); - }); + if (!isControl(channelUID)) { + withKNXType(channelUID, (selector, configuration) -> { + scheduleRead(selector, configuration); + }); + } } private void scheduleReadJobs() { cancelReadFutures(); for (Channel channel : getThing().getChannels()) { - if (isLinked(channel.getUID().getId())) { + if (isLinked(channel.getUID().getId()) && !isControl(channel.getUID())) { withKNXType(channel, (selector, configuration) -> { scheduleRead(selector, configuration); }); @@ -232,16 +240,15 @@ private void scheduleReadJobs() { } private void scheduleRead(KNXChannelType selector, Configuration configuration) throws KNXFormatException { - BigDecimal readInterval = (BigDecimal) configuration.get(INTERVAL); List readSpecs = selector.getReadSpec(configuration); for (ReadSpec readSpec : readSpecs) { for (GroupAddress groupAddress : readSpec.getReadAddresses()) { - scheduleReadJob(groupAddress, readSpec.getDPT(), readInterval); + scheduleReadJob(groupAddress, readSpec.getDPT()); } } } - private void scheduleReadJob(GroupAddress groupAddress, String dpt, @Nullable BigDecimal readInterval) { + private void scheduleReadJob(GroupAddress groupAddress, String dpt) { boolean recurring = readInterval != null && readInterval.intValue() > 0; Runnable readRunnable = () -> { @@ -289,7 +296,7 @@ public boolean listensTo(GroupAddress destination) { @Override public void handleCommand(ChannelUID channelUID, Command command) { logger.trace("Handling a Command ({}) for Channel {}", command, channelUID); - if (command instanceof RefreshType) { + if (command instanceof RefreshType && !isControl(channelUID)) { logger.debug("Refreshing channel {}", channelUID); withKNXType(channelUID, (selector, configuration) -> { scheduleRead(selector, configuration); @@ -302,26 +309,45 @@ public void handleCommand(ChannelUID channelUID, Command command) { } break; default: - sendToKNX(channelUID, command); + withKNXType(channelUID, (selector, channelConfiguration) -> { + CommandSpec commandSpec = selector.getCommandSpec(channelConfiguration, command); + if (commandSpec != null) { + getClient().writeToKNX(commandSpec); + } + }); break; } } + } + private boolean isControl(ChannelUID channelUID) { + ChannelTypeUID channelTypeUID = getChannelTypeUID(channelUID); + return CONTROL_CHANNEL_TYPES.contains(channelTypeUID.getId()); } - private void sendToKNX(ChannelUID channelUID, Command command) { - withKNXType(channelUID, (selector, channelConfiguration) -> { - CommandSpec commandSpec = selector.getCommandSpec(channelConfiguration, command); - if (commandSpec != null) { - getClient().writeToKNX(commandSpec); - } - }); + private ChannelTypeUID getChannelTypeUID(ChannelUID channelUID) { + Channel channel = getThing().getChannel(channelUID.getId()); + Objects.requireNonNull(channel); + ChannelTypeUID channelTypeUID = channel.getChannelTypeUID(); + Objects.requireNonNull(channelTypeUID); + return channelTypeUID; } @Override public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { - // Nothing to do here - Software representations of physical actors should not respond to GroupRead requests, as - // the physical device will be responding to these instead + logger.trace("Thing {} received a Group Read Request telegram from '{}' for destination '{}'", + getThing().getUID(), source, destination); + + for (Channel channel : getThing().getChannels()) { + if (isControl(channel.getUID())) { + withKNXType(channel, (selector, configuration) -> { + ResponseSpec responseSpec = selector.getResponseSpec(configuration, destination); + if (responseSpec != null) { + postCommand(channel.getUID().getId(), RefreshType.REFRESH); + } + }); + } + } } @Override @@ -332,7 +358,7 @@ public void onGroupReadResponse(KNXClient client, IndividualAddress source, Grou @Override public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { - logger.trace("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), + logger.debug("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { @@ -347,6 +373,8 @@ public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddres } } + private final Map> channelFutures = new HashMap<>(); + private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSpec listenSpec, ChannelUID channelUID) { if (!typeHelper.isDPTSupported(listenSpec.getDPT())) { @@ -357,8 +385,33 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSp Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, listenSpec.getDPT()); Type type = typeHelper.getType(datapoint, asdu); + System.out.println("turned " + asdu[0] + " into " + type); + if (type != null) { - updateState(channelUID, (State) type); + if (KNXBindingConstants.CHANNEL_DIMMER_CONTROL.equals(getChannelTypeUID(channelUID).getId()) + && (type instanceof UnDefType || type instanceof IncreaseDecreaseType)) { + // special handling for dimmer-control + if (UnDefType.UNDEF.equals(type)) { + ScheduledFuture future = channelFutures.remove(channelUID); + if (future != null) { + future.cancel(false); + } + } else if (type instanceof IncreaseDecreaseType) { + ScheduledFuture future = scheduler.scheduleWithFixedDelay(() -> { + postCommand(channelUID, (Command) type); + }, 0, 500, TimeUnit.MILLISECONDS); + ScheduledFuture previousFuture = channelFutures.put(channelUID, future); + if (previousFuture != null) { + previousFuture.cancel(true); + } + } + } else { + if (type instanceof Command) { + postCommand(channelUID, (Command) type); + } else { + // drop + } + } } else { String s = asduToHex(asdu); logger.warn( @@ -387,9 +440,7 @@ public void restart() { class ReadRunnable implements Runnable { private final GroupAddress address; - - @Nullable - private final String dpt; + private final @Nullable String dpt; ReadRunnable(GroupAddress address, @Nullable String dpt) { this.address = address; @@ -416,12 +467,12 @@ private void pollDeviceStatus() { boolean isReachable = getClient().isReachable(address); if (isReachable) { updateStatus(ThingStatus.ONLINE); - BasicConfig config = getConfigAs(BasicConfig.class); + DeviceConfig config = getConfigAs(DeviceConfig.class); if (!filledDescription && config.getFetch()) { ScheduledFuture descriptionJob = this.descriptionJob; if (descriptionJob == null || descriptionJob.isCancelled()) { this.descriptionJob = getBridgeHandler().getScheduler().schedule(() -> { - IndividualAddress address = KNXBasicThingHandler.this.address; + IndividualAddress address = DeviceThingHandler.this.address; if (address != null) { DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), address); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index 4e966f8831f84..2ea07ba295d13 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -28,7 +28,7 @@ /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are * sent to one of the channels. It implements a KNX/IP Gateway, that either acts a a - * conduit for other {@link KNXBasicThingHandler}s, or for Channels that are + * conduit for other {@link DeviceThingHandler}s, or for Channels that are * directly defined on the bridge * * @author Karel Goderis - Initial contribution diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java index cce35b472e840..6d49a7b2bd6f6 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -18,7 +18,7 @@ /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are * sent to one of the channels. It implements a KNX Serial/USB Gateway, that either acts a a - * conduit for other {@link KNXBasicThingHandler}s, or for Channels that are + * conduit for other {@link DeviceThingHandler}s, or for Channels that are * directly defined on the bridge * * @author Karel Goderis - Initial contribution diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java index 7cf3c1f0135d8..eb848a56bb5c5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java @@ -1,30 +1,32 @@ package org.openhab.binding.knx.internal.channel; -import org.eclipse.smarthome.core.types.Command; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; public class CommandSpec { - private final Command command; + private final Type command; private final String dpt; - private final GroupAddress groupAddress; + private final @Nullable GroupAddress groupAddress; - private CommandSpec(String dpt, GroupAddress groupAddress, Command command) { - super(); + private CommandSpec(String dpt, GroupAddress groupAddress, Type command) { this.dpt = dpt; this.groupAddress = groupAddress; this.command = command; } - public CommandSpec(ChannelConfiguration channelConfiguration, String defaultDPT, Command command) + public CommandSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT, Type command) throws KNXFormatException { - this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, - new GroupAddress(channelConfiguration.getMainGA().getGA()), command); + this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() + : defaultDPT, + channelConfiguration != null ? new GroupAddress(channelConfiguration.getMainGA().getGA()) : null, + command); } - public Command getCommand() { + public Type getCommand() { return command; } @@ -32,7 +34,7 @@ public String getDpt() { return dpt; } - public GroupAddress getGroupAddress() { + public @Nullable GroupAddress getGroupAddress() { return groupAddress; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java index 53dd5c261ed8d..0bd9d6017f1ce 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java @@ -11,6 +11,7 @@ import static java.util.stream.Collectors.toSet; import java.util.Collections; +import java.util.Objects; import java.util.Set; import java.util.stream.Stream; @@ -22,15 +23,14 @@ public final class KNXChannelSelector { private static final Set TYPES = Collections.unmodifiableSet(Stream.of(// - // new TypeContact(), // - // new TypeDimmer(), // + new TypeContact(), // + new TypeDateTime(), // + new TypeDimmer(), // + new TypeNumber(), // new TypeRollershutter(), // - // new TypeSetpoint(), // - new TypeSwitch(), // - // new TypeWallButton(), // - // new TypeDateTime(), // - // new TypeString(), // - new TypeNumber()).collect(toSet())); + new TypeString(), // + new TypeSwitch() // + ).collect(toSet())); private KNXChannelSelector() { // prevent instantiation @@ -38,12 +38,9 @@ private KNXChannelSelector() { public static KNXChannelType getValueSelectorFromChannelTypeId(@Nullable ChannelTypeUID channelTypeUID) throws IllegalArgumentException { - if (channelTypeUID == null) { - throw new IllegalArgumentException("channel type UID was null"); - } - + Objects.requireNonNull(channelTypeUID); for (KNXChannelType c : TYPES) { - if (c.getChannelID().equals(channelTypeUID.getId())) { + if (c.getChannelIDs().contains(channelTypeUID.getId())) { return c; } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index ff8b2c38ab94f..ce59d3806a65b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -23,7 +23,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -37,8 +37,21 @@ public abstract class KNXChannelType { private static final Pattern PATTERN_LISTEN = Pattern .compile("\\+((?\\<)?(?[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}))"); + private final Set channelTypeIDs; + + KNXChannelType(String... channelTypeIDs) { + this.channelTypeIDs = new HashSet<>(Arrays.asList(channelTypeIDs)); + } + + final Set getChannelIDs() { + return channelTypeIDs; + } + @Nullable - protected ChannelConfiguration parse(String fancy) { + protected ChannelConfiguration parse(@Nullable String fancy) { + if (fancy == null) { + return null; + } Matcher matcher = PATTERN.matcher(fancy); if (matcher.matches()) { @@ -65,8 +78,10 @@ protected ChannelConfiguration parse(String fancy) { public Set getListenAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { - ret.addAll(parse((String) channelConfiguration.get(key)).getListenGAs().stream() - .map(KNXChannelType::toGroupAddress).collect(toSet())); + ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); + if (conf != null) { + ret.addAll(conf.getListenGAs().stream().map(KNXChannelType::toGroupAddress).collect(toSet())); + } } return ret; } @@ -74,8 +89,10 @@ public Set getListenAddresses(Configuration channelConfiguration) public Set getReadAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { - ret.addAll(parse((String) channelConfiguration.get(key)).getReadGAs().stream() - .map(KNXChannelType::toGroupAddress).collect(toSet())); + ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); + if (conf != null) { + ret.addAll(conf.getReadGAs().stream().map(KNXChannelType::toGroupAddress).collect(toSet())); + } } return ret; } @@ -83,9 +100,12 @@ public Set getReadAddresses(Configuration channelConfiguration) { public Set getWriteAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { - GroupAddress ga = toGroupAddress(parse((String) channelConfiguration.get(key)).getMainGA()); - if (ga != null) { - ret.add(ga); + ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); + if (conf != null) { + GroupAddress ga = toGroupAddress(conf.getMainGA()); + if (ga != null) { + ret.add(ga); + } } } return ret; @@ -100,16 +120,6 @@ public Set getWriteAddresses(Configuration channelConfiguration) { return null; } - private final String channelTypeID; - - KNXChannelType(String channelTypeID) { - this.channelTypeID = channelTypeID; - } - - final String getChannelID() { - return channelTypeID; - } - protected final Set getAddresses(@Nullable Configuration configuration, Iterable addresses) throws KNXFormatException { Set ret = new HashSet<>(); @@ -133,12 +143,14 @@ protected final Set asSet(String... values) { return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(values))); } - public abstract @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException; - - protected final CommandSpec getDefaultCommandSpec(Configuration configuration, String key, Command command) - throws KNXFormatException { - return new CommandSpec(parse((String) configuration.get(key)), getDefaultDPT(key), command); + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { + if (getAllGAKeys().size() == 1) { + String key = getAllGAKeys().iterator().next(); + return new CommandSpec(parse((String) configuration.get(key)), getDefaultDPT(key), command); + } else { + throw new IllegalArgumentException( + "More than one GA can be configured - this type needs a custom implementation!"); + } } public final List getReadSpec(Configuration configuration) throws KNXFormatException { @@ -156,9 +168,16 @@ public final List getReadSpec(Configuration configuration) throws KNXF protected abstract String getDefaultDPT(String gaConfigKey); + public @Nullable ResponseSpec getResponseSpec(Configuration configuration, GroupAddress groupAddress) + throws KNXFormatException { + return getAllGAKeys().stream() + .map(key -> new ResponseSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) + .filter(spec -> spec.getGroupAddress().equals(groupAddress)).findFirst().orElse(null); + } + @Override public String toString() { - return channelTypeID; + return channelTypeIDs.toString(); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java index 6e6ab1e0c26fb..c890dc0b5b775 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java @@ -2,8 +2,11 @@ import static java.util.stream.Collectors.toList; +import java.util.Collections; import java.util.List; +import org.eclipse.jdt.annotation.Nullable; + import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -12,9 +15,12 @@ public class ListenSpec { private final String dpt; private final List listenAddresses; - public ListenSpec(ChannelConfiguration channelConfiguration, String defaultDPT) { - this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, - channelConfiguration.getListenGAs().stream().map(ListenSpec::toGroupAddress).collect(toList())); + public ListenSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() + : defaultDPT, + channelConfiguration != null + ? channelConfiguration.getListenGAs().stream().map(ListenSpec::toGroupAddress).collect(toList()) + : Collections.emptyList()); } private ListenSpec(String dpt, List listenAddresses) { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java index e62ee5c176622..bf65f125b7950 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java @@ -2,8 +2,11 @@ import static java.util.stream.Collectors.toList; +import java.util.Collections; import java.util.List; +import org.eclipse.jdt.annotation.Nullable; + import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -12,12 +15,15 @@ public class ReadSpec { private final String dpt; private final List readAddresses; - public ReadSpec(ChannelConfiguration channelConfiguration, String defaultDPT) { - this(channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT, - channelConfiguration.getReadGAs().stream().map(ReadSpec::toGroupAddress).collect(toList())); + public ReadSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() + : defaultDPT, + channelConfiguration != null + ? channelConfiguration.getReadGAs().stream().map(ReadSpec::toGroupAddress).collect(toList()) + : Collections.emptyList()); } - public ReadSpec(String dpt, List readAddresses) { + private ReadSpec(String dpt, List readAddresses) { this.dpt = dpt; this.readAddresses = readAddresses; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java new file mode 100644 index 0000000000000..9f58c5b5f1f89 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java @@ -0,0 +1,39 @@ +package org.openhab.binding.knx.internal.channel; + +import org.eclipse.jdt.annotation.Nullable; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +public class ResponseSpec { + + private final String dpt; + private final @Nullable GroupAddress groupAddress; + + public ResponseSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() + : defaultDPT, channelConfiguration != null ? toGroupAddress(channelConfiguration.getMainGA()) : null); + } + + private ResponseSpec(String dpt, GroupAddress groupAddress) { + this.dpt = dpt; + this.groupAddress = groupAddress; + } + + public String getDpt() { + return dpt; + } + + public @Nullable GroupAddress getGroupAddress() { + return groupAddress; + } + + private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + try { + return new GroupAddress(ga.getGA()); + } catch (KNXFormatException e) { + return null; + } + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java index f147c041ff785..a9ef408ddc296 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java @@ -14,29 +14,19 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; -import tuwien.auto.calimero.exception.KNXFormatException; @NonNullByDefault class TypeContact extends KNXChannelType { TypeContact() { - super(CHANNEL_CONTACT); + super(CHANNEL_CONTACT, CHANNEL_CONTACT_CONTROL); } @Override protected Set getAllGAKeys() { - return Collections.singleton(GROUPADDRESS); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return getDefaultCommandSpec(configuration, GROUPADDRESS, command); + return Collections.singleton(GA); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java index 1844218c1549e..4182495fa4f02 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java @@ -14,29 +14,19 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; import tuwien.auto.calimero.dptxlator.DPTXlatorDateTime; -import tuwien.auto.calimero.exception.KNXFormatException; @NonNullByDefault class TypeDateTime extends KNXChannelType { TypeDateTime() { - super(CHANNEL_DATETIME); + super(CHANNEL_DATETIME, CHANNEL_DATETIME_CONTROL); } @Override protected Set getAllGAKeys() { - return Collections.singleton(GROUPADDRESS); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return getDefaultCommandSpec(configuration, GROUPADDRESS, command); + return Collections.singleton(GA); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index cf4f11b4e4f44..392ec6004ea9d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -21,7 +21,7 @@ import org.eclipse.smarthome.core.library.types.OnOffType; import org.eclipse.smarthome.core.library.types.PercentType; import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.dptxlator.DPTXlator3BitControlled; import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; @@ -32,12 +32,11 @@ class TypeDimmer extends KNXChannelType { TypeDimmer() { - super(CHANNEL_DIMMER); + super(CHANNEL_DIMMER, CHANNEL_DIMMER_CONTROL); } @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { ChannelConfiguration confSwitch = parse((String) configuration.get(SWITCH_GA)); ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); @@ -46,7 +45,7 @@ class TypeDimmer extends KNXChannelType { return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), command); } else if (confPosition != null) { return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), - (PercentType) ((OnOffType) command).as(PercentType.class)); + ((OnOffType) command).as(PercentType.class)); } } @@ -55,7 +54,7 @@ class TypeDimmer extends KNXChannelType { return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); } else if (confSwitch != null) { return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), - (OnOffType) ((PercentType) command).as(OnOffType.class)); + ((PercentType) command).as(OnOffType.class)); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java index abd7a3402869f..06368f2b98a5c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java @@ -14,17 +14,12 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; - -import tuwien.auto.calimero.exception.KNXFormatException; @NonNullByDefault class TypeNumber extends KNXChannelType { TypeNumber() { - super(CHANNEL_NUMBER); + super(CHANNEL_NUMBER, CHANNEL_NUMBER_CONTROL); } @Override @@ -34,13 +29,7 @@ protected String getDefaultDPT(String gaConfigKey) { @Override protected Set getAllGAKeys() { - return Collections.singleton(GROUPADDRESS); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return new CommandSpec(parse((String) configuration.get(GROUPADDRESS)), getDefaultDPT(GROUPADDRESS), command); + return Collections.singleton(GA); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index 7fbee5b802565..dc7aa6a9e16ba 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -21,7 +21,7 @@ import org.eclipse.smarthome.core.library.types.PercentType; import org.eclipse.smarthome.core.library.types.StopMoveType; import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; @@ -31,7 +31,7 @@ class TypeRollershutter extends KNXChannelType { TypeRollershutter() { - super(CHANNEL_ROLLERSHUTTER); + super(CHANNEL_ROLLERSHUTTER, CHANNEL_ROLLERSHUTTER_CONTROL); } @Override @@ -49,8 +49,7 @@ protected String getDefaultDPT(String gaConfigKey) { } @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { + public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { ChannelConfiguration confUpDown = parse((String) configuration.get(UP_DOWN_GA)); ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); @@ -59,7 +58,7 @@ protected String getDefaultDPT(String gaConfigKey) { return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), command); } else if (confPosition != null) { return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), - (PercentType) ((UpDownType) command).as(PercentType.class)); + ((UpDownType) command).as(PercentType.class)); } } @@ -68,7 +67,7 @@ protected String getDefaultDPT(String gaConfigKey) { return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); } else if (confUpDown != null) { return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), - (UpDownType) ((PercentType) command).as(UpDownType.class)); + ((PercentType) command).as(UpDownType.class)); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java deleted file mode 100644 index e4bcc7bd6e2af..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSetpoint.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.*; - -import java.util.Collections; -import java.util.Set; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; - -import tuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat; -import tuwien.auto.calimero.exception.KNXFormatException; - -@NonNullByDefault -class TypeSetpoint extends KNXChannelType { - - TypeSetpoint() { - super(CHANNEL_SETPOINT); - } - - @Override - protected Set getAllGAKeys() { - return Collections.singleton(SETPOINT_GA); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return getDefaultCommandSpec(configuration, SETPOINT_GA, command); - } - - @Override - protected String getDefaultDPT(String gaConfigKey) { - return DPTXlator2ByteFloat.DPT_TEMPERATURE.getID(); - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java index e6c7ed9b80668..7f60c6c2875a1 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java @@ -14,29 +14,19 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; import tuwien.auto.calimero.dptxlator.DPTXlatorString; -import tuwien.auto.calimero.exception.KNXFormatException; @NonNullByDefault class TypeString extends KNXChannelType { TypeString() { - super(CHANNEL_STRING); + super(CHANNEL_STRING, CHANNEL_STRING_CONTROL); } @Override protected Set getAllGAKeys() { - return Collections.singleton(GROUPADDRESS); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return getDefaultCommandSpec(configuration, GROUPADDRESS, command); + return Collections.singleton(GA); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java index 97237c325aa0c..4db7c6bcb7dbd 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -14,18 +14,14 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; -import tuwien.auto.calimero.exception.KNXFormatException; @NonNullByDefault class TypeSwitch extends KNXChannelType { TypeSwitch() { - super(CHANNEL_SWITCH); + super(CHANNEL_SWITCH, CHANNEL_SWITCH_CONTROL); } @Override @@ -33,12 +29,6 @@ protected Set getAllGAKeys() { return Collections.singleton(SWITCH_GA); } - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - return getDefaultCommandSpec(configuration, SWITCH_GA, command); - } - @Override protected String getDefaultDPT(String gaConfigKey) { return DPTXlatorBoolean.DPT_SWITCH.getID(); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java deleted file mode 100644 index 2562095f7605b..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeWallButton.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.channel; - -import static org.openhab.binding.knx.KNXBindingConstants.CHANNEL_WALLBUTTON; - -import java.util.Collections; -import java.util.Set; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.types.Command; - -import tuwien.auto.calimero.exception.KNXFormatException; - -@NonNullByDefault -class TypeWallButton extends KNXChannelType { - - TypeWallButton() { - super(CHANNEL_WALLBUTTON); - } - - @Override - protected Set getAllGAKeys() { - // TODO Auto-generated method stub - return Collections.emptySet(); - } - - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Command command) - throws KNXFormatException { - // TODO Auto-generated method stub - return null; - } - - @Override - protected String getDefaultDPT(String gaConfigKey) { - return ""; - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java index fde644dabcb68..14bf3632ea3a9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -12,12 +12,14 @@ import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.ThingUID; +import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.handler.GroupAddressListener; import org.openhab.binding.knx.handler.StatusUpdateCallback; import org.openhab.binding.knx.handler.TelegramListener; import org.openhab.binding.knx.handler.TypeHelper; import org.openhab.binding.knx.internal.channel.CommandSpec; +import org.openhab.binding.knx.internal.channel.ResponseSpec; import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; @@ -30,6 +32,7 @@ import tuwien.auto.calimero.IndividualAddress; import tuwien.auto.calimero.datapoint.CommandDP; import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.device.ProcessCommunicationResponder; import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.NetworkLinkListener; @@ -39,6 +42,7 @@ import tuwien.auto.calimero.mgmt.ManagementClientImpl; import tuwien.auto.calimero.mgmt.ManagementProcedures; import tuwien.auto.calimero.mgmt.ManagementProceduresImpl; +import tuwien.auto.calimero.process.ProcessCommunicationBase; import tuwien.auto.calimero.process.ProcessCommunicator; import tuwien.auto.calimero.process.ProcessCommunicatorImpl; import tuwien.auto.calimero.process.ProcessEvent; @@ -57,17 +61,12 @@ public abstract class KNXClient implements NetworkLinkListener { private final int readRetriesLimit; - @Nullable - private ScheduledFuture busJob; - - @Nullable - private ProcessCommunicator processCommunicator; - @Nullable - private ManagementProcedures managementProcedures; - @Nullable - private ManagementClient managementClient; - @Nullable - private KNXNetworkLink link; + private @Nullable ScheduledFuture busJob; + private @Nullable ProcessCommunicator processCommunicator; + private @Nullable ProcessCommunicationResponder responseCommunicator; + private @Nullable ManagementProcedures managementProcedures; + private @Nullable ManagementClient managementClient; + private @Nullable KNXNetworkLink link; @Nullable private DeviceInfoClient deviceInfoClient; @@ -104,7 +103,7 @@ public void detached(DetachEvent e) { @Override public void groupWrite(ProcessEvent e) { - processEvent("Group Write Request", e, (listener, source, destination, asdu) -> { + processEvent("Group Write", e, (listener, source, destination, asdu) -> { listener.onGroupWrite(KNXClient.this, source, destination, asdu); }); } @@ -184,6 +183,9 @@ private synchronized boolean connect() { processCommunicator.addProcessListener(processListener); this.processCommunicator = processCommunicator; + ProcessCommunicationResponder responseCommunicator = new ProcessCommunicationResponder(link); + this.responseCommunicator = responseCommunicator; + link.addLinkListener(this); busJob = knxScheduler.scheduleWithFixedDelay(() -> readNextQueuedDatapoint(), 0, readingPause, @@ -242,7 +244,7 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification if (asdu.length == 0) { return; } - logger.trace("Received a {} telegram from '{}' for destination '{}'", task, source, destination); + logger.trace("Received a {} telegram from '{}' to '{}'", task, source, destination); for (GroupAddressListener listener : groupAddressListeners) { if (listener.listensTo(destination)) { knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); @@ -256,47 +258,6 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification } } - public void writeToKNX(CommandSpec commandSpec) throws KNXException { - if (!connect()) { - return; - } - - KNXNetworkLink link = this.link; - ProcessCommunicator processCommunicator = this.processCommunicator; - - if (processCommunicator == null || link == null) { - logger.debug("Cannot write to the KNX bus (processCommuicator: {}, link: {})", - processCommunicator == null ? "Not OK" : "OK", - link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); - return; - } - Datapoint datapoint = new CommandDP(commandSpec.getGroupAddress(), thingUID.toString(), 0, - commandSpec.getDpt()); - String mappedValue = toDPTValue(commandSpec.getCommand(), datapoint.getDPT()); - if (mappedValue == null) { - logger.debug("Value '{}' cannot be mapped to datapoint '{}'", commandSpec.getCommand(), datapoint); - return; - } - for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { - try { - processCommunicator.write(datapoint, mappedValue); - logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", commandSpec.getCommand(), datapoint, - i); - break; - } catch (KNXException e) { - if (i < MAX_SEND_ATTEMPTS - 1) { - logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", - commandSpec.getCommand(), datapoint, e.getMessage()); - } else { - logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", - commandSpec.getCommand(), datapoint, e.getMessage()); - closeConnection(e); - throw e; - } - } - } - } - protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; /** @@ -371,12 +332,12 @@ public void linkClosed(@Nullable CloseEvent closeEvent) { @Override public void indication(@Nullable FrameEvent e) { - // handleFrameEvent(e); + // no-op } @Override public void confirmation(@Nullable FrameEvent e) { - // handleFrameEvent(e); + // no-op } public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { @@ -445,4 +406,66 @@ public DeviceInfoClient getDeviceInfoClient() { } } + public void writeToKNX(CommandSpec commandSpec) throws KNXException { + ProcessCommunicator processCommunicator = this.processCommunicator; + KNXNetworkLink link = this.link; + if (processCommunicator == null || link == null) { + logger.debug("Cannot write to the KNX bus (processCommuicator: {}, link: {})", + processCommunicator == null ? "Not OK" : "OK", + link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); + return; + } + GroupAddress groupAddress = commandSpec.getGroupAddress(); + if (groupAddress != null) { + sendToKNX(processCommunicator, link, groupAddress, commandSpec.getDpt(), commandSpec.getCommand()); + } + } + + public void respondToKNX(ResponseSpec responseSpec, State state) throws KNXException { + ProcessCommunicationResponder responseCommunicator = this.responseCommunicator; + KNXNetworkLink link = this.link; + if (responseCommunicator == null || link == null) { + logger.debug("Cannot write to the KNX bus (responseCommunicator: {}, link: {})", + responseCommunicator == null ? "Not OK" : "OK", + link == null ? "Not OK" : (link.isOpen() ? "Open" : "Closed")); + return; + } + GroupAddress groupAddress = responseSpec.getGroupAddress(); + if (groupAddress != null) { + sendToKNX(responseCommunicator, link, groupAddress, responseSpec.getDpt(), state); + } + } + + private void sendToKNX(ProcessCommunicationBase communicator, KNXNetworkLink link, GroupAddress groupAddress, + String dpt, Type type) throws KNXException { + if (!connect()) { + return; + } + + Datapoint datapoint = new CommandDP(groupAddress, thingUID.toString(), 0, dpt); + String mappedValue = toDPTValue(type, dpt); + if (mappedValue == null) { + logger.debug("Value '{}' cannot be mapped to datapoint '{}'", type, datapoint); + return; + } + for (int i = 0; i < MAX_SEND_ATTEMPTS; i++) { + try { + communicator.write(datapoint, mappedValue); + logger.debug("Wrote value '{}' to datapoint '{}' ({}. attempt).", type, datapoint, i); + break; + } catch (KNXException e) { + if (i < MAX_SEND_ATTEMPTS - 1) { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", + type, datapoint, e.getMessage()); + } else { + logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", + type, datapoint, e.getMessage()); + closeConnection(e); + throw e; + } + } + } + + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java similarity index 72% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java index 03b6077628eb8..53640346e4858 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BasicConfig.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java @@ -13,11 +13,12 @@ /** * @author Karel Goderis - Initial contribution */ -public class BasicConfig { +public class DeviceConfig { private String address; private boolean fetch; - private BigDecimal interval; + private BigDecimal pingInterval; + private BigDecimal readInterval; public String getAddress() { return address; @@ -27,8 +28,12 @@ public Boolean getFetch() { return fetch; } - public BigDecimal getInterval() { - return interval; + public BigDecimal getPingInterval() { + return pingInterval; + } + + public BigDecimal getReadInterval() { + return readInterval; } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index c46fd2f95be70..c9b46a56bf6e0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2017, openHAB.org and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -20,7 +20,6 @@ import java.util.Locale; import java.util.Map; -import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.library.types.DateTimeType; import org.eclipse.smarthome.core.library.types.DecimalType; import org.eclipse.smarthome.core.library.types.HSBType; @@ -69,7 +68,9 @@ * * @author Kai Kreuzer * @author Volker Daube - * @author Helmut Lehmeyer - generic DPT Mapper + * @author Jan N. Klug + * @author Helmut Lehmeyer - Java8, generic DPT Mapper + * @since 0.3.0 */ @Component public class KNXCoreTypeMapper implements KNXTypeMapper { @@ -83,15 +84,15 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { * stores the openHAB type class for (supported) KNX datapoint types in a generic way. * dptTypeMap stores more specific type class and exceptions. */ - private static Map> dptMainTypeMap; + private final Map> dptMainTypeMap; /** stores the openHAB type class for all (supported) KNX datapoint types */ - private static Map> dptTypeMap; + private final Map> dptTypeMap; /** stores the default KNX DPT to use for each openHAB type */ - private static Map, String> defaultDptMap; + private final Map, String> defaultDptMap; - static { + public KNXCoreTypeMapper() { @SuppressWarnings("unused") final List> xlators = Arrays.> asList(DPTXlator1BitControlled.class, @@ -107,29 +108,29 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 1 - * 1.005: Alarm, values no alarm alarm - * 1.016: Acknowledge, values no action acknowledge - * 1.006: Binary value, values low high - * 1.017: Trigger, values trigger trigger - * 1.007: Step, values decrease increase - * 1.018: Occupancy, values not occupied occupied - * 1.008: Up/Down, values up down - * 1.019: Window/Door, values closed open - * 1.009: Open/Close, values open close - * 1.010: Start, values stop start - * 1.021: Logical function, values OR AND - * 1.011: State, values inactive active - * 1.022: Scene A/B, values scene A scene B - * 1.001: Switch, values off on - * 1.012: Invert, values not inverted inverted - * 1.023: Shutter/Blinds mode, values only move up/down move up/down + step-stop - * 1.100: Heat/Cool, values cooling heating - * 1.002: Boolean, values false true - * 1.013: Dim send-style, values start/stop cyclic - * 1.003: Enable, values disable enable - * 1.014: Input source, values fixed calculated - * 1.004: Ramp, values no ramp ramp - * 1.015: Reset, values no action reset + * 1.005: Alarm, values: 0 = no alarm, 1 = alarm + * 1.016: Acknowledge, values: 0 = no action, 1 = acknowledge + * 1.006: Binary value, values: 0 = low, 1 = high + * 1.017: Trigger, values: 0 = trigger, 1 = trigger + * 1.007: Step, values: 0 = decrease, 1 = increase + * 1.018: Occupancy, values: 0 = not occupied, 1 = occupied + * 1.008: Up/Down, values: 0 = up, 1 = down + * 1.019: Window/Door, values: 0 = closed, 1 = open + * 1.009: Open/Close, values: 0 = open, 1 = close + * 1.010: Start, values: 0 = stop, 1 = start + * 1.021: Logical function, values: 0 = OR, 1 = AND + * 1.011: State, values: 0 = inactive, 1 = active + * 1.022: Scene A/B, values: 0 = scene A, 1 = scene B + * 1.001: Switch, values: 0 = off, 1 = on + * 1.012: Invert, values: 0 = not inverted, 1 = inverted + * 1.023: Shutter/Blinds mode, values: 0 = only move up/down, 1 = move up/down + step-stop + * 1.100: Heat/Cool, values: 0 = cooling, 1 = heating + * 1.002: Boolean, values: 0 = false, 1 = true + * 1.013: Dim send-style, values: 0 = start/stop, 1 = cyclic + * 1.003: Enable, values: 0 = disable, 1 = enable + * 1.014: Input source, values: 0 = fixed, 1 = calculated + * 1.004: Ramp, values: 0 = no ramp, 1 = ramp + * 1.015: Reset, values: 0 = no action, 1 = reset */ dptMainTypeMap.put(1, OnOffType.class); /** Exceptions Datapoint Types "B1", Main number 1 */ @@ -141,18 +142,18 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 2 - * 2.002: Boolean Controlled, values 0 false 1 true - * 2.003: Enable Controlled, values 0 disable 1 enable - * 2.011: State Controlled, values 0 inactive 1 active - * 2.001: Switch Controlled, values 0 off 1 on - * 2.012: Invert Controlled, values 0 not inverted 1 inverted - * 2.010: Start Controlled, values 0 stop 1 start - * 2.008: Up/Down Controlled, values 0 up 1 down - * 2.009: Open/Close Controlled, values 0 open 1 close - * 2.006: Binary Controlled, values 0 low 1 high - * 2.007: Step Controlled, values 0 decrease 1 increase - * 2.004: Ramp Controlled, values 0 no ramp 1 ramp - * 2.005: Alarm Controlled, values 0 no alarm 1 alarm + * 2.002: Boolean Controlled, values: 0 = false, 1 = true + * 2.003: Enable Controlled, values: 0 = disable, 1 = enable + * 2.011: State Controlled, values: 0 = inactive, 1 = active + * 2.001: Switch Controlled, values: 0 = off, 1 = on + * 2.012: Invert Controlled, values: 0 = not inverted, 1 = inverted + * 2.010: Start Controlled, values: 0 = stop, 1 = start + * 2.008: Up/Down Controlled, values: 0 = up, 1 = down + * 2.009: Open/Close Controlled, values: 0 = open, 1 = close + * 2.006: Binary Controlled, values: 0 = low, 1 = high + * 2.007: Step Controlled, values: 0 = decrease, 1 = increase + * 2.004: Ramp Controlled, values: 0 = no ramp, 1 = ramp + * 2.005: Alarm Controlled, values: 0 = no alarm, 1 = alarm */ dptMainTypeMap.put(2, DecimalType.class); /** Exceptions Datapoint Types "B2", Main number 2 */ @@ -160,8 +161,8 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 3 - * 3.007: Dimming, values decrease 7 increase 7 - * 3.008: Blinds, values up 7 down 7 + * 3.007: Dimming, values: 0 = decrease, 1 = increase + * 3.008: Blinds, values: 0 = up, 1 = down */ dptMainTypeMap.put(3, IncreaseDecreaseType.class); /** Exceptions Datapoint Types "B1U3", Main number 3 */ @@ -169,12 +170,12 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 5 - * 5.010: Unsigned count, values 0 255 counter pulses - * 5.001: Scaling, values 0 100 % - * 5.003: Angle, values 0 360 ° - * 5.004: Percent (8 Bit), values 0 255 % - * 5.005: Decimal factor, values 0 255 ratio - * 5.006: Tariff information, values 0 254 + * 5.010: Unsigned count, values: 0...255 counter pulses + * 5.001: Scaling, values: 0...100 % + * 5.003: Angle, values: 0...360 ° + * 5.004: Percent (8 Bit), values: 0...255 % + * 5.005: Decimal factor, values: 0...255 ratio + * 5.006: Tariff information, values: 0...254 */ dptMainTypeMap.put(5, DecimalType.class); /** Exceptions Types "8-Bit Unsigned Value", Main number 5 */ @@ -182,9 +183,9 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 6 - * 6.001: Percent (8 Bit), values -128 127 % - * 6.020: status with mode, values 0/0/0/0/0 0 1/1/1/1/1 2 - * 6.010: signed count, values -128 127 counter pulses + * 6.001: Percent (8 Bit), values: -128...127 % + * 6.020: status with mode, values: 0/0/0/0/0 0...1/1/1/1/1 2 + * 6.010: signed count, values: -128...127 counter pulses */ dptMainTypeMap.put(6, DecimalType.class); /** Exceptions Datapoint Types "8-Bit Signed Value", Main number 6 */ @@ -192,17 +193,17 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 7 - * 7.003: Time period (resolution 10 ms), values 0 655350 ms - * 7.004: Time period (resolution 100 ms), values 0 6553500 ms - * 7.005: Time period in seconds, values 0 65535 s - * 7.006: Time period in minutes, values 0 65535 min - * 7.010: Interface object property ID, values 0 65535 - * 7.011: Length in mm, values 0 65535 mm - * 7.001: Unsigned count, values 0 65535 pulses - * 7.012: Electrical current, values 0 65535 mA - * 7.002: Time period in ms, values 0 65535 ms - * 7.013: Brightness, values 0 65535 lx - * 7.007: Time period in hours, values 0 65535 h + * 7.003: Time period (resolution 10 ms), values: 0...655350 ms + * 7.004: Time period (resolution 100 ms), values: 0...6553500 ms + * 7.005: Time period in seconds, values: 0...65535 s + * 7.006: Time period in minutes, values: 0...65535 min + * 7.010: Interface object property ID, values: 0...65535 + * 7.011: Length in mm, values: 0...65535 mm + * 7.001: Unsigned count, values: 0...65535 pulses + * 7.012: Electrical current, values: 0...65535 mA + * 7.002: Time period in ms, values: 0...65535 ms + * 7.013: Brightness, values: 0...65535 lx + * 7.007: Time period in hours, values: 0...65535 h */ dptMainTypeMap.put(7, DecimalType.class); /** Exceptions Datapoint Types "2-Octet Unsigned Value", Main number 7 */ @@ -210,25 +211,25 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 9 - * 9.020: Voltage, values -670760 +670760 mV - * 9.010: Time difference 1, values -670760 +670760 s - * 9.021: Electrical current, values -670760 +670760 mA - * 9.011: Time difference 2, values -670760 +670760 ms - * 9.022: Power density, values -670760 +670760 W/m² - * 9.001: Temperature, values -273 +670760 °C - * 9.023: Kelvin/percent, values -670760 +670760 K/% - * 9.002: Temperature difference, values -670760 +670760 K - * 9.024: Power, values -670760 +670760 kW - * 9.003: Temperature gradient, values -670760 +670760 K/h - * 9.025: Volume flow, values -670760 +670760 l/h - * 9.004: Light intensity, values 0 +670760 lx - * 9.026: Rain amount, values -671088.64 670760.96 l/m² - * 9.005: Wind speed, values 0 +670760 m/s - * 9.027: Temperature, values -459.6 670760.96 °F - * 9.006: Air pressure, values 0 +670760 Pa - * 9.028: Wind speed, values 0 670760.96 km/h - * 9.007: Humidity, values 0 +670760 % - * 9.008: Air quality, values 0 +670760 ppm + * 9.020: Voltage, values: -670760...+670760 mV + * 9.010: Time difference 1, values: -670760...+670760 s + * 9.021: Electrical current, values: -670760...+670760 mA + * 9.011: Time difference 2, values: -670760...+670760 ms + * 9.022: Power density, values: -670760...+670760 W/m² + * 9.001: Temperature, values: -273...+670760 °C + * 9.023: Kelvin/percent, values: -670760...+670760 K/% + * 9.002: Temperature difference, values: -670760...+670760 K + * 9.024: Power, values: -670760...+670760 kW + * 9.003: Temperature gradient, values: -670760...+670760 K/h + * 9.025: Volume flow, values: -670760...+670760 l/h + * 9.004: Light intensity, values: 0...+670760 lx + * 9.026: Rain amount, values: -671088.64...670760.96 l/m² + * 9.005: Wind speed, values: 0...+670760 m/s + * 9.027: Temperature, values: -459.6...670760.96 °F + * 9.006: Air pressure, values: 0...+670760 Pa + * 9.028: Wind speed, values: 0...670760.96 km/h + * 9.007: Humidity, values: 0...+670760 % + * 9.008: Air quality, values: 0...+670760 ppm */ dptMainTypeMap.put(9, DecimalType.class); /** Exceptions Datapoint Types "2-Octet Float Value", Main number 9 */ @@ -236,7 +237,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 10 - * 10.001: Time of day, values no-day, 00:00:00 Sun, 23:59:59 dow, hh:mm:ss + * 10.001: Time of day, values: 1 = Monday...7 = Sunday, 0 = no-day, 00:00:00 Sun, 23:59:59 dow, hh:mm:ss */ dptMainTypeMap.put(10, DateTimeType.class); /** Exceptions Datapoint Types "Time", Main number 10 */ @@ -244,7 +245,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 11 - * 11.001: Date, values 1990-01-01 2089-12-31 yyyy-mm-dd + * 11.001: Date, values: 1990-01-01...2089-12-31, yyyy-mm-dd */ dptMainTypeMap.put(11, DateTimeType.class); /** Exceptions Datapoint Types “Date”", Main number 11 */ @@ -252,7 +253,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 12 - * 12.001: Unsigned count, values 0 4294967295 counter pulses + * 12.001: Unsigned count, values: 0...4294967295 counter pulses */ dptMainTypeMap.put(12, DecimalType.class); /** Exceptions Datapoint Types "4-Octet Unsigned Value", Main number 12 */ @@ -260,102 +261,102 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 13 - * 13.010: Active Energy, values -2147483648 2147483647 Wh - * 13.001: Counter pulses, values -2147483648 2147483647 counter pulses - * 13.012: Reactive energy, values -2147483648 2147483647 VARh - * 13.100: Delta time in seconds, values -2147483648 2147483647 s - * 13.011: Apparent energy, values -2147483648 2147483647 VAh - * 13.014: Apparent energy in kVAh, values -2147483648 2147483647 kVAh - * 13.002: Flow rate, values -2147483648 2147483647 m3/h - * 13.013: Active energy in kWh, values -2147483648 2147483647 kWh - * 13.015: Reactive energy in kVARh, values -2147483648 2147483647 kVARh + * 13.010: Active Energy, values: -2147483648...2147483647 Wh + * 13.001: Counter pulses, values: -2147483648...2147483647 counter pulses + * 13.012: Reactive energy, values: -2147483648...2147483647 VARh + * 13.100: Delta time in seconds, values: -2147483648...2147483647 s + * 13.011: Apparent energy, values: -2147483648...2147483647 VAh + * 13.014: Apparent energy in kVAh, values: -2147483648...2147483647 kVAh + * 13.002: Flow rate, values: -2147483648...2147483647 m3/h + * 13.013: Active energy in kWh, values: -2147483648...2147483647 kWh + * 13.015: Reactive energy in kVARh, values: -2147483648...2147483647 kVARh */ dptMainTypeMap.put(13, DecimalType.class); /** Exceptions Datapoint Types "4-Octet Signed Value", Main number 13 */ // Example: dptTypeMap.put(DPTXlator4ByteSigned.DPT_COUNT.getID(), DecimalType.class); /** - * MainType: 14 - * 14.019: Electric current, values -3.40282347e+38f..3.40282347e+38f A - * 14.018: Electric charge, values -3.40282347e+38f..3.40282347e+38f C - * 14.017: Density, values -3.40282347e+38f..3.40282347e+38f kg m⁻³ - * 14.016: Conductivity, electrical, values -3.40282347e+38f..3.40282347e+38f Ω⁻¹m⁻¹ - * 14.015: Conductance, values -3.40282347e+38f..3.40282347e+38f Ω⁻¹ - * 14.059: Reactance, values -3.40282347e+38f..3.40282347e+38f Ω - * 14.014: Compressibility, values -3.40282347e+38f..3.40282347e+38f m²/N - * 14.058: Pressure, values -3.40282347e+38f..3.40282347e+38f Pa - * 14.013: Charge density (volume), values -3.40282347e+38f..3.40282347e+38f C m⁻³ - * 14.057: Power factor, values -3.40282347e+38f..3.40282347e+38f - * 14.012: Charge density (surface), values -3.40282347e+38f..3.40282347e+38f C m⁻² - * 14.056: Power, values -3.40282347e+38f..3.40282347e+38f W - * 14.011: Capacitance, values -3.40282347e+38f..3.40282347e+38f F - * 14.055: Phase angle, degree, values -3.40282347e+38f..3.40282347e+38f ° - * 14.010: Area, values -3.40282347e+38f..3.40282347e+38f m² - * 14.054: Phase angle, radiant, values -3.40282347e+38f..3.40282347e+38f rad - * 14.053: Momentum, values -3.40282347e+38f..3.40282347e+38f N/s - * 14.052: Mass flux, values -3.40282347e+38f..3.40282347e+38f kg/s - * 14.051: Mass, values -3.40282347e+38f..3.40282347e+38f kg - * 14.050: Magneto motive force, values -3.40282347e+38f..3.40282347e+38f A - * 14.060: Resistance, values -3.40282347e+38f..3.40282347e+38f Ω - * 14.029: Electromagnetic moment, values -3.40282347e+38f..3.40282347e+38f A m² - * 14.028: Electric potential difference, values -3.40282347e+38f..3.40282347e+38f V - * 14.027: Electric potential, values -3.40282347e+38f..3.40282347e+38f V - * 14.026: Electric polarization, values -3.40282347e+38f..3.40282347e+38f C m⁻² - * 14.025: Electric flux density, values -3.40282347e+38f..3.40282347e+38f C m⁻² - * 14.069: Temperature, absolute, values -3.40282347e+38f..3.40282347e+38f K - * 14.024: Electric flux, values -3.40282347e+38f..3.40282347e+38f Vm - * 14.068: Temperature in Celsius Degree, values -3.40282347e+38f..3.40282347e+38f °C - * 14.023: Electric field strength, values -3.40282347e+38f..3.40282347e+38f V/m - * 14.067: Surface tension, values -3.40282347e+38f..3.40282347e+38f N/m - * 14.022: Electric displacement, values -3.40282347e+38f..3.40282347e+38f C m⁻² - * 14.066: Stress, values -3.40282347e+38f..3.40282347e+38f Pa - * 14.021: Electric dipole moment, values -3.40282347e+38f..3.40282347e+38f Cm - * 14.065: Speed, values -3.40282347e+38f..3.40282347e+38f m/s - * 14.020: Electric current density, values -3.40282347e+38f..3.40282347e+38f A m⁻² - * 14.064: Sound intensity, values -3.40282347e+38f..3.40282347e+38f W m⁻² - * 14.063: Solid angle, values -3.40282347e+38f..3.40282347e+38f sr - * 14.062: Self inductance, values -3.40282347e+38f..3.40282347e+38f H - * 14.061: Resistivity, values -3.40282347e+38f..3.40282347e+38f Ωm - * 14.071: Thermal capacity, values -3.40282347e+38f..3.40282347e+38f J/K - * 14.070: Temperature difference, values -3.40282347e+38f..3.40282347e+38f K - * 14.039: Length, values -3.40282347e+38f..3.40282347e+38f m - * 14.038: Impedance, values -3.40282347e+38f..3.40282347e+38f Ω - * 14.037: Heat quantity, values -3.40282347e+38f..3.40282347e+38f J - * 14.036: Heat flow rate, values -3.40282347e+38f..3.40282347e+38f W - * 14.035: Heat capacity, values -3.40282347e+38f..3.40282347e+38f J/K - * 14.079: Work, values -3.40282347e+38f..3.40282347e+38f J - * 14.034: Frequency, angular, values -3.40282347e+38f..3.40282347e+38f rad/s - * 14.078: Weight, values -3.40282347e+38f..3.40282347e+38f N - * 14.033: Frequency, values -3.40282347e+38f..3.40282347e+38f Hz - * 14.077: Volume flux, values -3.40282347e+38f..3.40282347e+38f m³/s - * 14.032: Force, values -3.40282347e+38f..3.40282347e+38f N - * 14.076: Volume, values -3.40282347e+38f..3.40282347e+38f m³ - * 14.031: Energy, values -3.40282347e+38f..3.40282347e+38f J - * 14.075: Torque, values -3.40282347e+38f..3.40282347e+38f Nm - * 14.030: Electromotive force, values -3.40282347e+38f..3.40282347e+38f V - * 14.074: Time, values -3.40282347e+38f..3.40282347e+38f s - * 14.073: Thermoelectric power, values -3.40282347e+38f..3.40282347e+38f V/K - * 14.072: Thermal conductivity, values -3.40282347e+38f..3.40282347e+38f W/m K⁻¹ - * 14.009: Angular velocity, values -3.40282347e+38f..3.40282347e+38f rad/s - * 14.008: Momentum, values -3.40282347e+38f..3.40282347e+38f Js - * 14.007: Angle, values -3.40282347e+38f..3.40282347e+38f ° - * 14.006: Angle, values -3.40282347e+38f..3.40282347e+38f rad - * 14.005: Amplitude, values -3.40282347e+38f..3.40282347e+38f - * 14.049: Magnetization, values -3.40282347e+38f..3.40282347e+38f A/m - * 14.004: Mol, values -3.40282347e+38f..3.40282347e+38f mol - * 14.048: Magnetic polarization, values -3.40282347e+38f..3.40282347e+38f T - * 14.003: Activity, values -3.40282347e+38f..3.40282347e+38f s⁻¹ - * 14.047: Magnetic moment, values -3.40282347e+38f..3.40282347e+38f A m² - * 14.002: Activation energy, values -3.40282347e+38f..3.40282347e+38f J/mol - * 14.046: Magnetic flux density, values -3.40282347e+38f..3.40282347e+38f T - * 14.001: Acceleration, angular, values -3.40282347e+38f..3.40282347e+38f rad s⁻² - * 14.045: Magnetic flux, values -3.40282347e+38f..3.40282347e+38f Wb - * 14.000: Acceleration, values -3.40282347e+38f..3.40282347e+38f ms⁻² - * 14.044: Magnetic field strength, values -3.40282347e+38f..3.40282347e+38f A/m - * 14.043: Luminous intensity, values -3.40282347e+38f..3.40282347e+38f cd - * 14.042: Luminous flux, values -3.40282347e+38f..3.40282347e+38f lm - * 14.041: Luminance, values -3.40282347e+38f..3.40282347e+38f cd m⁻² - * 14.040: Quantity of Light, values -3.40282347e+38f..3.40282347e+38f J + * MainType: 14, Range: [-3.40282347e+38f...3.40282347e+38f] + * 14.019: Electric current, values: A + * 14.018: Electric charge, values: C + * 14.017: Density, values: kg m⁻³ + * 14.016: Conductivity, electrical, values: Ω⁻¹m⁻¹ + * 14.015: Conductance, values: Ω⁻¹ + * 14.059: Reactance, values: Ω + * 14.014: Compressibility, values: m²/N + * 14.058: Pressure, values: Pa + * 14.013: Charge density (volume), values: C m⁻³ + * 14.057: Power factor, values: + * 14.012: Charge density (surface), values: C m⁻² + * 14.056: Power, values: W + * 14.011: Capacitance, values: F + * 14.055: Phase angle, degree, values: ° + * 14.010: Area, values: m² + * 14.054: Phase angle, radiant, values: rad + * 14.053: Momentum, values: N/s + * 14.052: Mass flux, values: kg/s + * 14.051: Mass, values: kg + * 14.050: Magneto motive force, values: A + * 14.060: Resistance, values: Ω + * 14.029: Electromagnetic moment, values: A m² + * 14.028: Electric potential difference, values: V + * 14.027: Electric potential, values: V + * 14.026: Electric polarization, values: C m⁻² + * 14.025: Electric flux density, values: C m⁻² + * 14.069: Temperature, absolute, values: K + * 14.024: Electric flux, values: Vm + * 14.068: Temperature in Celsius Degree, values: °C + * 14.023: Electric field strength, values: V/m + * 14.067: Surface tension, values: N/m + * 14.022: Electric displacement, values: C m⁻² + * 14.066: Stress, values: Pa + * 14.021: Electric dipole moment, values: Cm + * 14.065: Speed, values: m/s + * 14.020: Electric current density, values: A m⁻² + * 14.064: Sound intensity, values: W m⁻² + * 14.063: Solid angle, values: sr + * 14.062: Self inductance, values: H + * 14.061: Resistivity, values: Ωm + * 14.071: Thermal capacity, values: J/K + * 14.070: Temperature difference, values: K + * 14.039: Length, values: m + * 14.038: Impedance, values: Ω + * 14.037: Heat quantity, values: J + * 14.036: Heat flow rate, values: W + * 14.035: Heat capacity, values: J/K + * 14.079: Work, values: J + * 14.034: Frequency, angular, values: rad/s + * 14.078: Weight, values: N + * 14.033: Frequency, values: Hz + * 14.077: Volume flux, values: m³/s + * 14.032: Force, values: N + * 14.076: Volume, values: m³ + * 14.031: Energy, values: J + * 14.075: Torque, values: Nm + * 14.030: Electromotive force, values: V + * 14.074: Time, values: s + * 14.073: Thermoelectric power, values: V/K + * 14.072: Thermal conductivity, values: W/m K⁻¹ + * 14.009: Angular velocity, values: rad/s + * 14.008: Momentum, values: Js + * 14.007: Angle, values: ° + * 14.006: Angle, values: rad + * 14.005: Amplitude, values: + * 14.049: Magnetization, values: A/m + * 14.004: Mol, values: mol + * 14.048: Magnetic polarization, values: T + * 14.003: Activity, values: s⁻¹ + * 14.047: Magnetic moment, values: A m² + * 14.002: Activation energy, values: J/mol + * 14.046: Magnetic flux density, values: T + * 14.001: Acceleration, angular, values: rad s⁻² + * 14.045: Magnetic flux, values: Wb + * 14.000: Acceleration, values: ms⁻² + * 14.044: Magnetic field strength, values: A/m + * 14.043: Luminous intensity, values: cd + * 14.042: Luminous flux, values: lm + * 14.041: Luminance, values: cd m⁻² + * 14.040: Quantity of Light, values: J */ dptMainTypeMap.put(14, DecimalType.class); /** Exceptions Datapoint Types "4-Octet Float Value", Main number 14 */ @@ -363,16 +364,17 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 16 - * 16.000: ASCII string, values - * 16.001: ISO-8859-1 string (Latin 1), values + * 16.000: ASCII string + * 16.001: ISO-8859-1 string (Latin 1) */ dptMainTypeMap.put(16, StringType.class); /** Exceptions Datapoint Types "String", Main number 16 */ - // Example: dptTypeMap.put(DPTXlatorString.DPT_STRING_ASCII.getID(), StringType.class); + dptTypeMap.put(DPTXlatorString.DPT_STRING_8859_1.getID(), StringType.class); + dptTypeMap.put(DPTXlatorString.DPT_STRING_ASCII.getID(), StringType.class); /** * MainType: 17 - * 17.001: Scene Number, values 0 63 + * 17.001: Scene Number, values: 0...63 */ dptMainTypeMap.put(17, DecimalType.class); /** Exceptions Datapoint Types "Scene Number", Main number 17 */ @@ -380,7 +382,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 18 - * 18.001: Scene Control, values activate 0 learn 63 + * 18.001: Scene Control, values: 0...63, 0 = activate, 1 = learn */ dptMainTypeMap.put(18, DecimalType.class); /** Exceptions Datapoint Types "Scene Control", Main number 18 */ @@ -388,7 +390,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 19 - * 19.001: Date with time, values 1900, 01/01 00:00:00 2155, 12/31 24:00:00 yr/mth/day hr:min:sec + * 19.001: Date with time, values: 0 = 1900, 255 = 2155, 01/01 00:00:00, 12/31 24:00:00 yr/mth/day hr:min:sec */ dptMainTypeMap.put(19, DateTimeType.class); /** Exceptions Datapoint Types "DateTime", Main number 19 */ @@ -456,19 +458,19 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 21 - * 21.106: Ventilation Controller Status, values 0..15 - * 21.601: Light Actuator Error Info, values 0..127 - * 21.001: General Status, values 0..31 - * 21.100: Forcing Signal, values 0..255 - * 21.002: Device Control, values 0..7 - * 21.101: Forcing Signal Cool, values 0..1 - * 21.1010: Channel Activation State, values 0..255 - * 21.1000: R F Comm Mode Info, values 0..7 - * 21.1001: R F Filter Modes, values 0..7 - * 21.104: Fuel Type Set, values 0..7 - * 21.105: Room Cooling Controller Status, values 0..1 - * 21.102: Room Heating Controller Status, values 0..255 - * 21.103: Solar Dhw Controller Status, values 0..7 + * 21.106: Ventilation Controller Status, values: 0...15 + * 21.601: Light Actuator Error Info, values: 0...127 + * 21.001: General Status, values: 0...31 + * 21.100: Forcing Signal, values: 0...255 + * 21.002: Device Control, values: 0...7 + * 21.101: Forcing Signal Cool, values: 0...1 + * 21.1010: Channel Activation State, values: 0...255 + * 21.1000: R F Comm Mode Info, values: 0...7 + * 21.1001: R F Filter Modes, values: 0...7 + * 21.104: Fuel Type Set, values: 0...7 + * 21.105: Room Cooling Controller Status, values: 0...1 + * 21.102: Room Heating Controller Status, values: 0...255 + * 21.103: Solar Dhw Controller Status, values: 0...7 */ dptMainTypeMap.put(21, StringType.class); /** Exceptions Datapoint Types, Main number 21 */ @@ -476,7 +478,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 28 - * 28.001: UTF-8, values + * 28.001: UTF-8 */ dptMainTypeMap.put(28, StringType.class); /** Exceptions Datapoint Types "String" UTF-8, Main number 28 */ @@ -484,9 +486,9 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 29 - * 29.012: Reactive energy, values -9223372036854775808 9223372036854775807 VARh - * 29.011: Apparent energy, values -9223372036854775808 9223372036854775807 VAh - * 29.010: Active Energy, values -9223372036854775808 9223372036854775807 Wh + * 29.012: Reactive energy, values: -9223372036854775808...9223372036854775807 VARh + * 29.011: Apparent energy, values: -9223372036854775808...9223372036854775807 VAh + * 29.010: Active Energy, values: -9223372036854775808...9223372036854775807 Wh */ dptMainTypeMap.put(29, DecimalType.class); /** Exceptions Datapoint Types "64-Bit Signed Value", Main number 29 */ @@ -494,7 +496,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 229 - * 229.001: Metering Value, values -2147483648..2147483647 + * 229.001: Metering Value, values: -2147483648...2147483647 */ dptMainTypeMap.put(229, DecimalType.class); /** Exceptions Datapoint Types "4-Octet Signed Value", Main number 229 */ @@ -502,7 +504,7 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { /** * MainType: 232 - * 232.600: RGB, values 0 0 0 255 255 255 r g b + * 232.600: RGB, values: 0 0 0...255 255 255, r g b */ dptMainTypeMap.put(232, HSBType.class); /** Exceptions Datapoint Types "RGB Color", Main number 232 */ @@ -521,11 +523,6 @@ public class KNXCoreTypeMapper implements KNXTypeMapper { defaultDptMap.put(HSBType.class, DPTXlatorRGB.DPT_RGB.getID()); } - /* - * (non-Javadoc) - * - * @see org.openhab.binding.knx1.config.KNXTypeMapper#toDPTValue(org.openhab.core.types.Type, java.lang.String) - */ @Override public String toDPTValue(Type type, String dptID) { @@ -547,9 +544,8 @@ public String toDPTValue(Type type, String dptID) { // check for HSBType first, because it extends PercentType as well if (type instanceof HSBType) { HSBType hc = ((HSBType) type); - return "r:" + Integer.toString(hc.getRed().intValue()) + " g:" - + Integer.toString(hc.getGreen().intValue()) + " b:" - + Integer.toString(hc.getBlue().intValue()); + return "r:" + hc.getRed().intValue() + " g:" + hc.getGreen().intValue() + " b:" + + hc.getBlue().intValue(); } else if (type instanceof OnOffType) { return type.equals(OnOffType.OFF) ? dpt.getLowerValue() : dpt.getUpperValue(); } else if (type instanceof UpDownType) { @@ -578,8 +574,6 @@ public String toDPTValue(Type type, String dptID) { default: return "1 " + valueDPT.getUpperValue(); } - case 3: - break; case 18: int intVal = ((DecimalType) type).intValue(); if (intVal > 63) { @@ -596,8 +590,8 @@ public String toDPTValue(Type type, String dptID) { return formatDateTime((DateTimeType) type, dptID); } } catch (Exception e) { - logger.error("An exception occurred converting type {} to dpt id {} : {}", - new Object[] { type, dptID, e.getMessage() }); + logger.warn("An exception occurred converting type {} to dpt id {}: error message={}", type, dptID, + e.getMessage()); return null; } @@ -606,13 +600,7 @@ public String toDPTValue(Type type, String dptID) { return null; } - /* - * (non-Javadoc) - * - * @see org.openhab.binding.knx1.config.KNXTypeMapper#toType(tuwien.auto.calimero.datapoint.Datapoint, byte[]) - */ @Override - @Nullable public Type toType(Datapoint datapoint, byte[] data) { try { DPTXlator translator = TranslatorTypes.createTranslator(datapoint.getMainNumber(), datapoint.getDPT()); @@ -620,6 +608,7 @@ public Type toType(Datapoint datapoint, byte[] data) { String value = translator.getValue(); String id = translator.getType().getID(); + logger.trace("toType datapoint DPT = " + datapoint.getDPT()); int mainNumber = getMainNumber(id); if (mainNumber == -1) { @@ -628,7 +617,7 @@ public Type toType(Datapoint datapoint, byte[] data) { } int subNumber = getSubNumber(id); if (subNumber == -1) { - logger.debug("toType: couldn't identify su number in dptID: {}.", id); + logger.debug("toType: couldn't identify sub number in dptID: {}.", id); return null; } /* @@ -660,9 +649,13 @@ public Type toType(Datapoint datapoint, byte[] data) { case 3: DPTXlator3BitControlled translator3BitControlled = (DPTXlator3BitControlled) translator; if (translator3BitControlled.getStepCode() == 0) { - // Not supported: break - logger.debug("toType: KNX DPT_Control_Dimming: break ignored."); - return null; + /* + * there is no STOP for a IncreaseDecreaseType, so we are just using an INCREASE. + * It is up to the binding to recognize that a start/stop-dimming is in progress and + * stop the dimming accordingly. + */ + logger.debug("toType: KNX DPT_Control_Dimming: break received."); + return IncreaseDecreaseType.INCREASE; } switch (subNumber) { case 7: @@ -787,14 +780,15 @@ public Type toType(Datapoint datapoint, byte[] data) { return HSBType.fromRGB(r, g, b); } + } catch (KNXFormatException kfe) { - logger.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXFormatException).", + logger.info("Translator couldn't parse data for datapoint type '{}' (KNXFormatException).", datapoint.getDPT()); } catch (KNXIllegalArgumentException kiae) { - logger.info("Translator couldn't parse data for datapoint type ‘{}‘ (KNXIllegalArgumentException).", + logger.info("Translator couldn't parse data for datapoint type '{}' (KNXIllegalArgumentException).", datapoint.getDPT()); } catch (KNXException e) { - logger.warn("Failed creating a translator for datapoint type ‘{}‘.", datapoint.getDPT(), e); + logger.warn("Failed creating a translator for datapoint type '{}'.", datapoint.getDPT(), e); } return null; @@ -812,7 +806,7 @@ public Class toTypeClass(String dptId) { if (ohClass == null) { int mainNumber = getMainNumber(dptId); if (mainNumber == -1) { - logger.debug("toType: couldn't convert dptID toTypeClass: {}.", dptId); + logger.debug("Couldn't convert KNX datapoint type id into openHAB type class for dptId: {}.", dptId); return null; } ohClass = dptMainTypeMap.get(mainNumber); @@ -826,7 +820,7 @@ public Class toTypeClass(String dptId) { * @param typeClass the openHAB type class * @return the datapoint type id */ - public static String toDPTid(Class typeClass) { + public String toDPTid(Class typeClass) { return defaultDptMap.get(typeClass); } @@ -847,21 +841,20 @@ private String formatDateTime(String value, String dpt) { if (DPTXlatorDate.DPT_DATE.getID().equals(dpt)) { date = new SimpleDateFormat(DATE_FORMAT).parse(value); } else if (DPTXlatorTime.DPT_TIMEOFDAY.getID().equals(dpt)) { - String convertedValue = value; - if (convertedValue.contains("no-day")) { + if (value.contains("no-day")) { /* - * KNX "no-day" needs special treatment since the DateTimeType doesn't support "no-day". + * KNX "no-day" needs special treatment since openHAB's DateTimeType doesn't support "no-day". * Workaround: remove the "no-day" String, parse the remaining time string, which will result in a * date of "1970-01-01". * Replace "no-day" with the current day name */ - StringBuffer stb = new StringBuffer(convertedValue); + StringBuffer stb = new StringBuffer(value); int start = stb.indexOf("no-day"); int end = start + "no-day".length(); stb.replace(start, end, String.format(Locale.US, "%1$ta", Calendar.getInstance())); - convertedValue = stb.toString(); + value = stb.toString(); } - date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(convertedValue); + date = new SimpleDateFormat(TIME_DAY_FORMAT, Locale.US).parse(value); } } catch (ParseException pe) { // do nothing but logging @@ -885,7 +878,7 @@ private String formatDateTime(String value, String dpt) { * @throws IllegalArgumentException if none of the datapoint types DPT_DATE or * DPT_TIMEOFDAY has been used. */ - private static String formatDateTime(DateTimeType dateType, String dpt) { + static private String formatDateTime(DateTimeType dateType, String dpt) { if (DPTXlatorDate.DPT_DATE.getID().equals(dpt)) { return dateType.format("%tF"); } else if (DPTXlatorTime.DPT_TIMEOFDAY.getID().equals(dpt)) { @@ -950,4 +943,4 @@ private int getMainNumber(String dptID) { } return result; } -} +} \ No newline at end of file diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index d1a02c5c474c4..4748fc965b459 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -29,7 +29,7 @@ import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.handler.IPBridgeThingHandler; -import org.openhab.binding.knx.handler.KNXBasicThingHandler; +import org.openhab.binding.knx.handler.DeviceThingHandler; import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; import org.openhab.binding.knx.handler.SerialBridgeThingHandler; import org.openhab.binding.knx.handler.TypeHelper; @@ -49,7 +49,7 @@ @Component(service = ThingHandlerFactory.class) public class KNXHandlerFactory extends BaseThingHandlerFactory implements TypeHelper { - public static final Collection SUPPORTED_THING_TYPES_UIDS = Arrays.asList(THING_TYPE_BASIC, + public static final Collection SUPPORTED_THING_TYPES_UIDS = Arrays.asList(THING_TYPE_DEVICE, THING_TYPE_IP_BRIDGE, THING_TYPE_SERIAL_BRIDGE); private final Collection typeMappers = new HashSet(); @@ -73,7 +73,7 @@ public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, ThingUID serialBridgeUID = getSerialBridgeThingUID(thingTypeUID, thingUID, configuration); return super.createThing(thingTypeUID, configuration, serialBridgeUID, null); } - if (THING_TYPE_BASIC.equals(thingTypeUID)) { + if (THING_TYPE_DEVICE.equals(thingTypeUID)) { ThingUID gaUID = getGenericThingUID(thingTypeUID, thingUID, configuration, bridgeUID); return super.createThing(thingTypeUID, configuration, gaUID, bridgeUID); } @@ -86,8 +86,8 @@ protected ThingHandler createHandler(Thing thing) { return new IPBridgeThingHandler((Bridge) thing, networkAddressService, this); } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { return new SerialBridgeThingHandler((Bridge) thing, this); - } else if (thing.getThingTypeUID().equals(THING_TYPE_BASIC)) { - return new KNXBasicThingHandler(thing, this); + } else if (thing.getThingTypeUID().equals(THING_TYPE_DEVICE)) { + return new DeviceThingHandler(thing, this); } return null; } @@ -114,7 +114,7 @@ private ThingUID getGenericThingUID(ThingTypeUID thingTypeUID, ThingUID thingUID if (thingUID != null) { return thingUID; } - String address = ((String) configuration.get(ADDRESS)); + String address = ((String) configuration.get(GA)); if (address != null) { return new ThingUID(thingTypeUID, address.replace(".", "_"), bridgeUID.getId()); } else { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java new file mode 100644 index 0000000000000..4f91e1e53c457 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java @@ -0,0 +1,49 @@ +package org.openhab.binding.knx.internal.profiles; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; +import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; +import org.eclipse.smarthome.core.thing.profiles.StateProfile; +import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.State; + +@NonNullByDefault +public class KNXControlProfile implements StateProfile { + + public static final ProfileTypeUID UID = new ProfileTypeUID("knx", "control"); + + private final ProfileCallback callback; + + public KNXControlProfile(ProfileCallback callback) { + this.callback = callback; + } + + @Override + public @NonNull ProfileTypeUID getProfileTypeUID() { + return UID; + } + + @Override + public void onStateUpdateFromItem(@NonNull State state) { + if (state instanceof Command) { + callback.handleCommand((Command) state); + } + } + + @Override + public void onCommandFromItem(@NonNull Command command) { + // no-op + } + + @Override + public void onCommandFromHandler(@NonNull Command command) { + callback.sendCommand(command); + } + + @Override + public void onStateUpdateFromHandler(@NonNull State state) { + // no-op + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java new file mode 100644 index 0000000000000..389485a39b480 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java @@ -0,0 +1,49 @@ +package org.openhab.binding.knx.internal.profiles; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; +import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; +import org.eclipse.smarthome.core.thing.profiles.StateProfile; +import org.eclipse.smarthome.core.types.Command; +import org.eclipse.smarthome.core.types.State; + +@NonNullByDefault +public class KNXDefaultProfile implements StateProfile { + + public static final ProfileTypeUID UID = new ProfileTypeUID("knx", "default"); + + private final ProfileCallback callback; + + public KNXDefaultProfile(ProfileCallback callback) { + this.callback = callback; + } + + @Override + public @NonNull ProfileTypeUID getProfileTypeUID() { + return UID; + } + + @Override + public void onStateUpdateFromItem(@NonNull State state) { + // no-op + } + + @Override + public void onCommandFromItem(@NonNull Command command) { + callback.handleCommand(command); + } + + @Override + public void onCommandFromHandler(@NonNull Command command) { + if (command instanceof State) { + callback.sendUpdate((State) command); + } + } + + @Override + public void onStateUpdateFromHandler(@NonNull State state) { + // no-op + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java new file mode 100644 index 0000000000000..fd8a93d991af6 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java @@ -0,0 +1,92 @@ +package org.openhab.binding.knx.internal.profiles; + +import static java.util.stream.Collectors.toSet; +import static org.openhab.binding.knx.KNXBindingConstants.*; + +import java.util.Collection; +import java.util.Locale; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.Channel; +import org.eclipse.smarthome.core.thing.profiles.Profile; +import org.eclipse.smarthome.core.thing.profiles.ProfileAdvisor; +import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; +import org.eclipse.smarthome.core.thing.profiles.ProfileContext; +import org.eclipse.smarthome.core.thing.profiles.ProfileFactory; +import org.eclipse.smarthome.core.thing.profiles.ProfileType; +import org.eclipse.smarthome.core.thing.profiles.ProfileTypeBuilder; +import org.eclipse.smarthome.core.thing.profiles.ProfileTypeProvider; +import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; +import org.eclipse.smarthome.core.thing.profiles.StateProfileType; +import org.eclipse.smarthome.core.thing.type.ChannelType; +import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; +import org.osgi.service.component.annotations.Component; + +@Component +@NonNullByDefault +public class KNXProfileAdvisor implements ProfileAdvisor, ProfileTypeProvider, ProfileFactory { + + private static final StateProfileType TYPE_DEFAULT = ProfileTypeBuilder + .newState(KNXDefaultProfile.UID, "KNX Default").build(); + private static final StateProfileType TYPE_CONTROL = ProfileTypeBuilder + .newState(KNXControlProfile.UID, "KNX Control").build(); + + private static final Set SUPPORTED_PROFILE_TYPE_UIDS = Stream + .of(KNXDefaultProfile.UID, KNXControlProfile.UID).collect(toSet()); + + private static final Set SUPPORTED_PROFILE_TYPES = Stream.of(TYPE_DEFAULT, TYPE_CONTROL) + .collect(Collectors.toSet()); + + @Override + public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(Channel channel, @Nullable String itemType) { + ChannelTypeUID channelTypeUID = channel.getChannelTypeUID(); + if (channelTypeUID == null || !channelTypeUID.getBindingId().equals(BINDING_ID)) { + return null; + } + if (isControl(channelTypeUID)) { + return KNXControlProfile.UID; + } else { + return KNXDefaultProfile.UID; + } + } + + @Override + public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(ChannelType channelType, @Nullable String itemType) { + ChannelTypeUID channelTypeUID = channelType.getUID(); + if (isControl(channelTypeUID)) { + return KNXControlProfile.UID; + } else { + return KNXDefaultProfile.UID; + } + } + + @Override + public @Nullable Profile createProfile(ProfileTypeUID profileTypeUID, ProfileCallback callback, + ProfileContext profileContext) { + if (KNXDefaultProfile.UID.equals(profileTypeUID)) { + return new KNXDefaultProfile(callback); + } else if (KNXControlProfile.UID.equals(profileTypeUID)) { + return new KNXControlProfile(callback); + } + return null; + } + + @Override + public Collection getSupportedProfileTypeUIDs() { + return SUPPORTED_PROFILE_TYPE_UIDS; + } + + @Override + public Collection getProfileTypes(@Nullable Locale locale) { + return SUPPORTED_PROFILE_TYPES; + } + + public static boolean isControl(ChannelTypeUID channelTypeUID) { + return CONTROL_CHANNEL_TYPES.contains(channelTypeUID.getId()); + } + +} From 94b0a537869d1c4320334afa8bee6308131cbf2c Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Fri, 5 Jan 2018 16:42:19 +0100 Subject: [PATCH 11/52] KNXCoreTypeMapper adaptions Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/dpt/KNXCoreTypeMapper.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index c9b46a56bf6e0..90a0cb1bc483c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -31,6 +31,7 @@ import org.eclipse.smarthome.core.library.types.StringType; import org.eclipse.smarthome.core.library.types.UpDownType; import org.eclipse.smarthome.core.types.Type; +import org.eclipse.smarthome.core.types.UnDefType; import org.openhab.binding.knx.KNXTypeMapper; import org.osgi.service.component.annotations.Component; import org.slf4j.Logger; @@ -649,13 +650,8 @@ public Type toType(Datapoint datapoint, byte[] data) { case 3: DPTXlator3BitControlled translator3BitControlled = (DPTXlator3BitControlled) translator; if (translator3BitControlled.getStepCode() == 0) { - /* - * there is no STOP for a IncreaseDecreaseType, so we are just using an INCREASE. - * It is up to the binding to recognize that a start/stop-dimming is in progress and - * stop the dimming accordingly. - */ logger.debug("toType: KNX DPT_Control_Dimming: break received."); - return IncreaseDecreaseType.INCREASE; + return UnDefType.UNDEF; } switch (subNumber) { case 7: From 0ef03791177cbc83dd88a97fa0c7a44727e4928a Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Fri, 5 Jan 2018 18:34:23 +0100 Subject: [PATCH 12/52] javadocs, license headers and minor cleanups Signed-off-by: Simon Kaufmann --- .../ESH-INF/binding/binding.xml | 4 +- .../ESH-INF/thing/ip.xml | 11 - .../knx/handler/DeviceThingHandler.java | 205 +++++++----------- .../knx/handler/GroupAddressListener.java | 3 +- .../knx/handler/IPBridgeThingHandler.java | 10 +- .../handler/KNXBridgeBaseThingHandler.java | 2 +- .../knx/handler/SerialBridgeThingHandler.java | 5 +- .../knx/handler/StatusUpdateCallback.java | 24 ++ .../binding/knx/handler/TypeHelper.java | 40 ---- .../knx/internal/channel/AbstractSpec.java | 50 +++++ .../channel/ChannelConfiguration.java | 14 ++ .../knx/internal/channel/CommandSpec.java | 39 ++-- .../channel/GroupAddressConfiguration.java | 17 ++ .../knx/internal/channel/KNXChannelType.java | 8 +- ...nnelSelector.java => KNXChannelTypes.java} | 13 +- .../knx/internal/channel/ListenSpec.java | 47 ++-- .../knx/internal/channel/ReadSpec.java | 33 ++- .../knx/internal/channel/ResponseSpec.java | 35 ++- .../knx/internal/channel/TypeContact.java | 6 + .../knx/internal/channel/TypeDateTime.java | 6 + .../knx/internal/channel/TypeDimmer.java | 6 + .../knx/internal/channel/TypeNumber.java | 6 + .../internal/channel/TypeRollershutter.java | 6 + .../knx/internal/channel/TypeString.java | 6 + .../knx/internal/channel/TypeSwitch.java | 6 + .../client/BusMessageListener.java} | 11 +- .../knx/internal/client/DeviceInfoClient.java | 16 +- .../{handler => client}/DeviceInspector.java | 19 +- .../binding/knx/internal/client/IPClient.java | 19 +- .../knx/internal/client/KNXClient.java | 126 +++++------ .../knx/internal/client/SerialClient.java | 19 +- .../knx/internal/config/DeviceConfig.java | 3 + .../config/IPBridgeConfiguration.java | 10 +- .../config/SerialBridgeConfiguration.java | 14 ++ .../knx/internal/dpt/KNXCoreTypeMapper.java | 1 - .../internal/factory/KNXHandlerFactory.java | 115 +--------- .../internal/profiles/KNXControlProfile.java | 21 ++ .../internal/profiles/KNXDefaultProfile.java | 19 ++ .../internal/profiles/KNXProfileAdvisor.java | 14 ++ 39 files changed, 540 insertions(+), 469 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/{KNXChannelSelector.java => KNXChannelTypes.java} (80%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{handler/TelegramListener.java => internal/client/BusMessageListener.java} (80%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/{handler => client}/DeviceInspector.java (93%) diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml index 5919a57d4090c..9072f51ee3247 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml @@ -5,7 +5,7 @@ xsi:schemaLocation="http://eclipse.org/smarthome/schemas/binding/v1.0.0 http://eclipse.org/smarthome/schemas/binding-1.0.0.xsd"> KNX Binding - This is the binding for KNX - Kai Kreuzer / Karel Goderis + The KNX Binding + Kai Kreuzer / Simon Kaufmann / Karel Goderis diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml index b1a41bfd40b80..b410d14861985 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -8,11 +8,6 @@ This Bridge is for IP based KNX gateways - - - - - @@ -73,10 +68,4 @@ - - Number - - The number of errors that occurred on the KNX bus - - diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java index 11bb329aa6a87..97d8dc7335bcc 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java @@ -10,7 +10,6 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; -import java.math.BigDecimal; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -18,6 +17,8 @@ import java.util.Objects; import java.util.Random; import java.util.Set; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -40,16 +41,18 @@ import org.eclipse.smarthome.core.types.Type; import org.eclipse.smarthome.core.types.UnDefType; import org.openhab.binding.knx.KNXBindingConstants; +import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.internal.channel.CommandSpec; -import org.openhab.binding.knx.internal.channel.KNXChannelSelector; +import org.openhab.binding.knx.internal.channel.KNXChannelTypes; import org.openhab.binding.knx.internal.channel.KNXChannelType; import org.openhab.binding.knx.internal.channel.ListenSpec; import org.openhab.binding.knx.internal.channel.ReadSpec; import org.openhab.binding.knx.internal.channel.ResponseSpec; +import org.openhab.binding.knx.internal.client.DeviceInspector; import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.client.DeviceInspector.Result; import org.openhab.binding.knx.internal.config.DeviceConfig; -import org.openhab.binding.knx.internal.handler.DeviceInspector; -import org.openhab.binding.knx.internal.handler.DeviceInspector.Result; +import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,78 +64,67 @@ import tuwien.auto.calimero.exception.KNXFormatException; /** - * The {@link DeviceThingHandler} is responsible for handling commands, which are - * sent to one of the channels. + * The {@link DeviceThingHandler} is responsible for handling commands and state updates sent to and received from the + * bus and updating the channels correspondingly. * - * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Initial contribution and API */ @NonNullByDefault public class DeviceThingHandler extends BaseThingHandler implements GroupAddressListener { - private final Random random = new Random(); - private final Logger logger = LoggerFactory.getLogger(DeviceThingHandler.class); + private final Random random = new Random(); - // the physical address of the KNX actor represented by this Thing - protected @Nullable IndividualAddress address; - - // group addresses the handler is monitoring - protected Set groupAddresses = new HashSet<>(); + private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); - // group addresses read out from the device's firmware tables - protected Set foundGroupAddresses = new HashSet<>(); + private final Set groupAddresses = new HashSet<>(); + private boolean filledDescription = false; private final Map> readFutures = new HashMap<>(); - private @Nullable ScheduledFuture pollingJob; + private @Nullable Future descriptionJob; - private @Nullable ScheduledFuture descriptionJob; + private @Nullable IndividualAddress address; + private int readInterval; - private boolean filledDescription = false; - - private final TypeHelper typeHelper; - - private @Nullable BigDecimal readInterval; - - public DeviceThingHandler(Thing thing, TypeHelper typeHelper) { + public DeviceThingHandler(Thing thing) { super(thing); - this.typeHelper = typeHelper; } @Override public void initialize() { DeviceConfig config = getConfigAs(DeviceConfig.class); - initializeGroupAddresses(); - try { if (StringUtils.isNotBlank(config.getAddress())) { address = new IndividualAddress(config.getAddress()); - long pollingInterval = config.getPingInterval().longValue(); - long initialDelay = Math.round(pollingInterval * random.nextFloat()); + long pingInterval = config.getPingInterval().longValue(); + long initialPingDelay = Math.round(pingInterval * random.nextFloat()); ScheduledFuture pollingJob = this.pollingJob; if ((pollingJob == null || pollingJob.isCancelled())) { - logger.debug("'{}' will be polled every {}s", getThing().getUID(), pollingInterval); - this.pollingJob = getBridgeHandler().getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), - initialDelay, pollingInterval, TimeUnit.SECONDS); + logger.debug("'{}' will be polled every {}s", getThing().getUID(), pingInterval); + this.pollingJob = getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialPingDelay, + pingInterval, TimeUnit.SECONDS); } - readInterval = config.getReadInterval(); + readInterval = config.getReadInterval().intValue(); } else { updateStatus(ThingStatus.ONLINE); } } catch (KNXFormatException e) { - logger.error("An exception occurred while setting the individual address '{}': {}", config.getAddress(), - e.getMessage(), e); + logger.debug("An exception occurred while setting the individual address '{}'", config.getAddress(), e); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); } - getClient().registerGroupAddressListener(this); scheduleReadJobs(); } + private ScheduledExecutorService getScheduler() { + return getBridgeHandler().getScheduler(); + } + private void initializeGroupAddresses() { forAllChannels((selector, channelConfiguration) -> { groupAddresses.addAll(selector.getReadAddresses(channelConfiguration)); @@ -142,7 +134,7 @@ private void initializeGroupAddresses() { } private KNXChannelType getKNXChannelType(Channel channel) { - return KNXChannelSelector.getValueSelectorFromChannelTypeId(channel.getChannelTypeUID()); + return KNXChannelTypes.getType(channel.getChannelTypeUID()); } private KNXBridgeBaseThingHandler getBridgeHandler() { @@ -166,12 +158,10 @@ public void dispose() { pollingJob.cancel(true); pollingJob = null; } - if (descriptionJob != null) { descriptionJob.cancel(true); descriptionJob = null; } - cancelReadFutures(); getClient().unregisterGroupAddressListener(this); } @@ -191,13 +181,9 @@ private interface ChannelFunction { } private void withKNXType(ChannelUID channelUID, ChannelFunction function) { - withKNXType(channelUID.getId(), function); - } - - private void withKNXType(String channelId, ChannelFunction function) { - Channel channel = getThing().getChannel(channelId); + Channel channel = getThing().getChannel(channelUID.getId()); if (channel == null) { - logger.warn("Channel '{}' does not exist on thing '{}'", channelId, getThing().getUID()); + logger.warn("Channel '{}' does not exist", channelUID); return; } withKNXType(channel, function); @@ -208,7 +194,7 @@ private void withKNXType(Channel channel, ChannelFunction function) { KNXChannelType selector = getKNXChannelType(channel); function.apply(selector, channel.getConfiguration()); } catch (KNXException e) { - logger.error("An error occurred on channel {}: {}", channel.getUID(), e.getMessage(), e); + logger.warn("An error occurred on channel {}: {}", channel.getUID(), e.getMessage(), e); } } @@ -249,55 +235,51 @@ private void scheduleRead(KNXChannelType selector, Configuration configuration) } private void scheduleReadJob(GroupAddress groupAddress, String dpt) { - boolean recurring = readInterval != null && readInterval.intValue() > 0; - - Runnable readRunnable = () -> { - if (getThing().getStatus() == ThingStatus.ONLINE && getClient().isConnected()) { - if (!typeHelper.isDPTSupported(dpt)) { - logger.warn("DPT '{}' is not supported by the KNX binding", dpt); - return; - } - Datapoint datapoint = new CommandDP(groupAddress, getThing().getUID().toString(), 0, dpt); - getClient().readDatapoint(datapoint); - } - }; - if (recurring) { + if (readInterval > 0) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { - future = getBridgeHandler().getScheduler().scheduleWithFixedDelay(readRunnable, 0, - readInterval.intValue(), TimeUnit.SECONDS); + future = getScheduler().scheduleWithFixedDelay(() -> readDatapoint(groupAddress, dpt), 0, readInterval, + TimeUnit.SECONDS); readFutures.put(groupAddress, future); } } else { - getBridgeHandler().getScheduler().submit(readRunnable); + getScheduler().submit(() -> readDatapoint(groupAddress, dpt)); + } + } + + private void readDatapoint(GroupAddress groupAddress, String dpt) { + if (getClient().isConnected()) { + if (!isDPTSupported(dpt)) { + logger.warn("DPT '{}' is not supported by the KNX binding", dpt); + return; + } + Datapoint datapoint = new CommandDP(groupAddress, getThing().getUID().toString(), 0, dpt); + getClient().readDatapoint(datapoint); } } @Override public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { super.bridgeStatusChanged(bridgeStatusInfo); - if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE) { getClient().registerGroupAddressListener(this); scheduleReadJobs(); - updateStatus(ThingStatus.ONLINE, ThingStatusDetail.NONE); } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { cancelReadFutures(); getClient().unregisterGroupAddressListener(this); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); } } @Override public boolean listensTo(GroupAddress destination) { - return groupAddresses.contains(destination) || foundGroupAddresses.contains(destination); + return groupAddresses.contains(destination); } @Override public void handleCommand(ChannelUID channelUID, Command command) { - logger.trace("Handling a Command ({}) for Channel {}", command, channelUID); + logger.trace("Handling command '{}' for channel '{}'", command, channelUID); if (command instanceof RefreshType && !isControl(channelUID)) { - logger.debug("Refreshing channel {}", channelUID); + logger.debug("Refreshing channel '{}'", channelUID); withKNXType(channelUID, (selector, configuration) -> { scheduleRead(selector, configuration); }); @@ -335,7 +317,7 @@ private ChannelTypeUID getChannelTypeUID(ChannelUID channelUID) { @Override public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { - logger.trace("Thing {} received a Group Read Request telegram from '{}' for destination '{}'", + logger.trace("Thing '{}' received a Group Read Request telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { @@ -358,14 +340,14 @@ public void onGroupReadResponse(KNXClient client, IndividualAddress source, Grou @Override public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { - logger.debug("Thing {} received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), + logger.debug("Thing '{}' received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { withKNXType(channel, (selector, configuration) -> { ListenSpec listenSpec = selector.getListenSpec(configuration, destination); if (listenSpec != null) { - logger.trace("Thing {} processes a Group Write telegram for destination '{}' for channel '{}'", + logger.trace("Thing '{}' processes a Group Write telegram for destination '{}' for channel '{}'", getThing().getUID(), destination, channel.getUID()); processDataReceived(destination, asdu, listenSpec, channel.getUID()); } @@ -377,15 +359,13 @@ public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddres private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSpec listenSpec, ChannelUID channelUID) { - if (!typeHelper.isDPTSupported(listenSpec.getDPT())) { - logger.warn("DPT {} is not supported by the KNX binding.", listenSpec.getDPT()); + if (!isDPTSupported(listenSpec.getDPT())) { + logger.warn("DPT '{}' is not supported by the KNX binding.", listenSpec.getDPT()); return; } Datapoint datapoint = new CommandDP(destination, getThing().getUID().toString(), 0, listenSpec.getDPT()); - Type type = typeHelper.getType(datapoint, asdu); - - System.out.println("turned " + asdu[0] + " into " + type); + Type type = typeHelper.toType(datapoint, asdu); if (type != null) { if (KNXBindingConstants.CHANNEL_DIMMER_CONTROL.equals(getChannelTypeUID(channelUID).getId()) @@ -415,7 +395,7 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSp } else { String s = asduToHex(asdu); logger.warn( - "Ignoring KNX bus data: couldn't transform to Type (not supported). Destination='{}', datapoint='{}', data='{}'", + "Ignoring KNX bus data: couldn't transform to any Type (destination='{}', datapoint='{}', data='{}')", destination, datapoint, s); } } @@ -437,57 +417,20 @@ public void restart() { } } - class ReadRunnable implements Runnable { - - private final GroupAddress address; - private final @Nullable String dpt; - - ReadRunnable(GroupAddress address, @Nullable String dpt) { - this.address = address; - this.dpt = dpt; - } - - @Override - public void run() { - if (getThing().getStatus() == ThingStatus.ONLINE && getClient().isConnected()) { - if (!typeHelper.isDPTSupported(dpt)) { - logger.warn("DPT '{}' is not supported by the KNX binding", dpt); - return; - } - Datapoint datapoint = new CommandDP(address, getThing().getUID().toString(), 0, dpt); - getClient().readDatapoint(datapoint); - } - } - }; - private void pollDeviceStatus() { try { if (address != null && getClient().isConnected()) { - logger.debug("Polling the individual address {}", address); + logger.debug("Polling individual address '{}'", address); boolean isReachable = getClient().isReachable(address); if (isReachable) { updateStatus(ThingStatus.ONLINE); DeviceConfig config = getConfigAs(DeviceConfig.class); if (!filledDescription && config.getFetch()) { - ScheduledFuture descriptionJob = this.descriptionJob; + Future descriptionJob = this.descriptionJob; if (descriptionJob == null || descriptionJob.isCancelled()) { - this.descriptionJob = getBridgeHandler().getScheduler().schedule(() -> { - IndividualAddress address = DeviceThingHandler.this.address; - if (address != null) { - DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), - address); - Result result = inspector.readDeviceInfo(); - if (result != null) { - filledDescription = true; - - Map properties = editProperties(); - properties.putAll(result.getProperties()); - updateProperties(properties); - - foundGroupAddresses.addAll(result.getGroupAddresses()); - } - } - }, 0, TimeUnit.MILLISECONDS); + this.descriptionJob = getScheduler().submit(() -> { + filledDescription = describeDevice(address); + }); } } } else { @@ -495,10 +438,28 @@ private void pollDeviceStatus() { } } } catch (KNXException e) { - logger.error("An error occurred while testing the reachability of a thing '{}' : {}", getThing().getUID(), - e.getLocalizedMessage(), e); + logger.debug("An error occurred while testing the reachability of a thing '{}'", getThing().getUID(), e); updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); } } + private boolean describeDevice(@Nullable IndividualAddress address) { + if (address == null) { + return false; + } + DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), address); + Result result = inspector.readDeviceInfo(); + if (result != null) { + Map properties = editProperties(); + properties.putAll(result.getProperties()); + updateProperties(properties); + return true; + } + return false; + } + + private boolean isDPTSupported(@Nullable String dpt) { + return typeHelper.toTypeClass(dpt) != null; + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java index 58a220a7ab36c..dbd95c7f5ae17 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java @@ -9,6 +9,7 @@ package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.binding.knx.internal.client.BusMessageListener; import tuwien.auto.calimero.GroupAddress; @@ -20,7 +21,7 @@ * @author Karel Goderis - Initial contribution */ @NonNullByDefault -public interface GroupAddressListener extends TelegramListener { +public interface GroupAddressListener extends BusMessageListener { /** * Called to verify if the GroupAddressListener has an interest in the given GroupAddress diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java index 2ea07ba295d13..099268bc00767 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java @@ -32,6 +32,7 @@ * directly defined on the bridge * * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Refactoring & cleanup */ @NonNullByDefault public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { @@ -43,19 +44,17 @@ public class IPBridgeThingHandler extends KNXBridgeBaseThingHandler { private IPClient client; private final NetworkAddressService networkAddressService; - private final TypeHelper typeHelper; - public IPBridgeThingHandler(Bridge bridge, NetworkAddressService networkAddressService, TypeHelper typeHelper) { + public IPBridgeThingHandler(Bridge bridge, NetworkAddressService networkAddressService) { super(bridge); this.networkAddressService = networkAddressService; - this.typeHelper = typeHelper; } @Override public void initialize() { IPBridgeConfiguration config = getConfigAs(IPBridgeConfiguration.class); String localSource = config.getLocalSourceAddr(); - String connectionTypeString = config.getIpConnectionType(); + String connectionTypeString = config.getType(); int port = config.getPortNumber().intValue(); String ip = config.getIpAddress(); InetSocketAddress localEndPoint = null; @@ -86,8 +85,7 @@ public void initialize() { updateStatus(ThingStatus.UNKNOWN); client = new IPClient(ipConnectionType, ip, localSource, port, localEndPoint, useNAT, config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), - config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), this, - typeHelper); + config.getReadingPause().intValue(), config.getReadRetriesLimit().intValue(), getScheduler(), this); client.initialize(); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 99142a49440ca..b1e9a15999649 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -30,7 +30,7 @@ * The {@link KNXBridgeBaseThingHandler} is responsible for handling commands, which are * sent to one of the channels. * - * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Initial contribution and API */ @NonNullByDefault public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements StatusUpdateCallback { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java index 6d49a7b2bd6f6..f35bb89dbb78e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java @@ -22,18 +22,19 @@ * directly defined on the bridge * * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Refactoring & cleanup */ @NonNullByDefault public class SerialBridgeThingHandler extends KNXBridgeBaseThingHandler { private final SerialClient client; - public SerialBridgeThingHandler(Bridge bridge, TypeHelper typeHelper) { + public SerialBridgeThingHandler(Bridge bridge) { super(bridge); SerialBridgeConfiguration config = getConfigAs(SerialBridgeConfiguration.class); client = new SerialClient(config.getAutoReconnectPeriod().intValue(), thing.getUID(), config.getResponseTimeout().intValue(), config.getReadingPause().intValue(), - config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this, typeHelper); + config.getReadRetriesLimit().intValue(), getScheduler(), config.getSerialPort(), this); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java index ed273c9a83d77..86937ea976456 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java @@ -1,14 +1,38 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.handler; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; +/** + * Callback interface which enables the KNXClient implementations to update the thing status. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public interface StatusUpdateCallback { + /** + * see BaseThingHandler + * + * @param status + */ void updateStatus(ThingStatus status); + /** + * see BaseThingHandler + * + * @param status + */ void updateStatus(ThingStatus status, ThingStatusDetail thingStatusDetail, String message); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java deleted file mode 100644 index e5694a3e875c5..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TypeHelper.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.openhab.binding.knx.handler; - -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.core.types.Type; - -import tuwien.auto.calimero.datapoint.Datapoint; - -public interface TypeHelper { - - /** - * Transforms the raw KNX bus data of a given datapoint into an openHAB type (command or state) - * - * @param datapoint - * the datapoint to which the data belongs - * @param asdu - * the byte array of the raw data from the KNX bus - * @return the openHAB command or state that corresponds to the data - */ - @Nullable - Type getType(Datapoint datapoint, byte[] asdu); - - boolean isDPTSupported(@Nullable String dpt); - - @Nullable - Class toTypeClass(String dpt); - - /** - * Transforms a {@link Type} into a datapoint type value for the KNX bus. - * - * @param type - * the {@link Type} to transform - * @param dpt - * the datapoint type to which should be converted - * - * @return the corresponding KNX datapoint type value as a string - */ - @Nullable - String toDPTValue(Type type, String dpt); - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java new file mode 100644 index 0000000000000..1b4fd2813cab0 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.channel; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +import tuwien.auto.calimero.GroupAddress; +import tuwien.auto.calimero.exception.KNXFormatException; + +/** + * Base class for telegram meta-data + * + * @author Simon Kaufmann - initial contribution and API. + * + */ +@NonNullByDefault +public abstract class AbstractSpec { + + private String dpt; + + protected AbstractSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + if (channelConfiguration != null) { + String configuredDPT = channelConfiguration.getDPT(); + this.dpt = configuredDPT != null ? configuredDPT : defaultDPT; + } else { + this.dpt = defaultDPT; + } + + } + + protected final @Nullable GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + try { + return new GroupAddress(ga.getGA()); + } catch (KNXFormatException e) { + return null; + } + } + + public final String getDPT() { + return dpt; + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java index a889095e71043..c51abf7aa6f4a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import static java.util.stream.Collectors.toList; @@ -8,6 +16,12 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +/** + * Data structure representing the content of a channel's group address configuration. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class ChannelConfiguration { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java index eb848a56bb5c5..a2b673f1a6da9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import org.eclipse.jdt.annotation.Nullable; @@ -6,34 +14,33 @@ import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; -public class CommandSpec { +/** + * Command meta-data + * + * @author Simon Kaufmann - initial contribution and API. + * + */ +public class CommandSpec extends AbstractSpec { private final Type command; - private final String dpt; private final @Nullable GroupAddress groupAddress; - private CommandSpec(String dpt, GroupAddress groupAddress, Type command) { - this.dpt = dpt; - this.groupAddress = groupAddress; - this.command = command; - } - public CommandSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT, Type command) throws KNXFormatException { - this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() - : defaultDPT, - channelConfiguration != null ? new GroupAddress(channelConfiguration.getMainGA().getGA()) : null, - command); + super(channelConfiguration, defaultDPT); + if (channelConfiguration != null) { + this.groupAddress = new GroupAddress(channelConfiguration.getMainGA().getGA()); + + } else { + this.groupAddress = null; + } + this.command = command; } public Type getCommand() { return command; } - public String getDpt() { - return dpt; - } - public @Nullable GroupAddress getGroupAddress() { return groupAddress; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java index 5539eb4f41dc6..c04b171640f9c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java @@ -1,5 +1,22 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Data structure representing a single group address configuration within a channel configuration parameter. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ +@NonNullByDefault public class GroupAddressConfiguration { private final String ga; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index ce59d3806a65b..ec0902ad08ee1 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -28,6 +28,12 @@ import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; +/** + * Meta-data abstraction for the KNX channel configurations. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public abstract class KNXChannelType { @@ -172,7 +178,7 @@ public final List getReadSpec(Configuration configuration) throws KNXF throws KNXFormatException { return getAllGAKeys().stream() .map(key -> new ResponseSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) - .filter(spec -> spec.getGroupAddress().equals(groupAddress)).findFirst().orElse(null); + .filter(spec -> groupAddress.equals(spec.getGroupAddress())).findFirst().orElse(null); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java similarity index 80% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java index 0bd9d6017f1ce..17dbb63fe5b76 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelSelector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java @@ -19,8 +19,14 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; +/** + * Helper class to find the matching {@link KNXChannelType} for any given {@link ChannelTypeUID}. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault -public final class KNXChannelSelector { +public final class KNXChannelTypes { private static final Set TYPES = Collections.unmodifiableSet(Stream.of(// new TypeContact(), // @@ -32,12 +38,11 @@ public final class KNXChannelSelector { new TypeSwitch() // ).collect(toSet())); - private KNXChannelSelector() { + private KNXChannelTypes() { // prevent instantiation } - public static KNXChannelType getValueSelectorFromChannelTypeId(@Nullable ChannelTypeUID channelTypeUID) - throws IllegalArgumentException { + public static KNXChannelType getType(@Nullable ChannelTypeUID channelTypeUID) throws IllegalArgumentException { Objects.requireNonNull(channelTypeUID); for (KNXChannelType c : TYPES) { if (c.getChannelIDs().contains(channelTypeUID.getId())) { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java index c890dc0b5b775..84ea214ed1da7 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import static java.util.stream.Collectors.toList; @@ -8,40 +16,29 @@ import org.eclipse.jdt.annotation.Nullable; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; -public class ListenSpec { +/** + * Listen meta-data. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ +public class ListenSpec extends AbstractSpec { - private final String dpt; private final List listenAddresses; public ListenSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { - this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() - : defaultDPT, - channelConfiguration != null - ? channelConfiguration.getListenGAs().stream().map(ListenSpec::toGroupAddress).collect(toList()) - : Collections.emptyList()); - } - - private ListenSpec(String dpt, List listenAddresses) { - this.dpt = dpt; - this.listenAddresses = listenAddresses; - } - - public String getDPT() { - return dpt; + super(channelConfiguration, defaultDPT); + if (channelConfiguration != null) { + this.listenAddresses = channelConfiguration.getListenGAs().stream().map(this::toGroupAddress) + .collect(toList()); + } else { + this.listenAddresses = Collections.emptyList(); + } } public List getListenAddresses() { return listenAddresses; } - private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { - try { - return new GroupAddress(ga.getGA()); - } catch (KNXFormatException e) { - return null; - } - } - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java index bf65f125b7950..6bdd31c05dcc5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import static java.util.stream.Collectors.toList; @@ -10,22 +18,25 @@ import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; +/** + * Read meta-data. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ public class ReadSpec { private final String dpt; private final List readAddresses; public ReadSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { - this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() - : defaultDPT, - channelConfiguration != null - ? channelConfiguration.getReadGAs().stream().map(ReadSpec::toGroupAddress).collect(toList()) - : Collections.emptyList()); - } - - private ReadSpec(String dpt, List readAddresses) { - this.dpt = dpt; - this.readAddresses = readAddresses; + if (channelConfiguration != null) { + this.dpt = channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT; + this.readAddresses = channelConfiguration.getReadGAs().stream().map(this::toGroupAddress).collect(toList()); + } else { + this.dpt = defaultDPT; + this.readAddresses = Collections.emptyList(); + } } public String getDPT() { @@ -36,7 +47,7 @@ public List getReadAddresses() { return readAddresses; } - private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + private GroupAddress toGroupAddress(GroupAddressConfiguration ga) { try { return new GroupAddress(ga.getGA()); } catch (KNXFormatException e) { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java index 9f58c5b5f1f89..267a531978f33 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java @@ -3,37 +3,28 @@ import org.eclipse.jdt.annotation.Nullable; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; -public class ResponseSpec { +/** + * Response meta-data + * + * @author Simon Kaufmann - initial contribution and API. + * + */ +public class ResponseSpec extends AbstractSpec { - private final String dpt; private final @Nullable GroupAddress groupAddress; public ResponseSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { - this(channelConfiguration != null && channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() - : defaultDPT, channelConfiguration != null ? toGroupAddress(channelConfiguration.getMainGA()) : null); - } - - private ResponseSpec(String dpt, GroupAddress groupAddress) { - this.dpt = dpt; - this.groupAddress = groupAddress; - } - - public String getDpt() { - return dpt; + super(channelConfiguration, defaultDPT); + if (channelConfiguration != null) { + this.groupAddress = toGroupAddress(channelConfiguration.getMainGA()); + } else { + this.groupAddress = null; + } } public @Nullable GroupAddress getGroupAddress() { return groupAddress; } - private static GroupAddress toGroupAddress(GroupAddressConfiguration ga) { - try { - return new GroupAddress(ga.getGA()); - } catch (KNXFormatException e) { - return null; - } - } - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java index a9ef408ddc296..c21d946732322 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java @@ -17,6 +17,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; +/** + * contact channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeContact extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java index 4182495fa4f02..df1633d7e396d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java @@ -17,6 +17,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorDateTime; +/** + * datetime channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeDateTime extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index 392ec6004ea9d..1e7044dd804ba 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -28,6 +28,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; import tuwien.auto.calimero.exception.KNXFormatException; +/** + * dimmer channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeDimmer extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java index 06368f2b98a5c..ab7a647849f01 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java @@ -15,6 +15,12 @@ import org.eclipse.jdt.annotation.NonNullByDefault; +/** + * number channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeNumber extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index dc7aa6a9e16ba..c77031cf7b0b6 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -27,6 +27,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; import tuwien.auto.calimero.exception.KNXFormatException; +/** + * rollershutter channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeRollershutter extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java index 7f60c6c2875a1..54310e7e0cb91 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java @@ -17,6 +17,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorString; +/** + * string channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeString extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java index 4db7c6bcb7dbd..2e96ad5294d57 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -17,6 +17,12 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; +/** + * switch channel type description + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault class TypeSwitch extends KNXChannelType { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java similarity index 80% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java index a79f7bf51112e..68f73bbdf8247 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/TelegramListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java @@ -6,23 +6,20 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.handler; +package org.openhab.binding.knx.internal.client; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.openhab.binding.knx.internal.client.KNXClient; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; /** - * The {@link TelegramListener} is an interface that needs to be - * implemented by classes that want to listen to Telegrams - * on the KNX bus + * Callback interface for KNX bus messages * - * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Initial contribution and API */ @NonNullByDefault -public interface TelegramListener { +public interface BusMessageListener { /** * diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java index f2f953fe6a351..979a1dd01e81a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.client; import java.nio.ByteBuffer; @@ -14,13 +22,19 @@ import tuwien.auto.calimero.mgmt.Destination; import tuwien.auto.calimero.mgmt.ManagementClient; +/** + * Client for retrieving additional device descriptions. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class DeviceInfoClient { private final Logger logger = LoggerFactory.getLogger(DeviceInfoClient.class); private final ManagementClient managementClient; - public DeviceInfoClient(ManagementClient managementClient) { + DeviceInfoClient(ManagementClient managementClient) { this.managementClient = managementClient; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java similarity index 93% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 97c4fc0fb51c0..9746b608cdc8c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -1,4 +1,12 @@ -package org.openhab.binding.knx.internal.handler; +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.client; import static org.openhab.binding.knx.KNXBindingConstants.*; import static org.openhab.binding.knx.internal.handler.DeviceConstants.*; @@ -10,7 +18,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.openhab.binding.knx.internal.client.DeviceInfoClient; +import org.openhab.binding.knx.internal.handler.Firmware; +import org.openhab.binding.knx.internal.handler.Manufacturer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,6 +30,12 @@ import tuwien.auto.calimero.IndividualAddress; import tuwien.auto.calimero.mgmt.PropertyAccess.PID; +/** + * Client dedicated to read device specifi information using the {@link DeviceInfoClient}. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class DeviceInspector { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java index 66b45f468c109..d4bf71f73b917 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.client; import java.net.InetSocketAddress; @@ -7,7 +15,6 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.ThingUID; import org.openhab.binding.knx.handler.StatusUpdateCallback; -import org.openhab.binding.knx.handler.TypeHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +24,12 @@ import tuwien.auto.calimero.link.KNXNetworkLinkIP; import tuwien.auto.calimero.link.medium.TPSettings; +/** + * IP specific {@link KNXClient} implementation. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class IPClient extends KNXClient { @@ -36,9 +49,9 @@ public class IPClient extends KNXClient { public IPClient(int ipConnectionType, String ip, String localSource, int port, @Nullable InetSocketAddress localEndPoint, boolean useNAT, int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, - StatusUpdateCallback statusUpdateCallback, TypeHelper typeHelper) { + StatusUpdateCallback statusUpdateCallback) { super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, - statusUpdateCallback, typeHelper); + statusUpdateCallback); this.ipConnectionType = ipConnectionType; this.ip = ip; this.localSource = localSource; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java index 14bf3632ea3a9..2c77e2aa8f47b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -1,7 +1,15 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.client; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -14,12 +22,12 @@ import org.eclipse.smarthome.core.thing.ThingUID; import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.handler.GroupAddressListener; import org.openhab.binding.knx.handler.StatusUpdateCallback; -import org.openhab.binding.knx.handler.TelegramListener; -import org.openhab.binding.knx.handler.TypeHelper; import org.openhab.binding.knx.internal.channel.CommandSpec; import org.openhab.binding.knx.internal.channel.ResponseSpec; +import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; @@ -48,6 +56,12 @@ import tuwien.auto.calimero.process.ProcessEvent; import tuwien.auto.calimero.process.ProcessListenerEx; +/** + * KNX Client which encapsulates the communication with the KNX bus via the calimero libary. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public abstract class KNXClient implements NetworkLinkListener { @@ -55,42 +69,31 @@ public abstract class KNXClient implements NetworkLinkListener { private final Logger logger = LoggerFactory.getLogger(KNXClient.class); private final LogAdapter logAdapter = new LogAdapter(); + private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); + private final ThingUID thingUID; + private final int responseTimeout; + private final int readingPause; private final int autoReconnectPeriod; - private boolean shutdown = false; // FIXME - private final int readRetriesLimit; + private final StatusUpdateCallback statusUpdateCallback; + private final ScheduledExecutorService knxScheduler; - private @Nullable ScheduledFuture busJob; private @Nullable ProcessCommunicator processCommunicator; private @Nullable ProcessCommunicationResponder responseCommunicator; private @Nullable ManagementProcedures managementProcedures; private @Nullable ManagementClient managementClient; private @Nullable KNXNetworkLink link; + private @Nullable DeviceInfoClient deviceInfoClient; + private @Nullable ScheduledFuture busJob; + private @Nullable ScheduledFuture connectJob; - @Nullable - private DeviceInfoClient deviceInfoClient; - - private final ScheduledExecutorService knxScheduler; - + private final Set groupAddressListeners = new CopyOnWriteArraySet<>(); private final LinkedBlockingQueue<@Nullable RetryDatapoint> readDatapoints = new LinkedBlockingQueue<>(); - private final ThingUID thingUID; - - private final int responseTimeout; - - private final int readingPause; - - private final StatusUpdateCallback statusUpdateCallback; - - private final Set groupAddressListeners = new ConcurrentHashMap() - .keySet(Boolean.TRUE); - - protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); - @FunctionalInterface private interface ListenerNotification { - void apply(TelegramListener listener, IndividualAddress source, GroupAddress destination, byte[] asdu); + void apply(BusMessageListener listener, IndividualAddress source, GroupAddress destination, byte[] asdu); } @NonNullByDefault({}) @@ -98,7 +101,7 @@ private interface ListenerNotification { @Override public void detached(DetachEvent e) { - logger.error("The KNX network link was detached from the process communicator", e.getSource()); + logger.debug("The KNX network link was detached from the process communicator", e.getSource()); } @Override @@ -123,14 +126,8 @@ public void groupReadResponse(ProcessEvent e) { } }; - @Nullable - private ScheduledFuture connectJob; - - private final TypeHelper typeHelper; - public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, - int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback, - TypeHelper typeHelper) { + int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback) { this.autoReconnectPeriod = autoReconnectPeriod; this.thingUID = thingUID; this.responseTimeout = responseTimeout; @@ -138,16 +135,11 @@ public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout this.readRetriesLimit = readRetriesLimit; this.knxScheduler = knxScheduler; this.statusUpdateCallback = statusUpdateCallback; - this.typeHelper = typeHelper; - - shutdown = false; } public void initialize() { registerLogAdapter(); - connectJob = knxScheduler.scheduleWithFixedDelay(() -> { - connect(); - }, 0, autoReconnectPeriod, TimeUnit.SECONDS); + connectJob = knxScheduler.scheduleWithFixedDelay(() -> connect(), 0, autoReconnectPeriod, TimeUnit.SECONDS); } private void registerLogAdapter() { @@ -158,8 +150,10 @@ private void unregisterLogAdapter() { LogManager.getManager().removeWriter(null, logAdapter); } + protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; + private synchronized boolean connect() { - if (isConnected() || shutdown) { + if (isConnected()) { return true; } try { @@ -237,29 +231,20 @@ private void closeConnection(@Nullable Exception e) { } private void processEvent(String task, ProcessEvent event, ListenerNotification action) { - try { - GroupAddress destination = event.getDestination(); - IndividualAddress source = event.getSourceAddr(); - byte[] asdu = event.getASDU(); - if (asdu.length == 0) { - return; - } - logger.trace("Received a {} telegram from '{}' to '{}'", task, source, destination); - for (GroupAddressListener listener : groupAddressListeners) { - if (listener.listensTo(destination)) { - knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); - } - } - } catch (RuntimeException e) { - logger.error("Error handling {} event from KNX bus: {}", task, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); + GroupAddress destination = event.getDestination(); + IndividualAddress source = event.getSourceAddr(); + byte[] asdu = event.getASDU(); + if (asdu.length == 0) { + return; + } + logger.trace("Received a {} telegram from '{}' to '{}'", task, source, destination); + for (GroupAddressListener listener : groupAddressListeners) { + if (listener.listensTo(destination)) { + knxScheduler.schedule(() -> action.apply(listener, source, destination, asdu), 0, TimeUnit.SECONDS); } } } - protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; - /** * Transforms a {@link Type} into a datapoint type value for the KNX bus. * @@ -310,7 +295,6 @@ public void dispose() { connectJob.cancel(true); connectJob = null; } - shutdown = true; closeConnection(null); unregisterLogAdapter(); } @@ -321,7 +305,7 @@ public void linkClosed(@Nullable CloseEvent closeEvent) { if (link == null || closeEvent == null) { return; } - if (!link.isOpen() && CloseEvent.USER_REQUEST != closeEvent.getInitiator() && !shutdown) { + if (!link.isOpen() && CloseEvent.USER_REQUEST != closeEvent.getInitiator()) { statusUpdateCallback.updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, closeEvent.getReason()); logger.debug("KNX link has been lost (reason: {} on object {})", closeEvent.getReason(), @@ -348,10 +332,7 @@ public final synchronized boolean isReachable(@Nullable IndividualAddress addres try { return managementProcedures.isAddressOccupied(address); } catch (InterruptedException e) { - logger.error("Could not reach address '{}': {}", address.toString(), e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + logger.debug("Interrupted pinging KNX device '{}'", address); } return false; } @@ -366,10 +347,7 @@ public final synchronized void restartNetworkDevice(@Nullable IndividualAddress destination = managementClient.createDestination(address, true); managementClient.restart(destination); } catch (KNXException e) { - logger.error("Could not reset the device with address '{}': {}", address, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + logger.warn("Could not reset device with address '{}': {}", address, e.getMessage()); } finally { if (destination != null) { destination.destroy(); @@ -417,7 +395,7 @@ public void writeToKNX(CommandSpec commandSpec) throws KNXException { } GroupAddress groupAddress = commandSpec.getGroupAddress(); if (groupAddress != null) { - sendToKNX(processCommunicator, link, groupAddress, commandSpec.getDpt(), commandSpec.getCommand()); + sendToKNX(processCommunicator, link, groupAddress, commandSpec.getDPT(), commandSpec.getCommand()); } } @@ -432,7 +410,7 @@ public void respondToKNX(ResponseSpec responseSpec, State state) throws KNXExcep } GroupAddress groupAddress = responseSpec.getGroupAddress(); if (groupAddress != null) { - sendToKNX(responseCommunicator, link, groupAddress, responseSpec.getDpt(), state); + sendToKNX(responseCommunicator, link, groupAddress, responseSpec.getDPT(), state); } } @@ -456,10 +434,10 @@ private void sendToKNX(ProcessCommunicationBase communicator, KNXNetworkLink lin } catch (KNXException e) { if (i < MAX_SEND_ATTEMPTS - 1) { logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Will retry.", - type, datapoint, e.getMessage()); + type, datapoint, e.getLocalizedMessage()); } else { - logger.debug("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", - type, datapoint, e.getMessage()); + logger.warn("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", + type, datapoint, e.getLocalizedMessage()); closeConnection(e); throw e; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java index 7cea75e069bb9..888945cc2153c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.client; import java.util.Enumeration; @@ -6,7 +14,6 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.smarthome.core.thing.ThingUID; import org.openhab.binding.knx.handler.StatusUpdateCallback; -import org.openhab.binding.knx.handler.TypeHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +24,12 @@ import tuwien.auto.calimero.link.KNXNetworkLinkFT12; import tuwien.auto.calimero.link.medium.TPSettings; +/** + * Serial specific {@link KNXClient} implementation. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ public class SerialClient extends KNXClient { private final Logger logger = LoggerFactory.getLogger(SerialClient.class); @@ -25,9 +38,9 @@ public class SerialClient extends KNXClient { public SerialClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, String serialPort, - StatusUpdateCallback statusUpdateCallback, TypeHelper typeHelper) { + StatusUpdateCallback statusUpdateCallback) { super(autoReconnectPeriod, thingUID, responseTimeout, readingPause, readRetriesLimit, knxScheduler, - statusUpdateCallback, typeHelper); + statusUpdateCallback); this.serialPort = serialPort; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java index 53640346e4858..bcfffa3802397 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java @@ -11,7 +11,10 @@ import java.math.BigDecimal; /** + * Configuration object for the device thing handler. + * * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - refactoring & cleanup */ public class DeviceConfig { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java index fd9cdfe1ec5ab..7381106c38d9e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java @@ -10,10 +10,8 @@ import java.math.BigDecimal; -import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; - /** - * {@link KNXBridgeBaseThingHandler} configuration + * IP Bridge handler configuration object. * * @author Simon Kaufmann - initial contribution and API * @@ -21,7 +19,7 @@ public class IPBridgeConfiguration extends BridgeConfiguration { private boolean useNAT; - private String ipConnectionType; + private String type; private String ipAddress; private BigDecimal portNumber; private String localIp; @@ -31,8 +29,8 @@ public Boolean getUseNAT() { return useNAT; } - public String getIpConnectionType() { - return ipConnectionType; + public String getType() { + return type; } public String getIpAddress() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java index c39fbd414f71c..c49a1d5868644 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java @@ -1,5 +1,19 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.config; +/** + * Serial Bridge configuration object. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ public class SerialBridgeConfiguration extends BridgeConfiguration { private String serialPort; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 90a0cb1bc483c..82165c9fd6dca 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -71,7 +71,6 @@ * @author Volker Daube * @author Jan N. Klug * @author Helmut Lehmeyer - Java8, generic DPT Mapper - * @since 0.3.0 */ @Component public class KNXCoreTypeMapper implements KNXTypeMapper { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index 4748fc965b459..982a601a46aed 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -12,11 +12,7 @@ import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; -import java.util.Locale; -import org.apache.commons.lang.RandomStringUtils; -import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.net.NetworkAddressService; import org.eclipse.smarthome.core.thing.Bridge; @@ -26,35 +22,24 @@ import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory; import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory; -import org.eclipse.smarthome.core.types.Type; -import org.openhab.binding.knx.KNXTypeMapper; -import org.openhab.binding.knx.handler.IPBridgeThingHandler; import org.openhab.binding.knx.handler.DeviceThingHandler; -import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; +import org.openhab.binding.knx.handler.IPBridgeThingHandler; import org.openhab.binding.knx.handler.SerialBridgeThingHandler; -import org.openhab.binding.knx.handler.TypeHelper; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.component.annotations.ReferenceCardinality; -import org.osgi.service.component.annotations.ReferencePolicy; - -import tuwien.auto.calimero.datapoint.Datapoint; /** * The {@link KNXHandlerFactory} is responsible for creating things and thing * handlers. * - * @author Karel Goderis - Initial contribution + * @author Simon Kaufmann - Initial contribution and API */ @Component(service = ThingHandlerFactory.class) -public class KNXHandlerFactory extends BaseThingHandlerFactory implements TypeHelper { +public class KNXHandlerFactory extends BaseThingHandlerFactory { public static final Collection SUPPORTED_THING_TYPES_UIDS = Arrays.asList(THING_TYPE_DEVICE, THING_TYPE_IP_BRIDGE, THING_TYPE_SERIAL_BRIDGE); - private final Collection typeMappers = new HashSet(); - private final Collection bridgeHandlers = new HashSet(); - private NetworkAddressService networkAddressService; @Override @@ -74,8 +59,7 @@ public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, return super.createThing(thingTypeUID, configuration, serialBridgeUID, null); } if (THING_TYPE_DEVICE.equals(thingTypeUID)) { - ThingUID gaUID = getGenericThingUID(thingTypeUID, thingUID, configuration, bridgeUID); - return super.createThing(thingTypeUID, configuration, gaUID, bridgeUID); + return super.createThing(thingTypeUID, configuration, thingUID, bridgeUID); } throw new IllegalArgumentException("The thing type " + thingTypeUID + " is not supported by the KNX binding."); } @@ -83,11 +67,11 @@ public Thing createThing(ThingTypeUID thingTypeUID, Configuration configuration, @Override protected ThingHandler createHandler(Thing thing) { if (thing.getThingTypeUID().equals(THING_TYPE_IP_BRIDGE)) { - return new IPBridgeThingHandler((Bridge) thing, networkAddressService, this); + return new IPBridgeThingHandler((Bridge) thing, networkAddressService); } else if (thing.getThingTypeUID().equals(THING_TYPE_SERIAL_BRIDGE)) { - return new SerialBridgeThingHandler((Bridge) thing, this); + return new SerialBridgeThingHandler((Bridge) thing); } else if (thing.getThingTypeUID().equals(THING_TYPE_DEVICE)) { - return new DeviceThingHandler(thing, this); + return new DeviceThingHandler(thing); } return null; } @@ -109,91 +93,6 @@ private ThingUID getSerialBridgeThingUID(ThingTypeUID thingTypeUID, ThingUID thi return new ThingUID(thingTypeUID, serialPort); } - private ThingUID getGenericThingUID(ThingTypeUID thingTypeUID, ThingUID thingUID, Configuration configuration, - ThingUID bridgeUID) { - if (thingUID != null) { - return thingUID; - } - String address = ((String) configuration.get(GA)); - if (address != null) { - return new ThingUID(thingTypeUID, address.replace(".", "_"), bridgeUID.getId()); - } else { - String randomID = RandomStringUtils.randomAlphabetic(16).toLowerCase(Locale.ENGLISH); - return new ThingUID(thingTypeUID, randomID, bridgeUID.getId()); - } - } - - @Override - public synchronized ThingHandler registerHandler(Thing thing) { - ThingHandler handler = super.registerHandler(thing); - if (handler instanceof KNXBridgeBaseThingHandler) { - KNXBridgeBaseThingHandler bridgeHandler = (KNXBridgeBaseThingHandler) handler; - bridgeHandlers.add(bridgeHandler); - } - return handler; - } - - @Override - public synchronized void unregisterHandler(Thing thing) { - if (thing.getHandler() instanceof KNXBridgeBaseThingHandler) { - KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) thing.getHandler(); - bridgeHandlers.remove(handler); - } - super.unregisterHandler(thing); - } - - @Override - public @Nullable Type getType(Datapoint datapoint, byte[] asdu) { - for (KNXTypeMapper typeMapper : typeMappers) { - Type type = typeMapper.toType(datapoint, asdu); - if (type != null) { - return type; - } - } - return null; - } - - @Override - public final boolean isDPTSupported(@Nullable String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - if (typeMapper.toTypeClass(dpt) != null) { - return true; - } - } - return false; - } - - @Override - public final @Nullable Class toTypeClass(String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - Class typeClass = typeMapper.toTypeClass(dpt); - if (typeClass != null) { - return typeClass; - } - } - return null; - } - - @Override - public final @Nullable String toDPTValue(Type type, String dpt) { - for (KNXTypeMapper typeMapper : typeMappers) { - String value = typeMapper.toDPTValue(type, dpt); - if (value != null) { - return value; - } - } - return null; - } - - @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC) - protected synchronized void addKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.add(typeMapper); - } - - protected synchronized void removeKNXTypeMapper(KNXTypeMapper typeMapper) { - typeMappers.remove(typeMapper); - } - @Reference protected void setNetworkAddressService(NetworkAddressService networkAddressService) { this.networkAddressService = networkAddressService; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java index 4f91e1e53c457..27fabbc2548bc 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.profiles; import org.eclipse.jdt.annotation.NonNull; @@ -8,6 +16,19 @@ import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; +/** + * Profile for KNX devices controlling devices of other bindings. + *

+ * As opposed to the {@link KNXDefaultProfile}, {@link Command}s coming from the handler here really are meant to be + * {@link Command}s. + *

+ * {@link State} updates from items however are forwarded to the handlers as commands. + *

+ * All other communication is ignored. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class KNXControlProfile implements StateProfile { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java index 389485a39b480..c03ae7157234f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.profiles; import org.eclipse.jdt.annotation.NonNull; @@ -8,6 +16,17 @@ import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; +/** + * Default profile for the KNX binding. + *

+ * Please note that due to the fact that the same handler is used for "standard" and "control" types, the handlers + * always send {@link Command}s but here they are turned into {@link State}s if possible. + *

+ * {@link State} on the other hand are ignored completely. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @NonNullByDefault public class KNXDefaultProfile implements StateProfile { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java index fd8a93d991af6..bb1a3a4c3474c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.profiles; import static java.util.stream.Collectors.toSet; @@ -26,6 +34,12 @@ import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; import org.osgi.service.component.annotations.Component; +/** + * Advisor, provider and factory for the specialized KNX profiles. + * + * @author Simon Kaufmann - initial contribution and API. + * + */ @Component @NonNullByDefault public class KNXProfileAdvisor implements ProfileAdvisor, ProfileTypeProvider, ProfileFactory { From 14c6aabdf2ac973951716dcb895b51ccec77a156 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 10:42:00 +0100 Subject: [PATCH 13/52] piggyback on system profiles Signed-off-by: Simon Kaufmann --- .../knx/handler/DeviceThingHandler.java | 43 +++++++----- .../internal/profiles/KNXControlProfile.java | 70 ------------------- .../internal/profiles/KNXDefaultProfile.java | 68 ------------------ .../internal/profiles/KNXProfileAdvisor.java | 67 +++--------------- 4 files changed, 34 insertions(+), 214 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java index 97d8dc7335bcc..da62622910e29 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java @@ -38,19 +38,20 @@ import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; +import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; import org.eclipse.smarthome.core.types.UnDefType; import org.openhab.binding.knx.KNXBindingConstants; import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.internal.channel.CommandSpec; -import org.openhab.binding.knx.internal.channel.KNXChannelTypes; import org.openhab.binding.knx.internal.channel.KNXChannelType; +import org.openhab.binding.knx.internal.channel.KNXChannelTypes; import org.openhab.binding.knx.internal.channel.ListenSpec; import org.openhab.binding.knx.internal.channel.ReadSpec; import org.openhab.binding.knx.internal.channel.ResponseSpec; import org.openhab.binding.knx.internal.client.DeviceInspector; -import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.client.DeviceInspector.Result; +import org.openhab.binding.knx.internal.client.KNXClient; import org.openhab.binding.knx.internal.config.DeviceConfig; import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; import org.slf4j.Logger; @@ -368,28 +369,32 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSp Type type = typeHelper.toType(datapoint, asdu); if (type != null) { - if (KNXBindingConstants.CHANNEL_DIMMER_CONTROL.equals(getChannelTypeUID(channelUID).getId()) - && (type instanceof UnDefType || type instanceof IncreaseDecreaseType)) { - // special handling for dimmer-control - if (UnDefType.UNDEF.equals(type)) { - ScheduledFuture future = channelFutures.remove(channelUID); - if (future != null) { - future.cancel(false); + if (isControl(channelUID)) { + if (KNXBindingConstants.CHANNEL_DIMMER_CONTROL.equals(getChannelTypeUID(channelUID).getId()) + && (type instanceof UnDefType || type instanceof IncreaseDecreaseType)) { + // special handling for dimmer-control + if (UnDefType.UNDEF.equals(type)) { + ScheduledFuture future = channelFutures.remove(channelUID); + if (future != null) { + future.cancel(false); + } + } else if (type instanceof IncreaseDecreaseType) { + ScheduledFuture future = scheduler.scheduleWithFixedDelay(() -> { + postCommand(channelUID, (Command) type); + }, 0, 500, TimeUnit.MILLISECONDS); + ScheduledFuture previousFuture = channelFutures.put(channelUID, future); + if (previousFuture != null) { + previousFuture.cancel(true); + } } - } else if (type instanceof IncreaseDecreaseType) { - ScheduledFuture future = scheduler.scheduleWithFixedDelay(() -> { + } else { + if (type instanceof Command) { postCommand(channelUID, (Command) type); - }, 0, 500, TimeUnit.MILLISECONDS); - ScheduledFuture previousFuture = channelFutures.put(channelUID, future); - if (previousFuture != null) { - previousFuture.cancel(true); } } } else { - if (type instanceof Command) { - postCommand(channelUID, (Command) type); - } else { - // drop + if (type instanceof State) { + updateState(channelUID, (State) type); } } } else { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java deleted file mode 100644 index 27fabbc2548bc..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXControlProfile.java +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.profiles; - -import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; -import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; -import org.eclipse.smarthome.core.thing.profiles.StateProfile; -import org.eclipse.smarthome.core.types.Command; -import org.eclipse.smarthome.core.types.State; - -/** - * Profile for KNX devices controlling devices of other bindings. - *

- * As opposed to the {@link KNXDefaultProfile}, {@link Command}s coming from the handler here really are meant to be - * {@link Command}s. - *

- * {@link State} updates from items however are forwarded to the handlers as commands. - *

- * All other communication is ignored. - * - * @author Simon Kaufmann - initial contribution and API. - * - */ -@NonNullByDefault -public class KNXControlProfile implements StateProfile { - - public static final ProfileTypeUID UID = new ProfileTypeUID("knx", "control"); - - private final ProfileCallback callback; - - public KNXControlProfile(ProfileCallback callback) { - this.callback = callback; - } - - @Override - public @NonNull ProfileTypeUID getProfileTypeUID() { - return UID; - } - - @Override - public void onStateUpdateFromItem(@NonNull State state) { - if (state instanceof Command) { - callback.handleCommand((Command) state); - } - } - - @Override - public void onCommandFromItem(@NonNull Command command) { - // no-op - } - - @Override - public void onCommandFromHandler(@NonNull Command command) { - callback.sendCommand(command); - } - - @Override - public void onStateUpdateFromHandler(@NonNull State state) { - // no-op - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java deleted file mode 100644 index c03ae7157234f..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXDefaultProfile.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.profiles; - -import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; -import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; -import org.eclipse.smarthome.core.thing.profiles.StateProfile; -import org.eclipse.smarthome.core.types.Command; -import org.eclipse.smarthome.core.types.State; - -/** - * Default profile for the KNX binding. - *

- * Please note that due to the fact that the same handler is used for "standard" and "control" types, the handlers - * always send {@link Command}s but here they are turned into {@link State}s if possible. - *

- * {@link State} on the other hand are ignored completely. - * - * @author Simon Kaufmann - initial contribution and API. - * - */ -@NonNullByDefault -public class KNXDefaultProfile implements StateProfile { - - public static final ProfileTypeUID UID = new ProfileTypeUID("knx", "default"); - - private final ProfileCallback callback; - - public KNXDefaultProfile(ProfileCallback callback) { - this.callback = callback; - } - - @Override - public @NonNull ProfileTypeUID getProfileTypeUID() { - return UID; - } - - @Override - public void onStateUpdateFromItem(@NonNull State state) { - // no-op - } - - @Override - public void onCommandFromItem(@NonNull Command command) { - callback.handleCommand(command); - } - - @Override - public void onCommandFromHandler(@NonNull Command command) { - if (command instanceof State) { - callback.sendUpdate((State) command); - } - } - - @Override - public void onStateUpdateFromHandler(@NonNull State state) { - // no-op - } - -} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java index bb1a3a4c3474c..65e5ca8d2495c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java @@ -8,52 +8,27 @@ */ package org.openhab.binding.knx.internal.profiles; -import static java.util.stream.Collectors.toSet; import static org.openhab.binding.knx.KNXBindingConstants.*; -import java.util.Collection; -import java.util.Locale; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.Channel; -import org.eclipse.smarthome.core.thing.profiles.Profile; import org.eclipse.smarthome.core.thing.profiles.ProfileAdvisor; -import org.eclipse.smarthome.core.thing.profiles.ProfileCallback; -import org.eclipse.smarthome.core.thing.profiles.ProfileContext; -import org.eclipse.smarthome.core.thing.profiles.ProfileFactory; -import org.eclipse.smarthome.core.thing.profiles.ProfileType; -import org.eclipse.smarthome.core.thing.profiles.ProfileTypeBuilder; -import org.eclipse.smarthome.core.thing.profiles.ProfileTypeProvider; import org.eclipse.smarthome.core.thing.profiles.ProfileTypeUID; -import org.eclipse.smarthome.core.thing.profiles.StateProfileType; +import org.eclipse.smarthome.core.thing.profiles.SystemProfiles; import org.eclipse.smarthome.core.thing.type.ChannelType; import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; import org.osgi.service.component.annotations.Component; /** * Advisor, provider and factory for the specialized KNX profiles. - * + * * @author Simon Kaufmann - initial contribution and API. * */ @Component @NonNullByDefault -public class KNXProfileAdvisor implements ProfileAdvisor, ProfileTypeProvider, ProfileFactory { - - private static final StateProfileType TYPE_DEFAULT = ProfileTypeBuilder - .newState(KNXDefaultProfile.UID, "KNX Default").build(); - private static final StateProfileType TYPE_CONTROL = ProfileTypeBuilder - .newState(KNXControlProfile.UID, "KNX Control").build(); - - private static final Set SUPPORTED_PROFILE_TYPE_UIDS = Stream - .of(KNXDefaultProfile.UID, KNXControlProfile.UID).collect(toSet()); - - private static final Set SUPPORTED_PROFILE_TYPES = Stream.of(TYPE_DEFAULT, TYPE_CONTROL) - .collect(Collectors.toSet()); +public class KNXProfileAdvisor implements ProfileAdvisor { @Override public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(Channel channel, @Nullable String itemType) { @@ -61,42 +36,20 @@ public class KNXProfileAdvisor implements ProfileAdvisor, ProfileTypeProvider, P if (channelTypeUID == null || !channelTypeUID.getBindingId().equals(BINDING_ID)) { return null; } - if (isControl(channelTypeUID)) { - return KNXControlProfile.UID; - } else { - return KNXDefaultProfile.UID; - } + return getSuggestedProfieTypeUID(channelTypeUID); } @Override public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(ChannelType channelType, @Nullable String itemType) { - ChannelTypeUID channelTypeUID = channelType.getUID(); - if (isControl(channelTypeUID)) { - return KNXControlProfile.UID; - } else { - return KNXDefaultProfile.UID; - } + return getSuggestedProfieTypeUID(channelType.getUID()); } - @Override - public @Nullable Profile createProfile(ProfileTypeUID profileTypeUID, ProfileCallback callback, - ProfileContext profileContext) { - if (KNXDefaultProfile.UID.equals(profileTypeUID)) { - return new KNXDefaultProfile(callback); - } else if (KNXControlProfile.UID.equals(profileTypeUID)) { - return new KNXControlProfile(callback); + private ProfileTypeUID getSuggestedProfieTypeUID(ChannelTypeUID channelTypeUID) { + if (isControl(channelTypeUID)) { + return SystemProfiles.FOLLOW; + } else { + return SystemProfiles.DEFAULT; } - return null; - } - - @Override - public Collection getSupportedProfileTypeUIDs() { - return SUPPORTED_PROFILE_TYPE_UIDS; - } - - @Override - public Collection getProfileTypes(@Nullable Locale locale) { - return SUPPORTED_PROFILE_TYPES; } public static boolean isControl(ChannelTypeUID channelTypeUID) { From 2dda7a1d12917762b2efb9447bcefe44c153776c Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 11:54:09 +0100 Subject: [PATCH 14/52] fix read requests by removing the length check Signed-off-by: Simon Kaufmann --- .../org/openhab/binding/knx/internal/client/KNXClient.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java index 2c77e2aa8f47b..f02f284ae2873 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java @@ -234,9 +234,6 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification GroupAddress destination = event.getDestination(); IndividualAddress source = event.getSourceAddr(); byte[] asdu = event.getASDU(); - if (asdu.length == 0) { - return; - } logger.trace("Received a {} telegram from '{}' to '{}'", task, source, destination); for (GroupAddressListener listener : groupAddressListeners) { if (listener.listensTo(destination)) { From 9b88b09104d67088b45da8f1eed139b3f98d4003 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 12:02:37 +0100 Subject: [PATCH 15/52] take over fix for PercentType see openhab/openhab1-addons#5417 see openhab/openhab1-addons#5277 Signed-off-by: Simon Kaufmann --- .../org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 82165c9fd6dca..505df239b4afb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -559,7 +559,7 @@ public String toDPTValue(Type type, String dptID) { } else if (type instanceof StopMoveType) { return type.equals(StopMoveType.STOP) ? dpt.getLowerValue() : dpt.getUpperValue(); } else if (type instanceof PercentType) { - return type.toString(); + return String.valueOf(((DecimalType) type).intValue()); } else if (type instanceof DecimalType) { switch (mainNumber) { case 2: From 67d16ec00e278373034ef8580a90c949a64d79ef Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 12:54:56 +0100 Subject: [PATCH 16/52] fixed static code analysis complaints Signed-off-by: Simon Kaufmann --- .../internal/channel/KNXChannelTypeTest.java | 13 +++++++++++++ .../ESH-INF/thing/device.xml | 4 ++-- .../org.openhab.binding.knx/build.properties | 4 +++- .../lib/calimero-core-2.3-sources.jar | Bin 594081 -> 0 bytes .../lib/calimero-device-2.3-sources.jar | Bin 61624 -> 0 bytes .../lib/calimero-rxtx-2.3-sources.jar | Bin 11326 -> 0 bytes .../knx/internal/channel/ResponseSpec.java | 8 ++++++++ .../knx/internal/dpt/KNXCoreTypeMapper.java | 4 ++-- 8 files changed, 28 insertions(+), 5 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3-sources.jar delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar diff --git a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java index 94d78f7ef5a2c..b0010dcb5e9fb 100644 --- a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java +++ b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import static org.junit.Assert.*; @@ -9,6 +17,11 @@ import org.junit.Before; import org.junit.Test; +/** + * + * @author Simon Kaufmann - initial contribution and API. + * + */ public class KNXChannelTypeTest { private KNXChannelType ct; diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml index 311aa62cab23b..3e05a829fcc7f 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml @@ -3,7 +3,7 @@ xmlns:thing="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd"> - + @@ -60,7 +60,7 @@ Dimmer A channel to control a dimmer - + diff --git a/addons/binding/org.openhab.binding.knx/build.properties b/addons/binding/org.openhab.binding.knx/build.properties index 9446405e34e57..4694c4517105d 100644 --- a/addons/binding/org.openhab.binding.knx/build.properties +++ b/addons/binding/org.openhab.binding.knx/build.properties @@ -6,5 +6,7 @@ bin.includes = META-INF/,\ ESH-INF/,\ lib/calimero-core-2.3.jar,\ lib/calimero-device-2.3.jar,\ - lib/calimero-rxtx-2.3.jar + lib/calimero-rxtx-2.3.jar,\ + about.html,\ + README.md diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3-sources.jar deleted file mode 100644 index 6fa0038983ade9cf729624a2076bc094326b4d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594081 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븟Ulzkny}HjOSl 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%0DH{bxEfs8m-m;|>#D@!(+;u1{K~D(KODmK8-y% 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�Wcp_ukkSLo5BT#t% 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%0Av%Yab*glU0swbJWjr?DKH(2S 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ΝWZ+pVGyM=wgY#Wa^gxBHI84ToiGFD)xL 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

+){(%cs|_V+Z3|1oRaw2-n&UXxfm$5;! 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 p*5nVF=H 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≦(GU2@z{{NJqi#jR0iWFb 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 S1OkE${PY4B^q<==PyY|$6RXMq diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3-sources.jar deleted file mode 100644 index eea4022e80477e0867f5a6505cc3ecf0f8d25150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11326 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 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java index 267a531978f33..8ee0c7392960f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java @@ -1,3 +1,11 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ package org.openhab.binding.knx.internal.channel; import org.eclipse.jdt.annotation.Nullable; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 505df239b4afb..c5ea0569ae4e8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017, openHAB.org and others. + * Copyright (c) 2010-2017 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -608,7 +608,7 @@ public Type toType(Datapoint datapoint, byte[] data) { String value = translator.getValue(); String id = translator.getType().getID(); - logger.trace("toType datapoint DPT = " + datapoint.getDPT()); + logger.trace("toType datapoint DPT = {}", datapoint.getDPT()); int mainNumber = getMainNumber(id); if (mainNumber == -1) { From 24676855e9e9f9e4593d734ab7e508ed4177253b Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 13:17:07 +0100 Subject: [PATCH 17/52] added karaf feature Signed-off-by: Simon Kaufmann --- features/openhab-addons/src/main/feature/feature.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/features/openhab-addons/src/main/feature/feature.xml b/features/openhab-addons/src/main/feature/feature.xml index a25a83f753002..2559da1e205c5 100644 --- a/features/openhab-addons/src/main/feature/feature.xml +++ b/features/openhab-addons/src/main/feature/feature.xml @@ -182,6 +182,11 @@ mvn:org.openhab.binding/org.openhab.binding.keba/${project.version} + + openhab-runtime-base + mvn:org.openhab.binding/org.openhab.binding.knx/${project.version} + + openhab-runtime-base mvn:org.openhab.binding/org.openhab.binding.kodi/${project.version} From df55b6dab5405d2415354b8198efb1b259e4f935 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 8 Jan 2018 13:30:04 +0100 Subject: [PATCH 18/52] don't export calimero packages for now Signed-off-by: Simon Kaufmann --- .../META-INF/MANIFEST.MF | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index f21a250f06c40..2716a493c7b7a 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -27,30 +27,14 @@ Import-Package: com.google.common.collect, org.eclipse.smarthome.core.thing.type, org.eclipse.smarthome.core.thing.util, org.eclipse.smarthome.core.types, + org.openhab.binding.knx, + org.openhab.binding.knx.handler, org.osgi.framework, org.osgi.service.cm, org.slf4j Service-Component: OSGI-INF/*.xml Export-Package: org.openhab.binding.knx, - org.openhab.binding.knx.handler, - tuwien.auto.calimero, - tuwien.auto.calimero.buffer, - tuwien.auto.calimero.buffer.cache, - tuwien.auto.calimero.cemi, - tuwien.auto.calimero.datapoint, - tuwien.auto.calimero.device, - tuwien.auto.calimero.dptxlator, - tuwien.auto.calimero.exception, - tuwien.auto.calimero.knxnetip, - tuwien.auto.calimero.knxnetip.servicetype, - tuwien.auto.calimero.knxnetip.util, - tuwien.auto.calimero.link, - tuwien.auto.calimero.link.medium, - tuwien.auto.calimero.log, - tuwien.auto.calimero.mgmt, - tuwien.auto.calimero.process, - tuwien.auto.calimero.xml, - tuwien.auto.calimero.xml.def + org.openhab.binding.knx.handler Bundle-ClassPath: lib/calimero-rxtx-2.3.jar, lib/calimero-core-2.3.jar, lib/calimero-device-2.3.jar, From f601393f73aa572b704a8a835ce147856f9d654b Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Fri, 26 Jan 2018 18:00:56 +0100 Subject: [PATCH 19/52] incorporated review feedback - workaround for calimero's thread leakage - improved connection handling - refined "API" to improve the starting point for extension Signed-off-by: Simon Kaufmann --- .../ESH-INF/thing/device.xml | 16 +- .../META-INF/MANIFEST.MF | 7 +- .../binding/org.openhab.binding.knx/README.md | 6 +- .../binding/knx/client/DeviceInfoClient.java | 36 ++++ .../binding/knx/client/InboundSpec.java | 27 +++ .../openhab/binding/knx/client/KNXClient.java | 47 ++++ .../binding/knx/client/OutboundSpec.java | 33 +++ .../StatusUpdateCallback.java | 2 +- .../knx/handler/AbstractKNXThingHandler.java | 204 ++++++++++++++++++ .../handler/KNXBridgeBaseThingHandler.java | 9 +- .../knx/internal/channel/KNXChannelType.java | 66 +++--- .../{ListenSpec.java => ListenSpecImpl.java} | 7 +- ...ReadSpec.java => ReadRequestSpecImpl.java} | 9 +- ...nseSpec.java => ReadResponseSpecImpl.java} | 14 +- .../knx/internal/channel/TypeDimmer.java | 40 +--- .../internal/channel/TypeRollershutter.java | 40 +--- .../{CommandSpec.java => WriteSpecImpl.java} | 13 +- ...{KNXClient.java => AbstractKNXClient.java} | 136 +++++++----- .../internal/client/BusMessageListener.java | 6 +- .../client/CustomKNXNetworkLinkIP.java | 30 +++ ...oClient.java => DeviceInfoClientImpl.java} | 7 +- .../knx/internal/client/DeviceInspector.java | 15 +- .../binding/knx/internal/client/IPClient.java | 60 +++++- .../knx/internal/client/NoOpClient.java | 73 +++++++ .../knx/internal/client/SerialClient.java | 6 +- .../internal/factory/KNXHandlerFactory.java | 6 +- .../handler/DeviceThingHandler.java | 201 +++-------------- .../handler/IPBridgeThingHandler.java | 18 +- .../knx/internal/handler/LoadState.java | 44 ---- .../handler/SerialBridgeThingHandler.java | 7 +- 30 files changed, 747 insertions(+), 438 deletions(-) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{handler => client}/StatusUpdateCallback.java (96%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/{ListenSpec.java => ListenSpecImpl.java} (79%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/{ReadSpec.java => ReadRequestSpecImpl.java} (83%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/{ResponseSpec.java => ReadResponseSpecImpl.java} (68%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/{CommandSpec.java => WriteSpecImpl.java} (76%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/{KNXClient.java => AbstractKNXClient.java} (84%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/{DeviceInfoClient.java => DeviceInfoClientImpl.java} (95%) create mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => internal}/handler/DeviceThingHandler.java (62%) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => internal}/handler/IPBridgeThingHandler.java (86%) delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/{ => internal}/handler/SerialBridgeThingHandler.java (89%) diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml index 3e05a829fcc7f..d5be0e09f25b2 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml @@ -44,8 +44,8 @@ Switch - - A channel to control a simple DPT 1.001 switch that reports back its status + + A channel to control switch that reports back its status @@ -58,7 +58,7 @@ Dimmer - + A channel to control a dimmer @@ -72,7 +72,7 @@ Rollershutter - + A channel to control a rollershutter @@ -86,7 +86,7 @@ Contact - + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items @@ -99,7 +99,7 @@ - Number + Number Control A channel to manage a generic Group Addresses with a DPT compatible with Number Items @@ -113,7 +113,7 @@ - String + String Control A channel to manage a generic Group Addresses with a DPT compatible with String Items @@ -127,7 +127,7 @@ - DateTime + DateTime Control A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 2716a493c7b7a..d676c9a4029c0 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -5,11 +5,7 @@ Bundle-SymbolicName: org.openhab.binding.knx;singleton:=true Bundle-Vendor: openHAB Bundle-Version: 2.3.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Import-Package: com.google.common.collect, - gnu.io;resolution:=optional, - org.apache.commons.collections, - org.apache.commons.io, - org.apache.commons.lang, +Import-Package: gnu.io;resolution:=optional, org.eclipse.jdt.annotation;resolution:=optional, org.eclipse.smarthome.config.core, org.eclipse.smarthome.config.discovery, @@ -34,6 +30,7 @@ Import-Package: com.google.common.collect, org.slf4j Service-Component: OSGI-INF/*.xml Export-Package: org.openhab.binding.knx, + org.openhab.binding.knx.client, org.openhab.binding.knx.handler Bundle-ClassPath: lib/calimero-rxtx-2.3.jar, lib/calimero-core-2.3.jar, diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 728106515f048..ebb13f27f47c4 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -51,7 +51,7 @@ The *serial* bridge accepts the following configuration parameters: ### *device* Things -*basic* Things are wrappers around an arbitrary group addresses on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actor is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or the entire bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actor in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. +*basic* Things are wrappers around an arbitrary group addresses on the KNX bus. They have no specific function in the KNX binding, except that if the *address* is defined the binding will actively poll the Individual Address on the KNX bus to detect that the KNX actuator is reachable. Under normal real world circumstances, either all devices on a bus are reachable, or the entire bus is down. When *fetch* is set to true, the binding will read-out the memory of the KNX actuator in order to detect configuration data and so forth. This is however an experimental feature very prone to the actual on the KNX bus. | Name | Required | Description | Default value | |--------------|----------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| @@ -64,7 +64,7 @@ Different kinds of channels are defined and can be used to group together Group #### Standard Channels -Standard channels are used most of the time. They are used in the common case where the physical state is owned by a decive within the KNX bus, e.g. by a switch actor who "knows" whether the light is turned on or of or by a temperature sensor which reports the room temperature regularly. +Standard channels are used most of the time. They are used in the common case where the physical state is owned by a decive within the KNX bus, e.g. by a switch actuator who "knows" whether the light is turned on or of or by a temperature sensor which reports the room temperature regularly. ##### Switch @@ -152,7 +152,7 @@ Bridge knx:ip:bridge [ autoReconnectPeriod=1, localSourceAddr="0.0.0" ] { - Thing device magicActor [ + Thing device magicActuator [ address="1.2.3", fetch=true, pingInterval=300, diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java new file mode 100644 index 0000000000000..db240636cce7a --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.client; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +import tuwien.auto.calimero.IndividualAddress; + +/** + * Client to retrieve further information about KNX devices. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +@NonNullByDefault +public interface DeviceInfoClient { + + byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, + long timeout); + + byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, boolean authenticate, + long timeout); + + byte @Nullable [] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, + final int propertyId, final int start, final int elements, boolean authenticate, long timeout); + + public boolean isConnected(); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java new file mode 100644 index 0000000000000..3fca969c52da1 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.client; + +import java.util.List; + +import tuwien.auto.calimero.GroupAddress; + +/** + * Describes the relevant parameters for reading from/listening to the KNX bus. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +public interface InboundSpec { + + String getDPT(); + + List getGroupAddresses(); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java new file mode 100644 index 0000000000000..d8de3bb4bcadf --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.client; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.State; +import org.openhab.binding.knx.handler.GroupAddressListener; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.exception.KNXException; + +/** + * Client for communicating with the KNX bus. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +@NonNullByDefault +public interface KNXClient { + + boolean isConnected(); + + boolean isReachable(@Nullable IndividualAddress address) throws KNXException; + + DeviceInfoClient getDeviceInfoClient(); + + void restartNetworkDevice(@Nullable IndividualAddress address); + + boolean registerGroupAddressListener(GroupAddressListener listener); + + boolean unregisterGroupAddressListener(GroupAddressListener listener); + + void readDatapoint(Datapoint datapoint); + + void writeToKNX(OutboundSpec commandSpec) throws KNXException; + + void respondToKNX(OutboundSpec responseSpec, State state) throws KNXException; + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java new file mode 100644 index 0000000000000..3e152bf61cf81 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.client; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.Type; + +import tuwien.auto.calimero.GroupAddress; + +/** + * Describes the relevant parameters for writing to the KNX bus. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +@NonNullByDefault +public interface OutboundSpec { + + String getDPT(); + + @Nullable + GroupAddress getGroupAddress(); + + Type getType(); + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java similarity index 96% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java index 86937ea976456..39d7e2221d7a3 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/StatusUpdateCallback.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.handler; +package org.openhab.binding.knx.client; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.smarthome.core.thing.ThingStatus; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java new file mode 100644 index 0000000000000..5e421f0c6126b --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -0,0 +1,204 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.handler; + +import java.util.Map; +import java.util.Random; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.thing.Bridge; +import org.eclipse.smarthome.core.thing.Thing; +import org.eclipse.smarthome.core.thing.ThingStatus; +import org.eclipse.smarthome.core.thing.ThingStatusDetail; +import org.eclipse.smarthome.core.thing.ThingStatusInfo; +import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; +import org.openhab.binding.knx.client.KNXClient; +import org.openhab.binding.knx.internal.client.DeviceInspector; +import org.openhab.binding.knx.internal.client.DeviceInspector.Result; +import org.openhab.binding.knx.internal.config.DeviceConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.exception.KNXFormatException; + +/** + * Base class for KNX thing handlers. + * + * @author Simon Kaufmann - initial contribution and API + * + */ +@NonNullByDefault +public abstract class AbstractKNXThingHandler extends BaseThingHandler implements GroupAddressListener { + + private final Logger logger = LoggerFactory.getLogger(AbstractKNXThingHandler.class); + + private @Nullable IndividualAddress address; + private @Nullable Future descriptionJob; + private boolean filledDescription = false; + private final Random random = new Random(); + + private @Nullable ScheduledFuture pollingJob; + + public AbstractKNXThingHandler(Thing thing) { + super(thing); + } + + protected final ScheduledExecutorService getScheduler() { + return getBridgeHandler().getScheduler(); + } + + protected final KNXBridgeBaseThingHandler getBridgeHandler() { + Bridge bridge = getBridge(); + if (bridge != null) { + KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) bridge.getHandler(); + if (handler != null) { + return handler; + } + } + throw new IllegalStateException("The bridge must not be null and must be initialized"); + } + + protected final KNXClient getClient() { + return getBridgeHandler().getClient(); + } + + protected final boolean describeDevice(@Nullable IndividualAddress address) { + if (address == null) { + return false; + } + DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), address); + Result result = inspector.readDeviceInfo(); + if (result != null) { + Map properties = editProperties(); + properties.putAll(result.getProperties()); + updateProperties(properties); + return true; + } + return false; + } + + protected final String asduToHex(byte[] asdu) { + final char[] hexCode = "0123456789ABCDEF".toCharArray(); + StringBuilder sb = new StringBuilder(2 + asdu.length * 2); + sb.append("0x"); + for (byte b : asdu) { + sb.append(hexCode[(b >> 4) & 0xF]); + sb.append(hexCode[(b & 0xF)]); + } + return sb.toString(); + } + + protected final void restart() { + if (address != null) { + getClient().restartNetworkDevice(address); + } + } + + @Override + public void bridgeStatusChanged(@NonNull ThingStatusInfo bridgeStatusInfo) { + if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE) { + attachToClient(); + } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { + detachFromClient(); + } + } + + @Override + public void initialize() { + attachToClient(); + } + + @Override + public void dispose() { + detachFromClient(); + } + + protected abstract void scheduleReadJobs(); + + protected abstract void cancelReadFutures(); + + private void pollDeviceStatus() { + try { + if (address != null && getClient().isConnected()) { + logger.debug("Polling individual address '{}'", address); + boolean isReachable = getClient().isReachable(address); + if (isReachable) { + updateStatus(ThingStatus.ONLINE); + DeviceConfig config = getConfigAs(DeviceConfig.class); + if (!filledDescription && config.getFetch()) { + Future descriptionJob = this.descriptionJob; + if (descriptionJob == null || descriptionJob.isCancelled()) { + this.descriptionJob = getScheduler().submit(() -> { + filledDescription = describeDevice(address); + }); + } + } + } else { + updateStatus(ThingStatus.OFFLINE); + } + } + } catch (KNXException e) { + logger.debug("An error occurred while testing the reachability of a thing '{}'", getThing().getUID(), e); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); + } + } + + protected void attachToClient() { + if (!getClient().isConnected()) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + return; + } + DeviceConfig config = getConfigAs(DeviceConfig.class); + try { + if (config.getAddress() != null && !config.getAddress().isEmpty()) { + address = new IndividualAddress(config.getAddress()); + + long pingInterval = config.getPingInterval().longValue(); + long initialPingDelay = Math.round(pingInterval * random.nextFloat()); + + ScheduledFuture pollingJob = this.pollingJob; + if ((pollingJob == null || pollingJob.isCancelled())) { + logger.debug("'{}' will be polled every {}s", getThing().getUID(), pingInterval); + this.pollingJob = getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialPingDelay, + pingInterval, TimeUnit.SECONDS); + } + } else { + updateStatus(ThingStatus.ONLINE); + } + } catch (KNXFormatException e) { + logger.debug("An exception occurred while setting the individual address '{}'", config.getAddress(), e); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); + } + getClient().registerGroupAddressListener(this); + scheduleReadJobs(); + } + + protected void detachFromClient() { + if (pollingJob != null) { + pollingJob.cancel(true); + pollingJob = null; + } + if (descriptionJob != null) { + descriptionJob.cancel(true); + descriptionJob = null; + } + cancelReadFutures(); + getClient().unregisterGroupAddressListener(this); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index b1e9a15999649..67dfba311aaf8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -20,10 +20,10 @@ import org.eclipse.smarthome.core.thing.binding.BaseBridgeHandler; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.State; -import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.client.KNXClient; +import org.openhab.binding.knx.client.StatusUpdateCallback; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.mgmt.Destination; /** @@ -37,11 +37,6 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implem protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); - @FunctionalInterface - private interface ReadFunction { - R apply(T t) throws KNXException, InterruptedException; - } - public KNXBridgeBaseThingHandler(Bridge bridge) { super(bridge); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index ec0902ad08ee1..590907db0649f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -24,6 +24,11 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.KNXTypeMapper; +import org.openhab.binding.knx.client.InboundSpec; +import org.openhab.binding.knx.client.OutboundSpec; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -43,6 +48,7 @@ public abstract class KNXChannelType { private static final Pattern PATTERN_LISTEN = Pattern .compile("\\+((?\\<)?(?[0-9]{1,3}/[0-9]{1,3}/[0-9]{1,3}))"); + private final Logger logger = LoggerFactory.getLogger(KNXChannelType.class); private final Set channelTypeIDs; KNXChannelType(String... channelTypeIDs) { @@ -54,7 +60,7 @@ final Set getChannelIDs() { } @Nullable - protected ChannelConfiguration parse(@Nullable String fancy) { + protected final ChannelConfiguration parse(@Nullable String fancy) { if (fancy == null) { return null; } @@ -81,29 +87,29 @@ protected ChannelConfiguration parse(@Nullable String fancy) { protected abstract Set getAllGAKeys(); - public Set getListenAddresses(Configuration channelConfiguration) { + public final Set getListenAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); if (conf != null) { - ret.addAll(conf.getListenGAs().stream().map(KNXChannelType::toGroupAddress).collect(toSet())); + ret.addAll(conf.getListenGAs().stream().map(this::toGroupAddress).collect(toSet())); } } return ret; } - public Set getReadAddresses(Configuration channelConfiguration) { + public final Set getReadAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); if (conf != null) { - ret.addAll(conf.getReadGAs().stream().map(KNXChannelType::toGroupAddress).collect(toSet())); + ret.addAll(conf.getReadGAs().stream().map(this::toGroupAddress).collect(toSet())); } } return ret; } - public Set getWriteAddresses(Configuration channelConfiguration) { + public final Set getWriteAddresses(Configuration channelConfiguration) { Set ret = new HashSet<>(); for (String key : getAllGAKeys()) { ChannelConfiguration conf = parse((String) channelConfiguration.get(key)); @@ -117,11 +123,11 @@ public Set getWriteAddresses(Configuration channelConfiguration) { return ret; } - private static @Nullable GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + private @Nullable GroupAddress toGroupAddress(GroupAddressConfiguration ga) { try { return new GroupAddress(ga.getGA()); } catch (KNXFormatException e) { - e.printStackTrace(); + logger.warn("Could not parse group address '{}'", ga.getGA()); } return null; } @@ -149,35 +155,45 @@ protected final Set asSet(String... values) { return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(values))); } - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { - if (getAllGAKeys().size() == 1) { - String key = getAllGAKeys().iterator().next(); - return new CommandSpec(parse((String) configuration.get(key)), getDefaultDPT(key), command); - } else { - throw new IllegalArgumentException( - "More than one GA can be configured - this type needs a custom implementation!"); + public final @Nullable OutboundSpec getCommandSpec(Configuration configuration, KNXTypeMapper typeHelper, + Type command) throws KNXFormatException { + for (String key : getAllGAKeys()) { + ChannelConfiguration config = parse((String) configuration.get(key)); + if (config != null) { + String dpt = config.getDPT(); + if (dpt == null) { + dpt = getDefaultDPT(key); + } + Class expectedTypeClass = typeHelper.toTypeClass(dpt); + if (expectedTypeClass != null) { + if (expectedTypeClass.isInstance(command)) { + return new WriteSpecImpl(config, dpt, command); + } + } + } } + return null; } - public final List getReadSpec(Configuration configuration) throws KNXFormatException { + public final List getReadSpec(Configuration configuration) throws KNXFormatException { return getAllGAKeys().stream() - .map(key -> new ReadSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) - .filter(spec -> !spec.getReadAddresses().isEmpty()).collect(toList()); + .map(key -> new ReadRequestSpecImpl(parse((String) configuration.get(key)), getDefaultDPT(key))) + .filter(spec -> !spec.getGroupAddresses().isEmpty()).collect(toList()); } - public final @Nullable ListenSpec getListenSpec(Configuration configuration, GroupAddress groupAddress) { + public final @Nullable InboundSpec getListenSpec(Configuration configuration, GroupAddress groupAddress) { return getAllGAKeys().stream() - .map(key -> new ListenSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) - .filter(spec -> !spec.getListenAddresses().isEmpty()) - .filter(spec -> spec.getListenAddresses().contains(groupAddress)).findFirst().orElse(null); + .map(key -> new ListenSpecImpl(parse((String) configuration.get(key)), getDefaultDPT(key))) + .filter(spec -> !spec.getGroupAddresses().isEmpty()) + .filter(spec -> spec.getGroupAddresses().contains(groupAddress)).findFirst().orElse(null); } protected abstract String getDefaultDPT(String gaConfigKey); - public @Nullable ResponseSpec getResponseSpec(Configuration configuration, GroupAddress groupAddress) - throws KNXFormatException { + public final @Nullable OutboundSpec getResponseSpec(Configuration configuration, GroupAddress groupAddress, + Type type) throws KNXFormatException { return getAllGAKeys().stream() - .map(key -> new ResponseSpec(parse((String) configuration.get(key)), getDefaultDPT(key))) + .map(key -> new ReadResponseSpecImpl(parse((String) configuration.get(key)), getDefaultDPT(key), type)) .filter(spec -> groupAddress.equals(spec.getGroupAddress())).findFirst().orElse(null); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java similarity index 79% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java index 84ea214ed1da7..7fc96e1dc23b6 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java @@ -14,6 +14,7 @@ import java.util.List; import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.client.InboundSpec; import tuwien.auto.calimero.GroupAddress; @@ -23,11 +24,11 @@ * @author Simon Kaufmann - initial contribution and API. * */ -public class ListenSpec extends AbstractSpec { +public class ListenSpecImpl extends AbstractSpec implements InboundSpec { private final List listenAddresses; - public ListenSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + public ListenSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { super(channelConfiguration, defaultDPT); if (channelConfiguration != null) { this.listenAddresses = channelConfiguration.getListenGAs().stream().map(this::toGroupAddress) @@ -37,7 +38,7 @@ public ListenSpec(@Nullable ChannelConfiguration channelConfiguration, String de } } - public List getListenAddresses() { + public List getGroupAddresses() { return listenAddresses; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java similarity index 83% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java index 6bdd31c05dcc5..ea2d3b2960f1a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java @@ -14,6 +14,7 @@ import java.util.List; import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.client.InboundSpec; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -24,12 +25,12 @@ * @author Simon Kaufmann - initial contribution and API. * */ -public class ReadSpec { +public class ReadRequestSpecImpl implements InboundSpec { private final String dpt; private final List readAddresses; - public ReadSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + public ReadRequestSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { if (channelConfiguration != null) { this.dpt = channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT; this.readAddresses = channelConfiguration.getReadGAs().stream().map(this::toGroupAddress).collect(toList()); @@ -39,11 +40,13 @@ public ReadSpec(@Nullable ChannelConfiguration channelConfiguration, String defa } } + @Override public String getDPT() { return dpt; } - public List getReadAddresses() { + @Override + public List getGroupAddresses() { return readAddresses; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java similarity index 68% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java index 8ee0c7392960f..b42d258c62a0b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ResponseSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java @@ -9,6 +9,8 @@ package org.openhab.binding.knx.internal.channel; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.client.OutboundSpec; import tuwien.auto.calimero.GroupAddress; @@ -18,21 +20,29 @@ * @author Simon Kaufmann - initial contribution and API. * */ -public class ResponseSpec extends AbstractSpec { +public class ReadResponseSpecImpl extends AbstractSpec implements OutboundSpec { private final @Nullable GroupAddress groupAddress; + private final Type type; - public ResponseSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + public ReadResponseSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT, Type state) { super(channelConfiguration, defaultDPT); if (channelConfiguration != null) { this.groupAddress = toGroupAddress(channelConfiguration.getMainGA()); } else { this.groupAddress = null; } + this.type = state; } + @Override public @Nullable GroupAddress getGroupAddress() { return groupAddress; } + @Override + public Type getType() { + return type; + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index 1e7044dd804ba..7ebb31c7729ac 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -16,21 +16,14 @@ import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.library.types.OnOffType; -import org.eclipse.smarthome.core.library.types.PercentType; -import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.dptxlator.DPTXlator3BitControlled; import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; -import tuwien.auto.calimero.exception.KNXFormatException; /** * dimmer channel type description - * + * * @author Simon Kaufmann - initial contribution and API. * */ @@ -41,37 +34,6 @@ class TypeDimmer extends KNXChannelType { super(CHANNEL_DIMMER, CHANNEL_DIMMER_CONTROL); } - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { - ChannelConfiguration confSwitch = parse((String) configuration.get(SWITCH_GA)); - ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); - - if (command instanceof OnOffType) { - if (confSwitch != null) { - return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), command); - } else if (confPosition != null) { - return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), - ((OnOffType) command).as(PercentType.class)); - } - } - - if (command instanceof PercentType) { - if (confPosition != null) { - return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); - } else if (confSwitch != null) { - return new CommandSpec(confSwitch, getDefaultDPT(SWITCH_GA), - ((PercentType) command).as(OnOffType.class)); - } - } - - if (command instanceof UpDownType) { - return new CommandSpec(parse((String) configuration.get(INCREASE_DECREASE_GA)), - getDefaultDPT(INCREASE_DECREASE_GA), command); - } - - return null; - } - @Override protected Set getAllGAKeys() { return Stream.of(SWITCH_GA, POSITION_GA, INCREASE_DECREASE_GA).collect(toSet()); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index c77031cf7b0b6..ddd46d5c48398 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -16,20 +16,13 @@ import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.config.core.Configuration; -import org.eclipse.smarthome.core.library.types.PercentType; -import org.eclipse.smarthome.core.library.types.StopMoveType; -import org.eclipse.smarthome.core.library.types.UpDownType; -import org.eclipse.smarthome.core.types.Type; import tuwien.auto.calimero.dptxlator.DPTXlator8BitUnsigned; import tuwien.auto.calimero.dptxlator.DPTXlatorBoolean; -import tuwien.auto.calimero.exception.KNXFormatException; /** * rollershutter channel type description - * + * * @author Simon Kaufmann - initial contribution and API. * */ @@ -54,37 +47,6 @@ protected String getDefaultDPT(String gaConfigKey) { throw new IllegalArgumentException("GA configuration '" + gaConfigKey + "' is not supported"); } - @Override - public @Nullable CommandSpec getCommandSpec(Configuration configuration, Type command) throws KNXFormatException { - ChannelConfiguration confUpDown = parse((String) configuration.get(UP_DOWN_GA)); - ChannelConfiguration confPosition = parse((String) configuration.get(POSITION_GA)); - - if (command instanceof UpDownType) { - if (confUpDown != null) { - return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), command); - } else if (confPosition != null) { - return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), - ((UpDownType) command).as(PercentType.class)); - } - } - - if (command instanceof PercentType) { - if (confPosition != null) { - return new CommandSpec(confPosition, getDefaultDPT(POSITION_GA), command); - } else if (confUpDown != null) { - return new CommandSpec(confUpDown, getDefaultDPT(UP_DOWN_GA), - ((PercentType) command).as(UpDownType.class)); - } - } - - if (command instanceof StopMoveType) { - return new CommandSpec(parse((String) configuration.get(STOP_MOVE_GA)), getDefaultDPT(STOP_MOVE_GA), - command); - } - - return null; - } - @Override protected Set getAllGAKeys() { return Stream.of(UP_DOWN_GA, STOP_MOVE_GA, POSITION_GA).collect(toSet()); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java similarity index 76% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java index a2b673f1a6da9..4db1898c03c89 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/CommandSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java @@ -10,6 +10,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.types.Type; +import org.openhab.binding.knx.client.OutboundSpec; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -20,12 +21,12 @@ * @author Simon Kaufmann - initial contribution and API. * */ -public class CommandSpec extends AbstractSpec { +public class WriteSpecImpl extends AbstractSpec implements OutboundSpec { - private final Type command; + private final Type type; private final @Nullable GroupAddress groupAddress; - public CommandSpec(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT, Type command) + public WriteSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT, Type type) throws KNXFormatException { super(channelConfiguration, defaultDPT); if (channelConfiguration != null) { @@ -34,11 +35,11 @@ public CommandSpec(@Nullable ChannelConfiguration channelConfiguration, String d } else { this.groupAddress = null; } - this.command = command; + this.type = type; } - public Type getCommand() { - return command; + public Type getType() { + return type; } public @Nullable GroupAddress getGroupAddress() { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java similarity index 84% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index f02f284ae2873..c6e70638850ca 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -14,6 +14,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -23,10 +24,11 @@ import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.KNXTypeMapper; +import org.openhab.binding.knx.client.DeviceInfoClient; +import org.openhab.binding.knx.client.KNXClient; +import org.openhab.binding.knx.client.OutboundSpec; +import org.openhab.binding.knx.client.StatusUpdateCallback; import org.openhab.binding.knx.handler.GroupAddressListener; -import org.openhab.binding.knx.handler.StatusUpdateCallback; -import org.openhab.binding.knx.internal.channel.CommandSpec; -import org.openhab.binding.knx.internal.channel.ResponseSpec; import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; @@ -63,11 +65,11 @@ * */ @NonNullByDefault -public abstract class KNXClient implements NetworkLinkListener { +public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClient { private static final int MAX_SEND_ATTEMPTS = 2; - private final Logger logger = LoggerFactory.getLogger(KNXClient.class); + private final Logger logger = LoggerFactory.getLogger(AbstractKNXClient.class); private final LogAdapter logAdapter = new LogAdapter(); private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); @@ -107,26 +109,26 @@ public void detached(DetachEvent e) { @Override public void groupWrite(ProcessEvent e) { processEvent("Group Write", e, (listener, source, destination, asdu) -> { - listener.onGroupWrite(KNXClient.this, source, destination, asdu); + listener.onGroupWrite(AbstractKNXClient.this, source, destination, asdu); }); } @Override public void groupReadRequest(ProcessEvent e) { processEvent("Group Read Request", e, (listener, source, destination, asdu) -> { - listener.onGroupRead(KNXClient.this, source, destination, asdu); + listener.onGroupRead(AbstractKNXClient.this, source, destination, asdu); }); } @Override public void groupReadResponse(ProcessEvent e) { processEvent("Group Read Response", e, (listener, source, destination, asdu) -> { - listener.onGroupReadResponse(KNXClient.this, source, destination, asdu); + listener.onGroupReadResponse(AbstractKNXClient.this, source, destination, asdu); }); } }; - public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, + public AbstractKNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout, int readingPause, int readRetriesLimit, ScheduledExecutorService knxScheduler, StatusUpdateCallback statusUpdateCallback) { this.autoReconnectPeriod = autoReconnectPeriod; this.thingUID = thingUID; @@ -139,7 +141,26 @@ public KNXClient(int autoReconnectPeriod, ThingUID thingUID, int responseTimeout public void initialize() { registerLogAdapter(); - connectJob = knxScheduler.scheduleWithFixedDelay(() -> connect(), 0, autoReconnectPeriod, TimeUnit.SECONDS); + if (!scheduleReconnectJob()) { + connect(); + } + } + + private boolean scheduleReconnectJob() { + if (autoReconnectPeriod > 0) { + connectJob = knxScheduler.scheduleWithFixedDelay(() -> connect(), 0, autoReconnectPeriod, TimeUnit.SECONDS); + return true; + } else { + return false; + } + } + + private void cancelReconnectJob(boolean kill) { + ScheduledFuture currentReconnectJob = connectJob; + if (currentReconnectJob != null) { + currentReconnectJob.cancel(kill); + connectJob = null; + } } private void registerLogAdapter() { @@ -152,12 +173,19 @@ private void unregisterLogAdapter() { protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; + private synchronized boolean connectIfNotAutomatic() { + if (!isConnected()) { + return connectJob != null ? false : connect(); + } + return true; + } + private synchronized boolean connect() { if (isConnected()) { return true; } try { - closeConnection(null); + releaseConnection(); logger.debug("Bridge {} is connecting to the KNX bus", thingUID); @@ -170,7 +198,7 @@ private synchronized boolean connect() { managementClient.setResponseTimeout(responseTimeout); this.managementClient = managementClient; - deviceInfoClient = new DeviceInfoClient(managementClient); + deviceInfoClient = new DeviceInfoClientImpl(managementClient); ProcessCommunicator processCommunicator = new ProcessCommunicatorImpl(link); processCommunicator.setResponseTimeout(responseTimeout); @@ -186,42 +214,17 @@ private synchronized boolean connect() { TimeUnit.MILLISECONDS); statusUpdateCallback.updateStatus(ThingStatus.ONLINE); + cancelReconnectJob(false); return true; } catch (KNXException | InterruptedException e) { logger.debug("Error connecting to the bus: {}", e.getMessage(), e); - closeConnection(e); + disconnect(e); return false; } } - private void closeConnection(@Nullable Exception e) { - logger.debug("Bridge {} is disconnecting from the KNX bus", thingUID); - readDatapoints.clear(); - if (busJob != null) { - busJob.cancel(true); - busJob = null; - } - if (managementProcedures != null) { - managementProcedures.detach(); - managementProcedures = null; - } - deviceInfoClient = null; - if (managementClient != null) { - managementClient.detach(); - managementClient = null; - } - if (processCommunicator != null) { - processCommunicator.removeProcessListener(processListener); - } - if (processCommunicator != null) { - processCommunicator.detach(); - processCommunicator = null; - } - if (link != null) { - link.close(); - link = null; - } - + private void disconnect(@Nullable Exception e) { + releaseConnection(); if (e != null) { statusUpdateCallback.updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); @@ -230,6 +233,27 @@ private void closeConnection(@Nullable Exception e) { } } + private void releaseConnection() { + logger.debug("Bridge {} is disconnecting from the KNX bus", thingUID); + readDatapoints.clear(); + busJob = nullify(busJob, j -> j.cancel(true)); + deviceInfoClient = null; + managementProcedures = nullify(managementProcedures, mp -> mp.detach()); + managementClient = nullify(managementClient, mc -> mc.detach()); + link = nullify(link, l -> l.close()); + processCommunicator = nullify(processCommunicator, pc -> { + pc.removeProcessListener(processListener); + pc.detach(); + }); + } + + private T nullify(T target, @Nullable Consumer lastWill) { + if (target != null && lastWill != null) { + lastWill.accept(target); + } + return null; + } + private void processEvent(String task, ProcessEvent event, ListenerNotification action) { GroupAddress destination = event.getDestination(); IndividualAddress source = event.getSourceAddr(); @@ -258,7 +282,7 @@ private String toDPTValue(Type type, String dpt) { } private void readNextQueuedDatapoint() { - if (!connect()) { + if (!connectIfNotAutomatic()) { return; } ProcessCommunicator processCommunicator = this.processCommunicator; @@ -288,11 +312,8 @@ private void readNextQueuedDatapoint() { } public void dispose() { - if (connectJob != null) { - connectJob.cancel(true); - connectJob = null; - } - closeConnection(null); + cancelReconnectJob(true); + disconnect(null); unregisterLogAdapter(); } @@ -307,7 +328,7 @@ public void linkClosed(@Nullable CloseEvent closeEvent) { closeEvent.getReason()); logger.debug("KNX link has been lost (reason: {} on object {})", closeEvent.getReason(), closeEvent.getSource().toString()); - connect(); + scheduleReconnectJob(); } } @@ -321,6 +342,7 @@ public void confirmation(@Nullable FrameEvent e) { // no-op } + @Override public final synchronized boolean isReachable(@Nullable IndividualAddress address) throws KNXException { ManagementProcedures managementProcedures = this.managementProcedures; if (managementProcedures == null || address == null) { @@ -334,6 +356,7 @@ public final synchronized boolean isReachable(@Nullable IndividualAddress addres return false; } + @Override public final synchronized void restartNetworkDevice(@Nullable IndividualAddress address) { ManagementClient managementClient = this.managementClient; if (address == null || managementClient == null) { @@ -352,6 +375,7 @@ public final synchronized void restartNetworkDevice(@Nullable IndividualAddress } } + @Override public void readDatapoint(Datapoint datapoint) { synchronized (this) { RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, readRetriesLimit); @@ -361,18 +385,22 @@ public void readDatapoint(Datapoint datapoint) { } } + @Override public final boolean registerGroupAddressListener(GroupAddressListener listener) { return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); } + @Override public final boolean unregisterGroupAddressListener(GroupAddressListener listener) { return groupAddressListeners.remove(listener); } + @Override public boolean isConnected() { return link != null && link.isOpen(); } + @Override public DeviceInfoClient getDeviceInfoClient() { if (deviceInfoClient != null) { return deviceInfoClient; @@ -381,7 +409,8 @@ public DeviceInfoClient getDeviceInfoClient() { } } - public void writeToKNX(CommandSpec commandSpec) throws KNXException { + @Override + public void writeToKNX(OutboundSpec commandSpec) throws KNXException { ProcessCommunicator processCommunicator = this.processCommunicator; KNXNetworkLink link = this.link; if (processCommunicator == null || link == null) { @@ -392,11 +421,12 @@ public void writeToKNX(CommandSpec commandSpec) throws KNXException { } GroupAddress groupAddress = commandSpec.getGroupAddress(); if (groupAddress != null) { - sendToKNX(processCommunicator, link, groupAddress, commandSpec.getDPT(), commandSpec.getCommand()); + sendToKNX(processCommunicator, link, groupAddress, commandSpec.getDPT(), commandSpec.getType()); } } - public void respondToKNX(ResponseSpec responseSpec, State state) throws KNXException { + @Override + public void respondToKNX(OutboundSpec responseSpec, State state) throws KNXException { ProcessCommunicationResponder responseCommunicator = this.responseCommunicator; KNXNetworkLink link = this.link; if (responseCommunicator == null || link == null) { @@ -413,7 +443,7 @@ public void respondToKNX(ResponseSpec responseSpec, State state) throws KNXExcep private void sendToKNX(ProcessCommunicationBase communicator, KNXNetworkLink link, GroupAddress groupAddress, String dpt, Type type) throws KNXException { - if (!connect()) { + if (!connectIfNotAutomatic()) { return; } @@ -435,7 +465,7 @@ private void sendToKNX(ProcessCommunicationBase communicator, KNXNetworkLink lin } else { logger.warn("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", type, datapoint, e.getLocalizedMessage()); - closeConnection(e); + disconnect(e); throw e; } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java index 68f73bbdf8247..db1e27be56ca4 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java @@ -29,7 +29,7 @@ public interface BusMessageListener { * @param destination * @param asdu */ - public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); + public void onGroupWrite(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** * @@ -39,7 +39,7 @@ public interface BusMessageListener { * @param destination * @param asdu */ - public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); + public void onGroupRead(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** * @@ -49,6 +49,6 @@ public interface BusMessageListener { * @param destination * @param asdu */ - public void onGroupReadResponse(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); + public void onGroupReadResponse(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java new file mode 100644 index 0000000000000..83e2485246026 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java @@ -0,0 +1,30 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.client; + +import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.knxnetip.KNXnetIPConnection; +import tuwien.auto.calimero.link.KNXNetworkLinkIP; +import tuwien.auto.calimero.link.medium.KNXMediumSettings; + +/** + * Subclass of {@link KNXNetworkLinkIP} which exposes the protected constructor in order to work-around + * https://github.com/calimero-project/calimero-core/issues/57 + * + * @author Simon Kaufmann - initial contribution and API + * + */ +public class CustomKNXNetworkLinkIP extends KNXNetworkLinkIP { + + CustomKNXNetworkLinkIP(final int serviceMode, KNXnetIPConnection conn, KNXMediumSettings settings) + throws KNXException, InterruptedException { + super(serviceMode, conn, settings); + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java similarity index 95% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index 979a1dd01e81a..c054fc3d75a69 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -14,6 +14,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.client.DeviceInfoClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,12 +30,12 @@ * */ @NonNullByDefault -public class DeviceInfoClient { +public class DeviceInfoClientImpl implements DeviceInfoClient { - private final Logger logger = LoggerFactory.getLogger(DeviceInfoClient.class); + private final Logger logger = LoggerFactory.getLogger(DeviceInfoClientImpl.class); private final ManagementClient managementClient; - DeviceInfoClient(ManagementClient managementClient) { + DeviceInfoClientImpl(ManagementClient managementClient) { this.managementClient = managementClient; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 9746b608cdc8c..59b62b9fea79e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -18,6 +18,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.client.DeviceInfoClient; import org.openhab.binding.knx.internal.handler.Firmware; import org.openhab.binding.knx.internal.handler.Manufacturer; import org.slf4j.Logger; @@ -111,7 +112,7 @@ private Set readDeviceMemory(IndividualAddress address) throws Int OPERATION_TIMEOUT); if (elements != null) { int numberOfElements = toUnsigned(elements); - logger.debug("The KNX Actor with address {} uses {} group addresses", address, numberOfElements - 1); + logger.debug("The KNX device with address {} uses {} group addresses", address, numberOfElements - 1); byte[] addressData = null; while (addressData == null) { @@ -120,7 +121,7 @@ private Set readDeviceMemory(IndividualAddress address) throws Int OPERATION_TIMEOUT); if (addressData != null) { IndividualAddress individualAddress = new IndividualAddress(addressData); - logger.debug("The KNX Actor with address {} its real reported individual address is {}", + logger.debug("The KNX device with address {} its real reported individual address is {}", address, individualAddress); } } @@ -139,11 +140,11 @@ private Set readDeviceMemory(IndividualAddress address) throws Int } for (GroupAddress anAddress : ret) { - logger.debug("The KNX Actor with address {} uses Group Address {}", address, anAddress); + logger.debug("The KNX device with address {} uses Group Address {}", address, anAddress); } } } else { - logger.warn("The KNX Actor with address {} does not expose a Group Address table", address); + logger.warn("The KNX device with address {} does not expose a Group Address table", address); } return ret; } @@ -151,7 +152,7 @@ private Set readDeviceMemory(IndividualAddress address) throws Int private Map readDeviceProperties(IndividualAddress address) throws InterruptedException { Map ret = new HashMap<>(); Thread.sleep(OPERATION_INTERVAL); - // check if there is a Device Object in the KNX Actor + // check if there is a Device Object in the KNX device byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, false, OPERATION_TIMEOUT); if ((elements == null ? 0 : toUnsigned(elements)) == 1) { @@ -176,7 +177,7 @@ private Map readDeviceProperties(IndividualAddress address) thro logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, ManufacturerID, hardwareType, firmwareRevision, serialNo); } else { - logger.warn("The KNX Actor with address {} does not expose a Device Object", address); + logger.warn("The KNX device with address {} does not expose a Device Object", address); } return ret; } @@ -194,7 +195,7 @@ private Map readDeviceDescription(IndividualAddress address) { Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), Firmware.getName(dd.getSubcode())); } else { - logger.warn("The KNX Actor with address {} does not expose a Device Descriptor", address); + logger.warn("The KNX device with address {} does not expose a Device Descriptor", address); } return ret; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java index d4bf71f73b917..08c40a5320eca 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -8,30 +8,39 @@ */ package org.openhab.binding.knx.internal.client; +import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; import java.util.concurrent.ScheduledExecutorService; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.thing.ThingUID; -import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.client.StatusUpdateCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tuwien.auto.calimero.IndividualAddress; import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.exception.KNXIllegalArgumentException; +import tuwien.auto.calimero.knxnetip.KNXnetIPConnection; +import tuwien.auto.calimero.knxnetip.KNXnetIPRouting; +import tuwien.auto.calimero.knxnetip.KNXnetIPTunnel; import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.KNXNetworkLinkIP; +import tuwien.auto.calimero.link.medium.KNXMediumSettings; import tuwien.auto.calimero.link.medium.TPSettings; /** - * IP specific {@link KNXClient} implementation. + * IP specific {@link AbstractKNXClient} implementation. * * @author Simon Kaufmann - initial contribution and API. * */ @NonNullByDefault -public class IPClient extends KNXClient { +public class IPClient extends AbstractKNXClient { private final Logger logger = LoggerFactory.getLogger(IPClient.class); @@ -64,11 +73,54 @@ public IPClient(int ipConnectionType, String ip, String localSource, int port, protected KNXNetworkLink establishConnection() throws KNXException, InterruptedException { logger.debug("Establishing connection to KNX bus on {}:{} in mode {}.", ip, port, connectionTypeToString()); TPSettings settings = new TPSettings(new IndividualAddress(localSource)); - return new KNXNetworkLinkIP(ipConnectionType, localEndPoint, new InetSocketAddress(ip, port), useNAT, settings); + return createKNXNetworkLinkIP(ipConnectionType, localEndPoint, new InetSocketAddress(ip, port), useNAT, + settings); } private String connectionTypeToString() { return ipConnectionType == KNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; } + private KNXNetworkLinkIP createKNXNetworkLinkIP(int serviceMode, @Nullable InetSocketAddress localEP, + @Nullable InetSocketAddress remoteEP, boolean useNAT, KNXMediumSettings settings) + throws KNXException, InterruptedException { + // creating the connection here as a workaround for + // https://github.com/calimero-project/calimero-core/issues/57 + KNXnetIPConnection conn = getConnection(serviceMode, localEP, remoteEP, useNAT); + return new CustomKNXNetworkLinkIP(serviceMode, conn, settings); + } + + private KNXnetIPConnection getConnection(int serviceMode, @Nullable InetSocketAddress localEP, + @Nullable InetSocketAddress remoteEP, boolean useNAT) throws KNXException, InterruptedException { + KNXnetIPConnection conn; + switch (serviceMode) { + case KNXNetworkLinkIP.TUNNELING: + InetSocketAddress local = localEP; + if (local == null) { + try { + local = new InetSocketAddress(InetAddress.getLocalHost(), 0); + } catch (final UnknownHostException e) { + throw new KNXException("no local host available"); + } + } + conn = new KNXnetIPTunnel(KNXnetIPTunnel.LINK_LAYER, local, remoteEP, useNAT); + break; + case KNXNetworkLinkIP.ROUTING: + NetworkInterface netIf = null; + if (localEP != null && !localEP.isUnresolved()) { + try { + netIf = NetworkInterface.getByInetAddress(localEP.getAddress()); + } catch (final SocketException e) { + throw new KNXException("error getting network interface: " + e.getMessage()); + } + } + final InetAddress mcast = remoteEP != null ? remoteEP.getAddress() : null; + conn = new KNXnetIPRouting(netIf, mcast); + break; + default: + throw new KNXIllegalArgumentException("unknown service mode"); + } + return conn; + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java new file mode 100644 index 0000000000000..adb60987d9620 --- /dev/null +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java @@ -0,0 +1,73 @@ +/** + * Copyright (c) 2010-2017 by the respective copyright holders. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.openhab.binding.knx.internal.client; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.types.State; +import org.openhab.binding.knx.client.DeviceInfoClient; +import org.openhab.binding.knx.client.KNXClient; +import org.openhab.binding.knx.client.OutboundSpec; +import org.openhab.binding.knx.handler.GroupAddressListener; + +import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.datapoint.Datapoint; +import tuwien.auto.calimero.exception.KNXException; + +/** + * + * @author Simon Kaufmann - initial contribution and API + * + */ + +public class NoOpClient implements KNXClient { + + @Override + public boolean isConnected() { + return false; + } + + @Override + public boolean isReachable(@Nullable IndividualAddress address) throws KNXException { + return false; + } + + @Override + public @NonNull DeviceInfoClient getDeviceInfoClient() { + throw new IllegalStateException("KNX client not properly configured"); + } + + @Override + public void restartNetworkDevice(@Nullable IndividualAddress address) { + throw new IllegalStateException("KNX client not properly configured"); + } + + @Override + public boolean registerGroupAddressListener(@NonNull GroupAddressListener listener) { + return false; + } + + @Override + public boolean unregisterGroupAddressListener(@NonNull GroupAddressListener listener) { + return false; + } + + @Override + public void readDatapoint(@NonNull Datapoint datapoint) { + } + + @Override + public void writeToKNX(@NonNull OutboundSpec commandSpec) throws KNXException { + } + + @Override + public void respondToKNX(@NonNull OutboundSpec responseSpec, @NonNull State state) throws KNXException { + } + +} diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java index 888945cc2153c..280a49601ef38 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -13,7 +13,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.smarthome.core.thing.ThingUID; -import org.openhab.binding.knx.handler.StatusUpdateCallback; +import org.openhab.binding.knx.client.StatusUpdateCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,12 +25,12 @@ import tuwien.auto.calimero.link.medium.TPSettings; /** - * Serial specific {@link KNXClient} implementation. + * Serial specific {@link AbstractKNXClient} implementation. * * @author Simon Kaufmann - initial contribution and API. * */ -public class SerialClient extends KNXClient { +public class SerialClient extends AbstractKNXClient { private final Logger logger = LoggerFactory.getLogger(SerialClient.class); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index 982a601a46aed..a5797b4505220 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -22,9 +22,9 @@ import org.eclipse.smarthome.core.thing.binding.BaseThingHandlerFactory; import org.eclipse.smarthome.core.thing.binding.ThingHandler; import org.eclipse.smarthome.core.thing.binding.ThingHandlerFactory; -import org.openhab.binding.knx.handler.DeviceThingHandler; -import org.openhab.binding.knx.handler.IPBridgeThingHandler; -import org.openhab.binding.knx.handler.SerialBridgeThingHandler; +import org.openhab.binding.knx.internal.handler.DeviceThingHandler; +import org.openhab.binding.knx.internal.handler.IPBridgeThingHandler; +import org.openhab.binding.knx.internal.handler.SerialBridgeThingHandler; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java similarity index 62% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index da62622910e29..f238bec54b3bb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -6,7 +6,7 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.handler; +package org.openhab.binding.knx.internal.handler; import static org.openhab.binding.knx.KNXBindingConstants.*; @@ -15,26 +15,17 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Random; import java.util.Set; -import java.util.concurrent.Future; -import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -import org.apache.commons.lang.StringUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.config.core.Configuration; import org.eclipse.smarthome.core.library.types.IncreaseDecreaseType; -import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.Channel; import org.eclipse.smarthome.core.thing.ChannelUID; import org.eclipse.smarthome.core.thing.Thing; -import org.eclipse.smarthome.core.thing.ThingStatus; -import org.eclipse.smarthome.core.thing.ThingStatusDetail; -import org.eclipse.smarthome.core.thing.ThingStatusInfo; -import org.eclipse.smarthome.core.thing.binding.BaseThingHandler; import org.eclipse.smarthome.core.thing.type.ChannelTypeUID; import org.eclipse.smarthome.core.types.Command; import org.eclipse.smarthome.core.types.RefreshType; @@ -43,15 +34,12 @@ import org.eclipse.smarthome.core.types.UnDefType; import org.openhab.binding.knx.KNXBindingConstants; import org.openhab.binding.knx.KNXTypeMapper; -import org.openhab.binding.knx.internal.channel.CommandSpec; +import org.openhab.binding.knx.client.InboundSpec; +import org.openhab.binding.knx.client.OutboundSpec; +import org.openhab.binding.knx.handler.AbstractKNXThingHandler; import org.openhab.binding.knx.internal.channel.KNXChannelType; import org.openhab.binding.knx.internal.channel.KNXChannelTypes; -import org.openhab.binding.knx.internal.channel.ListenSpec; -import org.openhab.binding.knx.internal.channel.ReadSpec; -import org.openhab.binding.knx.internal.channel.ResponseSpec; -import org.openhab.binding.knx.internal.client.DeviceInspector; -import org.openhab.binding.knx.internal.client.DeviceInspector.Result; -import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.client.AbstractKNXClient; import org.openhab.binding.knx.internal.config.DeviceConfig; import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; import org.slf4j.Logger; @@ -71,20 +59,13 @@ * @author Simon Kaufmann - Initial contribution and API */ @NonNullByDefault -public class DeviceThingHandler extends BaseThingHandler implements GroupAddressListener { +public class DeviceThingHandler extends AbstractKNXThingHandler { private final Logger logger = LoggerFactory.getLogger(DeviceThingHandler.class); - private final Random random = new Random(); private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); - private final Set groupAddresses = new HashSet<>(); - private boolean filledDescription = false; - private final Map> readFutures = new HashMap<>(); - private @Nullable ScheduledFuture pollingJob; - private @Nullable Future descriptionJob; - private @Nullable IndividualAddress address; private int readInterval; @@ -94,36 +75,10 @@ public DeviceThingHandler(Thing thing) { @Override public void initialize() { + super.initialize(); DeviceConfig config = getConfigAs(DeviceConfig.class); + readInterval = config.getReadInterval().intValue(); initializeGroupAddresses(); - try { - if (StringUtils.isNotBlank(config.getAddress())) { - address = new IndividualAddress(config.getAddress()); - - long pingInterval = config.getPingInterval().longValue(); - long initialPingDelay = Math.round(pingInterval * random.nextFloat()); - - ScheduledFuture pollingJob = this.pollingJob; - if ((pollingJob == null || pollingJob.isCancelled())) { - logger.debug("'{}' will be polled every {}s", getThing().getUID(), pingInterval); - this.pollingJob = getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialPingDelay, - pingInterval, TimeUnit.SECONDS); - } - - readInterval = config.getReadInterval().intValue(); - } else { - updateStatus(ThingStatus.ONLINE); - } - } catch (KNXFormatException e) { - logger.debug("An exception occurred while setting the individual address '{}'", config.getAddress(), e); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, e.getLocalizedMessage()); - } - getClient().registerGroupAddressListener(this); - scheduleReadJobs(); - } - - private ScheduledExecutorService getScheduler() { - return getBridgeHandler().getScheduler(); } private void initializeGroupAddresses() { @@ -134,40 +89,8 @@ private void initializeGroupAddresses() { }); } - private KNXChannelType getKNXChannelType(Channel channel) { - return KNXChannelTypes.getType(channel.getChannelTypeUID()); - } - - private KNXBridgeBaseThingHandler getBridgeHandler() { - Bridge bridge = getBridge(); - if (bridge != null) { - KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) bridge.getHandler(); - if (handler != null) { - return handler; - } - } - throw new IllegalStateException("The bridge must not be null and must be initialized"); - } - - private KNXClient getClient() { - return getBridgeHandler().getClient(); - } - @Override - public void dispose() { - if (pollingJob != null) { - pollingJob.cancel(true); - pollingJob = null; - } - if (descriptionJob != null) { - descriptionJob.cancel(true); - descriptionJob = null; - } - cancelReadFutures(); - getClient().unregisterGroupAddressListener(this); - } - - private void cancelReadFutures() { + protected void cancelReadFutures() { for (ScheduledFuture future : readFutures.values()) { if (future != null && !future.isDone()) { future.cancel(true); @@ -214,9 +137,9 @@ public void channelLinked(ChannelUID channelUID) { } } - private void scheduleReadJobs() { + @Override + protected void scheduleReadJobs() { cancelReadFutures(); - for (Channel channel : getThing().getChannels()) { if (isLinked(channel.getUID().getId()) && !isControl(channel.getUID())) { withKNXType(channel, (selector, configuration) -> { @@ -227,9 +150,9 @@ private void scheduleReadJobs() { } private void scheduleRead(KNXChannelType selector, Configuration configuration) throws KNXFormatException { - List readSpecs = selector.getReadSpec(configuration); - for (ReadSpec readSpec : readSpecs) { - for (GroupAddress groupAddress : readSpec.getReadAddresses()) { + List readSpecs = selector.getReadSpec(configuration); + for (InboundSpec readSpec : readSpecs) { + for (GroupAddress groupAddress : readSpec.getGroupAddresses()) { scheduleReadJob(groupAddress, readSpec.getDPT()); } } @@ -259,18 +182,6 @@ private void readDatapoint(GroupAddress groupAddress, String dpt) { } } - @Override - public void bridgeStatusChanged(ThingStatusInfo bridgeStatusInfo) { - super.bridgeStatusChanged(bridgeStatusInfo); - if (bridgeStatusInfo.getStatus() == ThingStatus.ONLINE) { - getClient().registerGroupAddressListener(this); - scheduleReadJobs(); - } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { - cancelReadFutures(); - getClient().unregisterGroupAddressListener(this); - } - } - @Override public boolean listensTo(GroupAddress destination) { return groupAddresses.contains(destination); @@ -293,14 +204,19 @@ public void handleCommand(ChannelUID channelUID, Command command) { break; default: withKNXType(channelUID, (selector, channelConfiguration) -> { - CommandSpec commandSpec = selector.getCommandSpec(channelConfiguration, command); + OutboundSpec commandSpec = selector.getCommandSpec(channelConfiguration, typeHelper, command); if (commandSpec != null) { getClient().writeToKNX(commandSpec); + } else { + logger.debug( + "None of the configured GAs on channel '{}' could handle the command '{}' of type '{}'", + channelUID, command, command.getClass().getSimpleName()); } }); break; } } + } private boolean isControl(ChannelUID channelUID) { @@ -317,14 +233,15 @@ private ChannelTypeUID getChannelTypeUID(ChannelUID channelUID) { } @Override - public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { + public void onGroupRead(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { logger.trace("Thing '{}' received a Group Read Request telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { if (isControl(channel.getUID())) { withKNXType(channel, (selector, configuration) -> { - ResponseSpec responseSpec = selector.getResponseSpec(configuration, destination); + OutboundSpec responseSpec = selector.getResponseSpec(configuration, destination, + RefreshType.REFRESH); if (responseSpec != null) { postCommand(channel.getUID().getId(), RefreshType.REFRESH); } @@ -334,19 +251,21 @@ public void onGroupRead(KNXClient client, IndividualAddress source, GroupAddress } @Override - public void onGroupReadResponse(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { + public void onGroupReadResponse(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, + byte[] asdu) { // Group Read Responses are treated the same as Group Write telegrams onGroupWrite(client, source, destination, asdu); } @Override - public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu) { + public void onGroupWrite(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, + byte[] asdu) { logger.debug("Thing '{}' received a Group Write telegram from '{}' for destination '{}'", getThing().getUID(), source, destination); for (Channel channel : getThing().getChannels()) { withKNXType(channel, (selector, configuration) -> { - ListenSpec listenSpec = selector.getListenSpec(configuration, destination); + InboundSpec listenSpec = selector.getListenSpec(configuration, destination); if (listenSpec != null) { logger.trace("Thing '{}' processes a Group Write telegram for destination '{}' for channel '{}'", getThing().getUID(), destination, channel.getUID()); @@ -358,7 +277,7 @@ public void onGroupWrite(KNXClient client, IndividualAddress source, GroupAddres private final Map> channelFutures = new HashMap<>(); - private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSpec listenSpec, + private void processDataReceived(GroupAddress destination, byte[] asdu, InboundSpec listenSpec, ChannelUID channelUID) { if (!isDPTSupported(listenSpec.getDPT())) { logger.warn("DPT '{}' is not supported by the KNX binding.", listenSpec.getDPT()); @@ -405,66 +324,12 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, ListenSp } } - private String asduToHex(byte[] asdu) { - final char[] hexCode = "0123456789ABCDEF".toCharArray(); - StringBuilder sb = new StringBuilder(2 + asdu.length * 2); - sb.append("0x"); - for (byte b : asdu) { - sb.append(hexCode[(b >> 4) & 0xF]); - sb.append(hexCode[(b & 0xF)]); - } - return sb.toString(); - } - - public void restart() { - if (address != null) { - getClient().restartNetworkDevice(address); - } - } - - private void pollDeviceStatus() { - try { - if (address != null && getClient().isConnected()) { - logger.debug("Polling individual address '{}'", address); - boolean isReachable = getClient().isReachable(address); - if (isReachable) { - updateStatus(ThingStatus.ONLINE); - DeviceConfig config = getConfigAs(DeviceConfig.class); - if (!filledDescription && config.getFetch()) { - Future descriptionJob = this.descriptionJob; - if (descriptionJob == null || descriptionJob.isCancelled()) { - this.descriptionJob = getScheduler().submit(() -> { - filledDescription = describeDevice(address); - }); - } - } - } else { - updateStatus(ThingStatus.OFFLINE); - } - } - } catch (KNXException e) { - logger.debug("An error occurred while testing the reachability of a thing '{}'", getThing().getUID(), e); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getLocalizedMessage()); - } - } - - private boolean describeDevice(@Nullable IndividualAddress address) { - if (address == null) { - return false; - } - DeviceInspector inspector = new DeviceInspector(getClient().getDeviceInfoClient(), address); - Result result = inspector.readDeviceInfo(); - if (result != null) { - Map properties = editProperties(); - properties.putAll(result.getProperties()); - updateProperties(properties); - return true; - } - return false; - } - private boolean isDPTSupported(@Nullable String dpt) { return typeHelper.toTypeClass(dpt) != null; } + private KNXChannelType getKNXChannelType(Channel channel) { + return KNXChannelTypes.getType(channel.getChannelTypeUID()); + } + } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java similarity index 86% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java index 099268bc00767..4517805dbc069 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java @@ -6,12 +6,11 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.handler; +package org.openhab.binding.knx.internal.handler; import java.net.InetSocketAddress; import java.text.MessageFormat; -import org.apache.commons.lang.StringUtils; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.net.NetworkAddressService; @@ -19,8 +18,10 @@ import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.openhab.binding.knx.KNXBindingConstants; +import org.openhab.binding.knx.client.KNXClient; +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; import org.openhab.binding.knx.internal.client.IPClient; -import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.internal.client.NoOpClient; import org.openhab.binding.knx.internal.config.IPBridgeConfiguration; import tuwien.auto.calimero.link.KNXNetworkLinkIP; @@ -65,7 +66,7 @@ public void initialize() { ipConnectionType = KNXNetworkLinkIP.TUNNELING; } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { useNAT = false; - if (StringUtils.isBlank(ip)) { + if (ip == null || ip.isEmpty()) { ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; } ipConnectionType = KNXNetworkLinkIP.ROUTING; @@ -75,8 +76,13 @@ public void initialize() { connectionTypeString)); return; } + if (ip == null) { + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, + "The 'ipAddress' of the gateway must be configured in 'TUNNEL' mode"); + return; + } - if (StringUtils.isNotBlank(config.getLocalIp())) { + if (config.getLocalIp() != null && !config.getLocalIp().isEmpty()) { localEndPoint = new InetSocketAddress(config.getLocalIp(), 0); } else { localEndPoint = new InetSocketAddress(networkAddressService.getPrimaryIpv4HostAddress(), 0); @@ -103,7 +109,7 @@ public void dispose() { protected KNXClient getClient() { KNXClient ret = client; if (ret == null) { - throw new IllegalStateException("Thing handler is not initialized"); + return new NoOpClient(); } return ret; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java deleted file mode 100644 index 53b59d5d7d57e..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/LoadState.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright (c) 2010-2017 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.handler; - -/** - * @author Karel Goderis - Initial contribution - */ -public enum LoadState { - L0(0, "Unloaded"), - L1(1, "Loaded"), - L2(2, "Loading"), - L3(3, "Error"), - L4(4, "Unloading"), - L5(5, "Load Completing"); - - private int code; - private String name; - - private LoadState(int code, String name) { - this.code = code; - this.name = name; - } - - @Override - public String toString() { - return name; - } - - public static String getName(int code) { - for (LoadState c : LoadState.values()) { - if (c.code == code) { - return c.name; - } - } - return null; - } - -}; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java similarity index 89% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java index f35bb89dbb78e..803ecd30d75e2 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java @@ -6,12 +6,13 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.handler; +package org.openhab.binding.knx.internal.handler; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ThingStatus; -import org.openhab.binding.knx.internal.client.KNXClient; +import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; +import org.openhab.binding.knx.internal.client.AbstractKNXClient; import org.openhab.binding.knx.internal.client.SerialClient; import org.openhab.binding.knx.internal.config.SerialBridgeConfiguration; @@ -50,7 +51,7 @@ public void dispose() { } @Override - protected KNXClient getClient() { + protected AbstractKNXClient getClient() { return client; } From 81b13030ad1ac791630f9afe957ea719c9703775 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 13:23:48 +0100 Subject: [PATCH 20/52] review feedback Signed-off-by: Simon Kaufmann --- .../META-INF/MANIFEST.MF | 4 - .../org.openhab.binding.knx.test/pom.xml | 222 +++++++++--------- .../ESH-INF/binding/binding.xml | 11 +- .../ESH-INF/config/channelConfig.xml | 53 ++--- .../ESH-INF/thing/device.xml | 121 +++++----- .../ESH-INF/thing/ip.xml | 6 +- .../ESH-INF/thing/serial.xml | 6 +- .../META-INF/MANIFEST.MF | 1 - .../binding/org.openhab.binding.knx/README.md | 137 +++++++---- .../binding/knx/KNXBindingConstants.java | 1 + .../binding/knx/client/InboundSpec.java | 13 + .../openhab/binding/knx/client/KNXClient.java | 55 ++++- .../binding/knx/client/OutboundSpec.java | 15 ++ .../knx/handler/AbstractKNXThingHandler.java | 2 +- .../handler/KNXBridgeBaseThingHandler.java | 4 +- .../knx/internal/channel/AbstractSpec.java | 19 +- .../channel/GroupAddressConfiguration.java | 10 + .../internal/channel/ReadRequestSpecImpl.java | 22 +- .../channel/ReadResponseSpecImpl.java | 2 + .../internal/client/AbstractKNXClient.java | 21 +- .../internal/client/BusMessageListener.java | 6 +- .../knx/internal/client/DeviceInspector.java | 2 +- .../knx/internal/client/NoOpClient.java | 17 +- .../ReadDatapoint.java} | 24 +- .../internal/handler/DeviceThingHandler.java | 14 +- .../knx/internal/handler/Firmware.java | 2 + .../knx/internal/handler/Manufacturer.java | 2 + .../src/main/feature/feature.xml | 1 + 28 files changed, 467 insertions(+), 326 deletions(-) rename addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/{handler/RetryDatapoint.java => client/ReadDatapoint.java} (82%) diff --git a/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF index bb4df9a802004..a59710637842f 100644 --- a/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx.test/META-INF/MANIFEST.MF @@ -25,7 +25,3 @@ Import-Package: org.osgi.framework, org.osgi.service.device, org.slf4j -Require-Bundle: - org.hamcrest, - org.junit, - org.mockito diff --git a/addons/binding/org.openhab.binding.knx.test/pom.xml b/addons/binding/org.openhab.binding.knx.test/pom.xml index c8eca1b869fa8..04c113ffc4a04 100644 --- a/addons/binding/org.openhab.binding.knx.test/pom.xml +++ b/addons/binding/org.openhab.binding.knx.test/pom.xml @@ -1,120 +1,118 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - 4.0.0 + 4.0.0 - - org.openhab.binding - pom - 2.3.0-SNAPSHOT - + + org.openhab.binding + pom + 2.3.0-SNAPSHOT + - org.openhab.binding.knx.test - eclipse-test-plugin + org.openhab.binding.knx.test + eclipse-test-plugin - knx Binding Tests + knx Binding Tests - - - - - - org.eclipse.tycho - target-platform-configuration - - - - - - eclipse-plugin - org.eclipse.equinox.event - 0.0.0 - - - eclipse-plugin - org.eclipse.equinox.ds - 0.0.0 - - - eclipse-plugin - org.eclipse.smarthome.config.xml - 0.0.0 - - - eclipse-plugin - org.eclipse.smarthome.core.thing.xml - 0.0.0 - - - eclipse-plugin - org.eclipse.smarthome.core.binding.xml - 0.0.0 - - - - - - - org.eclipse.tycho - tycho-surefire-plugin - - - - eclipse-plugin - ch.qos.logback.classic - 0.0.0 - - - eclipse-plugin - ch.qos.logback.core - 0.0.0 - - - eclipse-plugin - ch.qos.logback.slf4j - 0.0.0 - - - - - org.eclipse.equinox.ds - 1 - true - - - org.eclipse.equinox.event - 2 - true - - - org.eclipse.smarthome.core - 4 - true - - - org.eclipse.smarthome.core.thing - 4 - true - - - org.eclipse.smarthome.config.xml - 4 - true - - - org.eclipse.smarthome.core.thing.xml - 4 - true - - - org.eclipse.smarthome.core.binding.xml - 4 - true - - - - - - + + + + org.eclipse.tycho + target-platform-configuration + + + + + + eclipse-plugin + org.eclipse.equinox.event + 0.0.0 + + + eclipse-plugin + org.eclipse.equinox.ds + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.config.xml + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.core.thing.xml + 0.0.0 + + + eclipse-plugin + org.eclipse.smarthome.core.binding.xml + 0.0.0 + + + + + + + org.eclipse.tycho + tycho-surefire-plugin + + + + eclipse-plugin + ch.qos.logback.classic + 0.0.0 + + + eclipse-plugin + ch.qos.logback.core + 0.0.0 + + + eclipse-plugin + ch.qos.logback.slf4j + 0.0.0 + + + + + org.eclipse.equinox.ds + 1 + true + + + org.eclipse.equinox.event + 2 + true + + + org.eclipse.smarthome.core + 4 + true + + + org.eclipse.smarthome.core.thing + 4 + true + + + org.eclipse.smarthome.config.xml + 4 + true + + + org.eclipse.smarthome.core.thing.xml + 4 + true + + + org.eclipse.smarthome.core.binding.xml + 4 + true + + + + + + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml index 9072f51ee3247..76247f585724b 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/binding/binding.xml @@ -1,11 +1,8 @@ - + - KNX Binding - The KNX Binding - Kai Kreuzer / Simon Kaufmann / Karel Goderis + KNX Binding + This binding supports connecting to a KNX bus diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml index d2f2e0563e53e..e264b5bed9745 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml @@ -8,7 +8,7 @@ - The group address(es) in FANCY notation + The group address(es) in Group Address Notation true @@ -17,68 +17,67 @@ - The group address(es) in FANCY notation to toggle the dimmer on or off + The group address(es) in Group Address Notation to toggle the dimmer on or off false - The group address(es) in FANCY notation to set the absolute position of the dimmer + The group address(es) in Group Address Notation to set the absolute position of the dimmer false - The group address(es) in FANCY notation to increase or decrease the dimmer + The group address(es) in Group Address Notation to increase or decrease the dimmer false - The group address(es) in FANCY notation to toggle the dimmer on or off + The group address(es) in Group Address Notation to toggle the dimmer on or off false - The group address(es) in FANCY notation to set the absolute position of the dimmer + The group address(es) in Group Address Notation to set the absolute position of the dimmer false - The group address(es) in FANCY notation to increase or decrease the dimmer + The group address(es) in Group Address Notation to increase or decrease the dimmer false - - - true - 500 + + Increase/decrease send frequency if dimming should be handled by the binding (in ms) - set to 0 if the KNX device sends them repeatedly itself + 0 - - - The group address(es) in FANCY notation to move the shutter in the DOWN or UP direction - false - - - - The group address(es) in FANCY notation to start (MOVE) or STOP shutter movement - false - - - - The group address(es) in FANCY notation to set the absolute position of the shutter, in % - false - + + + The group address(es) in Group Address Notation to move the shutter in the DOWN or UP direction + false + + + + The group address(es) in Group Address Notation to start (MOVE) or STOP shutter movement + false + + + + The group address(es) in Group Address Notation to set the absolute position of the shutter, in % + false + - The group address(es) in FANCY notation + The group address(es) in Group Address Notation true diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml index d5be0e09f25b2..c208f8c8ae577 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml @@ -3,14 +3,15 @@ xmlns:thing="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0" xsi:schemaLocation="http://eclipse.org/smarthome/schemas/thing-description/v1.0.0 http://eclipse.org/smarthome/schemas/thing-description-1.0.0.xsd"> - + - - An addressable basic KNX actor + + An addressable basic KNX device @@ -22,115 +23,115 @@ Read out the device parameters and address/communication object tables false - - - Interval (in seconds) between attempts to poll the device status - 600 - - - - Interval (in seconds) between attempts to read the status group addresses on the bus - 0 - + + + Interval (in seconds) between attempts to poll the device status + 600 + + + + Interval (in seconds) between attempts to read the status group addresses on the bus + 0 + - + - - Switch - - A channel to manage a generic Group Addresses with a DPT compatible with Switch Items - - - - Switch - - A channel to control switch that reports back its status - - - - + + Switch + + A channel to manage a generic Group Addresses with a DPT compatible with Switch Items + + + + Switch + + Control a switch item via KNX (i.e. the status is not owned by KNX) + + + + Dimmer A channel to control a dimmer - + Dimmer - A channel to control a dimmer - + Control a dimmer item via KNX (i.e. the status is not owned by KNX) + - + Rollershutter A channel to control a rollershutter - + Rollershutter - A channel to control a rollershutter - + Control a rollershutter item (i.e. the status is not owned by KNX) + - - - Contact - - A channel to manage a generic Group Addresses with a DPT compatible with Contact Items - - - - Contact - - A channel to manage a generic Group Addresses with a DPT compatible with Contact Items - - + + + Contact + + A channel to manage a generic Group Addresses with a DPT compatible with Contact Items + + + + Contact + + Control a contact item (i.e. the status is not owned by KNX) + + - + Number A channel to manage a generic Group Addresses with a DPT compatible with Number Items - + Number Control - A channel to manage a generic Group Addresses with a DPT compatible with Number Items - + Control a number item (i.e. the status is not owned by KNX) + - + String A channel to manage a generic Group Addresses with a DPT compatible with String Items - + String Control - A channel to manage a generic Group Addresses with a DPT compatible with String Items - + Control a string item (i.e. the status is not owned by KNX) + - + DateTime A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items - + DateTime Control - A channel to manage a generic Group Addresses with a DPT compatible with DateTime Items - + Control a date/time item (i.e. the status is not owned by KNX) + diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml index b410d14861985..db57aa85ab19e 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/ip.xml @@ -5,8 +5,8 @@ - - This Bridge is for IP based KNX gateways + + This is a KNX IP interface or router @@ -63,7 +63,7 @@ Seconds between connection retries when KNX link has been lost, 0 means never retry - 0 + 60 diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml index 2a7b932c1b655..00eb005389dc2 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/serial.xml @@ -5,11 +5,11 @@ - - This Bridge is for the serial KNX gateway running on the openHAB host + + This is a serial interface for accessing the KNX bus - serial-port + serial-port The serial port to use for connecting to the KNX bus true diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index d676c9a4029c0..6841ad1236882 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -9,7 +9,6 @@ Import-Package: gnu.io;resolution:=optional, org.eclipse.jdt.annotation;resolution:=optional, org.eclipse.smarthome.config.core, org.eclipse.smarthome.config.discovery, - org.eclipse.smarthome.core.autoupdate, org.eclipse.smarthome.core.common, org.eclipse.smarthome.core.i18n, org.eclipse.smarthome.core.library.types, diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index ebb13f27f47c4..1844fc5cc6ecb 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -24,8 +24,8 @@ The IP Gateway is the most commonly used way to connect to the KNX bus. At its b | Name | Required | Description | Default value | |---------------------|--------------|--------------------------------------------------------------------------------------------------------------|------------------------------------------------------| | type | Yes | The IP connection type for connecting to the KNX bus (`TUNNEL` or `ROUTER`) | - | -| ipAddress | for `TUNNEL` | Network address of the KNX/IP gateway | Required if type is ROUTER | -| portNumber | for `TUNNEL` | Port number of the KNX/IP gateway | Not required if type is ROUTER; 3671 | +| ipAddress | for `TUNNEL` | Network address of the KNX/IP gateway | - | +| portNumber | for `TUNNEL` | Port number of the KNX/IP gateway | 3671 | | localIp | No | Network address of the local host to be used to set up the connection to the KNX/IP gateway | the system-wide configured primary interface address | | localSourceAddr | No | The group address for identification of this KNX/IP gateway within the KNX bus | 0.0.0 | | useNAT | No | Whether there is network address translation between the server and the gateway | false | @@ -68,57 +68,103 @@ Standard channels are used most of the time. They are used in the common case wh ##### Switch -| Parameter | Description | Default DPT | -|----|----|-----| -| switch | Group address | 1.001 | +| Parameter | Description | Default DPT | +|-----------|-------------------------------------|-------------| +| switch | Group address for the binary switch | 1.001 | ##### Dimmer -| Parameter | Description | Default DPT | -|----|----|-----| -| switch | Group address | 1.001 | -| position | Group address | 5.001 | -| increaseDecrease | Group address | 3.007 | +| Parameter | Description | Default DPT | +|------------------|----------------------------------------|-------------| +| switch | Group address for the binary switch | 1.001 | +| position | Group address of the absolute position | 5.001 | +| increaseDecrease | Group address for relative movement | 3.007 | ##### Rollershutter -| Parameter | Description | Default DPT | -|----|----|-----| -| upDown | Group address | 1.008 | -| stopMove | Group address | 1.010 | -| position | Group address | 5.001 | +| Parameter | Description | Default DPT | +|-----------|-----------------------------------------|-------------| +| upDown | Group address for relative movement | 1.008 | +| stopMove | Group address for stopping | 1.010 | +| position | Group address for the relative position | 5.001 | ##### Contact -| Parameter | Description | Default DPT | -|----|----|-----| -| ga | Group address | 1.009 | +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 1.009 | ##### Number -| Parameter | Description | Default DPT | -|----|----|-----| -| ga | Group address | 9.001 | +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 9.001 | ##### String -| Parameter | Description | Default DPT | -|----|----|-----| -| ga | Group address | 16.001 | +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 16.001 | ##### Datetime -| Parameter | Description | Default DPT | -|----|----|-----| -| ga | Group address | 19.001 | +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 19.001 | #### Control Channels In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. -TODO +##### Switch-Control + +| Parameter | Description | Default DPT | +|-----------|-------------------------------------|-------------| +| switch | Group address for the binary switch | 1.001 | + + +##### Dimmer-Control + +| Parameter | Description | Default DPT | +|------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-------------| +| switch | Group address for the binary switch | 1.001 | +| position | Group address of the absolute position | 5.001 | +| increaseDecrease | Group address for relative movement | 3.007 | +| frequency | Increase/Decrease frequency in milliseconds in case the binding should handle that (0 if the KNX device sends the commands repeatedly itself) | 0 | + +##### Rollershutter-Control + +| Parameter | Description | Default DPT | +|-----------|-----------------------------------------|-------------| +| upDown | Group address for relative movement | 1.008 | +| stopMove | Group address for stopping | 1.010 | +| position | Group address for the relative position | 5.001 | + +##### Contact-Control + +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 1.009 | + +##### Number-Control + +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 9.001 | + +##### String-Control + +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 16.001 | + +##### Datetime-Control + +| Parameter | Description | Default DPT | +|-----------|---------------|-------------| +| ga | Group address | 19.001 | #### Group Address Notation @@ -145,25 +191,23 @@ Bridge knx:ip:bridge [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.11", - tape="TUNNEL", + type="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=1, localSourceAddr="0.0.0" ] { - Thing device magicActuator [ + Thing device generic [ address="1.2.3", fetch=true, pingInterval=300, readInterval=3600 ] { - Type number : demoTemperature1 "Demo Temperature 1" [ ga="9.001:<5/0/0" ] - Type number : demoTemperature2 "Demo Temperature 2" [ ga="<5/0/0" ] - - Type rollershutter : demoRollershutter "Demo Rollershutter" [ upDown="4/3/50+<4/3/51", stopMove="4/3/52+<4/3/53", position="4/3/54+<4/3/55" ] - - /* TODO: complete */ + Type switch : demoSwitch "Light" [ switch="3/0/4+<3/0/5" ] + Type rollershutter : demoRollershutter "Shade" [ upDown="4/3/50+<4/3/51", stopMove="4/3/52+<4/3/53", position="4/3/54+<4/3/55" ] + Type contact : demoContact "Door" [ ga="1.019:<5/1/2" ] + Type number : demoTemperature "Temperature" [ ga="9.001:<5/0/0" ] } } ``` @@ -171,13 +215,24 @@ Bridge knx:ip:bridge [ knx.items: ```xtend - /* TODO: complete */ +Switch demoSwitch "Light [%s]" { channel="knx:device:bridge:generic:demoSwitch" } +Rollershutter demoRollershutter "Shade [%d %%]" { channel="knx:device:bridge:generic:demoRollershutter" } +Contact demoContact "Front Door [%s]" { channel="knx:device:bridge:generic:demoContact" } +Number demoTemperature "Temperature [%.1f °C]" { channel="knx:device:bridge:generic:demoTemperature" } ``` knx.sitemap: ```xtend - /* TODO: complete */ +sitemap knx label="KNX Demo Sitemap" { + Frame label="Demo Elements" { + Switch item=demoSwitch + Switch item=demoRollershutter + Text item=demoContact + Text item=demoTemperature + } +} + ``` ### Control Example @@ -190,7 +245,7 @@ Bridge knx:ip:bridge [ ipAddress="192.168.0.10", portNumber=3671, localIp="192.168.0.11", - tape="TUNNEL", + type="TUNNEL", readingPause=50, responseTimeout=10, readRetriesLimit=3, @@ -199,9 +254,7 @@ Bridge knx:ip:bridge [ ] { Thing device generic { Type switch-control : demoSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] - Type dimmer-control : controlSwitch "Control Dimmer" [ switch="3/3/50+3/3/48", increaseDecrease="3/3/49" ] - - /* TODO: complete */ + Type dimmer-control : controlSwitch "Control Dimmer" [ switch="3/3/50+3/3/48", increaseDecrease="3/3/49", frequency=300 ] } } ``` diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java index 55ac1006a6108..85a8e1cdddf0b 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -87,5 +87,6 @@ public class KNXBindingConstants { public static final String STOP_MOVE_GA = "stopMove"; public static final String SWITCH_GA = "switch"; public static final String UP_DOWN_GA = "upDown"; + public static final String REPEAT_FREQUENCY = "frequency"; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java index 3fca969c52da1..265251769422d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java @@ -10,6 +10,8 @@ import java.util.List; +import org.eclipse.jdt.annotation.NonNullByDefault; + import tuwien.auto.calimero.GroupAddress; /** @@ -18,10 +20,21 @@ * @author Simon Kaufmann - initial contribution and API * */ +@NonNullByDefault public interface InboundSpec { + /** + * Get the datapoint type. + * + * @return the datapoint type + */ String getDPT(); + /** + * Get the affected group addresses. + * + * @return a list of group addresses. + */ List getGroupAddresses(); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java index d8de3bb4bcadf..f1228ae214de1 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java @@ -10,7 +10,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.core.types.State; import org.openhab.binding.knx.handler.GroupAddressListener; import tuwien.auto.calimero.IndividualAddress; @@ -26,22 +25,74 @@ @NonNullByDefault public interface KNXClient { + /** + * Check whether the client is connected + * + * @return {@code true} if the client currently is connected + */ boolean isConnected(); + /** + * Determines whether the supplied address is occupied by a device in the KNX network or not. + * + * @param address the individual address to check + * @return {@code true} if the address is occupied + * @throws KNXException on network or send errors + */ boolean isReachable(@Nullable IndividualAddress address) throws KNXException; + /** + * Get the {@link DeviceInfoClient} which allows further device inspection. + * + * @return the device infor client + * @throws IllegalStateException in case the client is not connected + */ DeviceInfoClient getDeviceInfoClient(); + /** + * Initiates a basic restart of the device with the given address. + * + * @param address the individual address of the device + */ void restartNetworkDevice(@Nullable IndividualAddress address); + /** + * Register the given listener to be informed on KNX bus traffic. + * + * @param listener the listener + * @return {@code true} if it wasn't registered before + */ boolean registerGroupAddressListener(GroupAddressListener listener); + /** + * Remove the given listener. + * + * @param listener the listener + * @return {@code true} if it was successfully removed + */ boolean unregisterGroupAddressListener(GroupAddressListener listener); + /** + * Schedule the given data point for asynchronous reading. + * + * @param datapoint the datapoint + */ void readDatapoint(Datapoint datapoint); + /** + * Write a command to the KNX bus. + * + * @param commandSpec the outbound spec + * @throws KNXException if any problem with the communication arises. + */ void writeToKNX(OutboundSpec commandSpec) throws KNXException; - void respondToKNX(OutboundSpec responseSpec, State state) throws KNXException; + /** + * Send a state as a read-response to the KNX bus. + * + * @param responseSpec the outbound spec + * @throws KNXException if any problem with the communication arises. + */ + void respondToKNX(OutboundSpec responseSpec) throws KNXException; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java index 3e152bf61cf81..bd2059f91de85 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java @@ -23,11 +23,26 @@ @NonNullByDefault public interface OutboundSpec { + /** + * Get the datapoint type. + * + * @return the datapoint type + */ String getDPT(); + /** + * The group address to be used. + * + * @return the group address + */ @Nullable GroupAddress getGroupAddress(); + /** + * The command or state to be sent. + * + * @return the command/state + */ Type getType(); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index 5e421f0c6126b..b2a46fd6e3898 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -114,6 +114,7 @@ public void bridgeStatusChanged(@NonNull ThingStatusInfo bridgeStatusInfo) { attachToClient(); } else if (bridgeStatusInfo.getStatus() == ThingStatus.OFFLINE) { detachFromClient(); + updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); } } @@ -198,7 +199,6 @@ protected void detachFromClient() { } cancelReadFutures(); getClient().unregisterGroupAddressListener(this); - updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 67dfba311aaf8..fa4d186967ee5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -13,6 +13,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.smarthome.core.common.ThreadPoolManager; import org.eclipse.smarthome.core.thing.Bridge; import org.eclipse.smarthome.core.thing.ChannelUID; import org.eclipse.smarthome.core.thing.ThingStatus; @@ -36,6 +37,7 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implements StatusUpdateCallback { protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); + private final ScheduledExecutorService knxScheduler = ThreadPoolManager.getScheduledPool("knx"); public KNXBridgeBaseThingHandler(Bridge bridge) { super(bridge); @@ -54,7 +56,7 @@ public void handleCommand(ChannelUID channelUID, Command command) { } public ScheduledExecutorService getScheduler() { - return scheduler; + return knxScheduler; } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java index 1b4fd2813cab0..775816ca899f9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java @@ -10,6 +10,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.knx.client.InboundSpec; +import org.openhab.binding.knx.client.OutboundSpec; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.exception.KNXFormatException; @@ -35,14 +37,27 @@ protected AbstractSpec(@Nullable ChannelConfiguration channelConfiguration, Stri } - protected final @Nullable GroupAddress toGroupAddress(GroupAddressConfiguration ga) { + /** + * Helper method to convert a {@link GroupAddressConfiguration} into a {@link GroupAddress}. + * + * @param ga the group address configuration + * @return a group address object + */ + protected final GroupAddress toGroupAddress(GroupAddressConfiguration ga) { try { return new GroupAddress(ga.getGA()); } catch (KNXFormatException e) { - return null; + throw new IllegalArgumentException(e); } } + /** + * Return the data point type. + *

+ * See {@link InboundSpec#getDPT()} and {@link OutboundSpec#getDPT()}. + * + * @return the data point type. + */ public final String getDPT() { return dpt; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java index c04b171640f9c..8bba88e6d4358 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java @@ -28,10 +28,20 @@ public GroupAddressConfiguration(String ga, boolean read) { this.read = read; } + /** + * The group address. + * + * @return the group address. + */ public String getGA() { return ga; } + /** + * Denotes whether the group address is marked to be actively read from. + * + * @return {@code true} if read requests should be issued to this address + */ public boolean isRead() { return read; } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java index ea2d3b2960f1a..38cee079af569 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java @@ -13,11 +13,11 @@ import java.util.Collections; import java.util.List; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.knx.client.InboundSpec; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; /** * Read meta-data. @@ -25,37 +25,23 @@ * @author Simon Kaufmann - initial contribution and API. * */ -public class ReadRequestSpecImpl implements InboundSpec { +@NonNullByDefault +public class ReadRequestSpecImpl extends AbstractSpec implements InboundSpec { - private final String dpt; private final List readAddresses; public ReadRequestSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String defaultDPT) { + super(channelConfiguration, defaultDPT); if (channelConfiguration != null) { - this.dpt = channelConfiguration.getDPT() != null ? channelConfiguration.getDPT() : defaultDPT; this.readAddresses = channelConfiguration.getReadGAs().stream().map(this::toGroupAddress).collect(toList()); } else { - this.dpt = defaultDPT; this.readAddresses = Collections.emptyList(); } } - @Override - public String getDPT() { - return dpt; - } - @Override public List getGroupAddresses() { return readAddresses; } - private GroupAddress toGroupAddress(GroupAddressConfiguration ga) { - try { - return new GroupAddress(ga.getGA()); - } catch (KNXFormatException e) { - return null; - } - } - } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java index b42d258c62a0b..920538da4dccb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java @@ -8,6 +8,7 @@ */ package org.openhab.binding.knx.internal.channel; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.client.OutboundSpec; @@ -20,6 +21,7 @@ * @author Simon Kaufmann - initial contribution and API. * */ +@NonNullByDefault public class ReadResponseSpecImpl extends AbstractSpec implements OutboundSpec { private final @Nullable GroupAddress groupAddress; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index c6e70638850ca..0fe13b42a6d29 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -21,7 +21,6 @@ import org.eclipse.smarthome.core.thing.ThingStatus; import org.eclipse.smarthome.core.thing.ThingStatusDetail; import org.eclipse.smarthome.core.thing.ThingUID; -import org.eclipse.smarthome.core.types.State; import org.eclipse.smarthome.core.types.Type; import org.openhab.binding.knx.KNXTypeMapper; import org.openhab.binding.knx.client.DeviceInfoClient; @@ -30,7 +29,6 @@ import org.openhab.binding.knx.client.StatusUpdateCallback; import org.openhab.binding.knx.handler.GroupAddressListener; import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; -import org.openhab.binding.knx.internal.handler.RetryDatapoint; import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -91,7 +89,7 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien private @Nullable ScheduledFuture connectJob; private final Set groupAddressListeners = new CopyOnWriteArraySet<>(); - private final LinkedBlockingQueue<@Nullable RetryDatapoint> readDatapoints = new LinkedBlockingQueue<>(); + private final LinkedBlockingQueue readDatapoints = new LinkedBlockingQueue<>(); @FunctionalInterface private interface ListenerNotification { @@ -269,11 +267,8 @@ private void processEvent(String task, ProcessEvent event, ListenerNotification /** * Transforms a {@link Type} into a datapoint type value for the KNX bus. * - * @param type - * the {@link Type} to transform - * @param dpt - * the datapoint type to which should be converted - * + * @param type the {@link Type} to transform + * @param dpt the datapoint type to which should be converted * @return the corresponding KNX datapoint type value as a string */ @Nullable @@ -289,7 +284,7 @@ private void readNextQueuedDatapoint() { if (processCommunicator == null) { return; } - RetryDatapoint datapoint = readDatapoints.poll(); + ReadDatapoint datapoint = readDatapoints.poll(); if (datapoint != null) { datapoint.incrementRetries(); try { @@ -378,7 +373,7 @@ public final synchronized void restartNetworkDevice(@Nullable IndividualAddress @Override public void readDatapoint(Datapoint datapoint) { synchronized (this) { - RetryDatapoint retryDatapoint = new RetryDatapoint(datapoint, readRetriesLimit); + ReadDatapoint retryDatapoint = new ReadDatapoint(datapoint, readRetriesLimit); if (!readDatapoints.contains(retryDatapoint)) { readDatapoints.add(retryDatapoint); } @@ -387,7 +382,7 @@ public void readDatapoint(Datapoint datapoint) { @Override public final boolean registerGroupAddressListener(GroupAddressListener listener) { - return groupAddressListeners.contains(listener) ? true : groupAddressListeners.add(listener); + return groupAddressListeners.add(listener); } @Override @@ -426,7 +421,7 @@ public void writeToKNX(OutboundSpec commandSpec) throws KNXException { } @Override - public void respondToKNX(OutboundSpec responseSpec, State state) throws KNXException { + public void respondToKNX(OutboundSpec responseSpec) throws KNXException { ProcessCommunicationResponder responseCommunicator = this.responseCommunicator; KNXNetworkLink link = this.link; if (responseCommunicator == null || link == null) { @@ -437,7 +432,7 @@ public void respondToKNX(OutboundSpec responseSpec, State state) throws KNXExcep } GroupAddress groupAddress = responseSpec.getGroupAddress(); if (groupAddress != null) { - sendToKNX(responseCommunicator, link, groupAddress, responseSpec.getDPT(), state); + sendToKNX(responseCommunicator, link, groupAddress, responseSpec.getDPT(), responseSpec.getType()); } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java index db1e27be56ca4..f3961a5bf3c7e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java @@ -22,7 +22,6 @@ public interface BusMessageListener { /** - * * Called when the KNX bridge receives a group write telegram * * @param bridge @@ -32,7 +31,6 @@ public interface BusMessageListener { public void onGroupWrite(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** - * * Called when the KNX bridge receives a group read telegram * * @param bridge @@ -42,13 +40,13 @@ public interface BusMessageListener { public void onGroupRead(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); /** - * * Called when the KNX bridge receives a group read response telegram * * @param bridge * @param destination * @param asdu */ - public void onGroupReadResponse(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, byte[] asdu); + public void onGroupReadResponse(AbstractKNXClient client, IndividualAddress source, GroupAddress destination, + byte[] asdu); } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 59b62b9fea79e..eab681a2b364d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -32,7 +32,7 @@ import tuwien.auto.calimero.mgmt.PropertyAccess.PID; /** - * Client dedicated to read device specifi information using the {@link DeviceInfoClient}. + * Client dedicated to read device specific information using the {@link DeviceInfoClient}. * * @author Simon Kaufmann - initial contribution and API. * diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java index adb60987d9620..a69614fa0cc49 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java @@ -8,9 +8,8 @@ */ package org.openhab.binding.knx.internal.client; -import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.smarthome.core.types.State; import org.openhab.binding.knx.client.DeviceInfoClient; import org.openhab.binding.knx.client.KNXClient; import org.openhab.binding.knx.client.OutboundSpec; @@ -25,7 +24,7 @@ * @author Simon Kaufmann - initial contribution and API * */ - +@NonNullByDefault public class NoOpClient implements KNXClient { @Override @@ -39,7 +38,7 @@ public boolean isReachable(@Nullable IndividualAddress address) throws KNXExcept } @Override - public @NonNull DeviceInfoClient getDeviceInfoClient() { + public DeviceInfoClient getDeviceInfoClient() { throw new IllegalStateException("KNX client not properly configured"); } @@ -49,25 +48,25 @@ public void restartNetworkDevice(@Nullable IndividualAddress address) { } @Override - public boolean registerGroupAddressListener(@NonNull GroupAddressListener listener) { + public boolean registerGroupAddressListener(GroupAddressListener listener) { return false; } @Override - public boolean unregisterGroupAddressListener(@NonNull GroupAddressListener listener) { + public boolean unregisterGroupAddressListener(GroupAddressListener listener) { return false; } @Override - public void readDatapoint(@NonNull Datapoint datapoint) { + public void readDatapoint(Datapoint datapoint) { } @Override - public void writeToKNX(@NonNull OutboundSpec commandSpec) throws KNXException { + public void writeToKNX(OutboundSpec commandSpec) throws KNXException { } @Override - public void respondToKNX(@NonNull OutboundSpec responseSpec, @NonNull State state) throws KNXException { + public void respondToKNX(OutboundSpec responseSpec) throws KNXException { } } diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java similarity index 82% rename from addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java rename to addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java index bce0b39be0fb6..d8c9074ff1281 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/RetryDatapoint.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java @@ -6,18 +6,26 @@ * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ -package org.openhab.binding.knx.internal.handler; +package org.openhab.binding.knx.internal.client; import tuwien.auto.calimero.datapoint.Datapoint; /** + * Information about a data point which is queued to be read from the KNX bus. + * * @author Karel Goderis - Initial contribution */ -public class RetryDatapoint { +public class ReadDatapoint { - private Datapoint datapoint; + private final Datapoint datapoint; private int retries; - private int limit; + private final int limit; + + public ReadDatapoint(Datapoint datapoint, int limit) { + this.datapoint = datapoint; + this.retries = 0; + this.limit = limit; + } public Datapoint getDatapoint() { return datapoint; @@ -35,12 +43,6 @@ public int getLimit() { return limit; } - public RetryDatapoint(Datapoint datapoint, int limit) { - this.datapoint = datapoint; - this.retries = 0; - this.limit = limit; - } - @Override public int hashCode() { final int prime = 31; @@ -60,7 +62,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - RetryDatapoint other = (RetryDatapoint) obj; + ReadDatapoint other = (ReadDatapoint) obj; if (datapoint == null) { if (other.datapoint != null) { return false; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index f238bec54b3bb..7329aed4b85ca 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -10,6 +10,7 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; +import java.math.BigDecimal; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -66,6 +67,7 @@ public class DeviceThingHandler extends AbstractKNXThingHandler { private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); private final Set groupAddresses = new HashSet<>(); private final Map> readFutures = new HashMap<>(); + private final Map> channelFutures = new HashMap<>(); private @Nullable IndividualAddress address; private int readInterval; @@ -275,8 +277,6 @@ public void onGroupWrite(AbstractKNXClient client, IndividualAddress source, Gro } } - private final Map> channelFutures = new HashMap<>(); - private void processDataReceived(GroupAddress destination, byte[] asdu, InboundSpec listenSpec, ChannelUID channelUID) { if (!isDPTSupported(listenSpec.getDPT())) { @@ -289,9 +289,13 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, InboundS if (type != null) { if (isControl(channelUID)) { + Channel channel = getThing().getChannel(channelUID.getId()); + Object repeat = channel != null ? channel.getConfiguration().get(KNXBindingConstants.REPEAT_FREQUENCY) + : null; + int frequency = repeat != null ? ((BigDecimal) repeat).intValue() : 0; if (KNXBindingConstants.CHANNEL_DIMMER_CONTROL.equals(getChannelTypeUID(channelUID).getId()) - && (type instanceof UnDefType || type instanceof IncreaseDecreaseType)) { - // special handling for dimmer-control + && (type instanceof UnDefType || type instanceof IncreaseDecreaseType) && frequency > 0) { + // continuous dimming by the binding if (UnDefType.UNDEF.equals(type)) { ScheduledFuture future = channelFutures.remove(channelUID); if (future != null) { @@ -300,7 +304,7 @@ private void processDataReceived(GroupAddress destination, byte[] asdu, InboundS } else if (type instanceof IncreaseDecreaseType) { ScheduledFuture future = scheduler.scheduleWithFixedDelay(() -> { postCommand(channelUID, (Command) type); - }, 0, 500, TimeUnit.MILLISECONDS); + }, 0, frequency, TimeUnit.MILLISECONDS); ScheduledFuture previousFuture = channelFutures.put(channelUID, future); if (previousFuture != null) { previousFuture.cancel(true); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java index 59a4127b2d6a7..6d01dc78d4c31 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java @@ -9,6 +9,8 @@ package org.openhab.binding.knx.internal.handler; /** + * Enumeration containing the firmware types. + * * @author Karel Goderis - Initial contribution */ public enum Firmware { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java index 09f38432c5a65..1a7d02f78b908 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java @@ -11,6 +11,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; /** + * Enumeration containing all the KNX device manufactureres. + * * @author Karel Goderis - Initial contribution */ @NonNullByDefault diff --git a/features/openhab-addons/src/main/feature/feature.xml b/features/openhab-addons/src/main/feature/feature.xml index 2559da1e205c5..7bfa4f3ac9506 100644 --- a/features/openhab-addons/src/main/feature/feature.xml +++ b/features/openhab-addons/src/main/feature/feature.xml @@ -184,6 +184,7 @@ openhab-runtime-base + openhab-transport-serial mvn:org.openhab.binding/org.openhab.binding.knx/${project.version} From 32951b2f856dc9b2dbe4543b7a12908220ad7b9a Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 13:28:57 +0100 Subject: [PATCH 21/52] update license headers Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/channel/KNXChannelTypeTest.java | 2 +- .../main/java/org/openhab/binding/knx/KNXBindingConstants.java | 2 +- .../src/main/java/org/openhab/binding/knx/KNXTypeMapper.java | 2 +- .../java/org/openhab/binding/knx/client/DeviceInfoClient.java | 2 +- .../main/java/org/openhab/binding/knx/client/InboundSpec.java | 2 +- .../src/main/java/org/openhab/binding/knx/client/KNXClient.java | 2 +- .../main/java/org/openhab/binding/knx/client/OutboundSpec.java | 2 +- .../org/openhab/binding/knx/client/StatusUpdateCallback.java | 2 +- .../openhab/binding/knx/handler/AbstractKNXThingHandler.java | 2 +- .../org/openhab/binding/knx/handler/GroupAddressListener.java | 2 +- .../openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java | 2 +- .../org/openhab/binding/knx/internal/channel/AbstractSpec.java | 2 +- .../binding/knx/internal/channel/ChannelConfiguration.java | 2 +- .../binding/knx/internal/channel/GroupAddressConfiguration.java | 2 +- .../openhab/binding/knx/internal/channel/KNXChannelType.java | 2 +- .../openhab/binding/knx/internal/channel/KNXChannelTypes.java | 2 +- .../openhab/binding/knx/internal/channel/ListenSpecImpl.java | 2 +- .../binding/knx/internal/channel/ReadRequestSpecImpl.java | 2 +- .../binding/knx/internal/channel/ReadResponseSpecImpl.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeContact.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeDateTime.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeDimmer.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeNumber.java | 2 +- .../openhab/binding/knx/internal/channel/TypeRollershutter.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeString.java | 2 +- .../org/openhab/binding/knx/internal/channel/TypeSwitch.java | 2 +- .../org/openhab/binding/knx/internal/channel/WriteSpecImpl.java | 2 +- .../openhab/binding/knx/internal/client/AbstractKNXClient.java | 2 +- .../openhab/binding/knx/internal/client/BusMessageListener.java | 2 +- .../binding/knx/internal/client/CustomKNXNetworkLinkIP.java | 2 +- .../binding/knx/internal/client/DeviceInfoClientImpl.java | 2 +- .../openhab/binding/knx/internal/client/DeviceInspector.java | 2 +- .../java/org/openhab/binding/knx/internal/client/IPClient.java | 2 +- .../org/openhab/binding/knx/internal/client/NoOpClient.java | 2 +- .../org/openhab/binding/knx/internal/client/ReadDatapoint.java | 2 +- .../org/openhab/binding/knx/internal/client/SerialClient.java | 2 +- .../binding/knx/internal/config/BridgeConfiguration.java | 2 +- .../org/openhab/binding/knx/internal/config/DeviceConfig.java | 2 +- .../binding/knx/internal/config/IPBridgeConfiguration.java | 2 +- .../binding/knx/internal/config/SerialBridgeConfiguration.java | 2 +- .../org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java | 2 +- .../openhab/binding/knx/internal/factory/KNXHandlerFactory.java | 2 +- .../openhab/binding/knx/internal/handler/DeviceConstants.java | 2 +- .../binding/knx/internal/handler/DeviceThingHandler.java | 2 +- .../java/org/openhab/binding/knx/internal/handler/Firmware.java | 2 +- .../binding/knx/internal/handler/IPBridgeThingHandler.java | 2 +- .../org/openhab/binding/knx/internal/handler/Manufacturer.java | 2 +- .../binding/knx/internal/handler/SerialBridgeThingHandler.java | 2 +- .../org/openhab/binding/knx/internal/logging/LogAdapter.java | 2 +- .../binding/knx/internal/profiles/KNXProfileAdvisor.java | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java index b0010dcb5e9fb..b29005bb669aa 100644 --- a/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java +++ b/addons/binding/org.openhab.binding.knx.test/src/test/java/org/openhab/binding/knx/internal/channel/KNXChannelTypeTest.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java index 85a8e1cdddf0b..297e939f46b8a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXBindingConstants.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java index 518c93f275fe9..8f03370787053 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/KNXTypeMapper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java index db240636cce7a..a6d5aa49a1d07 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/DeviceInfoClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java index 265251769422d..089449285dcf0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/InboundSpec.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java index f1228ae214de1..33b395353894a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java index bd2059f91de85..3a8a431a3acd6 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/OutboundSpec.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java index 39d7e2221d7a3..ca80fcf73d737 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/StatusUpdateCallback.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index b2a46fd6e3898..d548be95e3ceb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java index dbd95c7f5ae17..e6e46e7f1f3c4 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/GroupAddressListener.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index fa4d186967ee5..73a6ab3893be2 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java index 775816ca899f9..103e8f1c63b19 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java index c51abf7aa6f4a..0fa081dc98777 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ChannelConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java index 8bba88e6d4358..c2299d2f9c946 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/GroupAddressConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index 590907db0649f..730c3307690e3 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java index 17dbb63fe5b76..3a28a7343f8f3 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelTypes.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java index 7fc96e1dc23b6..3316361348275 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ListenSpecImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java index 38cee079af569..42af328924f80 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadRequestSpecImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java index 920538da4dccb..d0f075c8e3921 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/ReadResponseSpecImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java index c21d946732322..fd93bda95e687 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeContact.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java index df1633d7e396d..299de02647c6c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDateTime.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java index 7ebb31c7729ac..470de1721db1e 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeDimmer.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java index ab7a647849f01..b3333042ebfda 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeNumber.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java index ddd46d5c48398..99744b4846d10 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeRollershutter.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java index 54310e7e0cb91..a671dff3fefe3 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeString.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java index 2e96ad5294d57..648b0cfd0ee23 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java index 4db1898c03c89..b06d658e05d46 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index 0fe13b42a6d29..c40df2184d811 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java index f3961a5bf3c7e..25744ee55c473 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/BusMessageListener.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java index 83e2485246026..96f6ccbcfa3b7 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index c054fc3d75a69..42c4bdb6c862f 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index eab681a2b364d..1f66c1f5ff3af 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java index 08c40a5320eca..5d238c8c1bb0c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java index a69614fa0cc49..026b3f87c0a44 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java index d8c9074ff1281..dcafa56c0c9f6 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/ReadDatapoint.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java index 280a49601ef38..9e5e8c9ca1fdc 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java index 5fbf77d414a5c..aebe89bca6d16 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/BridgeConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java index bcfffa3802397..aca18294c1865 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/DeviceConfig.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java index 7381106c38d9e..2836ec194a782 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/IPBridgeConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java index c49a1d5868644..578cfd6cc4fd8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/config/SerialBridgeConfiguration.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index c5ea0569ae4e8..e9cd3415e6f95 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java index a5797b4505220..1670024b6c883 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/factory/KNXHandlerFactory.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java index 62cd539301c61..5ebc65f2971c5 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceConstants.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index 7329aed4b85ca..52bcc7af41775 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java index 6d01dc78d4c31..2f0bb714bf6e9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Firmware.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java index 4517805dbc069..5bf7c0dedaf56 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java index 1a7d02f78b908..8670ab30b2567 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/Manufacturer.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java index 803ecd30d75e2..1b9cf81999bf1 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/SerialBridgeThingHandler.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java index 560a481ea0b1f..e7907508388aa 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java index 65e5ca8d2495c..0e17ade10f7c0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2010-2017 by the respective copyright holders. + * Copyright (c) 2010-2018 by the respective copyright holders. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 From d27ddb41b4621a7ef9abd5889b328d7d967e8567 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 15:14:04 +0100 Subject: [PATCH 22/52] fixed TODOs in README Signed-off-by: Simon Kaufmann --- .../binding/org.openhab.binding.knx/README.md | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 1844fc5cc6ecb..faec81746bf02 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -205,9 +205,12 @@ Bridge knx:ip:bridge [ readInterval=3600 ] { Type switch : demoSwitch "Light" [ switch="3/0/4+<3/0/5" ] - Type rollershutter : demoRollershutter "Shade" [ upDown="4/3/50+<4/3/51", stopMove="4/3/52+<4/3/53", position="4/3/54+<4/3/55" ] + Type rollershutter : demoRollershutter "Shade" [ upDown="4/3/50+4/3/51", stopMove="4/3/52+4/3/53", position="4/3/54+<4/3/55" ] Type contact : demoContact "Door" [ ga="1.019:<5/1/2" ] Type number : demoTemperature "Temperature" [ ga="9.001:<5/0/0" ] + Type dimmer : demoDimmer "Dimmer" [ switch="5/0/0+<5/0/1", position="5/0/2+<5/0/3", increaseDecrease="5/0/4" ] + Type string : demoString "Message" [ ga="5/3/1" ] + Type datetime : demoDatetime "Alarm" [ ga="5/5/42" ] } } ``` @@ -215,10 +218,13 @@ Bridge knx:ip:bridge [ knx.items: ```xtend -Switch demoSwitch "Light [%s]" { channel="knx:device:bridge:generic:demoSwitch" } -Rollershutter demoRollershutter "Shade [%d %%]" { channel="knx:device:bridge:generic:demoRollershutter" } -Contact demoContact "Front Door [%s]" { channel="knx:device:bridge:generic:demoContact" } -Number demoTemperature "Temperature [%.1f °C]" { channel="knx:device:bridge:generic:demoTemperature" } +Switch demoSwitch "Light [%s]" { channel="knx:device:bridge:generic:demoSwitch" } +Dimmer demoDimmer "Dimmer [%d %%]" { channel="knx:device:bridge:generic:demoDimmer" } +Rollershutter demoRollershutter "Shade [%d %%]" { channel="knx:device:bridge:generic:demoRollershutter" } +Contact demoContact "Front Door [%s]" { channel="knx:device:bridge:generic:demoContact" } +Number demoTemperature "Temperature [%.1f °C]" { channel="knx:device:bridge:generic:demoTemperature" } +String demoString "Message of the day [%s]" { channel="knx:device:bridge:generic:demoString" } +DateTime demoDatetime "Alarm [%1$tH:%1$tM]" { channel="knx:device:bridge:generic:demoDatetime" } ``` knx.sitemap: @@ -228,8 +234,11 @@ sitemap knx label="KNX Demo Sitemap" { Frame label="Demo Elements" { Switch item=demoSwitch Switch item=demoRollershutter - Text item=demoContact - Text item=demoTemperature + Text item=demoContact + Text item=demoTemperature + Slider item=demoDimmer + Text item=demoString + Text item=demoDatetime } } @@ -241,32 +250,20 @@ sitemap knx label="KNX Demo Sitemap" { control.things: ```xtend -Bridge knx:ip:bridge [ - ipAddress="192.168.0.10", - portNumber=3671, - localIp="192.168.0.11", - type="TUNNEL", +Bridge knx:serial:bridge [ + serialPort="/dev/ttyAMA0", readingPause=50, responseTimeout=10, readRetriesLimit=3, - autoReconnectPeriod=1, - localSourceAddr="0.0.0" + autoReconnectPeriod=1 ] { Thing device generic { - Type switch-control : demoSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] - Type dimmer-control : controlSwitch "Control Dimmer" [ switch="3/3/50+3/3/48", increaseDecrease="3/3/49", frequency=300 ] + Type switch-control : demoSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] + Type dimmer-control : controlDimmer "Control Dimmer" [ switch="3/3/50+3/3/48", position="3/3/46", increaseDecrease="3/3/49", frequency=300 ] + Type rollershutter-control : controlRollershutter "Control Rollershutter" [ upDown="3/4/1+3/4/2", stopMove="3/4/3", position="3/4/4" ] + Type number-control : controlNumber "Control Number" [ ga="1/2/2" ] + Type string-control : controlString "Control String" [ ga="1/4/2" ] + Type datetime-control : controlDatetime "Control Datetime" [ ga="5/1/30" ] } } -``` - -control.items: - -```xtend - /* TODO: complete */ -``` - -control.sitemap: - -```xtend - /* TODO: complete */ -``` +``` \ No newline at end of file From d7871295d598beee266b1a379c1b34ff7b5e44af Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 15:48:33 +0100 Subject: [PATCH 23/52] fixed log statement Signed-off-by: Simon Kaufmann --- .../openhab/binding/knx/internal/client/AbstractKNXClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index c40df2184d811..dcb2a667a6cfb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -101,7 +101,7 @@ private interface ListenerNotification { @Override public void detached(DetachEvent e) { - logger.debug("The KNX network link was detached from the process communicator", e.getSource()); + logger.debug("The KNX network link was detached from the process communicator"); } @Override From 5a000ccc752ae90563c36aedb3faca662a7aa865 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 16:18:06 +0100 Subject: [PATCH 24/52] added items to the control example Signed-off-by: Simon Kaufmann --- .../binding/org.openhab.binding.knx/README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index faec81746bf02..3037395cebf82 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -258,7 +258,7 @@ Bridge knx:serial:bridge [ autoReconnectPeriod=1 ] { Thing device generic { - Type switch-control : demoSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] + Type switch-control : controlSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] Type dimmer-control : controlDimmer "Control Dimmer" [ switch="3/3/50+3/3/48", position="3/3/46", increaseDecrease="3/3/49", frequency=300 ] Type rollershutter-control : controlRollershutter "Control Rollershutter" [ upDown="3/4/1+3/4/2", stopMove="3/4/3", position="3/4/4" ] Type number-control : controlNumber "Control Number" [ ga="1/2/2" ] @@ -266,4 +266,18 @@ Bridge knx:serial:bridge [ Type datetime-control : controlDatetime "Control Datetime" [ ga="5/1/30" ] } } -``` \ No newline at end of file + +Bridge hue:bridge:bridge "Philips Hue Bridge" [ + ipAddress="...", + userName="..." +] { + Thing 0210 1 "Color Lamp" [ lightId="1" ] +} +``` + +knx.items: + +```xtend +Switch demoSwitch "Light [%s]" { channel="hue:0210:bridge:1:color", channel="knx:device:bridge:generic:controlSwitch" } +Dimmer demoDimmer "Dimmer [%d %%]" { channel="hue:0210:bridge:1:color", channel="knx:device:bridge:generic:controlDimmer" } +``` From 925419d6103a9bb46ade2d2818e112894f7e8c89 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 26 Feb 2018 17:04:27 +0100 Subject: [PATCH 25/52] muting calimero unless debugging Signed-off-by: Simon Kaufmann --- .../org/openhab/binding/knx/internal/logging/LogAdapter.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java index e7907508388aa..79543fd7c1db1 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java @@ -38,6 +38,11 @@ public void write(String logService, LogLevel logLevel, String msg) { @Override public void write(String logService, LogLevel logLevel, String msg, Throwable t) { + // calimero is a bit chatty, so let's stay silent unless explicitly debugging + if (!logger.isDebugEnabled()) { + return; + } + // Unfortunately, calimero does not use package names for its loggers. So we cannot use "logService" and // we have to map all calimero-loggers to a single slf4j logger. From 43d16bfa5cafcd602c3d1ac0f8bd6341775525d2 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:55:59 +0100 Subject: [PATCH 26/52] set thing status to UNKNOWN until reached out to the device Signed-off-by: Simon Kaufmann --- .../org/openhab/binding/knx/handler/AbstractKNXThingHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index d548be95e3ceb..ca14ce65d3fa9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -166,6 +166,7 @@ protected void attachToClient() { DeviceConfig config = getConfigAs(DeviceConfig.class); try { if (config.getAddress() != null && !config.getAddress().isEmpty()) { + updateStatus(ThingStatus.UNKNOWN); address = new IndividualAddress(config.getAddress()); long pingInterval = config.getPingInterval().longValue(); From 93ffa91a118caeb69b51795d3cd4c5be7cc78afa Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:56:25 +0100 Subject: [PATCH 27/52] don't disconnect in case of a sending error Signed-off-by: Simon Kaufmann --- .../openhab/binding/knx/internal/client/AbstractKNXClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index dcb2a667a6cfb..449a774e83bc7 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -460,7 +460,6 @@ private void sendToKNX(ProcessCommunicationBase communicator, KNXNetworkLink lin } else { logger.warn("Value '{}' could not be sent to the KNX bus using datapoint '{}': {}. Giving up now.", type, datapoint, e.getLocalizedMessage()); - disconnect(e); throw e; } } From 58cb38559de6aaf2e362d7ee7bff6daae1c48f85 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:56:38 +0100 Subject: [PATCH 28/52] fix tabs in README Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 3037395cebf82..3901a400bad9a 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -204,9 +204,9 @@ Bridge knx:ip:bridge [ pingInterval=300, readInterval=3600 ] { - Type switch : demoSwitch "Light" [ switch="3/0/4+<3/0/5" ] + Type switch : demoSwitch "Light" [ switch="3/0/4+<3/0/5" ] Type rollershutter : demoRollershutter "Shade" [ upDown="4/3/50+4/3/51", stopMove="4/3/52+4/3/53", position="4/3/54+<4/3/55" ] - Type contact : demoContact "Door" [ ga="1.019:<5/1/2" ] + Type contact : demoContact "Door" [ ga="1.019:<5/1/2" ] Type number : demoTemperature "Temperature" [ ga="9.001:<5/0/0" ] Type dimmer : demoDimmer "Dimmer" [ switch="5/0/0+<5/0/1", position="5/0/2+<5/0/3", increaseDecrease="5/0/4" ] Type string : demoString "Message" [ ga="5/3/1" ] From c84a9da02c3ca9c478a85a1be05c3f56bab52e62 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:57:08 +0100 Subject: [PATCH 29/52] fixed message format pattern Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/client/DeviceInfoClientImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index 42c4bdb6c862f..8743eb3d77a5c 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -101,7 +101,7 @@ private void authorize(boolean authenticate, Destination destination) throws KNX public synchronized byte @Nullable [] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { - String task = MessageFormat.format("read device property {} at index {}", propertyId, interfaceObjectIndex); + String task = MessageFormat.format("read device property {0} at index {1}", propertyId, interfaceObjectIndex); return readFromManagementClient(task, timeout, address, destination -> { authorize(authenticate, destination); return managementClient.readProperty(destination, interfaceObjectIndex, propertyId, start, elements); From 565f9b6469cb81e47e184ce23aac8cf8244fda32 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:57:27 +0100 Subject: [PATCH 30/52] added missing @Override annotations Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/client/DeviceInfoClientImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index 8743eb3d77a5c..4bcc6428eb724 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -80,6 +80,7 @@ private void authorize(boolean authenticate, Destination destination) throws KNX } } + @Override public synchronized byte @Nullable [] readDeviceDescription(IndividualAddress address, int descType, boolean authenticate, long timeout) { String task = "read the device description"; @@ -89,6 +90,7 @@ private void authorize(boolean authenticate, Destination destination) throws KNX }); } + @Override public synchronized byte @Nullable [] readDeviceMemory(IndividualAddress address, int startAddress, int bytes, boolean authenticate, long timeout) { String task = MessageFormat.format("read {0} bytes at memory location {1}", bytes, startAddress); @@ -98,6 +100,7 @@ private void authorize(boolean authenticate, Destination destination) throws KNX }); } + @Override public synchronized byte @Nullable [] readDeviceProperties(IndividualAddress address, final int interfaceObjectIndex, final int propertyId, final int start, final int elements, boolean authenticate, long timeout) { @@ -108,6 +111,7 @@ private void authorize(boolean authenticate, Destination destination) throws KNX }); } + @Override public boolean isConnected() { return managementClient.isOpen(); } From c82cb43a3ba1b8e389e7646023c7db625689a3f6 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 15:57:57 +0100 Subject: [PATCH 31/52] drop flaky (and unused) memory reading Signed-off-by: Simon Kaufmann --- .../knx/internal/client/DeviceInspector.java | 59 +------------------ 1 file changed, 2 insertions(+), 57 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 1f66c1f5ff3af..36ff39d413cac 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -11,8 +11,8 @@ import static org.openhab.binding.knx.KNXBindingConstants.*; import static org.openhab.binding.knx.internal.handler.DeviceConstants.*; +import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -85,9 +85,7 @@ public Result readDeviceInfo() { Map properties = new HashMap<>(); properties.putAll(readDeviceDescription(address)); properties.putAll(readDeviceProperties(address)); - Set groupAddresses = readDeviceMemory(address); - - return new Result(properties, groupAddresses); + return new Result(properties, Collections.emptySet()); } } catch (Exception e) { logger.error("An exception occurred while fetching the device description for a device '{}' : {}", address, @@ -96,59 +94,6 @@ public Result readDeviceInfo() { return null; } - private Set readDeviceMemory(IndividualAddress address) throws InterruptedException { - Thread.sleep(OPERATION_INTERVAL); - byte[] tableaddress = getClient().readDeviceProperties(address, ADDRESS_TABLE_OBJECT, PID.TABLE_REFERENCE, 1, 1, - false, OPERATION_TIMEOUT); - // According to the KNX specs, devices should expose the PID.IO_LIST property in the DEVICE - // object, but it seems that a lot, if not all, devices do not do this. In this list we can find out - // what other kind of objects the device is exposing. Most devices do implement some set of objects, - // we will just go ahead and try to read them out irrespective of what is in the IO_LIST - - Set ret = new HashSet<>(); - if (tableaddress != null) { - Thread.sleep(OPERATION_INTERVAL); - byte[] elements = getClient().readDeviceMemory(address, toUnsigned(tableaddress), 1, false, - OPERATION_TIMEOUT); - if (elements != null) { - int numberOfElements = toUnsigned(elements); - logger.debug("The KNX device with address {} uses {} group addresses", address, numberOfElements - 1); - - byte[] addressData = null; - while (addressData == null) { - Thread.sleep(OPERATION_INTERVAL); - addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1, 2, false, - OPERATION_TIMEOUT); - if (addressData != null) { - IndividualAddress individualAddress = new IndividualAddress(addressData); - logger.debug("The KNX device with address {} its real reported individual address is {}", - address, individualAddress); - } - } - - for (int i = 1; i < numberOfElements; i++) { - addressData = null; - while (addressData == null) { - Thread.sleep(OPERATION_INTERVAL); - addressData = getClient().readDeviceMemory(address, toUnsigned(tableaddress) + 1 + i * 2, 2, - false, OPERATION_TIMEOUT); - if (addressData != null) { - GroupAddress groupAddress = new GroupAddress(addressData); - ret.add(groupAddress); - } - } - } - - for (GroupAddress anAddress : ret) { - logger.debug("The KNX device with address {} uses Group Address {}", address, anAddress); - } - } - } else { - logger.warn("The KNX device with address {} does not expose a Group Address table", address); - } - return ret; - } - private Map readDeviceProperties(IndividualAddress address) throws InterruptedException { Map ret = new HashMap<>(); Thread.sleep(OPERATION_INTERVAL); From b1c3a727b17b51f8ab45ba16ff5e7d3f12ded24d Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 16:33:42 +0100 Subject: [PATCH 32/52] fix NPE in case a device doesn't return a property Signed-off-by: Simon Kaufmann --- .../knx/internal/client/DeviceInspector.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 36ff39d413cac..89ec6844681ab 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -106,18 +106,22 @@ private Map readDeviceProperties(IndividualAddress address) thro String ManufacturerID = Manufacturer.getName(toUnsigned(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); Thread.sleep(OPERATION_INTERVAL); - String serialNo = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, - PID.SERIAL_NUMBER, 1, 1, false, OPERATION_TIMEOUT), ""); + String serialNo = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.SERIAL_NUMBER, 1, 1, + false, OPERATION_TIMEOUT), ""); Thread.sleep(OPERATION_INTERVAL); - String hardwareType = DataUnitBuilder.toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, - HARDWARE_TYPE, 1, 1, false, OPERATION_TIMEOUT), " "); + String hardwareType = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, HARDWARE_TYPE, 1, 1, + false, OPERATION_TIMEOUT), " "); Thread.sleep(OPERATION_INTERVAL); String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); ret.put(MANUFACTURER_NAME, ManufacturerID); - ret.put(MANUFACTURER_SERIAL_NO, serialNo); - ret.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); + if (serialNo != null) { + ret.put(MANUFACTURER_SERIAL_NO, serialNo); + } + if (hardwareType != null) { + ret.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); + } ret.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, ManufacturerID, hardwareType, firmwareRevision, serialNo); @@ -127,6 +131,10 @@ private Map readDeviceProperties(IndividualAddress address) thro return ret; } + private @Nullable String toHex(byte @Nullable [] input, String separator) { + return input == null ? null : DataUnitBuilder.toHex(input, separator); + } + private Map readDeviceDescription(IndividualAddress address) { Map ret = new HashMap<>(); byte[] data = getClient().readDeviceDescription(address, 0, false, OPERATION_TIMEOUT); From d511c896a35e3aa881962807d3882c45e35bb163 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 16:40:49 +0100 Subject: [PATCH 33/52] do reachable check quicker, separate from property reading Signed-off-by: Simon Kaufmann --- .../binding/knx/handler/AbstractKNXThingHandler.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index ca14ce65d3fa9..2b7abde6e9186 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -44,6 +44,7 @@ @NonNullByDefault public abstract class AbstractKNXThingHandler extends BaseThingHandler implements GroupAddressListener { + private static final int INITIAL_PING_DELAY = 5; private final Logger logger = LoggerFactory.getLogger(AbstractKNXThingHandler.class); private @Nullable IndividualAddress address; @@ -143,9 +144,10 @@ private void pollDeviceStatus() { if (!filledDescription && config.getFetch()) { Future descriptionJob = this.descriptionJob; if (descriptionJob == null || descriptionJob.isCancelled()) { - this.descriptionJob = getScheduler().submit(() -> { + long initialDelay = Math.round(config.getPingInterval().longValue() * random.nextFloat()); + this.descriptionJob = getScheduler().schedule(() -> { filledDescription = describeDevice(address); - }); + }, initialDelay, TimeUnit.SECONDS); } } } else { @@ -170,7 +172,7 @@ protected void attachToClient() { address = new IndividualAddress(config.getAddress()); long pingInterval = config.getPingInterval().longValue(); - long initialPingDelay = Math.round(pingInterval * random.nextFloat()); + long initialPingDelay = Math.round(INITIAL_PING_DELAY * random.nextFloat()); ScheduledFuture pollingJob = this.pollingJob; if ((pollingJob == null || pollingJob.isCancelled())) { From f313bb8ef6383cd73ad73fa0613fbd1db2e33367 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 16:43:00 +0100 Subject: [PATCH 34/52] excluded README from binary Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/build.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/build.properties b/addons/binding/org.openhab.binding.knx/build.properties index 4694c4517105d..57b8a2a38034e 100644 --- a/addons/binding/org.openhab.binding.knx/build.properties +++ b/addons/binding/org.openhab.binding.knx/build.properties @@ -7,6 +7,5 @@ bin.includes = META-INF/,\ lib/calimero-core-2.3.jar,\ lib/calimero-device-2.3.jar,\ lib/calimero-rxtx-2.3.jar,\ - about.html,\ - README.md + about.html From ef73790a1a32aac53adf7e9250e3cd0eae193515 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 16:45:03 +0100 Subject: [PATCH 35/52] renamed headlines: channels -> channel types Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 3901a400bad9a..5d31b7c769a31 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -62,7 +62,7 @@ The *serial* bridge accepts the following configuration parameters: Different kinds of channels are defined and can be used to group together Group Addresses. All channel types share two configuration parameters: *read*, an optional parameter to indicate if the 'readable' group addresses of that Channel should be read at startup (default: false), and *interval*, an optional parameter that defines an interval between attempts to read the status group address on the bus, in seconds. When defined and set to 0, the interval is ignored (default: 0) -#### Standard Channels +#### Standard Channel Types Standard channels are used most of the time. They are used in the common case where the physical state is owned by a decive within the KNX bus, e.g. by a switch actuator who "knows" whether the light is turned on or of or by a temperature sensor which reports the room temperature regularly. @@ -114,7 +114,7 @@ Standard channels are used most of the time. They are used in the common case wh | ga | Group address | 19.001 | -#### Control Channels +#### Control Channel Types In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. From 0f21fbcbde9d1a034527e90735895b17f17eafc9 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 16:47:42 +0100 Subject: [PATCH 36/52] lower-case channel type headlines Signed-off-by: Simon Kaufmann --- .../binding/org.openhab.binding.knx/README.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 5d31b7c769a31..afaa6e4c52203 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -66,14 +66,14 @@ Different kinds of channels are defined and can be used to group together Group Standard channels are used most of the time. They are used in the common case where the physical state is owned by a decive within the KNX bus, e.g. by a switch actuator who "knows" whether the light is turned on or of or by a temperature sensor which reports the room temperature regularly. -##### Switch +##### Channel Type "switch" | Parameter | Description | Default DPT | |-----------|-------------------------------------|-------------| | switch | Group address for the binary switch | 1.001 | -##### Dimmer +##### Channel Type "dimmer" | Parameter | Description | Default DPT | |------------------|----------------------------------------|-------------| @@ -81,7 +81,7 @@ Standard channels are used most of the time. They are used in the common case wh | position | Group address of the absolute position | 5.001 | | increaseDecrease | Group address for relative movement | 3.007 | -##### Rollershutter +##### Channel Type "rollershutter" | Parameter | Description | Default DPT | |-----------|-----------------------------------------|-------------| @@ -89,25 +89,25 @@ Standard channels are used most of the time. They are used in the common case wh | stopMove | Group address for stopping | 1.010 | | position | Group address for the relative position | 5.001 | -##### Contact +##### Channel Type "contact" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 1.009 | -##### Number +##### Channel Type "number" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 9.001 | -##### String +##### Channel Type "string" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 16.001 | -##### Datetime +##### Channel Type "datetime" | Parameter | Description | Default DPT | |-----------|---------------|-------------| @@ -118,14 +118,14 @@ Standard channels are used most of the time. They are used in the common case wh In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. -##### Switch-Control +##### Channel Type "switch-control" | Parameter | Description | Default DPT | |-----------|-------------------------------------|-------------| | switch | Group address for the binary switch | 1.001 | -##### Dimmer-Control +##### Channel Type "dimmer-control" | Parameter | Description | Default DPT | |------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-------------| @@ -134,7 +134,7 @@ In contrast to the standard channels above, the control channel types are used f | increaseDecrease | Group address for relative movement | 3.007 | | frequency | Increase/Decrease frequency in milliseconds in case the binding should handle that (0 if the KNX device sends the commands repeatedly itself) | 0 | -##### Rollershutter-Control +##### Channel Type "rollershutter-control" | Parameter | Description | Default DPT | |-----------|-----------------------------------------|-------------| @@ -142,25 +142,25 @@ In contrast to the standard channels above, the control channel types are used f | stopMove | Group address for stopping | 1.010 | | position | Group address for the relative position | 5.001 | -##### Contact-Control +##### Channel Type "contact-control" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 1.009 | -##### Number-Control +##### Channel Type "number-control" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 9.001 | -##### String-Control +##### Channel Type "string-control" | Parameter | Description | Default DPT | |-----------|---------------|-------------| | ga | Group address | 16.001 | -##### Datetime-Control +##### Channel Type "datetime-control" | Parameter | Description | Default DPT | |-----------|---------------|-------------| From d4c4070a46df1db1b69e17d2ce61f123bd5ba60e Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 17:01:53 +0100 Subject: [PATCH 37/52] clarified that control channels do not send read requests to the bus Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index afaa6e4c52203..ed0559a514e82 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -118,6 +118,8 @@ Standard channels are used most of the time. They are used in the common case wh In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. +As per the nature of this channels the state is not owned by any device on the KNX bus, there will be no read requests sent to the bus even if there are "read" symbols (i.e. `<`) configured for the channel. + ##### Channel Type "switch-control" | Parameter | Description | Default DPT | From e4ec9e89092a755f0ce236443e79f049e38a9b38 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Mon, 5 Mar 2018 17:11:52 +0100 Subject: [PATCH 38/52] moved the read request explanation down, into the notation section Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index ed0559a514e82..9116dd96c899e 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -118,8 +118,6 @@ Standard channels are used most of the time. They are used in the common case wh In contrast to the standard channels above, the control channel types are used for cases where the KNX bus does not own the physical state of a device. This could be the case if e.g. a lamp from another binding should be controlled by a KNX wall switch. -As per the nature of this channels the state is not owned by any device on the KNX bus, there will be no read requests sent to the bus even if there are "read" symbols (i.e. `<`) configured for the channel. - ##### Channel Type "switch-control" | Parameter | Description | Default DPT | @@ -177,6 +175,7 @@ As per the nature of this channels the state is not owned by any device on the K where parts in brackets `[]` denote optional information. The optional `<` sign tells whether the group address of the datapoint accepts read requests on the KNX bus (it does, if the sign is there). +With `*-control` channels, the state is not owned by any device on the KNX bus, therefore no read requests will be sent by the binding, i.e. `<` signs will be ignored for them. Each configuration parameter has a `mainGA` where commands are written to and optionally several `listeningGA`s. From f4f6329b7274a496c165500826221b66a0bec56e Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 17:26:01 +0100 Subject: [PATCH 39/52] run device ping and property feching serially in a single thread Signed-off-by: Simon Kaufmann --- .../binding/knx/handler/AbstractKNXThingHandler.java | 10 +++++++--- .../binding/knx/handler/KNXBridgeBaseThingHandler.java | 6 ++++++ .../knx/internal/handler/DeviceThingHandler.java | 6 +++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index 2b7abde6e9186..2c24a8e86ae1a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -62,6 +62,10 @@ protected final ScheduledExecutorService getScheduler() { return getBridgeHandler().getScheduler(); } + protected final ScheduledExecutorService getBackgroundScheduler() { + return getBridgeHandler().getBackgroundScheduler(); + } + protected final KNXBridgeBaseThingHandler getBridgeHandler() { Bridge bridge = getBridge(); if (bridge != null) { @@ -145,7 +149,7 @@ private void pollDeviceStatus() { Future descriptionJob = this.descriptionJob; if (descriptionJob == null || descriptionJob.isCancelled()) { long initialDelay = Math.round(config.getPingInterval().longValue() * random.nextFloat()); - this.descriptionJob = getScheduler().schedule(() -> { + this.descriptionJob = getBackgroundScheduler().schedule(() -> { filledDescription = describeDevice(address); }, initialDelay, TimeUnit.SECONDS); } @@ -177,8 +181,8 @@ protected void attachToClient() { ScheduledFuture pollingJob = this.pollingJob; if ((pollingJob == null || pollingJob.isCancelled())) { logger.debug("'{}' will be polled every {}s", getThing().getUID(), pingInterval); - this.pollingJob = getScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), initialPingDelay, - pingInterval, TimeUnit.SECONDS); + this.pollingJob = getBackgroundScheduler().scheduleWithFixedDelay(() -> pollDeviceStatus(), + initialPingDelay, pingInterval, TimeUnit.SECONDS); } } else { updateStatus(ThingStatus.ONLINE); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java index 73a6ab3893be2..9b835ef3adebf 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/KNXBridgeBaseThingHandler.java @@ -9,6 +9,7 @@ package org.openhab.binding.knx.handler; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import org.eclipse.jdt.annotation.NonNullByDefault; @@ -38,6 +39,7 @@ public abstract class KNXBridgeBaseThingHandler extends BaseBridgeHandler implem protected ConcurrentHashMap destinations = new ConcurrentHashMap<>(); private final ScheduledExecutorService knxScheduler = ThreadPoolManager.getScheduledPool("knx"); + private final ScheduledExecutorService backgroundScheduler = Executors.newSingleThreadScheduledExecutor(); public KNXBridgeBaseThingHandler(Bridge bridge) { super(bridge); @@ -59,6 +61,10 @@ public ScheduledExecutorService getScheduler() { return knxScheduler; } + public ScheduledExecutorService getBackgroundScheduler() { + return backgroundScheduler; + } + @Override public void updateStatus(ThingStatus status) { super.updateStatus(status); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index 52bcc7af41775..0ff2b32b3b966 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -164,12 +164,12 @@ private void scheduleReadJob(GroupAddress groupAddress, String dpt) { if (readInterval > 0) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { - future = getScheduler().scheduleWithFixedDelay(() -> readDatapoint(groupAddress, dpt), 0, readInterval, - TimeUnit.SECONDS); + future = getBackgroundScheduler().scheduleWithFixedDelay(() -> readDatapoint(groupAddress, dpt), 0, + readInterval, TimeUnit.SECONDS); readFutures.put(groupAddress, future); } } else { - getScheduler().submit(() -> readDatapoint(groupAddress, dpt)); + getBackgroundScheduler().submit(() -> readDatapoint(groupAddress, dpt)); } } From afa845ffd886e6fc74fc6609c73d0e8b13d55189 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 17:26:57 +0100 Subject: [PATCH 40/52] optimize (i.e. reduce) some log levels Signed-off-by: Simon Kaufmann --- .../internal/client/DeviceInfoClientImpl.java | 11 +-- .../knx/internal/client/DeviceInspector.java | 91 ++++++++++--------- 2 files changed, 50 insertions(+), 52 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index 4bcc6428eb724..e494b80ec5001 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -51,18 +51,15 @@ private interface ReadFunction { while ((System.nanoTime() - start) < TimeUnit.MILLISECONDS.toNanos(timeout)) { Destination destination = null; try { - logger.debug("Going to {} of {} ", task, address); + logger.trace("Going to {} of {} ", task, address); destination = managementClient.createDestination(address, true); byte[] result = function.apply(destination); - logger.debug("Finished to {} of {}, result: {}", task, address, result == null ? null : result.length); + logger.trace("Finished to {} of {}, result: {}", task, address, result == null ? null : result.length); return result; } catch (KNXException e) { - logger.error("Could not {} of {}: {}", task, address, e.getMessage()); - if (logger.isDebugEnabled()) { - logger.error("", e); - } + logger.debug("Could not {} of {}: {}", task, address, e.getMessage()); } catch (InterruptedException e) { - logger.debug("Interrupted to {}", task); + logger.trace("Interrupted to {}", task); return null; } finally { if (destination != null) { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java index 89ec6844681ab..e45feb6f7ae6a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInspector.java @@ -78,57 +78,58 @@ private DeviceInfoClient getClient() { @Nullable public Result readDeviceInfo() { - try { - if (getClient().isConnected()) { - logger.debug("Fetching device information for address {}", address); - - Map properties = new HashMap<>(); - properties.putAll(readDeviceDescription(address)); - properties.putAll(readDeviceProperties(address)); - return new Result(properties, Collections.emptySet()); - } - } catch (Exception e) { - logger.error("An exception occurred while fetching the device description for a device '{}' : {}", address, - e.getMessage(), e); + if (!getClient().isConnected()) { + return null; } - return null; + + logger.debug("Fetching device information for address {}", address); + Map properties = new HashMap<>(); + properties.putAll(readDeviceDescription(address)); + properties.putAll(readDeviceProperties(address)); + return new Result(properties, Collections.emptySet()); } - private Map readDeviceProperties(IndividualAddress address) throws InterruptedException { + private Map readDeviceProperties(IndividualAddress address) { Map ret = new HashMap<>(); - Thread.sleep(OPERATION_INTERVAL); - // check if there is a Device Object in the KNX device - byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, false, - OPERATION_TIMEOUT); - if ((elements == null ? 0 : toUnsigned(elements)) == 1) { - - Thread.sleep(OPERATION_INTERVAL); - String ManufacturerID = Manufacturer.getName(toUnsigned(getClient().readDeviceProperties(address, - DEVICE_OBJECT, PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); - Thread.sleep(OPERATION_INTERVAL); - String serialNo = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.SERIAL_NUMBER, 1, 1, - false, OPERATION_TIMEOUT), ""); - Thread.sleep(OPERATION_INTERVAL); - String hardwareType = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, HARDWARE_TYPE, 1, 1, - false, OPERATION_TIMEOUT), " "); + try { Thread.sleep(OPERATION_INTERVAL); - String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, - DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); - - ret.put(MANUFACTURER_NAME, ManufacturerID); - if (serialNo != null) { - ret.put(MANUFACTURER_SERIAL_NO, serialNo); + // check if there is a Device Object in the KNX device + byte[] elements = getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.OBJECT_TYPE, 0, 1, false, + OPERATION_TIMEOUT); + if ((elements == null ? 0 : toUnsigned(elements)) == 1) { + + Thread.sleep(OPERATION_INTERVAL); + String ManufacturerID = Manufacturer.getName(toUnsigned(getClient().readDeviceProperties(address, + DEVICE_OBJECT, PID.MANUFACTURER_ID, 1, 1, false, OPERATION_TIMEOUT))); + Thread.sleep(OPERATION_INTERVAL); + String serialNo = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, PID.SERIAL_NUMBER, 1, + 1, false, OPERATION_TIMEOUT), ""); + Thread.sleep(OPERATION_INTERVAL); + String hardwareType = toHex(getClient().readDeviceProperties(address, DEVICE_OBJECT, HARDWARE_TYPE, 1, + 1, false, OPERATION_TIMEOUT), " "); + Thread.sleep(OPERATION_INTERVAL); + String firmwareRevision = Integer.toString(toUnsigned(getClient().readDeviceProperties(address, + DEVICE_OBJECT, PID.FIRMWARE_REVISION, 1, 1, false, OPERATION_TIMEOUT))); + + ret.put(MANUFACTURER_NAME, ManufacturerID); + if (serialNo != null) { + ret.put(MANUFACTURER_SERIAL_NO, serialNo); + } + if (hardwareType != null) { + ret.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); + } + ret.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); + logger.debug("Identified device {} as a {}, type {}, revision {}, serial number {}", address, + ManufacturerID, hardwareType, firmwareRevision, serialNo); + } else { + logger.debug("The KNX device with address {} does not expose a Device Object", address); } - if (hardwareType != null) { - ret.put(MANUFACTURER_HARDWARE_TYPE, hardwareType); - } - ret.put(MANUFACTURER_FIRMWARE_REVISION, firmwareRevision); - logger.info("Identified device {} as a {}, type {}, revision {}, serial number {}", address, ManufacturerID, - hardwareType, firmwareRevision, serialNo); - } else { - logger.warn("The KNX device with address {} does not expose a Device Object", address); + } catch (InterruptedException e) { + logger.debug("Interrupted while fetching the device description for a device '{}' : {}", address, + e.getMessage()); } return ret; + } private @Nullable String toHex(byte @Nullable [] input, String separator) { @@ -144,11 +145,11 @@ private Map readDeviceDescription(IndividualAddress address) { ret.put(FIRMWARE_TYPE, Firmware.getName(dd.getFirmwareType())); ret.put(FIRMWARE_VERSION, Firmware.getName(dd.getFirmwareVersion())); ret.put(FIRMWARE_SUBVERSION, Firmware.getName(dd.getSubcode())); - logger.info("The device with address {} is of type {}, version {}, subversion {}", address, + logger.debug("The device with address {} is of type {}, version {}, subversion {}", address, Firmware.getName(dd.getFirmwareType()), Firmware.getName(dd.getFirmwareVersion()), Firmware.getName(dd.getSubcode())); } else { - logger.warn("The KNX device with address {} does not expose a Device Descriptor", address); + logger.debug("The KNX device with address {} does not expose a Device Descriptor", address); } return ret; } From e005ff430940ffc08385966146826f97ffc74de7 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 19:33:37 +0100 Subject: [PATCH 41/52] fix ISE when bridge goes offline Signed-off-by: Simon Kaufmann --- .../openhab/binding/knx/handler/AbstractKNXThingHandler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index 2c24a8e86ae1a..5031df46652f8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -205,7 +205,10 @@ protected void detachFromClient() { descriptionJob = null; } cancelReadFutures(); - getClient().unregisterGroupAddressListener(this); + KNXBridgeBaseThingHandler handler = (KNXBridgeBaseThingHandler) getBridge().getHandler(); + if (handler != null) { + handler.getClient().unregisterGroupAddressListener(this); + } } } From 507bc14f931104517431b1fe5ae5d568fa55cca5 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 19:37:36 +0100 Subject: [PATCH 42/52] relative -> absolute position Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index 9116dd96c899e..e52cf621a5370 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -87,7 +87,7 @@ Standard channels are used most of the time. They are used in the common case wh |-----------|-----------------------------------------|-------------| | upDown | Group address for relative movement | 1.008 | | stopMove | Group address for stopping | 1.010 | -| position | Group address for the relative position | 5.001 | +| position | Group address for the absolute position | 5.001 | ##### Channel Type "contact" @@ -140,7 +140,7 @@ In contrast to the standard channels above, the control channel types are used f |-----------|-----------------------------------------|-------------| | upDown | Group address for relative movement | 1.008 | | stopMove | Group address for stopping | 1.010 | -| position | Group address for the relative position | 5.001 | +| position | Group address for the absolute position | 5.001 | ##### Channel Type "contact-control" From cdb1f292b773d165b05bba5eb4e14b54ebafb82b Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 19:38:20 +0100 Subject: [PATCH 43/52] switch -> ga Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 6 +++--- .../openhab/binding/knx/internal/channel/TypeSwitch.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index e52cf621a5370..da86046c3181a 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -70,7 +70,7 @@ Standard channels are used most of the time. They are used in the common case wh | Parameter | Description | Default DPT | |-----------|-------------------------------------|-------------| -| switch | Group address for the binary switch | 1.001 | +| ga | Group address for the binary switch | 1.001 | ##### Channel Type "dimmer" @@ -205,7 +205,7 @@ Bridge knx:ip:bridge [ pingInterval=300, readInterval=3600 ] { - Type switch : demoSwitch "Light" [ switch="3/0/4+<3/0/5" ] + Type switch : demoSwitch "Light" [ ga="3/0/4+<3/0/5" ] Type rollershutter : demoRollershutter "Shade" [ upDown="4/3/50+4/3/51", stopMove="4/3/52+4/3/53", position="4/3/54+<4/3/55" ] Type contact : demoContact "Door" [ ga="1.019:<5/1/2" ] Type number : demoTemperature "Temperature" [ ga="9.001:<5/0/0" ] @@ -259,7 +259,7 @@ Bridge knx:serial:bridge [ autoReconnectPeriod=1 ] { Thing device generic { - Type switch-control : controlSwitch "Control Switch" [ switch="3/3/10+<3/3/11" ] + Type switch-control : controlSwitch "Control Switch" [ ga="3/3/10+<3/3/11" ] Type dimmer-control : controlDimmer "Control Dimmer" [ switch="3/3/50+3/3/48", position="3/3/46", increaseDecrease="3/3/49", frequency=300 ] Type rollershutter-control : controlRollershutter "Control Rollershutter" [ upDown="3/4/1+3/4/2", stopMove="3/4/3", position="3/4/4" ] Type number-control : controlNumber "Control Number" [ ga="1/2/2" ] diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java index 648b0cfd0ee23..601e618ba9236 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/TypeSwitch.java @@ -19,7 +19,7 @@ /** * switch channel type description - * + * * @author Simon Kaufmann - initial contribution and API. * */ @@ -32,7 +32,7 @@ class TypeSwitch extends KNXChannelType { @Override protected Set getAllGAKeys() { - return Collections.singleton(SWITCH_GA); + return Collections.singleton(GA); } @Override From fea2c798c7129eda4876a3f0f303291116d6d084 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Wed, 7 Mar 2018 23:41:11 +0100 Subject: [PATCH 44/52] switch -> ga (part 2) Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/binding/org.openhab.binding.knx/README.md b/addons/binding/org.openhab.binding.knx/README.md index da86046c3181a..d61c663449120 100644 --- a/addons/binding/org.openhab.binding.knx/README.md +++ b/addons/binding/org.openhab.binding.knx/README.md @@ -122,7 +122,7 @@ In contrast to the standard channels above, the control channel types are used f | Parameter | Description | Default DPT | |-----------|-------------------------------------|-------------| -| switch | Group address for the binary switch | 1.001 | +| ga | Group address for the binary switch | 1.001 | ##### Channel Type "dimmer-control" From 6b7c0de008d771751007f3a68c0cdfb724880f9f Mon Sep 17 00:00:00 2001 From: Helmut Lehmeyer Date: Thu, 8 Mar 2018 10:45:21 +0100 Subject: [PATCH 45/52] Added file description and specific mapping's for DTP: 5.004: Percent (8 Bit) 6.001: Percent (8 Bit) 9.007: Humidity --- .../knx/internal/dpt/KNXCoreTypeMapper.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index e9cd3415e6f95..5a560499a090d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -67,6 +67,16 @@ /** * This class provides type mapping between all openHAB core types and KNX data point types. * + * Each 'MainType' delivered from calimero, has a default mapping + * for all it's children to a openHAB Typeclass. + * All these 'MainType' mapping's are put into 'dptMainTypeMap'. + * + * Default 'MainType' mapping's we can override by a specific mapping. + * All specific mapping's are put into 'dptTypeMap'. + * + * If for a 'MainType' there is currently no specific mapping registered, + * you can find a commented example line, with it's correct 'DPTXlator' class. + * * @author Kai Kreuzer * @author Volker Daube * @author Jan N. Klug @@ -180,6 +190,7 @@ public KNXCoreTypeMapper() { dptMainTypeMap.put(5, DecimalType.class); /** Exceptions Types "8-Bit Unsigned Value", Main number 5 */ dptTypeMap.put(DPTXlator8BitUnsigned.DPT_SCALING.getID(), PercentType.class); + dptTypeMap.put(DPTXlator8BitUnsigned.DPT_PERCENT_U8.getID(), PercentType.class); /** * MainType: 6 @@ -189,6 +200,7 @@ public KNXCoreTypeMapper() { */ dptMainTypeMap.put(6, DecimalType.class); /** Exceptions Datapoint Types "8-Bit Signed Value", Main number 6 */ + dptTypeMap.put(DPTXlator8BitSigned.DPT_PERCENT_V8.getID(), PercentType.class); dptTypeMap.put(DPTXlator8BitSigned.DPT_STATUS_MODE3.getID(), StringType.class); /** @@ -207,7 +219,7 @@ public KNXCoreTypeMapper() { */ dptMainTypeMap.put(7, DecimalType.class); /** Exceptions Datapoint Types "2-Octet Unsigned Value", Main number 7 */ - // Example: dptTypeMap.put(DPTXlator2ByteUnsigned.DPT_VALUE_2_UCOUNT.getID(), DecimalType.class); + dptTypeMap.put(DPTXlator2ByteFloat.DPT_HUMIDITY.getID(), PercentType.class); /** * MainType: 9 @@ -938,4 +950,4 @@ private int getMainNumber(String dptID) { } return result; } -} \ No newline at end of file +} From c07158e9551148fc340d1d3781b08b1c80ba3b9a Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 8 Mar 2018 10:32:59 +0100 Subject: [PATCH 46/52] update to calimero 2.4 snapshot Signed-off-by: Simon Kaufmann --- .../org.openhab.binding.knx/.classpath | 6 +- .../META-INF/MANIFEST.MF | 6 +- .../org.openhab.binding.knx/build.properties | 8 +- .../lib/calimero-core-2.3.jar | Bin 463335 -> 0 bytes .../lib/calimero-core-2.4-e9975c01.jar | Bin 0 -> 663971 bytes .../lib/calimero-device-2.3.jar | Bin 60307 -> 0 bytes .../lib/calimero-device-2.4-a03cd243.jar | Bin 0 -> 56875 bytes .../lib/calimero-rxtx-2.3.jar | Bin 11920 -> 0 bytes .../lib/calimero-rxtx-2.4-883497d1.jar | Bin 0 -> 3467 bytes .../openhab/binding/knx/client/KNXClient.java | 2 +- .../knx/handler/AbstractKNXThingHandler.java | 4 +- .../knx/internal/channel/AbstractSpec.java | 2 +- .../knx/internal/channel/KNXChannelType.java | 2 +- .../knx/internal/channel/WriteSpecImpl.java | 2 +- .../internal/client/AbstractKNXClient.java | 19 +---- .../client/CustomKNXNetworkLinkIP.java | 5 +- .../internal/client/DeviceInfoClientImpl.java | 2 +- .../binding/knx/internal/client/IPClient.java | 13 ++-- .../knx/internal/client/NoOpClient.java | 2 +- .../knx/internal/client/SerialClient.java | 2 +- .../knx/internal/dpt/KNXCoreTypeMapper.java | 6 +- .../internal/handler/DeviceThingHandler.java | 4 +- .../handler/IPBridgeThingHandler.java | 7 +- .../knx/internal/logging/LogAdapter.java | 72 ------------------ 24 files changed, 41 insertions(+), 123 deletions(-) delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-core-2.4-e9975c01.jar delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-device-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-device-2.4-a03cd243.jar delete mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar create mode 100644 addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.4-883497d1.jar delete mode 100644 addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java diff --git a/addons/binding/org.openhab.binding.knx/.classpath b/addons/binding/org.openhab.binding.knx/.classpath index bdd4d348b8599..29fe48b776cfc 100644 --- a/addons/binding/org.openhab.binding.knx/.classpath +++ b/addons/binding/org.openhab.binding.knx/.classpath @@ -3,8 +3,8 @@ - - - + + + diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 6841ad1236882..0a8698bf3a3af 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -31,7 +31,7 @@ Service-Component: OSGI-INF/*.xml Export-Package: org.openhab.binding.knx, org.openhab.binding.knx.client, org.openhab.binding.knx.handler -Bundle-ClassPath: lib/calimero-rxtx-2.3.jar, - lib/calimero-core-2.3.jar, - lib/calimero-device-2.3.jar, +Bundle-ClassPath: lib/calimero-core-2.4-e9975c01.jar, + lib/calimero-device-2.4-a03cd243.jar, + lib/calimero-rxtx-2.4-883497d1.jar, . diff --git a/addons/binding/org.openhab.binding.knx/build.properties b/addons/binding/org.openhab.binding.knx/build.properties index 57b8a2a38034e..13033500b3b92 100644 --- a/addons/binding/org.openhab.binding.knx/build.properties +++ b/addons/binding/org.openhab.binding.knx/build.properties @@ -4,8 +4,8 @@ bin.includes = META-INF/,\ .,\ OSGI-INF/,\ ESH-INF/,\ - lib/calimero-core-2.3.jar,\ - lib/calimero-device-2.3.jar,\ - lib/calimero-rxtx-2.3.jar,\ - about.html + about.html,\ + lib/calimero-core-2.4-e9975c01.jar,\ + lib/calimero-device-2.4-a03cd243.jar,\ + lib/calimero-rxtx-2.4-883497d1.jar diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-core-2.3.jar deleted file mode 100644 index 35fbc1d55e6db7176090bd686c8ae479c1e47ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463335 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%0Ar9(oghzs6JztbeW1T9&G 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�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

IyGZ}7aVOeJ(sl-7n|jJoX%08 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%0DwzzUX-$*(@g7}eO{W=i{BR%^S(F5~ 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

Zo&_idQS{{ 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⪻eIGONkTgwx<0(Ui+1|zdgQ5Re|f;P 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 diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-device-2.4-a03cd243.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-device-2.4-a03cd243.jar new file mode 100644 index 0000000000000000000000000000000000000000..aeabd7b7f6817a38d682bb99673fee04ee0b4367 GIT binary patch literal 56875 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

W2<_pD9bTa;aht4n`tF+A$9#*}}+}n1+dJ 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 literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.3.jar deleted file mode 100644 index fd2e6f3f9d0a590b058edb1939859b8d1d543a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11920 zcmbVy1#}!slC7B00*jd$EoNrPVy2eG%*<#pGqWtPn3z%f5m6GLm5>#sm;b4T3Iz4@*#4Uu z>hEeY0*xji!xmdFgZ%Pix^fL7Nm&wl9dtWncy8YVkW~5{ zR8aQwvK`C3ugNHg|DbY3nB~fl;r+`GTqQS3rg2$}S{vc*{J5R7p)pk>!>mPJok&eD z$j0emOk-<#DM+YY70;XapFa2fJby*?NAQ1-3i9Vw2S;a9Bdh-k{ogCW{iUSu=wSUn zXrld1(@@{S)Y8cAe=@=OPbT(8cBc9k|JyqvEg>W#t0+R};Np;>Wof@M81t6?h^F{t zP!hIRaZlHD!da&rFTErUkRYVwdP0xJ2@4VM2?oyJ?db4oc836swY#fM7}Ee@n3<`R z>j>Y+HukKu(y3lvYONh3yLU>W?J$zNsc9(t!RFX*g56MU*<{DswmCYm0{J|ZP%#eU zzD^hBVQPI6bd z;O)|PdFsO1{QVv=i7k#=>OIoh*wEAW?Qy#NaiQMfZgqmMgSlTvxy3Vs&l1bs%Tb`? z<$40t3s7mke?o(E)=c!oY{6L-XUBnq@hsLFm#_}Q`S2~LAp4s8ZXj!|?fLSw<^Ab0!!tP|9Crr#UU^7*xydb!O;15_i8RKr#x9`>;fLDfye9W( z23x%bY!U44a;ZkWrt0+DO}n;L^%W(3mc^RhW3`!u3hLZfO~#I7{QJ6*`mf!{peO0c zWz?=M6=p4@&0OEN))THD6)90aEwMfAO4Tsv}$+W^-B3`0H4;9M{ue(&yJA{UB;@TmeU)!KZ+if!u9#V&P z3#_&3v2@g))#{v55xe1VVewx~8nw#mf_Jq+o?nKGVGc03}V2kY4r zmUb&Fw`}j9-f?}|GeBy{t)bC=3l~{-3oTG3NlwMQ+Zmk2Lg6LJD8P@CyNskVlfyi; zpXQNbp$n9x`Mf;c2G!{6ILK;6fa@89y($17$b|I@*NWC=eh@uW1Ae8sY=Bgw>RR@cwvyPS8=BGww_~oXH)HI0Uq2Wvq)I9nA@5;x6k$+o zr=nV6;xpKxT3fF7uRPw)UHTHafUM*E#J!gy*e(2}rc#Ly$vU4n7}2<|UaD;50DCwW z+>nM5F8)g0wR?y-fokE0UedS47rlgo-A2(E?s9ewZm8d240Aw3yK7h>0#yTskqwrnDe91q+N^|BtssD z1Cqo&+>0%b*q$uZ40@B&A7oW;!!Mm7$?$28PF8nK-d?c)r!h~xZPh)d2S!5|~U81D9omCO5@WAl2VbHGJ>auQ+<+7nG0JE1_x0a|R_AV%fdFQyJK z7;Uvz8?(R-3`U;H8j!ba@=^KVN{GZt&g7qj`SiL5ckrPp~34#tRfV; zH<|)zHvC!|Sc;N8H&6f_``!5P%or%s(8Z1w?#^b(OquI0Hl@KBm2+G?M{H*`3mji* zSaqXxVKmoSyg#-x1D6;5RNm2r9xqWqedQsYHWP%R98ZbVzeX#qnKnwTl9vMrw*iYn zZ+mVqBKBi({UJG-?~yWeZQC9^p(XIJ}xJs?&5(Mh^9j zwOw4{ge@lwUBI66F+>*%eugui(kesBrv%5B_VzS!lY|q9hGA`)_EaQDcbQ0v~XzI0M5eLk$T%S22m;{eyP;Y%z$uLMiZ{Nz#VOO9&63w~-6%~F@E zdHDl1oT;v6Xoy}T6fb1^*=m*=(yT}$9SZhq#eQ8!lpfCaajD{-CIqc)n8byRa|}mS z^BsO3ei2@x8EqyT!UJYOR82#j$}KAS?1gB4s8_p}T@n7Xm|MchqMCQAD}OL>!CQ4=~g@c`wl<%Eb8)^l)E&jxP6y{KAp1KSK)!mgp$tmv7Rt z(~}(8u|Hx75@v%1qI*(}l#-tNeaME;{}h%vP(#k6(+_(L6b}J|AGnH2WZ%k;(2e4g#Jz;-<*3rycj`kY1cM(8 zdMHnuX$^ogm0}V&Re{pGi}gdY_CV-tt|h9ygwuTUCCn$I@B`n_hsDhf>kB+OOGgu_ z7w6TS_T}3$6Wc?q7wv1Z+=ATW-}k7OX^eHfT_p)h)s*$4PjZyYCLIPIoCY8jQbr};3Bw39T zbkhBtR>HK$Rj2{Yn63YH&rHHgXi1t%h(ZsQJSAgCPFcpJf}fTcp!i1eA)8rF5`f-R zYg=#Qur!0xh?+PTFE$Qbk*+a_BS?D}^)hk}6a)K`zO-LzqA;baIDMQ}Dq1A1<>t)m z+n#}2|*CDR}jb;XnYpqHm=LOo{0uD8ao)xKwrjbmZWh_%7A`J3M*GFQMW|79ac@rO1V zO1`A&F+;8V)ADEnf`=wfeoG^*(n?T-?rwLT&FF235MESSIfU?MlD9Wr%+_&ljv;RX z|6TLtgd{y*moO3|BbQR&6mXK9_iWhP;TT|rMwdi1VJXTtX@&4RivrH7y)Auc0vI_7 z^%aFWVkKmxn+wl;`aq5MHJ8U$IISftiJ@@egJnUWLhr6G0jYgHIA1@RO|eH2Lq z2|g2c7?vY>FlNAA9Dm3#3~li-f)v}A7z@Pq2*J{b6rzvP^#4AM!f5%l#8K^3f_^mI zn+Hx#0AbgBK%<}b`W3k|ktKENuqho0)ti{rDUcrpk6V!$la+qzwu-2Ndm;L;;~wul#b9OBq+m5Cfr$m`)4-%N-VXX15w$R!e<}ey=^4%f1g08F9T=BLX zp3~y^t*(Ablf%NUq45R_7(wjxa1dpx4c?y4jdCmr!r)B`@pT~}5&cYHF*tT7tUPkj zM!A>}Zy*BpViZp*C2EY!f>9X-UxAQ;G(IDTk2NsVM=z`%$dH871{VaJKvb|J@gEX2 zYu$7>YK9n6UWI=aLtn)gaUg7wvX?R0so)Ur@`#KD97xyf9ee|SUUu=&GnltwVaST! zkeaGrADHvQbG=Xn^EZ>_;(@0gY#Pg55Ug3e^Hdajc;>n;dbfbP()$31}`#2l1b$U9cQmEnTY(E!5MNc#Vi?DtuCL1p2nn8wStT z7*uF2!I?=!5c)y$>78_ERz3Su{0HmNeRlD|H)9iW^Uz~08A6l@PvBl4$>sOCip<7X zatu-l*@8_As1Tx!#*1li0tSRQlFMXXP8iQ)dkAq=As~iiP zA8{m$i8cm&0;+ebZ1+p(1(W-e@lz!7`1!1C^@u@D>qBXYwX$zQJq-aKubL?hlbhro znJPEb;M;h_T=_b@>-FF%C2=Y-we%E0+?3x=TH7VkJ`Lq(606%?@;pitzsDf?w)z{i z8@MlD^WjMi`#EeMNYA1BZ3B2`=jSr3170;V$;HFDe4+I}+Iji8QD=6Q7`V$|(@?{} zN{t%ZO!2-6tCRS{a0cVV@F4D^ah^dN5tM?sf9xgEGcFM-u#ME!?8MB?(jhkKGed%X zF}-$Mvf^>KytMiH?Lezh zDoL(TK4O+ch>f&0o`n>lP{q-$8WoM{u>K%R)(x#eTeAj|OTmtKs1_^hk^K7;;HKAE z2#w-8uJo+VrGKuOp`fUMvjlr*Ovhay$b9K)@A+*nO&SF&oi2yr=D{HxBG{|cu}{>P zq2;BS+@R~lUrmRVLkT}qSnx$Qh}rM%ypaGgNc}lw_khZ+BW-|DF8PR{2E8(GrC0g| z9R4MhD;ndJi)g4^deX^BJ2m!#BKPUKG~TVjcwk78c7()e1d8TT?7S{$`OKguiM-fL zO}PL{Ph`rt&#-{o*yuIL5kfDz$GuVo$rS#^aa=q!elw1pHpfbyIEQ^pCV`nO9bZkR zw2&JSQt&%$*faO)O)kfl-{MAQ9}xN(yM~0)?O2SvX#DdvgTp*R87kjF@3C*suqP9j z@16h#+-_}g(8Tl))Y56ncZ2o1x@j71Er(#yNQlr4RF2Cl9?r-bAg6;RGg4*910ad# zq0QUXpq2eLVlotZ)cJg5<6gvpJU9Riv-wljofU{UV-WzZszAEaAslI9%5Al?90^(K zP@0w*x+0XCEL=ARI8R_}DT|yWHYM(J&{ggo-p9EklU|>Kr|akeJ)I0e$fE88k<(0j ztJSbU#>sEaoUIB=9ZZpQNI(SW^TO{1+haEM4)FE32c+N+IPDoG_bsh^F}L!7t18V` zK`T)oLBEV-&1^)KNTqLji1ag}ts?1}@nn#cL{WT9^#}`}Ll}!Ia+jfyW5YE$S$-I} z&BLu;S^^kKzk)N?;@ZT=C9jjje7oy8-LoiB@-uC!UJ-TM!)5WL& zF#P#XL<_CX)@|POS{6=jd34u{>k&lv;Di0u3~p?f)hkU1f*9AE0t6Dps5*{Jx*8u8 z6VNPHE!=PI<+%jFckDDUcMHy2uz=pFw9XE-Q(_WIEzuO6w4P$Rg3vfH;E6Be$S=wJ z+FN!V+>JXT3umTIUt)IOtxV_#RP%zD7RUJ_PG4`%wjFMkWWVT>-1)a$4eV;^c@M9ZLOH=I4}U-Ip3uQavc%kjzW*=w9$O+}uan_f=sjxDZ*w|`(8 zcyGj7pEzBR+t#!X-tCYL$z1XXKqPCpJ9c2o`r)+$&KSs*;qk)KkacFo8(zd+`V4wH zj=%go<-m(M0XKDNbd}>>Tr(9u$XlaJel6#WcrDJ2z}D

z($)3uEyz;3L-iwijpS z)FXWP&yfo?>Tq-C?r3ilR1R2o8m7V7ehVcd{2+au(Y(7w-;pS2o-J!Yaclk5!-1nI zWik;1yFGK%+7uR#4i9=)6_JgYv$yBw&FYirBLq#pNXX{Q(22DZ3-j<|2VeM>V6V2u z_VvMC7`P*WIL-p^8V`ZlWRo@T1~`fiP+tFC&x4x>YnBJ$<#bx@*vaO#+9OXIv%i(q z$>~Gb0j>=GsRj2dQxgdOsDlSzD$+9}0Z)cOLW|}lEgw7~_jK&#$AiwEQ+Qb}-1k@C zaeG0Os{R9FQ|#oF!Bvlp$-U^woD0YoXr6ByPp$*}BoHb36F> z!){=;dn3iu*|BcqMIf*PDpnzIbJ`G3uUc20`QNiYvN)1mTy>ljr$!*s=7kN z7mPGb8%_=KWGA)0`6++8hNsN4HcK2e$$)+W$uk}&m6>f8a2#cMVUDs@C_>4-{ z#|0s{=;0x|ycXxdfVi8JQ38_S9mMPEUSEqqzZ1LL%tUTz8dj2LK9R_aEKV5H99S;k zec1fAQsEuk5UOJup%u)J*DzDpNOxQ^u0@E)wIk{yw)rHC6DUZdkkaomv1Dl5yYB zFnL}S11=Bwkn{8HQ`l1!JKKg0+b)K233hBLoFG$!v-6N?<^eZ@t=(MJD|U1=-3^h{ z-P;3-vLd%t8HJl5;dXL9hkn4Fid!-+{W@_5srGvY6#Lpvk@ws6$V+3gUk)iM^fV^& z>{KuGwTZ7*HJFYQhH_b1>^MmSF!Wp8`3Nkf$6Y_G+f0f724PP@EZnzm+x*rs-YDK? zE>AIQhVMJOq9WGg3E_i>>~jOL40km?&)HkvPp&q4Qw%064SRW&N%7JLw^LKQCuc#O z17n6T>FYHr#e$1pfvA9b_!g;xJ6MVMhS}E@vd4u zl92)^?5WdU5nS<{o0>z<`SE9vI#l2hlC0d>q})t*%A6<8=6|S7>4-PrvqkclrMu6v zP150?vW{}97GfHG+@^p5mSc*usYkvS=Z>;$4Xe0$^ulasQ>%p-<-9A=O ziCy`84F7?LMs9DDjHzR5ut>@M>4aO$Evjbl>2`kZqe_MCLO-!Teg2HXFbkK)SflX5 z++OoBoAD}bf)D>y9i^?*+KADZ9A`nMeu#mp{Ne^O)fRId@a^K8!%Sk;ne!UMqRVd!jFNx-j>s40{;tTrA*_ zRAeAfb&QX1Z5_itZ|4}^xlsOWQ(PAZ&q%Jhi0?|jS8F>t1#!lbo1tlNgrPU9cC)2V z!P>GQes%6_RNwrjr7N})LsBe2Q@PrlA~Zs+uxMZeL26H%_!CYBGO=6cD+iKz(>swp zQ5yr&Lst^PLl9?0wS$m`zyFXUrRK4V2*|ZssjYh62ts#X%Yta;Q0B5capa97~HaY+O)-CP-XN&Q(i-U^*K;Oo} z$d1m?Lf_s#Le<;_#|X`<0#t1 z+7!o0yDSbEFmOr#7+HNr-sl>eRz$)*W){iVe=f;B9@as=`P}*t9)N#wAN(OR;R46m zyLT+A=}`iXFX4h2dSZZqcyr%Y%lD&!i$b@Q?MW}JZR@D<1GrVxX3_^Qv>s{@yLW!) zb=n@Dw$)eS9*|ryJ>?|R#Yi*upMMd|5$)91fJ{}Ja)6jui}Z{geEA|?<50)KAD02* z*i2hR=bpw{ex(tm;FLi)Fg;7D!(wXd>G*x!vAYaj^)Tp6i+D0+l=I9>o0+NfI5{O< zW4efCWHf%%fXp0yXstGLhSQUWbdKVSc(4^Jm;2{Du*#89bC5Ch)ybzHCD3D7D&&$Z zaf7M(W=f>BEC^(I<0QngbM+?fVk2;PHV9ftsw0tK7-hQ^W@&uOsr@8CPO37wiPb>V z`BUXrTMIbB$ksdwiV|=$(&;7v=Hql4ST~8e66ZF4&4(NVQ5f}_Usg5RN77S|=*{zk z0?IVR-4z+Xk;Y0Rmz9~)35R#O4$U%!v(C&j$bjqz-_a3O@v1UeuESjGC9?V-$kO#F zX2{|#u{)#lcKYm-joIAzow>Tr{4mSn*x4g<C|>P)HUiiR1_k+r^E_1ZAIDN8U7Ej$5;T2A2f+DWnMw(e#<}(}CZwC9-sGB_ z!i-P~*9uvEH*`_%mrw$Dz_X1!z_)SC|8ymF-V;iM!@5wbPY{2v=;e24!wyTqy8wV#Vy4lLlla5tPXdRJNZskwB2DbFd$158r2yToMg=s&20`U3b@t~mHvxjYcUEGKfnXIQVUm1xHhd__grP#5Mg zrghnQ=V!&y!%`oUZv{sXRq5BE-Qe&CE*3b{=_!P&u|E#c38%iXNY*?B6lg$#s!-0U zI1$i4wPtg)Zf)ra2D&5eFd>J}M#>ZKB4uS_k)=3?16OW*_4#FKMk6 zDn+OU`ZbD){Jx%L*Kuk=`)mqwE{Of4Kf4GQFn znGViUw2&XUm>`xl~djz0+>+4!Y>LyE1f0 z%W_baB|V=O$`ogXy{A0FVMFg;!tY?<%yVT+^%}F?l<4j53-is=hiwgkctzPoTG&oG zuplj_O2Jl7Q*}GHhh7)$4kD9mqVClP1-AGR{m6vs{IU%bg85vZCUVaL8d|cJ=QfId zKpioLk)8AbMNGeWd7%0GEaYi^b+EGzxSMlrYYQOtV?@MEfP7ML%}=yUl)yi>l_?~6&=q)vQ@NdHPmHEA;YL0%7ZvgW@C-3%R5*?)-DucQf70s~%8#x`XW1gtFg~_a zwy?xQaD%@T!Bp!Q#RmPLSxN9_cUud;=Fv4n`RooN<2PbKkOjSSEYW_LAkwXi2)&>h zSi-%4l=u-g$sA@T0}o2K9qF;uHFImNNqftw8RCi4tKh*yOd|yGDxcjRrtH4DLoUyC zokrtBIU0$qK73th-E8elrJp0(H*2|c)vm{ZsYSdpJ)!zn)a9po)hfm(8anofv1br) zn&`&Pq}0AZ>%s=|c$M_>4Q6s={my^~qPKccg|0pw#P@Q&V>p%baJNzGvW?iALYP>6 zEy~ZB49Wt_J-dipE{$!RKe~G0{2OaI@6}VU5o7Mi>9|4*v!9#dqUCM^X*~(qowlx; zYS_m0zTG8Kmk_S#!kzy3u4i1-u~|A9r0hBO@CC{k3DIST|4K{-O=~P>GinE>B1NE< zerLBgX|GA2UUBC~Amk;3ry>#6(WUEoTE6%81DE)F&*g%sKReBr-mi_HLX!7ma_?lr zf?7(P5smr?wL;x(SO0OyWMs<8+H{ zG4P^`9Y)yTWQFWsurc~~d`-GQq)#27Y={DT#3cz$fZ6hpY zWmCWs6>p(O-ZaT7gPPsOB5lQ62xg-vXB!kzvY@lH22hxL zU%MnugO7%}-Aj4gyB!Pv+MjBSl<816eRgef>S;fuHpZ4sY2By>%35!5zy9&WPxb&1 zADxsD$K%$rI(_QeJ4O~q`P`Jumu)yU@R@6(&S&Znnp3N}I0L(@jpYe+X^>HPUqyl= zl0EFIn45>vtOn#3^jpt^5ewQ0e{gb;<|LjjxrmX>%8v?3eKQS-4yz<38&dPCLOm`+ zAiLvTl#jf6%zEits1|y#lQQEhdHdiiCo|Q&=Pgqf`z@;9VaCiUDw+Jiz#f~oA|N%Z zOoT>Z(yOYW0}_|STM5fSw-%z)gMBsuO^^o<2I@(qjz)JJJ{cgTk-q%ji0TM zf(&x|j*H^~r)0#?l0|;gqCC^;QD{B`V+r*iHL-H{a(DE+w~_H&VDn!+QM|WKDy#xF z!jeX_ZDTLKO#40^1AbRDHvj5|N!D8yU8*(R+~8H>M`fc_1&DYI_Jxf7NixSr!%e4I{>3+$O5HD4_kfD(p+y0CoOQT>TA)~^;pu$jF%f!&Y#Gq*71h2rr#K5vmB}Gd$J~~mu zI?cQ%Nk2?adm;T@W_)5!YJz5nLS|Y@c64Y|hIV*gl7?zXT1uJ@SVE}J;VYFSRpU=; zCM1-(j4P1kPrvPdp7K(_AgG{!@G$>A0{mjC{vk*}rvkrPzwuUonfD^ouq6hx{@k0{*AbKRBfS+42{Q z^e;>4zghk{!2KNC{xifcR_R|5-v0^WpB&SF&ED_J%74vX(@&&-X74x7=^wuQmH*!h z$gkz+pOWvph5N6G_-8o(@a4ZPMt=|U?@z?93iOBk$}uO|Z_fQ$kN(Qh-;IA&q`!=f z|GV+OuTTFO@K=TU3$XZq2l!|Ff7YwN?!>Q(_4`Zzt782r`M&r67x;hFufN}|-(SFA s1IV9}?>kQU-%|STvhuG%{OaYe;Y3~v9O4%s{Lf<=6bPu8>esLT2U$5wNB{r; diff --git a/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.4-883497d1.jar b/addons/binding/org.openhab.binding.knx/lib/calimero-rxtx-2.4-883497d1.jar new file mode 100644 index 0000000000000000000000000000000000000000..6d88b32b7f41548d9f1788e12a9121c16e9b5a4d GIT binary patch literal 3467 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 YO@HHkQ$u=&qc|hw8m5FXEJttu0(U08bN~PV literal 0 HcmV?d00001 diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java index 33b395353894a..534f2d94aee8d 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/client/KNXClient.java @@ -13,8 +13,8 @@ import org.openhab.binding.knx.handler.GroupAddressListener; import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.datapoint.Datapoint; -import tuwien.auto.calimero.exception.KNXException; /** * Client for communicating with the KNX bus. diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java index 5031df46652f8..4dbd89d6f22a8 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/handler/AbstractKNXThingHandler.java @@ -32,8 +32,8 @@ import org.slf4j.LoggerFactory; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.KNXException; +import tuwien.auto.calimero.KNXFormatException; /** * Base class for KNX thing handlers. diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java index 103e8f1c63b19..2fc91c9da987a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/AbstractSpec.java @@ -14,7 +14,7 @@ import org.openhab.binding.knx.client.OutboundSpec; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.KNXFormatException; /** * Base class for telegram meta-data diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java index 730c3307690e3..76ed1a3cd4d66 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/KNXChannelType.java @@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.KNXFormatException; /** * Meta-data abstraction for the KNX channel configurations. diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java index b06d658e05d46..0c5e62d824fda 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java @@ -13,7 +13,7 @@ import org.openhab.binding.knx.client.OutboundSpec; import tuwien.auto.calimero.GroupAddress; -import tuwien.auto.calimero.exception.KNXFormatException; +import tuwien.auto.calimero.KNXFormatException; /** * Command meta-data diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index 449a774e83bc7..f5ef31bf47a34 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -29,7 +29,6 @@ import org.openhab.binding.knx.client.StatusUpdateCallback; import org.openhab.binding.knx.handler.GroupAddressListener; import org.openhab.binding.knx.internal.dpt.KNXCoreTypeMapper; -import org.openhab.binding.knx.internal.logging.LogAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,13 +37,12 @@ import tuwien.auto.calimero.FrameEvent; import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.datapoint.CommandDP; import tuwien.auto.calimero.datapoint.Datapoint; import tuwien.auto.calimero.device.ProcessCommunicationResponder; -import tuwien.auto.calimero.exception.KNXException; import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.NetworkLinkListener; -import tuwien.auto.calimero.log.LogManager; import tuwien.auto.calimero.mgmt.Destination; import tuwien.auto.calimero.mgmt.ManagementClient; import tuwien.auto.calimero.mgmt.ManagementClientImpl; @@ -54,7 +52,7 @@ import tuwien.auto.calimero.process.ProcessCommunicator; import tuwien.auto.calimero.process.ProcessCommunicatorImpl; import tuwien.auto.calimero.process.ProcessEvent; -import tuwien.auto.calimero.process.ProcessListenerEx; +import tuwien.auto.calimero.process.ProcessListener; /** * KNX Client which encapsulates the communication with the KNX bus via the calimero libary. @@ -68,7 +66,6 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien private static final int MAX_SEND_ATTEMPTS = 2; private final Logger logger = LoggerFactory.getLogger(AbstractKNXClient.class); - private final LogAdapter logAdapter = new LogAdapter(); private final KNXTypeMapper typeHelper = new KNXCoreTypeMapper(); private final ThingUID thingUID; @@ -97,7 +94,7 @@ private interface ListenerNotification { } @NonNullByDefault({}) - private final ProcessListenerEx processListener = new ProcessListenerEx() { + private final ProcessListener processListener = new ProcessListener() { @Override public void detached(DetachEvent e) { @@ -138,7 +135,6 @@ public AbstractKNXClient(int autoReconnectPeriod, ThingUID thingUID, int respons } public void initialize() { - registerLogAdapter(); if (!scheduleReconnectJob()) { connect(); } @@ -161,14 +157,6 @@ private void cancelReconnectJob(boolean kill) { } } - private void registerLogAdapter() { - LogManager.getManager().addWriter(null, logAdapter); - } - - private void unregisterLogAdapter() { - LogManager.getManager().removeWriter(null, logAdapter); - } - protected abstract KNXNetworkLink establishConnection() throws KNXException, InterruptedException; private synchronized boolean connectIfNotAutomatic() { @@ -309,7 +297,6 @@ private void readNextQueuedDatapoint() { public void dispose() { cancelReconnectJob(true); disconnect(null); - unregisterLogAdapter(); } @Override diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java index 96f6ccbcfa3b7..e10997dd2b0ea 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/CustomKNXNetworkLinkIP.java @@ -8,7 +8,7 @@ */ package org.openhab.binding.knx.internal.client; -import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.knxnetip.KNXnetIPConnection; import tuwien.auto.calimero.link.KNXNetworkLinkIP; import tuwien.auto.calimero.link.medium.KNXMediumSettings; @@ -22,6 +22,9 @@ */ public class CustomKNXNetworkLinkIP extends KNXNetworkLinkIP { + public static final int TUNNELING = KNXNetworkLinkIP.TUNNELING; + public static final int ROUTING = KNXNetworkLinkIP.ROUTING; + CustomKNXNetworkLinkIP(final int serviceMode, KNXnetIPConnection conn, KNXMediumSettings settings) throws KNXException, InterruptedException { super(serviceMode, conn, settings); diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java index e494b80ec5001..f84e1ccbe19a2 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/DeviceInfoClientImpl.java @@ -19,7 +19,7 @@ import org.slf4j.LoggerFactory; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.mgmt.Destination; import tuwien.auto.calimero.mgmt.ManagementClient; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java index 5d238c8c1bb0c..eac6d6cea5ac9 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/IPClient.java @@ -23,11 +23,12 @@ import org.slf4j.LoggerFactory; import tuwien.auto.calimero.IndividualAddress; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.exception.KNXIllegalArgumentException; +import tuwien.auto.calimero.KNXException; +import tuwien.auto.calimero.KNXIllegalArgumentException; import tuwien.auto.calimero.knxnetip.KNXnetIPConnection; import tuwien.auto.calimero.knxnetip.KNXnetIPRouting; import tuwien.auto.calimero.knxnetip.KNXnetIPTunnel; +import tuwien.auto.calimero.knxnetip.KNXnetIPTunnel.TunnelingLayer; import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.KNXNetworkLinkIP; import tuwien.auto.calimero.link.medium.KNXMediumSettings; @@ -78,7 +79,7 @@ protected KNXNetworkLink establishConnection() throws KNXException, InterruptedE } private String connectionTypeToString() { - return ipConnectionType == KNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; + return ipConnectionType == CustomKNXNetworkLinkIP.ROUTING ? MODE_ROUTER : MODE_TUNNEL; } private KNXNetworkLinkIP createKNXNetworkLinkIP(int serviceMode, @Nullable InetSocketAddress localEP, @@ -94,7 +95,7 @@ private KNXnetIPConnection getConnection(int serviceMode, @Nullable InetSocketAd @Nullable InetSocketAddress remoteEP, boolean useNAT) throws KNXException, InterruptedException { KNXnetIPConnection conn; switch (serviceMode) { - case KNXNetworkLinkIP.TUNNELING: + case CustomKNXNetworkLinkIP.TUNNELING: InetSocketAddress local = localEP; if (local == null) { try { @@ -103,9 +104,9 @@ private KNXnetIPConnection getConnection(int serviceMode, @Nullable InetSocketAd throw new KNXException("no local host available"); } } - conn = new KNXnetIPTunnel(KNXnetIPTunnel.LINK_LAYER, local, remoteEP, useNAT); + conn = new KNXnetIPTunnel(TunnelingLayer.LinkLayer, local, remoteEP, useNAT); break; - case KNXNetworkLinkIP.ROUTING: + case CustomKNXNetworkLinkIP.ROUTING: NetworkInterface netIf = null; if (localEP != null && !localEP.isUnresolved()) { try { diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java index 026b3f87c0a44..2b01bcd3d8acb 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/NoOpClient.java @@ -16,8 +16,8 @@ import org.openhab.binding.knx.handler.GroupAddressListener; import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.datapoint.Datapoint; -import tuwien.auto.calimero.exception.KNXException; /** * diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java index 9e5e8c9ca1fdc..4b147918fb60a 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/SerialClient.java @@ -19,7 +19,7 @@ import gnu.io.CommPortIdentifier; import gnu.io.RXTXVersion; -import tuwien.auto.calimero.exception.KNXException; +import tuwien.auto.calimero.KNXException; import tuwien.auto.calimero.link.KNXNetworkLink; import tuwien.auto.calimero.link.KNXNetworkLinkFT12; import tuwien.auto.calimero.link.medium.TPSettings; diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index 5a560499a090d..dfe2a4c1838a2 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -37,6 +37,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tuwien.auto.calimero.KNXException; +import tuwien.auto.calimero.KNXFormatException; +import tuwien.auto.calimero.KNXIllegalArgumentException; import tuwien.auto.calimero.datapoint.Datapoint; import tuwien.auto.calimero.dptxlator.DPT; import tuwien.auto.calimero.dptxlator.DPTXlator; @@ -60,9 +63,6 @@ import tuwien.auto.calimero.dptxlator.DPTXlatorTime; import tuwien.auto.calimero.dptxlator.DPTXlatorUtf8; import tuwien.auto.calimero.dptxlator.TranslatorTypes; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.exception.KNXFormatException; -import tuwien.auto.calimero.exception.KNXIllegalArgumentException; /** * This class provides type mapping between all openHAB core types and KNX data point types. diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index 0ff2b32b3b966..dcaa741deb1d0 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -48,10 +48,10 @@ import tuwien.auto.calimero.GroupAddress; import tuwien.auto.calimero.IndividualAddress; +import tuwien.auto.calimero.KNXException; +import tuwien.auto.calimero.KNXFormatException; import tuwien.auto.calimero.datapoint.CommandDP; import tuwien.auto.calimero.datapoint.Datapoint; -import tuwien.auto.calimero.exception.KNXException; -import tuwien.auto.calimero.exception.KNXFormatException; /** * The {@link DeviceThingHandler} is responsible for handling commands and state updates sent to and received from the diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java index 5bf7c0dedaf56..ad0ccad22f474 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/IPBridgeThingHandler.java @@ -20,12 +20,11 @@ import org.openhab.binding.knx.KNXBindingConstants; import org.openhab.binding.knx.client.KNXClient; import org.openhab.binding.knx.handler.KNXBridgeBaseThingHandler; +import org.openhab.binding.knx.internal.client.CustomKNXNetworkLinkIP; import org.openhab.binding.knx.internal.client.IPClient; import org.openhab.binding.knx.internal.client.NoOpClient; import org.openhab.binding.knx.internal.config.IPBridgeConfiguration; -import tuwien.auto.calimero.link.KNXNetworkLinkIP; - /** * The {@link IPBridgeThingHandler} is responsible for handling commands, which are * sent to one of the channels. It implements a KNX/IP Gateway, that either acts a a @@ -63,13 +62,13 @@ public void initialize() { int ipConnectionType; if (MODE_TUNNEL.equalsIgnoreCase(connectionTypeString)) { useNAT = config.getUseNAT() != null ? config.getUseNAT() : false; - ipConnectionType = KNXNetworkLinkIP.TUNNELING; + ipConnectionType = CustomKNXNetworkLinkIP.TUNNELING; } else if (MODE_ROUTER.equalsIgnoreCase(connectionTypeString)) { useNAT = false; if (ip == null || ip.isEmpty()) { ip = KNXBindingConstants.DEFAULT_MULTICAST_IP; } - ipConnectionType = KNXNetworkLinkIP.ROUTING; + ipConnectionType = CustomKNXNetworkLinkIP.ROUTING; } else { updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR, MessageFormat.format("Unknown IP connection type {0}. Known types are either 'TUNNEL' or 'ROUTER'", diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java deleted file mode 100644 index 79543fd7c1db1..0000000000000 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/logging/LogAdapter.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) 2010-2018 by the respective copyright holders. - * - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - */ -package org.openhab.binding.knx.internal.logging; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import tuwien.auto.calimero.log.LogLevel; -import tuwien.auto.calimero.log.LogWriter; - -/** - * An adapter that works as a bridge between the logging API of calimero and slf4j. - * - * Calimero (the KNX I/O library used by this binding) has its own and very specific logging framework, - * which is not compatible with any default logging framework. Thus, this specific adapter is necessary - * in order to build a bridge between the calimero logging framework and the API of slf4j. - * - * All logging events from calimero are written to a single slf4j logger named tuwien.auto.calimero. - * - * @author Martin Renner - */ -public class LogAdapter extends LogWriter { - - private final Logger logger = LoggerFactory.getLogger("tuwien.auto.calimero"); - - @Override - public void write(String logService, LogLevel logLevel, String msg) { - // Simply delegate to the method with exception. - // org.slf4j.helpers.MessageFormatter will handle this for us. - write(logService, logLevel, msg, null); - } - - @Override - public void write(String logService, LogLevel logLevel, String msg, Throwable t) { - // calimero is a bit chatty, so let's stay silent unless explicitly debugging - if (!logger.isDebugEnabled()) { - return; - } - - // Unfortunately, calimero does not use package names for its loggers. So we cannot use "logService" and - // we have to map all calimero-loggers to a single slf4j logger. - - // slf4j does not offer a "log(level, msg)" api, so we have to dispatch in this rather ugly if-else block. - if (LogLevel.ALWAYS.equals(logLevel) || LogLevel.FATAL.equals(logLevel) || LogLevel.ERROR.equals(logLevel)) { - logger.error("{}: {}", logService, msg, t); - } else if (LogLevel.WARN.equals(logLevel)) { - logger.warn("{}: {}", logService, msg, t); - } else if (LogLevel.INFO.equals(logLevel)) { - logger.info("{}: {}", logService, msg, t); - } else if (LogLevel.TRACE.equals(logLevel)) { - logger.debug("{}: {}", logService, msg, t); - } else { - logger.info("{}: {}", logService, msg, t); - } - } - - @Override - public void close() { - // empty - } - - @Override - public void flush() { - // empty - } -} From ce3739229fd26820839fdd62254dce4381981c4c Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 8 Mar 2018 10:33:35 +0100 Subject: [PATCH 47/52] properly detach the response communicator Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/client/AbstractKNXClient.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index f5ef31bf47a34..ea2a2da1ae646 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -231,6 +231,10 @@ private void releaseConnection() { pc.removeProcessListener(processListener); pc.detach(); }); + responseCommunicator = nullify(responseCommunicator, rc -> { + rc.removeProcessListener(processListener); + rc.detach(); + }); } private T nullify(T target, @Nullable Consumer lastWill) { From 6a5a91b2ef4ffc7ec959460a2973e5ca5bec9e8f Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 8 Mar 2018 10:34:01 +0100 Subject: [PATCH 48/52] do read requests in the main knx scheduler Signed-off-by: Simon Kaufmann --- .../binding/knx/internal/handler/DeviceThingHandler.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java index dcaa741deb1d0..84dcf8b223927 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/handler/DeviceThingHandler.java @@ -164,12 +164,12 @@ private void scheduleReadJob(GroupAddress groupAddress, String dpt) { if (readInterval > 0) { ScheduledFuture future = readFutures.get(groupAddress); if (future == null || future.isDone() || future.isCancelled()) { - future = getBackgroundScheduler().scheduleWithFixedDelay(() -> readDatapoint(groupAddress, dpt), 0, - readInterval, TimeUnit.SECONDS); + future = getScheduler().scheduleWithFixedDelay(() -> readDatapoint(groupAddress, dpt), 0, readInterval, + TimeUnit.SECONDS); readFutures.put(groupAddress, future); } } else { - getBackgroundScheduler().submit(() -> readDatapoint(groupAddress, dpt)); + getScheduler().submit(() -> readDatapoint(groupAddress, dpt)); } } From 2541ca4a1d4c70388b4c6ebf339429042c414549 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 8 Mar 2018 10:34:12 +0100 Subject: [PATCH 49/52] add missing @Overrides Signed-off-by: Simon Kaufmann --- .../org/openhab/binding/knx/internal/channel/WriteSpecImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java index 0c5e62d824fda..2e49c9985fcdd 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/channel/WriteSpecImpl.java @@ -38,10 +38,12 @@ public WriteSpecImpl(@Nullable ChannelConfiguration channelConfiguration, String this.type = type; } + @Override public Type getType() { return type; } + @Override public @Nullable GroupAddress getGroupAddress() { return groupAddress; } From dfe0357b36d9149cd8e65a5d7ea1dfb296951919 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 8 Mar 2018 14:37:23 +0100 Subject: [PATCH 50/52] switch -> ga (part 3) Signed-off-by: Simon Kaufmann --- .../ESH-INF/config/channelConfig.xml | 9 --------- .../org.openhab.binding.knx/ESH-INF/thing/device.xml | 4 ++-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml index e264b5bed9745..997eb8bfc26f4 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/config/channelConfig.xml @@ -4,15 +4,6 @@ xsi:schemaLocation="http://eclipse.org/smarthome/schemas/config-description/v1.0.0 http://eclipse.org/smarthome/schemas/config-description-1.0.0.xsd"> - - - - - The group address(es) in Group Address Notation - true - - - diff --git a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml index c208f8c8ae577..01d71f48ea534 100644 --- a/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml +++ b/addons/binding/org.openhab.binding.knx/ESH-INF/thing/device.xml @@ -41,13 +41,13 @@ Switch A channel to manage a generic Group Addresses with a DPT compatible with Switch Items - + Switch Control a switch item via KNX (i.e. the status is not owned by KNX) - + From aef5467a36aeac1ca7f888cc50ddf389afa1bc14 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Sat, 10 Mar 2018 08:25:30 +0100 Subject: [PATCH 51/52] fixed missing import for csalimero 2.4 Signed-off-by: Simon Kaufmann --- addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF index 0a8698bf3a3af..9b44e7fefac2d 100644 --- a/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF +++ b/addons/binding/org.openhab.binding.knx/META-INF/MANIFEST.MF @@ -25,6 +25,7 @@ Import-Package: gnu.io;resolution:=optional, org.openhab.binding.knx, org.openhab.binding.knx.handler, org.osgi.framework, + org.osgi.framework.wiring, org.osgi.service.cm, org.slf4j Service-Component: OSGI-INF/*.xml From b8cac0fc7aa111d645eb6a45ed53fbe491bd9cc1 Mon Sep 17 00:00:00 2001 From: Simon Kaufmann Date: Thu, 15 Mar 2018 16:31:09 +0100 Subject: [PATCH 52/52] avoid calimero's localized number serialization Signed-off-by: Simon Kaufmann --- .../openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java index dfe2a4c1838a2..957cb819af2ed 100644 --- a/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java +++ b/addons/binding/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/dpt/KNXCoreTypeMapper.java @@ -8,6 +8,7 @@ */ package org.openhab.binding.knx.internal.dpt; +import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; @@ -760,10 +761,10 @@ public Type toType(Datapoint datapoint, byte[] data) { } if (typeClass.equals(PercentType.class)) { - return PercentType.valueOf(value.split(" ")[0]); + return new PercentType(BigDecimal.valueOf(Math.round(translator.getNumericValue()))); } if (typeClass.equals(DecimalType.class)) { - return DecimalType.valueOf(value.split(" ")[0]); + return new DecimalType(translator.getNumericValue()); } if (typeClass.equals(StringType.class)) { return StringType.valueOf(value);

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%0Ar9(oghzs6JztbeW1T9&G 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