diff --git a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Circle.java b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Circle.java index c406d4e68d9..3389b5dc3fa 100644 --- a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Circle.java +++ b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Circle.java @@ -219,6 +219,11 @@ public boolean processMessage(Message message) { case POWER_INFORMATION_RESPONSE: one = ((PowerInformationResponseMessage)message).getOneSecond(); + if(pulseToWatt(one) > 10000) { + // the Circle reporting this information is in a kind of error state. + // we just skip these values + return true; + } postUpdate(MAC,PlugwiseCommandType.CURRENTPOWER,pulseToWatt(one)); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss"); diff --git a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/PlugwiseBinding.java b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/PlugwiseBinding.java index 1441791c9b0..8f8f2ae35e3 100644 --- a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/PlugwiseBinding.java +++ b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/PlugwiseBinding.java @@ -104,6 +104,21 @@ public void updated(Dictionary config) throws ConfigurationException { "the given configKey '" + configKey + "' is unknown"); } } + + if (stick != null) { + + String configKey = matcher.group(2); + String value = (String) config.get(key); + + if ("interval".equals(configKey)) { + stick.setInterval(Integer.valueOf(value)); + logger.info("Plugwise set the interval to send ZigBee PDUs to {} ms",value); + } + else { + throw new ConfigurationException(configKey, + "the given configKey '" + configKey + "' is unknown"); + } + } } diff --git a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Stick.java b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Stick.java index c66d385e99e..8f9d399f07f 100644 --- a/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Stick.java +++ b/bundles/binding/org.openhab.binding.plugwise/src/main/java/org/openhab/binding/plugwise/internal/Stick.java @@ -88,6 +88,7 @@ public class Stick extends PlugwiseDevice implements SerialPortEventListener{ private boolean initialised = false; protected List plugwiseDeviceCache = Collections.synchronizedList(new ArrayList()); private PlugwiseBinding binding; + private int interval = 150 ; public Stick(String port, PlugwiseBinding binding) { super("", PlugwiseDevice.DeviceType.Stick, "stick"); @@ -152,6 +153,10 @@ protected PlugwiseDevice getDeviceByName(String name) { public String getPort() { return port; } + + public void setInterval(int interval) { + this.interval = interval; + } public boolean isInitialised() { return initialised; @@ -655,6 +660,11 @@ public void execute(JobExecutionContext context) Message message = theStick.sendQueue.poll(); while(message != null) { sendMessage(message); + try { + Thread.sleep(theStick.interval); + } catch (InterruptedException e) { + logger.debug("An exception occurred while putting the Plugwise SendJob thread to sleep : {}",e.getMessage()); + } message = theStick.sendQueue.poll(); } } diff --git a/distribution/openhabhome/configurations/openhab_default.cfg b/distribution/openhabhome/configurations/openhab_default.cfg index 723e49af57b..9d5ec69d784 100644 --- a/distribution/openhabhome/configurations/openhab_default.cfg +++ b/distribution/openhabhome/configurations/openhab_default.cfg @@ -493,6 +493,8 @@ ntp:hostname=ptbtime1.ptb.de # # "stick" is reserved plug wise id #plugwise:stick.port= +# interval in ms to wait between messages sent on the ZigBee network +#plugwise:stick.interval=150 # "circleplus" is reserved plug wise id #plugwise:circleplus.mac=