From 1f7f284a362dadb878a6d79365b1c4d1f40b238a Mon Sep 17 00:00:00 2001 From: Zoe Pfister <zoe.pfister@uibk.ac.at> Date: Mon, 13 Feb 2023 10:17:05 +0100 Subject: [PATCH] Close connection after request, add default constructors, add LineProtocol Utility --- client/libs/espnow/src/Message.cpp | 5 +++++ client/libs/espnow/src/Message.hpp | 1 + .../ConnectionManager.cpp | 5 +++++ .../lib/Utilities/Utilities.cpp | 20 +++++++++++++++++-- .../lib/Utilities/Utilities.h | 1 + shared-libs/DataTransfer/Measurement.hpp | 8 ++++++++ 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/client/libs/espnow/src/Message.cpp b/client/libs/espnow/src/Message.cpp index 0df90ac..97f848e 100644 --- a/client/libs/espnow/src/Message.cpp +++ b/client/libs/espnow/src/Message.cpp @@ -76,6 +76,11 @@ Message::Message(ClientDataPackage data) : clientDataPackage(data) { get_host_mac(recipient); } +Message::Message() { + // check for existing host mac address, use broadcast otherwise + get_host_mac(recipient); +} + Message::Message(Measurement const &data, const SensorInformation &information, unsigned long timestamp) diff --git a/client/libs/espnow/src/Message.hpp b/client/libs/espnow/src/Message.hpp index 3dc83bf..5863b85 100644 --- a/client/libs/espnow/src/Message.hpp +++ b/client/libs/espnow/src/Message.hpp @@ -15,6 +15,7 @@ // if more things are sent from the host the name might not be accurate anymore class Message { public: + Message(); explicit Message(ClientDataPackage data); Message(Measurement const &data, diff --git a/host/host_central_mast/lib/NetworkConnectionManager/ConnectionManager.cpp b/host/host_central_mast/lib/NetworkConnectionManager/ConnectionManager.cpp index bdadaf9..b5da420 100644 --- a/host/host_central_mast/lib/NetworkConnectionManager/ConnectionManager.cpp +++ b/host/host_central_mast/lib/NetworkConnectionManager/ConnectionManager.cpp @@ -101,9 +101,14 @@ std::string ConnectionManager::connect(RequestInformation requestInformation) { throw LTEConnectionException("Failed to connect to host"); } + esp_log_write(ESP_LOG_DEBUG, TAG_GSM, "Connected to host\n"); String request = requestInformation.buildRequest(); client.print(request); + client.println("Connection: close"); + client.println(); + + esp_log_write(ESP_LOG_DEBUG, TAG_GSM, "Request sent, waiting for response\n"); String line; // print response diff --git a/host/host_central_mast/lib/Utilities/Utilities.cpp b/host/host_central_mast/lib/Utilities/Utilities.cpp index 50e18e0..110ae49 100644 --- a/host/host_central_mast/lib/Utilities/Utilities.cpp +++ b/host/host_central_mast/lib/Utilities/Utilities.cpp @@ -282,11 +282,26 @@ void turnOffLEDs() { // Set LED OFF digitalWrite(PWR_PIN, LOW); } +String dataPackageToLineProtocolString(const ClientDataPackage &dataPackage, const String &clientMacAddress) { + String measurementType = dataPackage.getMeasurementData().getMeasurementTypeString().c_str(); + String hardwareName = dataPackage.getSensorInformation().getHardwareNameString().c_str(); + String timestamp = String(dataPackage.getTimestamp()); + String protocol = dataPackage.getSensorInformation().getProtocolString().c_str(); + String ic2address = String(dataPackage.getMeasurementData().getI2CAddress()); + String value = String(dataPackage.getMeasurementData().getValue()); + String channel = String(dataPackage.getMeasurementData().getChannel()); + + String lineData = hardwareName + ",clientMac=" + clientMacAddress + ",protocol=" + protocol + ",channel=" + channel + + " " + measurementType + "=" + value + " " + timestamp; + return lineData; +} + String documentToLineProtocolString(const DynamicJsonDocument &doc) { String measurementType = doc["measurementType"].as<String>(); - String sensorName = doc["sensorName"].as<String>(); + String sensorName = doc["hardwareName"].as<String>(); String timestamp = doc["timestamp"].as<String>(); - String protocol = doc["protocol"].as<String>(); + String protocol = doc["protocolAddress"].as<String>(); + String ic2address = doc["ic2Address"].as<String>(); String value = doc["value"].as<String>(); String channel = doc["channel"].as<String>(); String clientMac = doc["clientMac"].as<String>(); @@ -342,6 +357,7 @@ String dataPackageToServerReadableString(ClientDataPackage clientDataPackage, co serverDoc["protocolAddress"] = clientDataPackage.getMeasurementData().getChannel(); serverDoc["i2cAddress"] = clientDataPackage.getMeasurementData().getI2CAddress(); serverDoc["hardwareName"] = clientDataPackage.getSensorInformation().getHardwareNameString(); + serverDoc["error"] = clientDataPackage.getMeasurementData().getErrorTypeString(); // each value is a element in the readigs array JsonArray readings = serverDoc.createNestedArray("readings"); JsonObject reading = readings.createNestedObject(); diff --git a/host/host_central_mast/lib/Utilities/Utilities.h b/host/host_central_mast/lib/Utilities/Utilities.h index a196ea8..b5c1e2b 100644 --- a/host/host_central_mast/lib/Utilities/Utilities.h +++ b/host/host_central_mast/lib/Utilities/Utilities.h @@ -42,6 +42,7 @@ namespace ESPUtilities { void turnOffLEDs(); String getMacAddressAsString(const uint8_t *mac); String documentToLineProtocolString(const DynamicJsonDocument &doc); +String dataPackageToLineProtocolString(const ClientDataPackage &dataPackage, const String &clientMacAddress); DynamicJsonDocument parseReceivedJsonData(char *data); String documentToServerReadableString(const DynamicJsonDocument &doc); String dataPackageToServerReadableString(ClientDataPackage clientDataPackage, const String &clientMacAddress); diff --git a/shared-libs/DataTransfer/Measurement.hpp b/shared-libs/DataTransfer/Measurement.hpp index 49bcd49..a008c39 100644 --- a/shared-libs/DataTransfer/Measurement.hpp +++ b/shared-libs/DataTransfer/Measurement.hpp @@ -31,6 +31,14 @@ public: errorType = ErrorType::DATA_OK; } + Measurement() { + value = ERROR_VALUE; + measurementType = MeasurementType::NULL_MEASUREMENT; + channel = NO_CHANNEL; + i2cAddress = NO_I2C_ADDRESS; + errorType = ErrorType::NULL_MESSAGE; + } + [[nodiscard]] double getValue() const { return value; } [[nodiscard]] const MeasurementType & -- GitLab