| | |
| | | "bytes" |
| | | "encoding/json" |
| | | "fmt" |
| | | "github.com/gin-gonic/gin" |
| | | "io/ioutil" |
| | | "net" |
| | | "net/http" |
| | |
| | | "gat1400Exchange/config" |
| | | "gat1400Exchange/models" |
| | | "gat1400Exchange/pkg/logger" |
| | | "gat1400Exchange/util" |
| | | |
| | | "github.com/gin-gonic/gin" |
| | | "golang.org/x/text/encoding/simplifiedchinese" |
| | | "golang.org/x/text/transform" |
| | | ) |
| | |
| | | type A2ElevatorData struct { |
| | | Id string `json:"id"` |
| | | State struct { |
| | | Floor string `json:"Floor"` |
| | | Status string `json:"Status"` |
| | | TFloor int64 `json:"TFloor"` |
| | | Floor string `json:"Floor"` |
| | | Status string `json:"Status"` |
| | | TFloor int64 `json:"TFloor"` |
| | | Speed float64 `json:"Speed"` |
| | | } `json:"State"` |
| | | } |
| | | |
| | | type A2ElevatorConfig struct { |
| | | FloorData []string `json:"floordata"` |
| | | } |
| | | |
| | | var A2TopFloor string |
| | | var A2BottomFloor string |
| | | |
| | | func GetA2ElevatorConfig() { |
| | | url := "http://192.168.10.253/cgi-bin/liftnum.cgi" |
| | | payload := []byte("{\"display\":1}") |
| | | header := map[string]string{ |
| | | "Cookie": "eyJuYW1lIjoiYWRtaW4iLCAicGFzZCI6ImFkbWluMTIzIn0=", |
| | | } |
| | | |
| | | rsp, err := util.HttpPost(url, header, payload) |
| | | if err != nil { |
| | | logger.Warn("Get A2 floor data failure,%s", err.Error()) |
| | | return |
| | | } |
| | | |
| | | var configData A2ElevatorConfig |
| | | err = json.Unmarshal(rsp, &configData) |
| | | if err != nil { |
| | | logger.Warn("Unmarshal A2 floor data failure,%s", err.Error()) |
| | | return |
| | | } |
| | | |
| | | if len(configData.FloorData) > 0 { |
| | | A2BottomFloor, A2TopFloor = configData.FloorData[0], configData.FloorData[len(configData.FloorData[0])-1] |
| | | } |
| | | |
| | | logger.Info("A2 floor config total:%d, bottomFloor:%s, topFloor:%s", len(configData.FloorData), A2BottomFloor, A2TopFloor) |
| | | } |
| | | |
| | | func NVCSA2WebServer() { |
| | | // 先获取总楼层数, 记录最高层 |
| | | GetA2ElevatorConfig() |
| | | var runState string |
| | | |
| | | r := gin.Default() |
| | | |
| | | r.POST("/", func(c *gin.Context) { |
| | | var req A2ElevatorData |
| | | err := c.BindJSON(&req) |
| | |
| | | |
| | | logger.Debug("Received A2 report data %+v", req) |
| | | |
| | | // 记录电梯运行状态, 只记录上行和下行 |
| | | if req.State.Speed > 0 { |
| | | runState = "上" |
| | | } else if req.State.Speed < 0 { |
| | | runState = "下" |
| | | } |
| | | |
| | | // 已到最下层 |
| | | if req.State.Floor == A2BottomFloor { |
| | | runState = "上" |
| | | } |
| | | if req.State.Floor == A2TopFloor { |
| | | runState = "下" |
| | | } |
| | | |
| | | if config.NVCSConf.OSD != "" { |
| | | floorText := req.State.Floor |
| | | floorText = floorText + " " + config.NVCSConf.OSD |
| | | floorText := fmt.Sprintf("%s%s %s", req.State.Floor, runState, config.NVCSConf.OSD) |
| | | |
| | | // 调用hik api 将文字添加到osd的左下角 |
| | | AddFloorToOSD(floorText) |