diff --git a/bin/de/hottis/MeasurementCollector/ADataObject.class b/bin/de/hottis/MeasurementCollector/ADataObject.class index 556693a..fe44849 100644 Binary files a/bin/de/hottis/MeasurementCollector/ADataObject.class and b/bin/de/hottis/MeasurementCollector/ADataObject.class differ diff --git a/bin/de/hottis/MeasurementCollector/ADataParser.class b/bin/de/hottis/MeasurementCollector/ADataParser.class new file mode 100644 index 0000000..34b01e9 Binary files /dev/null and b/bin/de/hottis/MeasurementCollector/ADataParser.class differ diff --git a/bin/de/hottis/MeasurementCollector/ElectricEnergyDataObject.class b/bin/de/hottis/MeasurementCollector/ElectricEnergyDataObject.class new file mode 100644 index 0000000..2747ab2 Binary files /dev/null and b/bin/de/hottis/MeasurementCollector/ElectricEnergyDataObject.class differ diff --git a/bin/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.class b/bin/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.class new file mode 100644 index 0000000..bdf2fd2 Binary files /dev/null and b/bin/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.class differ diff --git a/bin/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.class b/bin/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.class new file mode 100644 index 0000000..5cf45e6 Binary files /dev/null and b/bin/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.class differ diff --git a/bin/de/hottis/MeasurementCollector/HottisFourChannelThermometer.class b/bin/de/hottis/MeasurementCollector/HottisFourChannelThermometer.class new file mode 100644 index 0000000..9b5bcbf Binary files /dev/null and b/bin/de/hottis/MeasurementCollector/HottisFourChannelThermometer.class differ diff --git a/bin/de/hottis/MeasurementCollector/MBusParser.class b/bin/de/hottis/MeasurementCollector/MBusParser.class index 7751f98..7101ba2 100644 Binary files a/bin/de/hottis/MeasurementCollector/MBusParser.class and b/bin/de/hottis/MeasurementCollector/MBusParser.class differ diff --git a/bin/de/hottis/MeasurementCollector/MeasurementCollector.class b/bin/de/hottis/MeasurementCollector/MeasurementCollector.class index df80c96..a3f4af6 100644 Binary files a/bin/de/hottis/MeasurementCollector/MeasurementCollector.class and b/bin/de/hottis/MeasurementCollector/MeasurementCollector.class differ diff --git a/bin/de/hottis/MeasurementCollector/TemperatureDataObject.class b/bin/de/hottis/MeasurementCollector/TemperatureDataObject.class index 4f52554..386191a 100644 Binary files a/bin/de/hottis/MeasurementCollector/TemperatureDataObject.class and b/bin/de/hottis/MeasurementCollector/TemperatureDataObject.class differ diff --git a/src/de/hottis/MeasurementCollector/ADataObject.java b/src/de/hottis/MeasurementCollector/ADataObject.java index 16d3445..1464a8b 100644 --- a/src/de/hottis/MeasurementCollector/ADataObject.java +++ b/src/de/hottis/MeasurementCollector/ADataObject.java @@ -30,4 +30,16 @@ public abstract class ADataObject { public String getName() { return name; } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("<"); + sb.append(name); + sb.append(", "); + sb.append(timestamp); + sb.append(", "); + sb.append(values.toString()); + sb.append(">"); + return sb.toString(); + } } diff --git a/src/de/hottis/MeasurementCollector/ADataParser.java b/src/de/hottis/MeasurementCollector/ADataParser.java index d109410..3db53ab 100644 --- a/src/de/hottis/MeasurementCollector/ADataParser.java +++ b/src/de/hottis/MeasurementCollector/ADataParser.java @@ -5,6 +5,6 @@ import java.util.List; import org.openmuc.jmbus.DataRecord; -public interface ADataParser { - public List parse(LocalDateTime timestamp, String name, List dataRecords); +public interface ADataParser { + public List parse(LocalDateTime timestamp, String name, List dataRecords); } diff --git a/src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java b/src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java new file mode 100644 index 0000000..390d9b8 --- /dev/null +++ b/src/de/hottis/MeasurementCollector/ElectricEnergyDataObject.java @@ -0,0 +1,23 @@ +package de.hottis.MeasurementCollector; + +import java.time.LocalDateTime; +import java.util.HashMap; + +public class ElectricEnergyDataObject extends ADataObject { + static final String ENERGY_KEY = "energy"; + static final String POWER_KEY = "power"; + static final String TABLE_NAME = "ElectricEnergy"; + + public ElectricEnergyDataObject(LocalDateTime timestamp, String name, double energy, double power) { + super(timestamp, name); + HashMap values = new HashMap(); + values.put(ENERGY_KEY, energy); + values.put(POWER_KEY, power); + setValues(values); + } + + @Override + public String getTableName() { + return TABLE_NAME; + } +} diff --git a/src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java b/src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java new file mode 100644 index 0000000..005713a --- /dev/null +++ b/src/de/hottis/MeasurementCollector/FinderOnePhasePowerMeter.java @@ -0,0 +1,19 @@ +package de.hottis.MeasurementCollector; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.openmuc.jmbus.DataRecord; + +public class FinderOnePhasePowerMeter implements ADataParser { + public List parse(LocalDateTime timestamp, String name, List dataRecords) { + ArrayList list = new ArrayList(); + + ElectricEnergyDataObject tdo = new ElectricEnergyDataObject(timestamp, name, + dataRecords.get(0).getScaledDataValue(), dataRecords.get(4).getScaledDataValue()); + list.add(tdo); + + return list; + } +} diff --git a/src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java b/src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java new file mode 100644 index 0000000..ab4de8b --- /dev/null +++ b/src/de/hottis/MeasurementCollector/FinderThreePhasePowerMeter.java @@ -0,0 +1,19 @@ +package de.hottis.MeasurementCollector; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.openmuc.jmbus.DataRecord; + +public class FinderThreePhasePowerMeter implements ADataParser { + public List parse(LocalDateTime timestamp, String name, List dataRecords) { + ArrayList list = new ArrayList(); + + ElectricEnergyDataObject tdo = new ElectricEnergyDataObject(timestamp, name, + dataRecords.get(0).getScaledDataValue(), dataRecords.get(17).getScaledDataValue()); + list.add(tdo); + + return list; + } +} diff --git a/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java b/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java index 2dede56..6feb2a2 100644 --- a/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java +++ b/src/de/hottis/MeasurementCollector/HottisFourChannelThermometer.java @@ -6,14 +6,15 @@ import java.util.List; import org.openmuc.jmbus.DataRecord; -public class HottisFourChannelThermometer implements ADataParser { - public List parse(LocalDateTime timestamp, String name, List dataRecords) { - ArrayList list = new ArrayList(); +public class HottisFourChannelThermometer implements ADataParser { + public List parse(LocalDateTime timestamp, String name, List dataRecords) { + ArrayList list = new ArrayList(); TemperatureDataObject tdo = new TemperatureDataObject(timestamp, "Hedge", dataRecords.get(5).getScaledDataValue()); list.add(tdo); tdo = new TemperatureDataObject(timestamp, "House", dataRecords.get(7).getScaledDataValue()); + list.add(tdo); return list; } diff --git a/src/de/hottis/MeasurementCollector/MBusParser.java b/src/de/hottis/MeasurementCollector/MBusParser.java index f321780..6ed0b65 100644 --- a/src/de/hottis/MeasurementCollector/MBusParser.java +++ b/src/de/hottis/MeasurementCollector/MBusParser.java @@ -16,11 +16,17 @@ public class MBusParser extends AMessageParser { static final String TOPIC = "IoT/Measurement/MeterbusHub"; private final JSONParser jsonParser; + private final HottisFourChannelThermometer hottisFourChannelThermometer; + private final FinderOnePhasePowerMeter finderOnePhasePowerMeter; + private final FinderThreePhasePowerMeter finderThreePhasePowerMeter; public MBusParser() { super(TOPIC); JsonParserFactory jsonParserFactory = JsonParserFactory.getInstance(); jsonParser = jsonParserFactory.newJsonParser(); + hottisFourChannelThermometer = new HottisFourChannelThermometer(); + finderOnePhasePowerMeter = new FinderOnePhasePowerMeter(); + finderThreePhasePowerMeter = new FinderThreePhasePowerMeter(); } @Override @@ -40,8 +46,33 @@ public class MBusParser extends AMessageParser { variableDataStructure.decode(); List dataRecords = variableDataStructure.getDataRecords(); - for (DataRecord dataRecord : dataRecords) { - System.out.println(dataRecord.getScaledDataValue() + " " + dataRecord.getUnit().getUnit()); + //for (DataRecord dataRecord : dataRecords) { + // System.out.println(dataRecord.getScaledDataValue() + " " + dataRecord.getUnit().getUnit()); + //} + + List measurementItems; + switch (name) { + case "thermom.": + measurementItems = hottisFourChannelThermometer.parse(timestamp, name, dataRecords); + break; + case "light": + case "computer": + case "freezer": + case "dryer": + case "laundry": + case "dishwasher": + measurementItems = finderOnePhasePowerMeter.parse(timestamp, name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase(), dataRecords); + break; + case "electricity": + measurementItems = finderThreePhasePowerMeter.parse(timestamp, "Total", dataRecords); + break; + default: + System.out.println("unknown name"); + measurementItems = null; + } + + for (ADataObject ado : measurementItems) { + System.out.println(ado); } } catch (Exception e) { System.out.println("Exception when handling mbus message: " + e); diff --git a/src/de/hottis/MeasurementCollector/MeasurementCollector.java b/src/de/hottis/MeasurementCollector/MeasurementCollector.java index f31f048..3c4f678 100644 --- a/src/de/hottis/MeasurementCollector/MeasurementCollector.java +++ b/src/de/hottis/MeasurementCollector/MeasurementCollector.java @@ -15,8 +15,8 @@ public class MeasurementCollector { MqttReceiver mqttReceiver = new MqttReceiver(config); mqttReceiver.connect(); - TestParser testParser = new TestParser(); - mqttReceiver.registerParser(testParser); + // TestParser testParser = new TestParser(); + // mqttReceiver.registerParser(testParser); MBusParser mbusParser = new MBusParser(); mqttReceiver.registerParser(mbusParser); diff --git a/src/de/hottis/MeasurementCollector/TemperatureDataObject.java b/src/de/hottis/MeasurementCollector/TemperatureDataObject.java index 1a9969f..ec67dae 100644 --- a/src/de/hottis/MeasurementCollector/TemperatureDataObject.java +++ b/src/de/hottis/MeasurementCollector/TemperatureDataObject.java @@ -5,7 +5,7 @@ import java.util.HashMap; public class TemperatureDataObject extends ADataObject { static final String TEMPERATURE_KEY = "temperature"; - static final String TABLE_NAME = "temperature"; + static final String TABLE_NAME = "Temperature"; public TemperatureDataObject(LocalDateTime timestamp, String name, double temperature) { super(timestamp, name);