From 56009a37484806c8585b510defc17e6ebdfbc826 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 28 Nov 2017 17:40:57 +0100 Subject: [PATCH] add EspThermometerParser --- .../measurementCollector/AMessageParser.java | 10 +++-- .../EspThermometerParser.java | 41 +++++++++++++++++++ .../MeasurementCollector.java | 9 +++- 3 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/main/java/de/hottis/measurementCollector/EspThermometerParser.java diff --git a/src/main/java/de/hottis/measurementCollector/AMessageParser.java b/src/main/java/de/hottis/measurementCollector/AMessageParser.java index 61532a6..ac7c830 100644 --- a/src/main/java/de/hottis/measurementCollector/AMessageParser.java +++ b/src/main/java/de/hottis/measurementCollector/AMessageParser.java @@ -33,9 +33,13 @@ public abstract class AMessageParser { public void enqueue(List 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); diff --git a/src/main/java/de/hottis/measurementCollector/EspThermometerParser.java b/src/main/java/de/hottis/measurementCollector/EspThermometerParser.java new file mode 100644 index 0000000..54595b2 --- /dev/null +++ b/src/main/java/de/hottis/measurementCollector/EspThermometerParser.java @@ -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 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); + } + + } + +} diff --git a/src/main/java/de/hottis/measurementCollector/MeasurementCollector.java b/src/main/java/de/hottis/measurementCollector/MeasurementCollector.java index b211945..b13cdec 100644 --- a/src/main/java/de/hottis/measurementCollector/MeasurementCollector.java +++ b/src/main/java/de/hottis/measurementCollector/MeasurementCollector.java @@ -27,7 +27,7 @@ public class MeasurementCollector { mqttReceiver.connect(); logger.debug("MqttReceiver started"); - JmsTopic queue = new JmsTopic(config, JmsTopic.Mode.PRODUCER); + JmsTopic 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"); + } }