From f6588955f3f7b258be3bdd7a787ab32b001bdd82 Mon Sep 17 00:00:00 2001 From: fish Date: Mon, 12 Aug 2019 16:46:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=8B=E8=A1=8C=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E4=B8=8B=E5=8F=91=E6=8E=A7=E5=88=B6=E9=80=BB=E8=BE=91?= =?UTF-8?q?,=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=B8=BAyaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/gateway.yaml | 49 +++++++++++++++------- conf/gateway_dev.yaml | 96 ++++++++++++++++++++++++++++++++++++++++++ golbalHelp.go | 10 +++++ loadconfig.go | 7 ++++ main.go | 2 +- router.go | 98 +++++++++++++++++++++++++++++++++---------- tcpserver.go | 17 ++++++-- worker.go | 4 ++ 8 files changed, 239 insertions(+), 44 deletions(-) create mode 100644 conf/gateway_dev.yaml diff --git a/conf/gateway.yaml b/conf/gateway.yaml index 2184c43..4c20153 100644 --- a/conf/gateway.yaml +++ b/conf/gateway.yaml @@ -26,19 +26,36 @@ lora_nodes: #location_data #current_data 当前状态数据 #device 设备版本号 - - {"adr":"dc390000","location_type":"changing_desk","location_code":"spao","location_data":"data13","current_data":0,"device":"yunhorn_kq_d_v1_1"} - - {"adr":"0c521618","location_type":"changing_desk","location_code":"spao","location_data":"data6","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c473018","location_type":"changing_desk","location_code":"spao","location_data":"data7","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c451d14","location_type":"changing_desk","location_code":"spao","location_data":"data3","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c471714","location_type":"changing_desk","location_code":"spao","location_data":"data4","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c093e17","location_type":"changing_desk","location_code":"spao","location_data":"data5","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c3e3c14","location_type":"changing_desk","location_code":"spao","location_data":"data2","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c3c1214","location_type":"changing_desk","location_code":"spao","location_data":"data8","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c3d3c14","location_type":"changing_desk","location_code":"spao","location_data":"data10","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c3b4f14","location_type":"changing_desk","location_code":"spao","location_data":"data9","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c360514","location_type":"changing_desk","location_code":"spao","location_data":"data1","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"853c0000","location_type":"changing_desk","location_code":"spao","location_data":"data11","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} - - {"adr":"0c0a2017",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c521618","location_type":"","location_code":"spao","location_data":"data13","current_data":0,"device":"yunhorn_kq_d_v1_1"} + - {"adr":"fd3c0000","location_type":"","location_code":"spao","location_data":"data6","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c451d14","location_type":"","location_code":"spao","location_data":"data7","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c0a2017","location_type":"","location_code":"spao","location_data":"data3","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c093e17","location_type":"","location_code":"spao","location_data":"data4","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"d93c0000","location_type":"","location_code":"spao","location_data":"data5","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3c1214","location_type":"","location_code":"spao","location_data":"data2","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3d3c14","location_type":"","location_code":"spao","location_data":"data10","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3b4f14","location_type":"","location_code":"spao","location_data":"data9","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"4f3c0000","location_type":"","location_code":"spao","location_data":"data1","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c471714","location_type":"","location_code":"spao","location_data":"data11","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"c53a0000",location_type":"","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"083c0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"f73b0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"123c0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"a33a0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"103c0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c3a3117",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"013a0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"063d0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"f53b0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c360514",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"1c3c0000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"d4400000",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c480a17",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c495017",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c073f18",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c0c1d18",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c3b1518",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ + - {"adr":"0c4c4c17",location_type":"","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} "lora_nodes":[ devices_list: # num0 设备ID号 - ["4E5D52DD-EB81-43C0-A2B6-04E432412EBA", "loraport", "yunhorn_kgl_l_v1", "1"] @@ -89,8 +106,8 @@ api_port: 10086 #本地web api port pro_category: 1 syn_data: false syn_extension_Time: false -record_log_path: "/usr/local/dpark" #无线原始数据收集的log目录 -mqtt_open: true -mqtt_broker: "tcp://120.77.206.101:1883" +record_log_path: "/usr/local/dpark" #/usr/local/dpark #无线原始数据收集的log目录 +mqtt_open: false +mqtt_broker: "tcp://localhost:1883" mqtt_username: "" mqtt_password: "" \ No newline at end of file diff --git a/conf/gateway_dev.yaml b/conf/gateway_dev.yaml new file mode 100644 index 0000000..e43ea93 --- /dev/null +++ b/conf/gateway_dev.yaml @@ -0,0 +1,96 @@ +gateway_info: #本地网关信息 + id: F23FACD2-7D85-4FCC-88E3-C5B78931A26D #网关ID + version: yunhorn_gw_c_v1 #网关版本 + location: [113.960347, 22.54143] #本地网关经纬度 目前暂无用 + config: + - + id: 7BB22E6A-ED0D-4161-8370-6B722D3683B7 #配置采集器ID + version: yunhorn_kgl_c16_v1 #采集器版本号 + data: + - ["男厕位", 1] #key:类型 value:数据索引号 + - ["男厕位", 2] + - ["女厕位", 1] + - ["女厕位", 2] + - ["男厕位", 3] + - ["男厕位", 4] + - ["男厕位", 5] + - ["男厕位", 6] + - ["男厕位", 7] + - ["男厕位", 8] + - ["女厕位", 3] + - ["女厕位", 4] +lora_nodes: + #adr:设备地址 + #资源位类型 尿布台 吸顶 + # location_code 目前暂无用 + #location_data + #current_data 当前状态数据 + #device 设备版本号 + - {"adr":"0c0d3118","location_type":"changing_desk","location_code":"spao","location_data":"data13","current_data":0,"device":"yunhorn_kq_d_v1_1"} + - {"adr":"0c521618","location_type":"changing_desk","location_code":"spao","location_data":"data6","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c473018","location_type":"changing_desk","location_code":"spao","location_data":"data7","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c451d14","location_type":"changing_desk","location_code":"spao","location_data":"data3","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c471714","location_type":"changing_desk","location_code":"spao","location_data":"data4","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c093e17","location_type":"changing_desk","location_code":"spao","location_data":"data5","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3e3c14","location_type":"changing_desk","location_code":"spao","location_data":"data2","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3c1214","location_type":"changing_desk","location_code":"spao","location_data":"data8","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3d3c14","location_type":"changing_desk","location_code":"spao","location_data":"data10","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c3b4f14","location_type":"changing_desk","location_code":"spao","location_data":"data9","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c360514","location_type":"changing_desk","location_code":"spao","location_data":"data1","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"853c0000","location_type":"changing_desk","location_code":"spao","location_data":"data11","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} + - {"adr":"0c0a2017",location_type":"changing_desk","location_code":"spao","location_data":"data12","current_data":0,"device":"yunhorn_kgl_c16_v1_1"} +devices_list: + # num0 设备ID号 + - ["4E5D52DD-EB81-43C0-A2B6-04E432412EBA", "loraport", "yunhorn_kgl_l_v1", "1"] + - ["deb03e28-ddcb-4e5d-aa31-d870a1f0f09b", "loraport", "yunhorn_kgl_c8_v1", "1"] + - ["7BB22E6A-ED0D-4161-8370-6B722D3683B7", "loraport", "yunhorn_kgl_c16_v1", "1"] + - ["8E146028-E1B1-4AC9-8F47-01376A22CB35", "loraport", "yunhorn_kgl_c8_v1", "2"] +serialports_list: + loraport: {"com": "/dev/cu.wchusbserial141420","bauds": 115200,"size": 8,"parity": "E","stopbits": 1,"readtimeout": 100,"note": "lorawan"} +rs485devices: + 15394892-E8B0-4FF2-BC35-1BF380BD1B68: + version: yunhorn_xsy_c_v1 + num: 1 + command: #采集命令 + - [8, 3, 0, 1, 0, 2, 149, 82] + EC13C2D9-6A93-4894-BB5B-89BDAA786D8A: + version: yunhorn_kgl_c8_v1 + num: 1 + command: #采集盒对应位置的采集命令 + - [1, 2, 0, 0, 0, 1, 185, 202] + - [1, 2, 0, 1, 0, 1, 232, 10] + - [1, 2, 0, 2, 0, 1, 24, 10] + - [1, 2, 0, 3, 0, 1, 73, 202] + - [1, 2, 0, 4, 0, 1, 248, 11] + - [1, 2, 0, 5, 0, 1, 169, 203] + - [1, 2, 0, 6, 0, 1, 89, 203] + - [1, 2, 0, 7, 0, 1, 8, 11] + 00DD66A6-378E-450D-98AA-44AC02741980: + version: yunhorn_kgl_c16_v1 + num": 1, + command: + - [3, 2, 0, 0, 0, 16, 120, 36] +loradevices_list: + 4E5D52DD-EB81-43C0-A2B6-04E432412EBA: + version: yunhorn_zjj_l_v1 + num: 1 + command: + - [85, 2, 242, 170] +iconurl: "http://192.168.3.188/icons/" +websocketurl: ["192.168.3.216:8080", "/echo"] +post_to_server: "https://smartoilets.cn/socketServer/statis/push" #数据收集服务器 +debug: true #是否打印debug log +openserial: false #是否采集串口数据 +open_tcp_server: true #是否开启TCP端口接收无线数据 +check_serial: true +dpark_location: "spaoDevs" +tcp_port: 10090 +api_port: 10086 #本地web api port +pro_category: 1 +syn_data: false +syn_extension_Time: false +record_log_path: "/Users/lanren/Documents/repositorys/git/yunhorn_gateway/logs" #无线原始数据收集的log目录 +mqtt_open: true +mqtt_broker: "tcp://120.77.206.101:1883" +mqtt_username: "" +mqtt_password: "" \ No newline at end of file diff --git a/golbalHelp.go b/golbalHelp.go index 5802bf5..18f9349 100644 --- a/golbalHelp.go +++ b/golbalHelp.go @@ -27,3 +27,13 @@ const ( //混合 PRO_CATEGORY_HYBRID = 2 ) + + +func Contains(s []string, e string) bool { + for _, a := range s { + if a == e { + return true + } + } + return false +} \ No newline at end of file diff --git a/loadconfig.go b/loadconfig.go index 8b8c33c..93cc721 100644 --- a/loadconfig.go +++ b/loadconfig.go @@ -107,6 +107,7 @@ type LoraNode struct{ CHECK_TIME bool `json:"check_time"` DEVICE string `json:"device"` UPDATE_TIME time.Time `json:"update_time"` + LORA_GWS []string `json:"lora_gws"` } var conf Conf @@ -120,6 +121,12 @@ var nodeUpdateMap sync.Map //sensor data update map var sensorUpdateMap sync.Map +//key:loragateway ip value:conn object +var loragwMap sync.Map + +//key:字符串addr value:byte[] addr +var sensorMap sync.Map + //log channel var logch = make(chan []byte) diff --git a/main.go b/main.go index 13ab773..2fafd14 100644 --- a/main.go +++ b/main.go @@ -7,7 +7,6 @@ import ( "os" "strconv" "time" - ) var err error @@ -134,6 +133,7 @@ func main() { for { conn, err := listener.Accept() + loragwMap.Store(conn.RemoteAddr().String(),conn) if err != nil { log.Printf("accept fail, err: %v\n", err) continue diff --git a/router.go b/router.go index b0db176..174eb22 100644 --- a/router.go +++ b/router.go @@ -10,7 +10,6 @@ import ( "math" "net/http" "strconv" - "strings" "sync" "time" "bytes" @@ -39,6 +38,8 @@ func gw_router() { v1.GET("/getConf") + v1.GET("/sendCommand",sendCommand) + } api_port := strconv.Itoa(conf.APIPORT) @@ -53,13 +54,72 @@ type DparkConf struct { ExtensionOutTime2 int `json:"out2"` } +func sendCommand(c *gin.Context) { + // var heartbeat []byte = []byte{0x01} + addr := c.Query("addr") + command := c.Query("command") + // commandInt,err := strconv.Atoi(command) + // if err !=nil{ + // c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "command"}) + // return; + // } + commands := []byte(command) + byteAddr,ok := sensorMap.Load(addr) + if !ok{ + c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "valid addr"}) + return; + } + + loraNode,ok := loraNodeMap.Load(addr) + if !ok{ + c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "valid addr"}) + return; + } + commands = []byte{0x01} + if command == "1"{ + commands = []byte{0x01} + }else if command == "2"{ + commands = []byte{0x02} + }else{ + c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "valid command"}) + return; + } + + // strconv.Itoa + + var buffer bytes.Buffer + buffer.Write(byteAddr.([]byte)) + // log.Println(commands) + buffer.Write(commands) + + log.Println("loragws ",loraNode.(LoraNode).LORA_GWS) + + for _,loragwip := range loraNode.(LoraNode).LORA_GWS{ + loraconn,ok := loragwMap.Load(loragwip) + if ok{ + log.Println("=======================begin push tcp command ",buffer.Bytes()) + _, err := loraconn.(net.Conn).Write(buffer.Bytes()) + if err != nil { + log.Println("write msg error!", err) + c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "fail"}) + return; + } + }else{ + + } + + } + + log.Println(addr) + log.Println(command) + log.Println("will send commands ",commands) + c.JSON(http.StatusOK, gin.H{"status": http.StatusOK, "msg": "success"}) +} + var dparkConf DparkConf var connTest net.Conn - - - //获取数据防抖配置时间 func getConf() { resp, err := http.Get("https://smartoilets.cn/socketServer/dpark/getConf") @@ -137,7 +197,7 @@ func push(c *gin.Context) { } -func dealDatav3(data []byte) string{ +func dealDatav3(data []byte,loragwip string) string{ nowtime := time.Now() @@ -210,8 +270,6 @@ func dealDatav3(data []byte) string{ // log.Println("readyData:",readyData.String()) - // go pushCODE1007(data) - //默认当前无人占用 current := 0 @@ -254,6 +312,10 @@ func dealDatav3(data []byte) string{ newLoraNode.LOCATION_CODE = loraNode.(LoraNode).LOCATION_CODE newLoraNode.LOCATION_DATA = loraNode.(LoraNode).LOCATION_DATA newLoraNode.DEVICE = loraNode.(LoraNode).DEVICE + + if(!Contains(newLoraNode.LORA_GWS,loragwip)){ + newLoraNode.LORA_GWS = append(newLoraNode.LORA_GWS,loragwip) + } loraNodeMap.Store(adr,newLoraNode) @@ -315,6 +377,9 @@ func dealDatav3(data []byte) string{ newLoraNode.LOCATION_CODE = loraNode.(LoraNode).LOCATION_CODE newLoraNode.LOCATION_DATA = loraNode.(LoraNode).LOCATION_DATA newLoraNode.DEVICE = loraNode.(LoraNode).DEVICE + if(!Contains(newLoraNode.LORA_GWS,loragwip)){ + newLoraNode.LORA_GWS = append(newLoraNode.LORA_GWS,loragwip) + } loraNodeMap.Store(adr,newLoraNode) changeDataV2(newLoraNode) @@ -330,6 +395,9 @@ func dealDatav3(data []byte) string{ newLoraNode.LOCATION_CODE = loraNode.(LoraNode).LOCATION_CODE newLoraNode.LOCATION_DATA = loraNode.(LoraNode).LOCATION_DATA newLoraNode.DEVICE = loraNode.(LoraNode).DEVICE + if(!Contains(newLoraNode.LORA_GWS,loragwip)){ + newLoraNode.LORA_GWS = append(newLoraNode.LORA_GWS,loragwip) + } if (datatype==2 && (extensionInTime2<=0 || extensionOutTime2<=0)){ newLoraNode.CURRENT_DATA = current @@ -486,22 +554,6 @@ func dealDatav3(data []byte) string{ return "" } -//发送code1007数据到云端 -func pushCODE1007(data string) { - - //resp, err := http.PostForm("https://smartoilets.cn/socketServer/static/push", - // url.Values{"d": {data}}) - - resp, err := http.Post("https://smartoilets.cn/socketServer/statis/push", - "application/x-www-form-urlencoded", - strings.NewReader("d="+data)) - if err != nil { - log.Print("yunhorndebug.pushCODE1007.err", err) - } - - defer resp.Body.Close() -} - func changeData(num int, device Device) { log.Println("device:", device) DEVICEDATAS.DATA[demoDevice.VERSION+"_"+strconv.Itoa(num)] = device diff --git a/tcpserver.go b/tcpserver.go index 4c2a940..6ff8888 100644 --- a/tcpserver.go +++ b/tcpserver.go @@ -14,6 +14,8 @@ import ( ) + + func handleConn(conn net.Conn) { if connTest==nil{ @@ -86,6 +88,8 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { // log.Println("yunhorndeug.push.data.tcp.reqLen|data",reqLen,data) log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$",data[:reqLen]) now := time.Now() + // log.Println("yunhorndeug.push.data.tcp.begin handleConn,cliendAddr:", conn.RemoteAddr()) + for i, b := range data[:reqLen] { if reqLen<7{ @@ -113,14 +117,17 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { //尿布台数据,地址1位 数据2位 dataType := data[i+1] - if dataType!=1 && dataType!=2 && dataType!=3 && dataType!=4{ + //0是通用类型 + if dataType!=0 && dataType!=1 && dataType!=2 && dataType!=3 && dataType!=4{ continue; } values := make([]byte,0) - - if dataType == 1 { + if dataType ==0{ + continueCount = 2 + end = 3 + }else if dataType == 1 { continueCount = 3 end = 4 @@ -226,13 +233,15 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { continue; } } + + sensorMap.Store(buffer.String(),addrs) buffer = new(bytes.Buffer) go write_log_channel(data[i-4:i+end]) - go dealDatav3(data[i-4:i+end]) + go dealDatav3(data[i-4:i+end],conn.RemoteAddr().String()) } } diff --git a/worker.go b/worker.go index e11f628..5a80c6c 100644 --- a/worker.go +++ b/worker.go @@ -26,6 +26,10 @@ type Device struct { DATA map[string]interface{} `json:"data"` } +type baseMessage struct{ + +} + //处理通过tcp发送过来的数据 //广州板子版 func yunhorn_wireless(data_buf []byte) {