From 9d0154e8f937748a5357e72806303f0be03fcb89 Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Tue, 20 Apr 2021 08:41:06 +0200 Subject: [PATCH] tune flux queries --- metrics.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/metrics.go b/metrics.go index 24fe4c8..5343974 100644 --- a/metrics.go +++ b/metrics.go @@ -111,9 +111,9 @@ func metricsHandler(response http.ResponseWriter, request *http.Request) { data := []byte(fmt.Sprintf(`from(bucket:"wobischbucket") |> range(start: %s, stop: %s) |> filter(fn: (r) => r._measurement == "measurement") - |> filter(fn: (r) => r._field == "lon" or r._field == "lat" or r._field == "vbat") |> filter(fn: (r) => r.deveui == "%s") - |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")`, mystart, mystop, mydeveui)) + |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + |> filter(fn: (r) => r.lat != 0`, mystart, mystop, mydeveui)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) if err != nil { @@ -159,15 +159,15 @@ func metricsHandler(response http.ResponseWriter, request *http.Request) { for scanner.Scan() { s := strings.Split(scanner.Text(), ",") fmt.Printf("Scanned Line: %v\n", s) - if (len(s) >= 11) && !(strings.HasPrefix(s[3], "_")) { + if (len(s) >= 12) && !(strings.HasPrefix(s[3], "_")) { t, err := time.Parse(time.RFC3339, s[3]) if err != nil { fmt.Printf("error converting time: %s\n", s[3]) continue } a := t.Unix() - lat = string2float64(s[8]) - lon = string2float64(s[9]) + lat = string2float64(s[9]) + lon = string2float64(s[10]) if (lat == 0) || (lon == 0) { fmt.Println("skip 0 value for lon/lat") } else { @@ -190,7 +190,7 @@ func metricsHandler(response http.ResponseWriter, request *http.Request) { fmt.Fprintf(response, " ") } - fmt.Fprintf(response, "[%d, %s, %s, %s, %d]\n", a, s[8], s[9], s[10], vbat2percent(s[10])) + fmt.Fprintf(response, "[%d, %s, %s, %s, %d]\n", a, s[9], s[10], s[11], vbat2percent(s[10])) } @@ -273,8 +273,8 @@ func downloadmetricsHandler(response http.ResponseWriter, request *http.Request) data := []byte(fmt.Sprintf(`from(bucket:"wobischbucket") |> range(start: %s, stop: %s) |> filter(fn: (r) => r._measurement == "measurement") - |> filter(fn: (r) => r._field == "lon" or r._field == "lat" or r._field == "vbat") |> filter(fn: (r) => r.deveui == "%s") + |> filter(fn: (r) => r._field == "lon" or r._field == "lat") |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")`, mystart, mystop, mydeveui)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) @@ -312,7 +312,7 @@ func downloadmetricsHandler(response http.ResponseWriter, request *http.Request) for scanner.Scan() { s := strings.Split(scanner.Text(), ",") fmt.Printf("Scanned Line: %v\n", s) - if (len(s) >= 11) && !(strings.HasPrefix(s[3], "_")) { + if (len(s) >= 10) && !(strings.HasPrefix(s[3], "_")) { t, err := time.Parse(time.RFC3339, s[3]) if err != nil { fmt.Printf("error converting time: %s\n", s[3]) @@ -389,10 +389,9 @@ func getLastMetrics(deveui string) OneMetric { url := "http://localhost:8086/api/v2/query?org=wobischorg" data := []byte(fmt.Sprintf(`from(bucket:"wobischbucket") |> range(start:-365d) - |> tail(n:10) |> filter(fn: (r) => r._measurement == "measurement" and r.deveui == "%s") - |> filter(fn: (r) => r._field == "lon" or r._field == "lat" or r._field == "vbat" or r._field == "fw") |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") + |> filter(fn: (r) => r.lat != 0) |> last(column: "_time")`, deveui)) req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))