chengqian hace 5 meses
padre
commit
2345951e5e
Se han modificado 5 ficheros con 16 adiciones y 8 borrados
  1. 1 1
      build.bat
  2. 1 1
      config/config.yaml
  3. 11 3
      service/deviceMgr.go
  4. 2 1
      service/mqtt_handle.go
  5. 1 2
      timer/task.go

+ 1 - 1
build.bat

@@ -1,2 +1,2 @@
 %此脚本需要在命令窗口执行,不能直接运行%
-go env -w CGO_ENABLED=0 GOOS=linux GOARCH=arm && go build -o build/smart_intersection_edge ./
+go env -w CGO_ENABLED=0 GOOS=linux GOARCH=arm && go build -o build/smart_intersectionV2.0_edge ./

+ 1 - 1
config/config.yaml

@@ -5,7 +5,7 @@ logger:
     path: ./log
 mqtt:
     id: smart_intersectionV2.0_edge
-    password: admin
+    password: #BgYgMRhshtS0I7E
     server: tcp://118.253.180.18:1883
     user: admin
 

+ 11 - 3
service/deviceMgr.go

@@ -2,6 +2,9 @@ package service
 
 import (
 	"fmt"
+	"golang.org/x/text/encoding/simplifiedchinese"
+	"golang.org/x/text/transform"
+	"io"
 	"net"
 	"regexp"
 	"smartIntersection_edge/util/config"
@@ -65,7 +68,7 @@ func (s *Device) Process() {
 				s.IsLogin = true
 				Devices[data[20:44]] = s
 				topic := MqttService.GetTopic(s.Info.Sn, TopicChanStatus)
-				err := MqttService.Publish(topic, 1)
+				err := MqttService.Publish(topic, "1")
 				if err != nil {
 					continue
 				}
@@ -85,7 +88,7 @@ func (s *Device) Process() {
 					s.SumHighSpeed++
 					if s.SumHighSpeed >= 3 { //连续三次认为超速
 						topic := MqttService.GetTopic(s.Info.Sn, TopicHighSpeed)
-						MqttService.Publish(topic, time.Now()) //上报当前超速时间
+						MqttService.Publish(topic, time.Now().Format(time.RFC3339)) //上报当前超速时间
 					}
 				} else {
 					s.SumHighSpeed = 0
@@ -108,7 +111,7 @@ func (s *Device) Process() {
 
 					if s.SumLowSpeed >= 6 { //连续8次认为低速
 						topic := MqttService.GetTopic(s.Info.Sn, TopicLowSpeed)
-						MqttService.Publish(topic, time.Now()) //上报当前低俗时间
+						MqttService.Publish(topic, time.Now().Format(time.RFC3339)) //上报当前低速时间
 					}
 				} else {
 					s.SumLowSpeed = 0
@@ -135,3 +138,8 @@ func FindScreenBySN(sn string) *config.Screens {
 	}
 	return nil
 }
+
+func UTF8ToGB2312(s string) ([]byte, error) {
+	reader := transform.NewReader(strings.NewReader(s), simplifiedchinese.GB18030.NewEncoder())
+	return io.ReadAll(reader)
+}

+ 2 - 1
service/mqtt_handle.go

@@ -79,7 +79,8 @@ func (o *MqttHandler) Handler() interface{} {
 
 		switch topic {
 		case TopicSetControl:
-			n, err := Devices[sn].Conn.Write([]byte(m.PayloadString()))
+			command, _ := UTF8ToGB2312(m.PayloadString())
+			n, err := Devices[sn].Conn.Write(command)
 			if n <= 0 && err != nil {
 				logger.Logger.Errorf("设备:%v操作失败,错误:%v", sn, err)
 			}

+ 1 - 2
timer/task.go

@@ -14,9 +14,8 @@ func IsOnline() {
 			for _, device := range service.Devices {
 				//符合条件
 				if time.Now().Add(-2*time.Minute).After(device.LastTime) || device.LastTime.IsZero() {
-					//TODO 向云端上报设备离线
 					topic := service.MqttService.GetTopic(device.Info.Sn, service.TopicChanStatus)
-					err := service.MqttService.Publish(topic, 0)
+					err := service.MqttService.Publish(topic, "0")
 					delete(service.Devices, device.Info.Sn)
 					if err != nil {
 						continue