From b18dafc6b3a7ab142c0e5424fa0d186b4f8d0450 Mon Sep 17 00:00:00 2001 From: DanielR92 Date: Thu, 11 Jul 2024 18:33:14 +0200 Subject: [PATCH] add header file --- src/utils/mqttHelper.h | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/utils/mqttHelper.h diff --git a/src/utils/mqttHelper.h b/src/utils/mqttHelper.h new file mode 100644 index 00000000..0e86ba28 --- /dev/null +++ b/src/utils/mqttHelper.h @@ -0,0 +1,46 @@ +#ifndef __MQTT_HELPER_H__ +#define __MQTT_HELPER_H__ + +#include +#include +#include +#include +#include +#include "DynamicJsonHandler.h" +#include "helper.h" +#include + +namespace mqttHelper { + template + bool checkIntegerProperty(const char *tmpTopic, const char *subTopic, const uint8_t *payload, size_t len, T *cfg, DynamicJsonHandler *log) { + if (strncmp(tmpTopic, subTopic, strlen(subTopic)) == 0) { + // Konvertiere payload in einen String + String sPayload = String((const char*)payload).substring(0, len); + + // Konvertiere den String in den gewünschten Integer-Typ T + T value; + sscanf(sPayload.c_str(), "%d", &value); // Beispielhaft für int, anpassen je nach T + + // Überprüfung, ob der Wert in den Ziel-Typ T passt + if (sPayload.toInt() <= std::numeric_limits::max() && sPayload.toInt() >= std::numeric_limits::min()) { + // Weise den Wert cfg zu + *cfg = value; + + // Füge die Eigenschaft zum Log hinzu + log->addProperty("v", ah::round1(*cfg)); + + return true; + } else { + // Handle den Fall, wenn der Wert außerhalb des gültigen Bereichs liegt + log->addProperty("v", F("Fehler: Der Wert passt nicht in den Ziel-Typ T")); + return false; + } + } + return false; + } + + bool checkCharProperty(const char *tmpTopic, const char *subTopic, const uint8_t *payload, size_t len, char *cfg, int cfgSize, DynamicJsonHandler *log); + bool checkBoolProperty(const char *tmpTopic, const char *subTopic, const uint8_t *payload, size_t len, bool *cfg, DynamicJsonHandler *log); +} + +#endif /*__MQTT_HELPER_H__*/ \ No newline at end of file