diff --git a/csv/main.go b/csv/main.go index 79d41c00b5bffb1f5ddac39ab13ce45edfd829bc..8d0a34159a92892576964bb090c5aa88c6fa075e 100644 --- a/csv/main.go +++ b/csv/main.go @@ -15,7 +15,7 @@ func JsonToCsv(jsonData string) { panic(err) } - currentDate := time.Now().Format("2006-01-02 13:44") + currentDate := time.Now().Local().Format("2006-01-02 15:04:05") file, err := os.OpenFile(os.Getenv("OUTPUT_FILE_NAME"), os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { @@ -23,28 +23,31 @@ func JsonToCsv(jsonData string) { } defer file.Close() + // Create a CSV writer writer := csv.NewWriter(file) defer writer.Flush() + // Check if file is empty to write header fileInfo, err := file.Stat() if err != nil { panic(err) } + + // Sort keys for consistent column order + keys := helper.SortMapKeys(data) + + // Write the header if the file is empty if fileInfo.Size() == 0 { - // Write header - header := []string{"Date"} - for key := range data { - header = append(header, key) - } + header := append([]string{"Date"}, keys...) if err := writer.Write(header); err != nil { panic(err) } } - // Write data as a single line with the date + // Write data row with the current date row := []string{currentDate} - for _, value := range data { - row = append(row, helper.AnyToString(value)) + for _, key := range keys { + row = append(row, helper.AnyToString(data[key])) } if err := writer.Write(row); err != nil { panic(err) diff --git a/helper/sortMapKeys.go b/helper/sortMapKeys.go new file mode 100644 index 0000000000000000000000000000000000000000..f35d28b9be1e1a8cc284a9f00dc7dd5acd0108b1 --- /dev/null +++ b/helper/sortMapKeys.go @@ -0,0 +1,13 @@ +package helper + +import "sort" + +// Helper function to get sorted keys from a map +func SortMapKeys(data map[string]interface{}) []string { + keys := make([]string, 0, len(data)) + for key := range data { + keys = append(keys, key) + } + sort.Strings(keys) // Sort keys alphabetically + return keys +} diff --git a/mqttclient/main.go b/mqttclient/main.go index c90d00c9a5bd123202e0d5e12f6974e3468efeb1..d35a2aa4574c8fabb0b99f0e9f24f56049c5c603 100644 --- a/mqttclient/main.go +++ b/mqttclient/main.go @@ -16,6 +16,7 @@ var messagePubHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Me var messagePubHandlerBoiler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { log.Log.Debugf("Received message for boiler: %s from topic: %s\n", msg.Payload(), msg.Topic()) + log.Log.Info("Received new boiler data") csv.JsonToCsv(string(msg.Payload())) }