From df794921a35a231eba9ee61eafb68d5c1cbc7043 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期四, 13 六月 2024 18:35:57 +0800 Subject: [PATCH] 完善A2梯控的电梯运行状态显示 --- service/nvcs.go | 67 ++++++++++++++++++++++++++++++--- 1 files changed, 61 insertions(+), 6 deletions(-) diff --git a/service/nvcs.go b/service/nvcs.go index e2f3f2b..3b6aac5 100644 --- a/service/nvcs.go +++ b/service/nvcs.go @@ -4,7 +4,6 @@ "bytes" "encoding/json" "fmt" - "github.com/gin-gonic/gin" "io/ioutil" "net" "net/http" @@ -13,7 +12,9 @@ "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" ) @@ -166,14 +167,54 @@ 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) @@ -184,9 +225,23 @@ 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) -- Gitblit v1.8.0