Hi Dev Team,
I have an application wherein I am publishing my sensor data every hour through MQTT using a Thingy91.
I am storing my sensor data value in a JSON format through cJSON library. I need to read this value every 10 mins, buffer it and send out all the values every hour.
So basically I need to store 6 values (values obtained every 10 mins through the hour) and send them out together every 1 hour.
I needed to know how could I buffer my sensor data and store it to send all of it together every hour.
I obtain my JSON format through this following code:
void my_work_handler_1(struct k_work *work)
{
char *desc2 = "BME680";
char *id2 = "rH";
char *type2 = "humidity";
sensor1 = cJSON_CreateObject();
cJSON_AddItemToObject(sensor1, "description", cJSON_CreateString(desc2));
cJSON_AddItemToObject(sensor1, "Time", cJSON_CreateString(time_string));
cJSON_AddItemToObject(sensor1, "value", cJSON_CreateNumber(testval2));
cJSON_AddItemToObject(sensor1, "unit", cJSON_CreateString(id2));
cJSON_AddItemToObject(sensor1, "type", cJSON_CreateString(type2));
/* print everything */
out1 = cJSON_Print(sensor1);
printk("%s\n", out1);
free(out1);
/* free all objects under root and root itself */
cJSON_Delete(sensor1);
return;
}
K_WORK_DEFINE(my_work1, my_work_handler_1);
I save my json in the variable "out1" in the code. I wanted to know how I could buffer the output and store it in a variable, so I could publish that through MQTT every hour.
Regards,
Adeel.