zhangzengfei
2024-05-26 cd885fa2f65f90ae6d2d8df1afb5e74cfa214855
service/nvcs.go
@@ -4,8 +4,10 @@
   "bytes"
   "encoding/json"
   "fmt"
   "github.com/gin-gonic/gin"
   "io/ioutil"
   "net"
   "net/http"
   "time"
   "gat1400Exchange/config"
@@ -31,7 +33,7 @@
   Alarm  []interface{}  `json:"Alarm"` // You might want to define a specific type for alarms
}
type ElevatorData struct {
type A1ElevatorData struct {
   Elevator []Elevator `json:"Elevator"`
}
@@ -80,7 +82,7 @@
      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())
@@ -134,8 +136,73 @@
   }
}
/*
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()
   }
}