changes
This commit is contained in:
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user