changes
This commit is contained in:
Binary file not shown.
BIN
bin/de/hottis/MeasurementCollector/ADataParser.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/ADataParser.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,6 @@ import java.util.List;
|
||||
|
||||
import org.openmuc.jmbus.DataRecord;
|
||||
|
||||
public interface ADataParser<T> {
|
||||
public List<T> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords);
|
||||
public interface ADataParser {
|
||||
public List<ADataObject> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords);
|
||||
}
|
||||
|
@ -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<String, Object> values = new HashMap<String, Object>();
|
||||
values.put(ENERGY_KEY, energy);
|
||||
values.put(POWER_KEY, power);
|
||||
setValues(values);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTableName() {
|
||||
return TABLE_NAME;
|
||||
}
|
||||
}
|
@ -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<ADataObject> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords) {
|
||||
ArrayList<ADataObject> list = new ArrayList<ADataObject>();
|
||||
|
||||
ElectricEnergyDataObject tdo = new ElectricEnergyDataObject(timestamp, name,
|
||||
dataRecords.get(0).getScaledDataValue(), dataRecords.get(4).getScaledDataValue());
|
||||
list.add(tdo);
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
@ -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<ADataObject> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords) {
|
||||
ArrayList<ADataObject> list = new ArrayList<ADataObject>();
|
||||
|
||||
ElectricEnergyDataObject tdo = new ElectricEnergyDataObject(timestamp, name,
|
||||
dataRecords.get(0).getScaledDataValue(), dataRecords.get(17).getScaledDataValue());
|
||||
list.add(tdo);
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
@ -6,14 +6,15 @@ import java.util.List;
|
||||
|
||||
import org.openmuc.jmbus.DataRecord;
|
||||
|
||||
public class HottisFourChannelThermometer implements ADataParser<TemperatureDataObject> {
|
||||
public List<TemperatureDataObject> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords) {
|
||||
ArrayList<TemperatureDataObject> list = new ArrayList<TemperatureDataObject>();
|
||||
public class HottisFourChannelThermometer implements ADataParser {
|
||||
public List<ADataObject> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords) {
|
||||
ArrayList<ADataObject> list = new ArrayList<ADataObject>();
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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<DataRecord> 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<ADataObject> 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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user