diff --git a/src/main/java/de/hottis/mbusMaster/ElectricEnergyDataObject.java b/src/main/java/de/hottis/mbusMaster/ElectricEnergyDataObject.java index a7422ef..1ba3208 100644 --- a/src/main/java/de/hottis/mbusMaster/ElectricEnergyDataObject.java +++ b/src/main/java/de/hottis/mbusMaster/ElectricEnergyDataObject.java @@ -6,14 +6,16 @@ public class ElectricEnergyDataObject extends ADataObject { private static final long serialVersionUID = 1L; static final String ENERGY_KEY = "energy"; static final String POWER_KEY = "power"; + static final String ERROR_RATIO_KEY = "errorRatio"; static final String TABLE_NAME = "ElectricEnergy"; static final String KIND_NAME = "ElectricEnergy"; - public ElectricEnergyDataObject(String name, double energy, double power) { + public ElectricEnergyDataObject(String name, double energy, double power, double errorRatio) { super(name, KIND_NAME); HashMap values = new HashMap(); values.put(ENERGY_KEY, energy); values.put(POWER_KEY, power); + values.put(ERROR_RATIO_KEY, errorRatio); setValues(values); } diff --git a/src/main/java/de/hottis/mbusMaster/FinderOnePhasePowerMeter.java b/src/main/java/de/hottis/mbusMaster/FinderOnePhasePowerMeter.java index d3caa82..321d824 100644 --- a/src/main/java/de/hottis/mbusMaster/FinderOnePhasePowerMeter.java +++ b/src/main/java/de/hottis/mbusMaster/FinderOnePhasePowerMeter.java @@ -11,6 +11,6 @@ public class FinderOnePhasePowerMeter extends MbusDevice { } public ADataObject getDataObject() throws MbusException { - return new ElectricEnergyDataObject(this.getName(), this.getValue("energy"), this.getValue("activePower")); + return new ElectricEnergyDataObject(this.getName(), this.getValue("energy"), this.getValue("activePower"), this.getErrorRatio()); } } \ No newline at end of file diff --git a/src/main/java/de/hottis/mbusMaster/FinderThreePhasePowerMeter.java b/src/main/java/de/hottis/mbusMaster/FinderThreePhasePowerMeter.java index 8076e7d..a33e075 100644 --- a/src/main/java/de/hottis/mbusMaster/FinderThreePhasePowerMeter.java +++ b/src/main/java/de/hottis/mbusMaster/FinderThreePhasePowerMeter.java @@ -21,6 +21,6 @@ public class FinderThreePhasePowerMeter extends MbusDevice { } public ADataObject getDataObject() throws MbusException { - return new ElectricEnergyDataObject(this.getName(), this.getValue("energy"), this.getValue("activePowerTotal")); + return new ElectricEnergyDataObject(this.getName(), this.getValue("energy"), this.getValue("activePowerTotal"), this.getErrorRatio()); } } \ No newline at end of file diff --git a/src/main/java/de/hottis/mbusMaster/MbusDevice.java b/src/main/java/de/hottis/mbusMaster/MbusDevice.java index 32b06db..18aa237 100644 --- a/src/main/java/de/hottis/mbusMaster/MbusDevice.java +++ b/src/main/java/de/hottis/mbusMaster/MbusDevice.java @@ -21,6 +21,9 @@ abstract public class MbusDevice { private byte address; private int queryPeriod; // in seconds + private int successCnt; + private int errorCnt; + protected List dataRecords; protected boolean validlyParsed; @@ -41,9 +44,31 @@ abstract public class MbusDevice { this.address = address; this.queryPeriod = queryPeriod; this.validlyParsed = false; + this.successCnt = 0; + this.errorCnt = 0; this.dataPoints = new ArrayList<>(); } + public void incSuccessCnt() { + this.successCnt++; + } + + public void incErrorCnt() { + this.errorCnt++; + } + + public void resetSuccessCnt() { + this.successCnt = 0; + } + + public void resetErrorCnt() { + this.errorCnt = 0; + } + + public double getErrorRatio() { + return this.errorCnt / this.successCnt; + } + public void parse(byte[] frame) throws MbusException { try { MBusMessage mbusMsg = MBusMessage.decode(frame, frame.length); @@ -82,6 +107,7 @@ abstract public class MbusDevice { StringBuffer sb = new StringBuffer(); sb.append(this.getClass().getName() + " ["); sb.append(""); + sb.append(""); if (longOutput && this.validlyParsed) { sb.append(this.dataToString()); } diff --git a/src/main/java/de/hottis/mbusMaster/MbusScheduledQuerier.java b/src/main/java/de/hottis/mbusMaster/MbusScheduledQuerier.java index d8b2194..3ccaf02 100644 --- a/src/main/java/de/hottis/mbusMaster/MbusScheduledQuerier.java +++ b/src/main/java/de/hottis/mbusMaster/MbusScheduledQuerier.java @@ -60,8 +60,10 @@ public class MbusScheduledQuerier extends Thread { logger.info("Got: " + device.toString()); this.queue.add(device.getDataObject()); + device.incSuccessCnt(); successCnt++; } catch (IOException e) { + device.incErrorCnt(); errCnt++; logger.error("Error " + e.toString() + " in Meterbus dialog for device " + device.shortString()); }