Improvement of the server part to return a name and sleep time
This commit is contained in:
parent
1c13707b39
commit
25ff751aa9
3 changed files with 62 additions and 16 deletions
13
server-go-ingress/Makefile
Normal file
13
server-go-ingress/Makefile
Normal file
|
@ -0,0 +1,13 @@
|
|||
.PHONY: build fmt deploy
|
||||
|
||||
default: build
|
||||
|
||||
build:
|
||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
|
||||
|
||||
deploy: build
|
||||
docker build --tag registry.lab.inf3.xyz/tschwery/temperature-go-server:v1.1 .
|
||||
docker push registry.lab.inf3.xyz/tschwery/temperature-go-server:v1.1
|
||||
|
||||
fmt:
|
||||
go fmt $$(go list ./... | grep -v /vendor/)
|
|
@ -13,7 +13,7 @@ spec:
|
|||
- name: regcred
|
||||
containers:
|
||||
- name: temperature-go-server
|
||||
image: registry.lab.inf3.xyz/tschwery/temperature-go-server:v1
|
||||
image: registry.lab.inf3.xyz/tschwery/temperature-go-server:v1.1
|
||||
resources:
|
||||
requests:
|
||||
cpu: 50m
|
||||
|
|
|
@ -2,8 +2,10 @@ package main
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
influxClient "github.com/influxdata/influxdb/client/v2"
|
||||
|
@ -23,7 +25,6 @@ const (
|
|||
)
|
||||
|
||||
func main() {
|
||||
|
||||
http.HandleFunc("/esp8266/sensors", func(w http.ResponseWriter, r *http.Request) { handleSensor(w, r) })
|
||||
http.ListenAndServe(":3000", nil)
|
||||
}
|
||||
|
@ -38,12 +39,10 @@ func handleSensor(rw http.ResponseWriter, req *http.Request) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
_, _, err = c.Ping(0)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
log.Println("Error connecting to the InfluxDB:", err)
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(rw, "Error connecting to the InfluxDB: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
defer c.Close()
|
||||
|
@ -52,13 +51,22 @@ func handleSensor(rw http.ResponseWriter, req *http.Request) {
|
|||
var data sensorData
|
||||
err = decoder.Decode(&data)
|
||||
if err != nil {
|
||||
log.Println("Error in the sent data.")
|
||||
log.Println(err)
|
||||
log.Println("Error in the sent data:", err)
|
||||
rw.WriteHeader(http.StatusBadRequest)
|
||||
fmt.Fprintf(rw, "Error in the sent data: %s", err)
|
||||
return
|
||||
}
|
||||
defer req.Body.Close()
|
||||
|
||||
log.Printf("Got data: %s %s (%f) (%f)\n", data.ID, data.Name, data.Temp, data.Pressure)
|
||||
log.Printf("Got data: (%s) (%s) (%f) (%f)\n", data.ID, data.Name, data.Temp, data.Pressure)
|
||||
|
||||
data.Name = strings.TrimSpace(data.Name)
|
||||
|
||||
nameOverride := false
|
||||
if len(data.Name) == 0 {
|
||||
data.Name = getNodeName(data.ID)
|
||||
nameOverride = true
|
||||
}
|
||||
|
||||
bp, err := influxClient.NewBatchPoints(influxClient.BatchPointsConfig{
|
||||
Database: database,
|
||||
|
@ -66,7 +74,10 @@ func handleSensor(rw http.ResponseWriter, req *http.Request) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln("Error: ", err)
|
||||
log.Println("Error connecting to the InfluxDB:", err)
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(rw, "Error connecting to the InfluxDB: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
tags := map[string]string{
|
||||
|
@ -89,7 +100,10 @@ func handleSensor(rw http.ResponseWriter, req *http.Request) {
|
|||
ts,
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatalln("Error: ", err)
|
||||
log.Println("Error connecting to the InfluxDB:", err)
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(rw, "Error connecting to the InfluxDB: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
pointPressure, err := influxClient.NewPoint(
|
||||
|
@ -105,10 +119,29 @@ func handleSensor(rw http.ResponseWriter, req *http.Request) {
|
|||
bp.AddPoint(pointTemp)
|
||||
bp.AddPoint(pointPressure)
|
||||
|
||||
log.Println("Sending", bp, c)
|
||||
|
||||
err = c.Write(bp)
|
||||
if err != nil {
|
||||
log.Fatalln("Error: ", err)
|
||||
log.Println("Error connecting to the InfluxDB:", err)
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
fmt.Fprintf(rw, "Error connecting to the InfluxDB: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
nextTimeSlot := ts.Add(15 * time.Minute)
|
||||
nextTimeSlot = nextTimeSlot.Round(15 * time.Minute)
|
||||
|
||||
remainingAlignment := nextTimeSlot.Unix() - ts.Unix()
|
||||
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
fmt.Fprintf(rw, "Thanks !\nSleep %d\n", remainingAlignment)
|
||||
if nameOverride && len(data.Name) > 0 {
|
||||
fmt.Fprintf(rw, "Name: %s\n", data.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func getNodeName(nodeID string) string {
|
||||
knownModules := make(map[string]string)
|
||||
knownModules["EC:FA:BC:07:E4:31"] = "bureau"
|
||||
|
||||
return knownModules[nodeID]
|
||||
}
|
||||
|
|
Reference in a new issue