| | |
| | | "bytes" |
| | | "encoding/json" |
| | | "fmt" |
| | | "github.com/gin-gonic/gin" |
| | | "io/ioutil" |
| | | "net" |
| | | "net/http" |
| | | "time" |
| | | |
| | | "gat1400Exchange/config" |
| | |
| | | Alarm []interface{} `json:"Alarm"` // You might want to define a specific type for alarms |
| | | } |
| | | |
| | | type ElevatorData struct { |
| | | type A1ElevatorData struct { |
| | | Elevator []Elevator `json:"Elevator"` |
| | | } |
| | | |
| | |
| | | reader := transform.NewReader(bytes.NewReader(buffer[:numBytes]), decoder) |
| | | decodedBytes, err := ioutil.ReadAll(reader) |
| | | |
| | | var data ElevatorData |
| | | var data A1ElevatorData |
| | | err = json.Unmarshal(decodedBytes, &data) |
| | | if err != nil { |
| | | logger.Warn("ElevatorData unmarshal error:%s", err.Error()) |
| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | A2 款 数据上报格式 |
| | | |
| | | { |
| | | "id": "10c8a1b0051607361c", |
| | | "State": { |
| | | "Floor": "-1", |
| | | "Floor_flag": "已校准", |
| | | "JZ_flag": "已校准,", |
| | | "JZ_i": 7, |
| | | "Pressure": "99766", |
| | | "Speed": "0.000", |
| | | "Status": "停止1", |
| | | "TFloor": 7, |
| | | "T_acc": "0.062", |
| | | "X_acc": "1.175", |
| | | "Y_acc": "-1.129", |
| | | "Z_acc": "8.344" |
| | | } |
| | | */ |
| | | type A2ElevatorData struct { |
| | | Id string `json:"id"` |
| | | State struct { |
| | | Floor string `json:"Floor"` |
| | | Status string `json:"Status"` |
| | | TFloor int64 `json:"TFloor"` |
| | | } `json:"State"` |
| | | } |
| | | |
| | | func NVCSA2WebServer() { |
| | | r := gin.Default() |
| | | r.POST("/", func(c *gin.Context) { |
| | | var req A2ElevatorData |
| | | err := c.BindJSON(&req) |
| | | if err != nil { |
| | | c.JSON(http.StatusBadRequest, nil) |
| | | return |
| | | } |
| | | |
| | | logger.Debug("Received A2 report data %+v", req) |
| | | |
| | | var d = models.Positions{ |
| | | DeviceId: req.Id, |
| | | Pos: req.State.Floor, |
| | | CreateTime: time.Now().Unix(), |
| | | TimeString: time.Now().Format("2006-01-02 15:04:05"), |
| | | } |
| | | |
| | | err = d.Save() |
| | | if err != nil { |
| | | logger.Warn("Device position update error:%s", err.Error()) |
| | | } |
| | | |
| | | c.JSON(http.StatusOK, "ok") |
| | | }) |
| | | |
| | | err := r.Run(fmt.Sprintf(":%s", config.NVCSConf.Port)) |
| | | if err != nil { |
| | | logger.Warn("Start NVCS WebServer error, %s", err.Error()) |
| | | } |
| | | } |
| | | |
| | | func StartNVCSServer() { |
| | | if config.NVCSConf.Model == "A1" { |
| | | go NVCSA1UDPServer() |
| | | } |
| | | if config.NVCSConf.Model == "A2" { |
| | | go NVCSA2WebServer() |
| | | } |
| | | } |