diff --git a/client/libs/espnow/src/Message.cpp b/client/libs/espnow/src/Message.cpp index 0df90ac3056149208dd7038e08f3ed52641822d3..97f848e3698185e8c19cc0be020a689518b02bca 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 3dc83bf24274e19424d43d22187287651e927253..5863b85be6ba170218c1f5d0f85b74783cdcfb9e 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 bdadaf9ee807376bef8b8450d30e54380bb3a49d..b5da42067dc47d3ba5a18374563868a57a80061b 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 50e18e0adbb892bd01ceeac66dde1a77eb57f5f1..110ae495a71559bc640993b13721babb89c24dae 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 a196ea8c18fbf854aa482b5b84f673bec7d260e9..b5c1e2bc2314f1221df8f86baf8888bf5660e0e9 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 49bcd4956e151bc1f4ec910970fceba51cd80df2..a008c393ab1173a1dabca491232067acd3caf567 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 &