Add Null values and new measurements
This commit is contained in:
parent
c6e735950f
commit
c83feeb845
8 changed files with 331 additions and 11 deletions
113
fortoprt/fetch.go
Normal file
113
fortoprt/fetch.go
Normal file
|
@ -0,0 +1,113 @@
|
|||
package fortoprt
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"git.fuyu.moe/5GPowerQuality/parser/data"
|
||||
"git.fuyu.moe/5GPowerQuality/parser/shared"
|
||||
"golang.org/x/net/websocket"
|
||||
)
|
||||
|
||||
type message struct {
|
||||
MessageInfo struct {
|
||||
Version string
|
||||
Application string
|
||||
Module string
|
||||
Function string
|
||||
}
|
||||
Data map[string]measurement
|
||||
}
|
||||
|
||||
type measurement struct {
|
||||
DeviceID int
|
||||
Timestamp shared.UnixTimestamp
|
||||
Value float64
|
||||
Unit string
|
||||
}
|
||||
|
||||
var host = `dcem5g.ddns.net`
|
||||
|
||||
func FetchData() {
|
||||
fmt.Println(`Connecting`)
|
||||
|
||||
conn, err := websocket.Dial(`ws://`+host+`/ValuesSocketServer/VMvalues`, ``, `http://localhost`)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
requestData(conn, 1)
|
||||
requestData(conn, 2)
|
||||
|
||||
for {
|
||||
b, n := make([]byte, 16384), 0
|
||||
|
||||
msg := message{}
|
||||
|
||||
for {
|
||||
nn, err := conn.Read(b[n:])
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
n += nn
|
||||
|
||||
err = json.Unmarshal(b[:n], &msg)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
|
||||
// sets := data.Sets{}
|
||||
mID := data.GetMeterID(data.SourceFortop, host+`-`+strconv.Itoa(msg.Data["U1"].DeviceID))
|
||||
|
||||
sets := data.Sets{}
|
||||
for k, v := range msg.Data {
|
||||
key := data.Key{Meter: mID, Time: time.Time(v.Timestamp)}
|
||||
if _, ok := sets[key]; !ok {
|
||||
sets[key] = data.Set{}
|
||||
}
|
||||
|
||||
if len(k) == 2 {
|
||||
n := k[1:]
|
||||
if n == `4` {
|
||||
n = `N`
|
||||
}
|
||||
|
||||
k = k[:1] + `Gem` + n
|
||||
}
|
||||
|
||||
sets[key][k] = v.Value
|
||||
}
|
||||
|
||||
data.InsertSets(sets)
|
||||
}
|
||||
}
|
||||
|
||||
func requestData(conn *websocket.Conn, meter int) {
|
||||
write(conn, `{"MESSAGEINFO":{"VERSION":1,"APPLICATION":"DCEM_ENTERPRISE","MODULE":"LIVEDATA","FUNCTION":"REQUEST_DATASTREAM","REVISION":1},"VARS":{"DEVICEID":`+strconv.Itoa(meter)+`,"VALUES":`+values+`}}`)
|
||||
}
|
||||
|
||||
func write(conn *websocket.Conn, msg string) {
|
||||
_, err := conn.Write([]byte(msg))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
var values = `[
|
||||
"U1", "U2", "U3", "U4",
|
||||
"I1", "I2", "I3", "I4",
|
||||
"P1", "P2", "P3", "P4",
|
||||
"B1", "B2", "B3", "B4",
|
||||
"S1", "S2", "S3", "S4",
|
||||
"C1", "C2", "C3", "C4",
|
||||
"EP1", "EP2", "EP3", "EP4",
|
||||
"UTHD1", "UTHD2", "UTHD3", "UTHD4",
|
||||
"ITHD1", "ITHD2", "ITHD3", "ITHD4",
|
||||
"FREQ"
|
||||
]`
|
Loading…
Add table
Add a link
Reference in a new issue