changes
This commit is contained in:
@ -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