package envitron import ( "strconv" "time" "git.fuyu.moe/5GPowerQuality/parser/data" "git.fuyu.moe/5GPowerQuality/parser/shared" "github.com/labstack/echo" ) func ReceiveData() { e := echo.New() e.Binder = jsonBinder{} e.POST(`/`, handleReq) e.Start(`:44444`) } type input struct { Time shared.UnixTimestamp `json:"timestamp"` UID string `json:"uuid"` Modules []module `json:"modules"` } type module struct { Port int `json:"port"` Voltage float64 `json:"volt"` Ampere float64 `json:"ampere"` } func handleReq(c echo.Context) error { var i []input err := c.Bind(&i) if err != nil { return c.JSON(400, err) } sets := data.Sets{} for _, v := range i { mID := data.GetMeterID(data.SourceEnvitron, v.UID) key := data.Key{Meter: mID, Time: time.Time(v.Time)} if _, ok := sets[key]; !ok { sets[key] = data.Set{} } for _, m := range v.Modules { if m.Port == 4 { continue } p := strconv.Itoa(m.Port) sets[key][`UGem`+p] = m.Voltage sets[key][`IGem`+p] = m.Ampere } } data.InsertSets(sets) return c.JSONBlob(200, []byte(`{"success": true}`)) }