This commit is contained in:
Wolfgang Hottgenroth
2017-11-15 16:50:49 +01:00
parent 5bf591185c
commit 7df95c52b3
18 changed files with 147 additions and 34 deletions

View 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);
}
}
}