diff --git a/loadconfig.go b/loadconfig.go index c161704..32c2af7 100644 --- a/loadconfig.go +++ b/loadconfig.go @@ -106,10 +106,16 @@ var today string //var femaledemoDevice Device //var maledemoDevice Device +var nodeUpdateMap sync.Map +var logch = make(chan []byte) + +//log channel +var logch = make(chan []byte) + +var loraNodeMap sync.Map var db, _ = sql.Open("sqlite3", "./db/gateway.db") -var loraNodeMap sync.Map // 加载配置文件 func init() { diff --git a/main.go b/main.go index 078de3c..e35baad 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "net" "os" "strconv" + "time" ) var err error @@ -15,7 +16,6 @@ func main() { go gw_router() go serial_run() c := cron.New() - //获取数据防抖处理时间配置 if conf.SYNEXTENSIONTIME { @@ -52,9 +52,16 @@ func main() { c.AddFunc("0, */10, *, *, *, *", savedata_cron) c.AddFunc("0, 0, 0, *, *, *", insertdata) c.AddFunc("0, 0, *, *, *, *", get_weather) + c.AddFunc("0, *, *, *, *, *", func(){ + t := time.Now() + today = t.Format("2006-01-02") + }) c.Start() if conf.OPENTCPSETVER { + + go record_log_channel() + tcp_port := strconv.Itoa(conf.TCPPORT) listener, err := net.Listen("tcp", "0.0.0.0:"+tcp_port) diff --git a/router.go b/router.go index c7ae89c..1fbfaf5 100644 --- a/router.go +++ b/router.go @@ -58,6 +58,8 @@ var dparkConf DparkConf var connTest net.Conn + + //获取数据防抖配置时间 func getConf() { resp, err := http.Get("https://smartoilets.cn/socketServer/dpark/getConf") @@ -94,7 +96,7 @@ func getConf() { if dparkConf.ExtensionOutTime < 0 { dparkConf.ExtensionOutTime = 0 } - +// time. extensionInTime = dparkConf.ExtensionInTime extensionOutTime = dparkConf.ExtensionOutTime @@ -102,8 +104,8 @@ func getConf() { } -//距离有效判断 -var reactTof = 1650 +//距离有效判断time. +var reactTof = 1650time. //数据防抖 进入时间 var extensionInTime = 6 diff --git a/tcpserver.go b/tcpserver.go index d0a013f..a840953 100644 --- a/tcpserver.go +++ b/tcpserver.go @@ -117,7 +117,9 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { //尿布台数据,地址1位 数据2位 dataType := data[i+1] values := make([]byte,0) - if data[i+1] == 1 { + + + if dataType == 1 { continueCount = 3 end = 4 @@ -208,7 +210,6 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { if err != nil { log.Println("write msg error!", err) } - } log.Println("yunhorndeug.push.data.tcp:",buffer.String(),addrs,dataType,values) @@ -222,7 +223,7 @@ func readConn(conn net.Conn, readChan chan<- []byte, stopChan chan<- bool) { buffer = new(bytes.Buffer) - go record_log(data[i-4:i+end]) + go write_log_channel(data[i-4:i+end]) go dealDatav3(data[i-4:i+end]) diff --git a/worker.go b/worker.go index b3af0d6..6df58d2 100644 --- a/worker.go +++ b/worker.go @@ -10,6 +10,8 @@ import ( "sync" "encoding/json" "time" + "strconv" + "bytes" ) type Devicedatas struct { @@ -77,18 +79,64 @@ func yunhorn_xdy_l_v1(data_buf []byte) { } +//wirte data to log channel +func write_log_channel(data []byte){ + logch <- data +} + +//get data from log channel and write file +func record_log_channel(){ + + for { + data_buf := <- logch + + addrs := data_buf[:4] + + + buffer := new(bytes.Buffer) + + for i:=0;i1){ + record_log(data_buf) + } + //same data + }else{ + //not data + // log.Println("save adr:",adr) + nodeUpdateMap.Store(adr,now) + record_log(data_buf) + } + } +} + //打印原始数据进log func record_log(data_buf []byte){ time := today folder := conf.RECORD_LOG_PATH+"/"+time err2 :=os.MkdirAll(folder,os.ModePerm) - if err2!=nil{ + if err2!=nil{ log.Println(err2) - } - f, err := os.OpenFile(folder+"/"+time, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) + } + f, err := os.OpenFile(folder+"/"+time+".log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil{ - log.Fatalln("HHHHH") + log.Fatalln("HHHHH") } record := log.New(f,"",log.Llongfile) //debugLog.SetPrefix("[Debug]") @@ -96,6 +144,7 @@ func record_log(data_buf []byte){ record.Println(data_buf) } + func yunhorn_lora_l_v1(data_buf []byte) { // for _, i := range conf.RS485DEVICES {