zhangzengfei
2024-05-26 cd885fa2f65f90ae6d2d8df1afb5e74cfa214855
添加A2梯控的接收端
1个文件已修改
71 ■■■■■ 已修改文件
service/nvcs.go 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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()
    }
}