changes
This commit is contained in:
@ -4,5 +4,6 @@
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
|
||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/jmbus-3.0.1.jar"/>
|
||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/org.eclipse.paho.client.mqttv3-1.2.0.jar"/>
|
||||
<classpathentry kind="lib" path="/home/wn/workspace-java/MeasurementCollector/libraries/quick-json-1.0.2.3.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
BIN
bin/de/hottis/MeasurementCollector/ADataObject.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/ADataObject.class
Normal file
Binary file not shown.
BIN
bin/de/hottis/MeasurementCollector/MBusParser.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/MBusParser.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/de/hottis/MeasurementCollector/TemperatureDataObject.class
Normal file
BIN
bin/de/hottis/MeasurementCollector/TemperatureDataObject.class
Normal file
Binary file not shown.
@ -1,3 +1,3 @@
|
||||
mqtt.broker = tcp://eupenstrasse20.dynamic.hottis.de:2883
|
||||
mqtt.username = tron
|
||||
mqtt.password = geheim123
|
||||
mqtt.broker = tcp://172.16.2.15:1883
|
||||
; mqtt.username = tron
|
||||
; mqtt.password = geheim123
|
||||
|
BIN
libraries/quick-json-1.0.2.3.jar
Normal file
BIN
libraries/quick-json-1.0.2.3.jar
Normal file
Binary file not shown.
33
src/de/hottis/MeasurementCollector/ADataObject.java
Normal file
33
src/de/hottis/MeasurementCollector/ADataObject.java
Normal file
@ -0,0 +1,33 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class ADataObject {
|
||||
private LocalDateTime timestamp;
|
||||
private String name;
|
||||
private Map<String, Object> values;
|
||||
|
||||
public ADataObject(LocalDateTime timestamp, String name) {
|
||||
this.timestamp = timestamp;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setValues(Map<String, Object> values) {
|
||||
this.values = values;
|
||||
}
|
||||
|
||||
abstract public String getTableName();
|
||||
|
||||
public LocalDateTime getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public Map<String, Object> getValues() {
|
||||
return values;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
10
src/de/hottis/MeasurementCollector/ADataParser.java
Normal file
10
src/de/hottis/MeasurementCollector/ADataParser.java
Normal file
@ -0,0 +1,10 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import org.openmuc.jmbus.DataRecord;
|
||||
|
||||
public interface ADataParser<T> {
|
||||
public List<T> parse(LocalDateTime timestamp, String name, List<DataRecord> dataRecords);
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
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>();
|
||||
|
||||
TemperatureDataObject tdo = new TemperatureDataObject(timestamp, "Hedge", dataRecords.get(5).getScaledDataValue());
|
||||
list.add(tdo);
|
||||
|
||||
tdo = new TemperatureDataObject(timestamp, "House", dataRecords.get(7).getScaledDataValue());
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
52
src/de/hottis/MeasurementCollector/MBusParser.java
Normal file
52
src/de/hottis/MeasurementCollector/MBusParser.java
Normal file
@ -0,0 +1,52 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.openmuc.jmbus.DataRecord;
|
||||
import org.openmuc.jmbus.MBusMessage;
|
||||
import org.openmuc.jmbus.VariableDataStructure;
|
||||
|
||||
import com.json.parsers.JSONParser;
|
||||
import com.json.parsers.JsonParserFactory;
|
||||
|
||||
public class MBusParser extends AMessageParser {
|
||||
|
||||
static final String TOPIC = "IoT/Measurement/MeterbusHub";
|
||||
|
||||
private final JSONParser jsonParser;
|
||||
|
||||
public MBusParser() {
|
||||
super(TOPIC);
|
||||
JsonParserFactory jsonParserFactory = JsonParserFactory.getInstance();
|
||||
jsonParser = jsonParserFactory.newJsonParser();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(LocalDateTime timestamp, String msgPayload) {
|
||||
try {
|
||||
Map payloadMap = jsonParser.parseJson(msgPayload);
|
||||
String name = (String)(((Map)(payloadMap.get("metadata"))).get("name"));
|
||||
String mbusMsgTxt = (String)(((Map)(payloadMap.get("data"))).get("telegram"));
|
||||
String [] octetsTxt = mbusMsgTxt.split(" ");
|
||||
byte [] octets = new byte[octetsTxt.length];
|
||||
for (int i = 0; i < octetsTxt.length; i++) {
|
||||
octets[i] = (byte)(Integer.parseInt(octetsTxt[i], 16) & 0xff);
|
||||
}
|
||||
|
||||
MBusMessage mbusMsg = MBusMessage.decode(octets, octets.length);
|
||||
VariableDataStructure variableDataStructure = mbusMsg.getVariableDataResponse();
|
||||
variableDataStructure.decode();
|
||||
List<DataRecord> dataRecords = variableDataStructure.getDataRecords();
|
||||
|
||||
for (DataRecord dataRecord : dataRecords) {
|
||||
System.out.println(dataRecord.getScaledDataValue() + " " + dataRecord.getUnit().getUnit());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("Exception when handling mbus message: " + e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -18,34 +18,9 @@ public class MeasurementCollector {
|
||||
TestParser testParser = new TestParser();
|
||||
mqttReceiver.registerParser(testParser);
|
||||
|
||||
MBusParser mbusParser = new MBusParser();
|
||||
mqttReceiver.registerParser(mbusParser);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
import org.openmuc.jmbus.DataRecord;
|
||||
import org.openmuc.jmbus.MBusMessage;
|
||||
import org.openmuc.jmbus.VariableDataStructure;
|
||||
import java.util.List;
|
||||
|
||||
// String txtMsg = "68 38 38 68 08 54 72 21 00 13 00 2E 19 24 02 43 00 00 00 8C 10 04 97 84 16 00 8C 11 04 97 84 16 00 02 FD C9 FF 01 DF 00 02 FD DB FF 01 0D 00 02 AC FF 01 1B 00 82 40 AC FF 01 00 00 1A 16";
|
||||
String txtMsg = "68 61 61 68 08 21 72 00 00 00 00 00 00 01 00 B5 00 00 00 01 24 08 01 25 10 01 26 0D 02 27 01 01 05 67 C8 44 C0 3C 05 67 34 E9 0C 41 05 67 B7 F3 9A 41 05 67 71 86 25 41 0F E0 7A 32 00 B5 99 04 00 73 98 02 00 00 00 00 00 A6 06 00 00 A2 C3 7F 3F A5 BA 7F 3F 85 A7 7F 3F E7 F9 7F 3F CD CC CC 3D E8 03 00 00 12 16";
|
||||
String [] octetsTxt = txtMsg.split(" ");
|
||||
byte [] octets = new byte[octetsTxt.length];
|
||||
System.out.println("Start");
|
||||
for (int i = 0; i < octetsTxt.length; i++) {
|
||||
System.out.println(octetsTxt[i]);
|
||||
octets[i] = (byte)(Integer.parseInt(octetsTxt[i], 16) & 0xff);
|
||||
}
|
||||
System.out.println("End");
|
||||
|
||||
MBusMessage mbusMsg = MBusMessage.decode(octets, octets.length);
|
||||
//System.out.println("MBusMessage: " + mbusMsg.toString());
|
||||
VariableDataStructure variableDataStructure = mbusMsg.getVariableDataResponse();
|
||||
variableDataStructure.decode();
|
||||
List<DataRecord> dataRecords = variableDataStructure.getDataRecords();
|
||||
|
||||
for (DataRecord dataRecord : dataRecords) {
|
||||
System.out.println(dataRecord.getScaledDataValue() + " " + dataRecord.getUnit().getUnit());
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
public class MeasurementCollectorException extends Exception {
|
||||
private static final long serialVersionUID = -5819010697931904741L;
|
||||
|
||||
public MeasurementCollectorException(String msg, Throwable cause) {
|
||||
super(msg, cause);
|
||||
}
|
||||
|
@ -0,0 +1,20 @@
|
||||
package de.hottis.MeasurementCollector;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class TemperatureDataObject extends ADataObject {
|
||||
static final String TEMPERATURE_KEY = "temperature";
|
||||
static final String TABLE_NAME = "temperature";
|
||||
|
||||
public TemperatureDataObject(LocalDateTime timestamp, String name, double temperature) {
|
||||
super(timestamp, name);
|
||||
HashMap<String, Object> values = new HashMap<String, Object>();
|
||||
values.put(TEMPERATURE_KEY, temperature);
|
||||
setValues(values);
|
||||
}
|
||||
|
||||
public String getTableName() {
|
||||
return TABLE_NAME;
|
||||
}
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
mqtt.broker = tcp://eupenstrasse20.dynamic.hottis.de:2883
|
||||
mqtt.username = tron
|
||||
mqtt.password = geheim123
|
||||
mqtt.broker = tcp://172.16.2.15:1883
|
||||
; mqtt.username = tron
|
||||
; mqtt.password = geheim123
|
||||
|
Reference in New Issue
Block a user