add EspThermometerParser

This commit is contained in:
Wolfgang Hottgenroth
2017-11-28 17:40:57 +01:00
parent 47164bba83
commit 56009a3748
3 changed files with 55 additions and 5 deletions

View File

@ -33,9 +33,13 @@ public abstract class AMessageParser {
public void enqueue(List<ADataObject> itemList) throws HottisCommonException {
for (ADataObject ado : itemList) {
queue.enqueue(ado);
logger.debug("message enqueued");
}
enqueue(ado);
}
}
public void enqueue(ADataObject item) throws HottisCommonException {
queue.enqueue(item);
logger.debug("message enqueued");
}
abstract public void execute(LocalDateTime timestamp, String msgPayload);

View File

@ -0,0 +1,41 @@
package de.hottis.measurementCollector;
import de.hottis.common.MyQueue;
import de.hottis.smarthomelib.ADataObject;
import de.hottis.smarthomelib.TemperatureDataObject;
import java.time.LocalDateTime;
import java.util.Properties;
/**
*
* @author wn
*/
public class EspThermometerParser extends AMessageParser {
static final String TOPIC = "IoT/espThermometer2/+/measurement";
public EspThermometerParser(Properties config, MyQueue<ADataObject> queue) {
super(TOPIC, config, queue);
}
@Override
public void execute(LocalDateTime timestamp, String msgPayload) {
try {
// BueroBochum 22.93 2.486 1577
String[] payloadParts = msgPayload.split(" ");
if (payloadParts.length != 4) {
throw new MeasurementCollectorException("invalid number of parts in message: " + msgPayload);
}
String name = payloadParts[0];
double temperature = Double.parseDouble(payloadParts[1]);
TemperatureDataObject tdo = new TemperatureDataObject(timestamp, name, temperature);
enqueue(tdo);
} catch (Exception e) {
logger.error("Exception when esp thermometer message: ", e);
}
}
}

View File

@ -27,7 +27,7 @@ public class MeasurementCollector {
mqttReceiver.connect();
logger.debug("MqttReceiver started");
JmsTopic<ADataObject> queue = new JmsTopic<ADataObject>(config, JmsTopic.Mode.PRODUCER);
JmsTopic<ADataObject> queue = new JmsTopic<>(config, JmsTopic.Mode.PRODUCER);
queue.init();
MBusParser mbusParser = new MBusParser(config, queue);
@ -35,6 +35,11 @@ public class MeasurementCollector {
mbusParser.registerConfiguredDataParsers();
mqttReceiver.registerParser(mbusParser);
logger.debug("MBusParser started");
}
EspThermometerParser espThermometerParser = new EspThermometerParser(config, queue);
espThermometerParser.init();
mqttReceiver.registerParser(espThermometerParser);
logger.debug("EspThermometerParser started");
}
}