From f3f90042fef456b88d91b5fc80dbaea6f8cc4939 Mon Sep 17 00:00:00 2001 From: Jonas Leder <jonas@jonasled.de> Date: Sun, 26 Jan 2025 13:46:11 +0100 Subject: [PATCH] introduce struct for transmitting task --- mqttclient/main.go | 45 ++++++++++++++++++++++++++++----------------- types/task.go | 9 +++++++++ 2 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 types/task.go diff --git a/mqttclient/main.go b/mqttclient/main.go index 5f56dfc..ee1c61e 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 0000000..44e1d04 --- /dev/null +++ b/types/task.go @@ -0,0 +1,9 @@ +package types + +import "time" + +type Task struct { + Date time.Time + Instance string + Data string +} -- GitLab