#include <avr/pgmspace.h>
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 256
// Flash-Speicher Formatstring
const char TFA3294_FormatInflux[] PROGMEM = 
"TFAOutDoor,sensor_id=%02X temperature_C=%s,humidity=%d,dewpoint_c=%s,battery_low=%d,pressure=%s";
String formatSensorData(unsigned int id, const char *tstr, int humidity, const char *tpstr, 
                      int battery_low, const char *pressure) {
    char FormatStrbuffer[BUFFER_SIZE];
    char strInflux[BUFFER_SIZE];
    // Lade das Format-Template aus PROGMEM in den RAM
    strcpy_P(FormatStrbuffer, TFA3294_FormatInflux);
    // Fülle den String mit den Werten
    snprintf(strInflux, sizeof(strInflux), FormatStrbuffer,
             id, tstr, humidity, tpstr, battery_low, pressure);
    // Ausgabe zur Überprüfung
    return(strInflux);
}
void setup() {
  //char str[30];
  Serial.begin(115200);
}
void loop() {
    unsigned int id = 0x1A; // Beispiel für Hexadezimal-ID
    const char *tstr = "23.5";
    int humidity = 55;
    const char *tpstr = "18.0";
    int battery_low = 0;
    const char *pressure = "1013.0";
    String data = formatSensorData(id, tstr, humidity, tpstr, battery_low, pressure);
    Serial.println(data);
}