diff --git a/mqttclient/main.go b/mqttclient/main.go index 5f56dfcf92fea268831a9b8620ca2e582f0a278a..ee1c61e2b0bea03d52983b021766597249392eff 100644 --- a/mqttclient/main.go +++ b/mqttclient/main.go @@ -10,6 +10,7 @@ import ( "jonasled.dev/jonasled/ems-esp-logger/csv" "jonasled.dev/jonasled/ems-esp-logger/helper" "jonasled.dev/jonasled/ems-esp-logger/log" + "jonasled.dev/jonasled/ems-esp-logger/types" "jonasled.dev/jonasled/ems-esp-logger/zeromq" ) @@ -22,25 +23,20 @@ var messagePubHandlerBoiler mqtt.MessageHandler = func(client mqtt.Client, msg m log.Log.Info("Received new boiler data") csv.JsonToCsv(string(msg.Payload())) - var jsonData map[string]interface{} - err := json.Unmarshal(msg.Payload(), &jsonData) - if err != nil { - panic(err) - } - - currentTime := time.Now().Local().Format("2006-01-02 15:04:05") - jsonData["date"] = currentTime - - updatedData, err := json.Marshal(jsonData) - if err != nil { - panic(err) - } - if os.Getenv("OUTPUT_FILE_NAME_RAW") != "" { - dumpRawData(string(updatedData), os.Getenv("OUTPUT_FILE_NAME_RAW")) + dumpRawData(string(msg.Payload()), os.Getenv("OUTPUT_FILE_NAME_RAW")) } if os.Getenv("OUTPUT_DATABSE") != "" { - zeromq.Pusher.Send(string(updatedData), 0) + task := types.Task{ + Date: time.Now().UTC(), + Data: string(msg.Payload()), + Instance: os.Getenv("INSTANCE_NAME"), + } + taskData, err := json.Marshal(task) + if err != nil { + log.Log.Error("Failed encoding new data task as JSON: ", err.Error()) + } + zeromq.Pusher.Send(string(taskData), 0) } } @@ -72,12 +68,27 @@ func Init() { } func dumpRawData(data string, filename string) { + + var jsonData map[string]interface{} + err := json.Unmarshal([]byte(data), &jsonData) + if err != nil { + panic(err) + } + + currentTime := time.Now().Local().Format("2006-01-02 15:04:05") + jsonData["date"] = currentTime + + updatedData, err := json.Marshal(jsonData) + if err != nil { + panic(err) + } + file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { panic(err) } defer file.Close() - file.WriteString(data) + file.WriteString(string(updatedData)) file.WriteString("\n") } diff --git a/types/task.go b/types/task.go new file mode 100644 index 0000000000000000000000000000000000000000..44e1d04775e6e9984e28c3a3f85f9c3d97d86132 --- /dev/null +++ b/types/task.go @@ -0,0 +1,9 @@ +package types + +import "time" + +type Task struct { + Date time.Time + Instance string + Data string +}