package main import ( "encoding/json" "log" client "github.com/influxdata/influxdb1-client/v2" ) // Create InfluxDB Client func influxDBClient(port string) client.Client { c, err := client.NewHTTPClient(client.HTTPConfig{ Addr: conf.General.InfluxURL + ":" + port, }) if err != nil { log.Fatalln("Error: ", err) } return c } // Get a single Datapoint from InfluxDB func getInfluxDataPoint(dp string, h string, p string) float64 { //Build the Query query := "SELECT last(" + dp + ") FROM system WHERE host = '" + h + "'" c := influxDBClient(p) q := client.NewQuery(query, "udp", "s") response, err := c.Query(q) if err != nil { log.Println("Influx query error!") } res := 0.0 if len(response.Results) > 0 { res, err := response.Results[0].Series[0].Values[0][1].(json.Number).Float64() if err != nil { log.Println("Error in type conversion") } return res } return res } // Send Datapoints to InfluxDB, point map and InfluxDB Port needed func sendInfluxBatchDataPoint(point *client.Point, influxPort string) { // Open connection to InfluxDB bp, err := client.NewBatchPoints(client.BatchPointsConfig{ Database: "freifunk", Precision: "s", }) if err != nil { log.Fatalln("Error: ", err) } bp.AddPoint(point) c := influxDBClient(influxPort) err = c.Write(bp) if err != nil { log.Fatal(err) } // }