From 0f080312ab683e69a3c7fc210ab572427761ca99 Mon Sep 17 00:00:00 2001 From: Brian Rogers Date: Tue, 5 Apr 2022 09:08:52 -0600 Subject: [PATCH] changed from json to csv --- src/main.c | 76 ++++++++++++++++-------------------------------------- 1 file changed, 22 insertions(+), 54 deletions(-) diff --git a/src/main.c b/src/main.c index 2617871..e63ebd0 100644 --- a/src/main.c +++ b/src/main.c @@ -112,78 +112,44 @@ void print_sensor_data(struct bme280_data *sensor_readings_data) #endif } -int8_t save_data_to_json_file(struct bme280_data *sensor_readings_data) +int8_t save_data_to_csv_file(struct bme280_data *sensor_readings_data) { time_t rawtime = time(NULL); struct tm *timeinfo; char dateString[32]; - char timeString[32]; + char datetimeString[32]; char filename[100]; - char *jsonBuffer; - FILE *jsonFilePtr; + FILE *csvFilePtr; - double fahrenheit; - double celsius; - double pascals; - double millibars; - double humidity; - - struct json_object *parsed_json; - struct json_object *latest_reading_object = json_object_new_object(); - struct json_object *temperature_object = json_object_new_object(); - struct json_object *pressure_object = json_object_new_object(); + double celsius = sensor_readings_data->temperature; + double fahrenheit = celsius_to_fahrenheit(sensor_readings_data->temperature); + double pascals = sensor_readings_data->pressure; + double millibars = pascals_to_mbar(sensor_readings_data->pressure); + double humidity = sensor_readings_data->humidity; timeinfo = localtime(&rawtime); strftime(dateString, 32, "%F", timeinfo); - strftime(timeString, 32, "%F_%H-%M-%S", timeinfo); + strftime(datetimeString, 32, "%F %H:%M:%S", timeinfo); - snprintf(filename, sizeof(filename), "readings_%s.json", dateString); + snprintf(filename, sizeof(filename), "/home/pi/readings/readings_%s.csv", dateString); if (!check_file_exists(filename)) { printf("File for today does not exist! Creating... \n"); - FILE *jsonFile = fopen(filename, "w"); - fputs("{}", jsonFile); - fclose(jsonFile); + FILE *csvFile = fopen(filename, "w"); + fputs("Date,Celsius,Fahrenheit,Pascals,Millibars,Humidity Percent\n", csvFile); + fclose(csvFile); } - jsonFilePtr = fopen(filename, "r"); - if (jsonFilePtr == NULL) - { - printf("Failed to open %s for reading...\n", filename); - exit(1); - } - jsonBuffer = parse_json_contents(jsonFilePtr, 10); // 10 as initial size - //fread(jsonBuffer, 1024, 1, jsonFilePtr); - fclose(jsonFilePtr); - - parsed_json = json_tokener_parse(jsonBuffer); - - fahrenheit = celsius_to_fahrenheit(sensor_readings_data->temperature); - celsius = sensor_readings_data->temperature; - pascals = sensor_readings_data->pressure; - millibars = pascals_to_mbar(sensor_readings_data->pressure); - humidity = sensor_readings_data->humidity; - - json_object_object_add(temperature_object, "celsius", json_object_new_double(sensor_readings_data->temperature)); - json_object_object_add(temperature_object, "fahrenheit", json_object_new_double(fahrenheit)); - json_object_object_add(pressure_object, "pascals", json_object_new_double(sensor_readings_data->pressure)); - json_object_object_add(pressure_object, "millibars", json_object_new_double(millibars)); - - json_object_object_add(latest_reading_object, "temperature", temperature_object); - json_object_object_add(latest_reading_object, "pressure", pressure_object); - json_object_object_add(latest_reading_object, "humidity_percent", json_object_new_double(humidity)); - - json_object_object_add(parsed_json, timeString, latest_reading_object); - - jsonFilePtr = fopen(filename, "w"); - if (jsonFilePtr == NULL) + csvFilePtr = fopen(filename, "a"); + if (csvFilePtr == NULL) { printf("Failed to open %s for writing...\n", filename); exit(1); } - fputs(json_object_to_json_string_ext(parsed_json, JSON_C_TO_STRING_PRETTY), jsonFilePtr); - fclose(jsonFilePtr); + fprintf(csvFilePtr, "%s,%0.5f,%0.5f,%0.5f,%0.5f,%0.5f\n", datetimeString, celsius, fahrenheit, pascals, millibars, humidity); + fclose(csvFilePtr); + return 0; } @@ -209,7 +175,7 @@ int8_t read_sensor_data_normal_mode(struct bme280_dev *dev) readings_result = bme280_set_sensor_mode(BME280_NORMAL_MODE, dev); readings_result = bme280_get_sensor_data(BME280_ALL, &sensor_readings_data, dev); //print_sensor_data(&sensor_readings_data); - save_data_to_json_file(&sensor_readings_data); + save_data_to_csv_file(&sensor_readings_data); return readings_result; } @@ -236,9 +202,11 @@ int main(int argc, char* argv[]) dev.delay_ms = user_delay_ms; init_result = bme280_init(&dev); - printf("\r\n BME280 Init Result is:%d \r\n", init_result); + printf("\n\nBME280 Init Result is: %d\n\n", init_result); read_sensor_data_normal_mode(&dev); + printf("Recorded readings.\n\n"); + return 0; }