From be02a720850932655ada7c0171140186412643f8 Mon Sep 17 00:00:00 2001 From: fish Date: Thu, 27 Jun 2019 10:49:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84lora=E7=BD=91=E5=85=B3?= =?UTF-8?q?=E5=86=97=E4=BD=99=E6=95=B0=E6=8D=AE=E8=BF=87=E6=BB=A4=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0mqtt=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/gateway.conf | 6 +++++- loadconfig.go | 17 ++++++++++++----- main.go | 3 +++ router.go | 2 +- tcpserver.go | 20 +++++++++++++------- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/conf/gateway.conf b/conf/gateway.conf index 4b35738..f65dd14 100644 --- a/conf/gateway.conf +++ b/conf/gateway.conf @@ -226,5 +226,9 @@ "pro_category":1, "syn_data":false, "syn_extension_Time":false, - "record_log_path":"/usr/local/dpark" + "record_log_path":"/usr/local/dpark", + "mqtt_open":true, + "mqtt_broker":"tcp://120.77.206.101:1883", + "mqtt_username":"", + "mqtt_password":"" } diff --git a/loadconfig.go b/loadconfig.go index 31c47ad..e58f5d3 100644 --- a/loadconfig.go +++ b/loadconfig.go @@ -9,6 +9,7 @@ import ( // "strconv" "time" "sync" + "math/rand" ) type Traffic struct { @@ -43,6 +44,10 @@ type Conf struct { SYNDATA bool `json:"syn_data"` SYNEXTENSIONTIME bool `json:"syn_extension_Time"` RECORD_LOG_PATH string `json:"record_log_path"` + MQTT_OPEN bool `json:"mqtt_open"` + MQTT_BROKER string `json:"mqtt_broker"` + MQTT_USERNAME string `json:"mqtt_username"` + MQTT_PASSWORD string `json:"mqtt_password"` } //无线 下位机 @@ -94,6 +99,7 @@ type LoraNode struct{ CURRENT_DATA int `json:"current_data"` CHECK_TIME bool `json:"check_time"` DEVICE string `json:"device"` + UPDATE_TIME time.Time `json:"update_time"` } var conf Conf @@ -101,13 +107,11 @@ var DEVICEDATAS Devicedatas var demoDevice Device var today string -//var airDevice Device - -//var femaledemoDevice Device -//var maledemoDevice Device var nodeUpdateMap sync.Map -// var logch = make(chan []byte) + +//sensor data update map +var sensorUpdateMap sync.Map //log channel var logch = make(chan []byte) @@ -120,6 +124,9 @@ var db, _ = sql.Open("sqlite3", "./db/gateway.db") // 加载配置文件 func init() { + //以时间配置随机数种子 + rand.Seed(time.Now().UnixNano()) + t := time.Now() today = t.Format("2006-01-02") diff --git a/main.go b/main.go index e35baad..7b4f00b 100644 --- a/main.go +++ b/main.go @@ -52,6 +52,7 @@ func main() { c.AddFunc("0, */10, *, *, *, *", savedata_cron) c.AddFunc("0, 0, 0, *, *, *", insertdata) c.AddFunc("0, 0, *, *, *, *", get_weather) + //定时更新today字段,当前日期 c.AddFunc("0, *, *, *, *, *", func(){ t := time.Now() today = t.Format("2006-01-02") @@ -60,6 +61,8 @@ func main() { if conf.OPENTCPSETVER { + //开启mqtt默认认定是无线方案 + go record_log_channel() tcp_port := strconv.Itoa(conf.TCPPORT) diff --git a/router.go b/router.go index d583b8c..92dc59f 100644 --- a/router.go +++ b/router.go @@ -232,7 +232,7 @@ func dealDatav3(data []byte) string{ // log.Println("loraNodeMap:",loraNodeMap) loraNode, ok := loraNodeMap.Load(adr) if !ok { - log.Println("load loraNode success ", ok) + log.Println("load loraNode fail ", adr) return "" } // log.Println("load loraNode:",loraNode) diff --git a/tcpserver.go b/tcpserver.go index 5902a62..4c2a940 100644 --- a/tcpserver.go +++ b/tcpserver.go @@ -85,6 +85,7 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { continueCount := 0 // log.Println("yunhorndeug.push.data.tcp.reqLen|data",reqLen,data) log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$",data[:reqLen]) + now := time.Now() for i, b := range data[:reqLen] { if reqLen<7{ @@ -104,11 +105,6 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { buffer.WriteString(s) } - // log.Println("========================",data[reqLen-2:reqLen]) - - // log.Println(b) - // log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$",i,reqLen) - // log.Println("$$$$$$$$$$$$$$$$$$$$$$$$$",data[reqLen]) end :=0 //254为分隔符 if b==254 && i>3{ @@ -215,13 +211,23 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { log.Println("yunhorndeug.push.data.tcp:",buffer.String(),addrs,dataType,values) - _,ok := loraNodeMap.Load(buffer.String()) + loraNode,ok := loraNodeMap.Load(buffer.String()) if !ok{ log.Println("yunhorndeug.push.data.tcp.dev not exist:",buffer.String(),dataType,values) - buffer = new(bytes.Buffer) + buffer = new(bytes.Buffer) continue } + if !loraNode.(LoraNode).UPDATE_TIME.IsZero() { + var duration = now.Sub(loraNode.(LoraNode).UPDATE_TIME).Seconds() + var durationAsInt64 = int(duration) + if(durationAsInt64<=1){ + log.Println("repeat.sensor.data:",addrs) + continue; + } + } + + buffer = new(bytes.Buffer) go write_log_channel(data[i-4:i+end])