From 0dc58c0d18cb71c3ad8945e02d342fc317579a75 Mon Sep 17 00:00:00 2001 From: XM-GO <93296511+XM-GO@users.noreply.github.com> Date: Wed, 27 Sep 2023 17:30:11 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90feat=E3=80=91=E6=B7=BB=E5=8A=A0tcp?= =?UTF-8?q?=E6=8C=87=E4=BB=A4=E4=B8=8B=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/device/api/device.go | 28 +- apps/device/api/device_cmd.go | 25 +- apps/device/api/product_template.go | 46 ++- apps/device/router/device_cmd.go | 1 + apps/device/services/device.go | 2 +- fatal.log | 334 ++++++++++++++++++ .../mqtt => iothub/client/mqttclient}/mqtt.go | 8 +- {pkg/mqtt => iothub/client/mqttclient}/rpc.go | 4 +- iothub/client/tcpclient/tcp.go | 39 ++ iothub/server/emqxserver/hook.go | 10 +- iothub/server/httpserver/hook.go | 2 + iothub/server/tcpserver/hook.go | 7 +- pkg/global/const_device.go | 8 + pkg/global/global.go | 12 +- .../nodes/action_rpc_request_node.go | 9 +- .../nodes/action_rpc_respond_node.go | 7 +- pkg/tdengine/tdengine_table.go | 14 +- pkg/websocket/socket_server.go | 6 +- shutdown.bat | 2 +- 19 files changed, 481 insertions(+), 83 deletions(-) rename {pkg/mqtt => iothub/client/mqttclient}/mqtt.go (93%) rename {pkg/mqtt => iothub/client/mqttclient}/rpc.go (98%) create mode 100644 iothub/client/tcpclient/tcp.go diff --git a/apps/device/api/device.go b/apps/device/api/device.go index ca5d5e2..668298f 100644 --- a/apps/device/api/device.go +++ b/apps/device/api/device.go @@ -11,8 +11,9 @@ import ( "github.com/PandaXGO/PandaKit/biz" "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" + "pandax/iothub/client/mqttclient" + "pandax/iothub/client/tcpclient" "pandax/pkg/global" - "pandax/pkg/mqtt" "pandax/pkg/shadow" "pandax/pkg/tool" "strings" @@ -143,18 +144,25 @@ func (p *DeviceApi) GetDeviceTelemetryHistory(rc *restfulx.ReqCtx) { // 下发设备属性 func (p *DeviceApi) DownAttribute(rc *restfulx.ReqCtx) { - //id := restfulx.PathParam(rc, "id") + id := restfulx.PathParam(rc, "id") key := restfulx.QueryParam(rc, "key") value := restfulx.QueryParam(rc, "value") - // 下发指令 - contentMap := map[string]interface{}{ - key: value, + one := p.DeviceApp.FindOne(id) + if one.Product.ProtocolName == global.TCPProtocol { + err := tcpclient.Send(id, value) + biz.ErrIsNil(err, "属性下发失败") + } + if one.Product.ProtocolName == global.MQTTProtocol { + // 下发指令 + contentMap := map[string]interface{}{ + key: value, + } + content, _ := json.Marshal(contentMap) + var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single"} + rpc.GetRequestId() + err := rpc.RequestAttributes(mqttclient.RpcPayload{Params: string(content)}) + biz.ErrIsNil(err, "属性下发失败") } - content, _ := json.Marshal(contentMap) - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "single"} - rpc.GetRequestId() - err := rpc.RequestAttributes(mqtt.RpcPayload{Params: string(content)}) - biz.ErrIsNil(err, "属性下发失败") } // InsertDevice 添加Device diff --git a/apps/device/api/device_cmd.go b/apps/device/api/device_cmd.go index 8a384cf..186b947 100644 --- a/apps/device/api/device_cmd.go +++ b/apps/device/api/device_cmd.go @@ -5,8 +5,9 @@ import ( "github.com/PandaXGO/PandaKit/biz" "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" + "pandax/iothub/client/mqttclient" + "pandax/iothub/client/tcpclient" "pandax/pkg/global" - "pandax/pkg/mqtt" "pandax/pkg/tool" "strings" "time" @@ -17,6 +18,7 @@ import ( type DeviceCmdLogApi struct { DeviceCmdLogApp services.DeviceCmdLogModel + DeviceApp services.DeviceModel } // GetDeviceCmdLogList 告警列表数据 @@ -45,15 +47,22 @@ func (p *DeviceCmdLogApi) InsertDeviceCmdLog(rc *restfulx.ReqCtx) { data.Id = tool.GenerateID() data.State = "2" data.RequestTime = time.Now().Format("2006-01-02 15:04:05") + one := p.DeviceApp.FindOne(data.DeviceId) + if one.Product.ProtocolName == global.TCPProtocol { + err := tcpclient.Send(data.DeviceId, data.CmdContent) + biz.ErrIsNil(err, "指令下发失败") + data.State = "0" + } + if one.Product.ProtocolName == global.MQTTProtocol { + // 下发指令 + var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single"} + rpc.GetRequestId() + _, err := rpc.RequestCmd(mqttclient.RpcPayload{Method: data.CmdName, Params: data.CmdContent}) + biz.ErrIsNil(err, "指令下发失败") + data.State = "0" + } err := p.DeviceCmdLogApp.Insert(data) biz.ErrIsNil(err, "添加指令记录失败") - // 下发指令 - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "single"} - rpc.GetRequestId() - _, err = rpc.RequestCmd(mqtt.RpcPayload{Method: data.CmdName, Params: data.CmdContent}) - if err != nil { - global.Log.Error("指令下发失败") - } } // DeleteDeviceCmdLog 删除告警 diff --git a/apps/device/api/product_template.go b/apps/device/api/product_template.go index 6c87d2e..c416600 100644 --- a/apps/device/api/product_template.go +++ b/apps/device/api/product_template.go @@ -57,36 +57,30 @@ func (p *ProductTemplateApi) InsertProductTemplate(rc *restfulx.ReqCtx) { restfulx.BindJsonAndValid(rc, &data) data.Id = tool.GenerateID() data.OrgId = rc.LoginAccount.OrganizationId - // 向超级表及子表中添加字段 - stable := "" - len := 0 - if data.Classify == entity.ATTRIBUTES_TSL { - stable = data.Pid + "_" + entity.ATTRIBUTES_TSL - err := global.TdDb.AddSTableField(stable, data.Key, data.Type, len) - biz.ErrIsNil(err, "添加字段失败") - } else if data.Classify == entity.TELEMETRY_TSL { - stable = data.Pid + "_" + entity.TELEMETRY_TSL - if data.Type == "string" { - len = int(data.Define["length"].(int64)) + if data.Classify == entity.ATTRIBUTES_TSL || data.Classify == entity.TELEMETRY_TSL { + // 向超级表及子表中添加字段 + len := 0 + stable := data.Pid + "_" + data.Classify + if data.Classify == entity.TELEMETRY_TSL { + if data.Type == "string" { + len = int(data.Define["length"].(int64)) + } } err := global.TdDb.AddSTableField(stable, data.Key, data.Type, len) biz.ErrIsNil(err, "添加字段失败") - } else { - return + // 向子表中添加字段 + go func() { + tables, err := global.TdDb.GetListTableByStableName(stable) + if err != nil { + global.Log.Error(err) + return + } + for _, table := range tables { + err = global.TdDb.AddTableField(table.TableName, data.Key, data.Type, 0) + global.Log.Error(err) + } + }() } - // 向子表中添加字段 - go func() { - tables, err := global.TdDb.GetListTableByStableName(stable) - if err != nil { - global.Log.Error(err) - return - } - for _, table := range tables { - err = global.TdDb.AddTableField(table.TableName, data.Key, data.Type, 0) - global.Log.Error(err) - } - }() - p.ProductTemplateApp.Insert(data) } diff --git a/apps/device/router/device_cmd.go b/apps/device/router/device_cmd.go index b734ea8..6ace39b 100644 --- a/apps/device/router/device_cmd.go +++ b/apps/device/router/device_cmd.go @@ -14,6 +14,7 @@ import ( func InitDeviceCmdLogRouter(container *restful.Container) { s := &api.DeviceCmdLogApi{ DeviceCmdLogApp: services.DeviceCmdLogModelDao, + DeviceApp: services.DeviceModelDao, } ws := new(restful.WebService) diff --git a/apps/device/services/device.go b/apps/device/services/device.go index 17bef88..3024bcd 100644 --- a/apps/device/services/device.go +++ b/apps/device/services/device.go @@ -61,7 +61,7 @@ func (m *deviceModelImpl) Insert(data entity.Device) *entity.Device { func (m *deviceModelImpl) FindOne(id string) *entity.DeviceRes { resData := new(entity.DeviceRes) db := global.Db.Table(m.table).Where("id = ?", id) - err := db.First(resData).Preload("Product").Preload("DeviceGroup").Error + err := db.Preload("Product").Preload("DeviceGroup").First(resData).Error biz.ErrIsNil(err, "查询设备失败") return resData } diff --git a/fatal.log b/fatal.log index 81eda0d..6637704 100644 --- a/fatal.log +++ b/fatal.log @@ -2665,3 +2665,337 @@ created by net/http.(*Server).Serve 2023-09-27 15:08:56.453 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device] : 添加Device信息 ->200ms 2023-09-27 15:08:56.499 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->27ms 2023-09-27 15:09:52.942 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 15:10:00-------------------------------- +2023-09-27 15:10:00.081 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 15:10:00.089 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 15:10:00.091 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 15:10:00.092 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 15:10:00.099 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 15:10:00.099 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 15:10:00.099 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 15:10:00.100 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:28] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 15:10:00.100 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 15:10:00.106 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 15:10:00 [INFO] JobCore start success. +2023-09-27 15:10:05.003 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 15:10:05.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 15:13:29.358 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:153] : +2023-09-27 15:13:39.430 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list/all] [uid=1] : 获取Product分页列表 ->9ms +2023-09-27 15:13:39.439 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->11ms +2023-09-27 15:13:39.449 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-27 15:13:39.458 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->22ms +2023-09-27 15:13:46.238 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/qmWqYlY6-w/status] : 获取Device状态信息 ->8ms +2023-09-27 15:13:47.475 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/qmWqYlY6-w/status] : 获取Device状态信息 ->9ms +2023-09-27 15:14:04.041 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/lCtIzLLdIQ/status] [uid=1] [uname=panda] : 获取Device状态信息 ->7ms +2023-09-27 15:14:05.421 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/lCtIzLLdIQ/status] [uid=1] [uname=panda] : 获取Device状态信息 ->9ms +2023-09-27 15:14:07.553 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/status] : 获取Device状态信息 ->10ms +2023-09-27 15:20:30.172 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/status] : 获取Device状态信息 ->8ms +2023-09-27 15:20:31.362 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/status] : 获取Device状态信息 ->8ms +2023-09-27 15:20:33.582 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/lCtIzLLdIQ/property/history] [uid=1] [uname=panda] : 获取设备属性的遥测历史 ->120ms +2023-09-27 15:20:39.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/property/history] : 获取设备属性的遥测历史 ->7ms +2023-09-27 15:20:46.883 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/lCtIzLLdIQ/property/history] [uid=1] : 获取设备属性的遥测历史 ->7ms +2023-09-27 15:20:48.656 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/property/history] : 获取设备属性的遥测历史 ->10ms +2023-09-27 15:20:51.303 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/property/history] : 获取设备属性的遥测历史 ->7ms +2023-09-27 15:20:52.106 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/lCtIzLLdIQ/property/history] [uid=1] : 获取设备属性的遥测历史 ->8ms +2023-09-27 15:20:54.814 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/status] : 获取Device状态信息 ->9ms +2023-09-27 15:38:31.459 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-09-27 15:38:36.184 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-09-27 15:38:36.187 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 15:38:36.206 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$dz/events/device/s7-device/data/update" name:"v1/devices/me/telemetry" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"] +2023-09-27 16:02:31.380 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 16:03:18-------------------------------- +2023-09-27 16:03:18.645 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:03:18.651 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:03:18.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:03:18.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:03:18.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:03:18.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:03:18.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:03:18.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:28] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:03:18.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:03:18.667 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:03:18 [INFO] JobCore start success. +2023-09-27 16:03:18.668 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:03:18.672 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:03:52.188 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-09-27 16:03:52.193 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:03:52.219 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$dz/events/device/s7-device/data/update" name:"v1/devices/me/telemetry" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"] + +2023-09-27 16:05:40-------------------------------- +2023-09-27 16:05:40.419 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:05:40.426 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:05:40.428 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:05:40.428 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:05:40.437 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:05:40.437 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:05:40.437 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:05:40.437 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:28] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:05:40.438 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:05:40.444 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:05:40 [INFO] JobCore start success. +2023-09-27 16:05:40.510 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:05:40.515 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:05:40.517 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected + +2023-09-27 16:06:42-------------------------------- +2023-09-27 16:06:42.305 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:06:42.311 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:06:42.313 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:06:42.313 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:06:42.321 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:06:42.322 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:06:42.322 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:06:42.322 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:28] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:06:42.322 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:06:42.329 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:06:42 [INFO] JobCore start success. +2023-09-27 16:06:45.500 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:06:45.501 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:06:45.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:11:22.202 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-09-27 16:11:27.174 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-09-27 16:11:27.177 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:11:27.193 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$dz/events/device/s7-device/data/update" name:"v1/devices/me/telemetry" name:"$hw/events/device/s7-device/twin/update" name:"v1/devices/me/rpc/request/+"] +2023-09-27 16:26:53.378 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-09-27 16:26:53.396 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list/tree/label] [uid=1] [uname=panda] : 获取ProductCategory树 ->5ms +2023-09-27 16:26:53.400 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 ->18ms +2023-09-27 16:26:53.487 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/d7432e83df771fad85aa4e74235b0591_20230819092625.png] : 获取图片 ->0ms +2023-09-27 16:27:02.030 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->9ms +2023-09-27 16:27:04.828 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list] [uid=1] [uname=panda] : 获取Template分页列表 ->10ms +2023-09-27 16:29:06.044 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 16:29:14-------------------------------- +2023-09-27 16:29:14.600 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:29:14.606 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:29:14.608 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:29:14.608 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:29:14.616 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:29:14.616 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:29:14.616 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:29:14.617 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:29:14.617 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:29:14.623 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:29:14 [INFO] JobCore start success. +2023-09-27 16:29:18.110 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:29:18.115 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:29:18.122 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:30:56.270 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/template] : 添加Template信息 ->0ms +2023-09-27 16:30:56.306 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list] [uid=1] : 获取Template分页列表 ->11ms +2023-09-27 16:30:59.036 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list] [uid=1] : 获取Template分页列表 ->9ms +2023-09-27 16:30:59.541 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->10ms +2023-09-27 16:31:01.312 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list] : 获取Template分页列表 ->10ms +2023-09-27 16:31:02.242 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list] [uid=1] [uname=panda] : 获取Template分页列表 ->8ms +2023-09-27 16:32:24.107 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/template] [uid=1] : 添加Template信息 ->0ms +2023-09-27 16:32:24.147 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list] [uid=1] [uname=panda] : 获取Template分页列表 ->15ms +2023-09-27 16:41:44.761 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 16:41:51-------------------------------- +2023-09-27 16:41:52.014 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:41:52.019 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:41:52.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:41:52.021 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:41:52.029 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:41:52.029 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:41:52.029 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:41:52.030 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:41:52.030 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:41:52.035 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:41:52 [INFO] JobCore start success. +2023-09-27 16:41:56.810 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:41:56.811 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:41:56.813 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected + +2023-09-27 16:42:25-------------------------------- +2023-09-27 16:42:25.202 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:42:25.208 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:42:25.210 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:42:25.210 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:42:25.217 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:42:25.217 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:42:25.217 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:42:25.218 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:42:25.218 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:42:25.224 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:42:25 [INFO] JobCore start success. +2023-09-27 16:42:27.237 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:42:27.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:42:27.241 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:43:14.195 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/template] : 添加Template信息 ->255ms +2023-09-27 16:43:14.228 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list] [uid=1] [uname=panda] : 获取Template分页列表 ->9ms +2023-09-27 16:43:18.493 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->12ms +2023-09-27 16:43:18.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->4ms +2023-09-27 16:43:18.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->37ms +2023-09-27 16:43:18.505 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->16ms +2023-09-27 16:44:48.838 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->12ms +2023-09-27 16:44:50.120 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->4ms +2023-09-27 16:45:13.211 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 ->257ms +2023-09-27 16:45:13.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->10ms +2023-09-27 16:51:37.833 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 16:51:45-------------------------------- +2023-09-27 16:51:45.656 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:51:45.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:51:45.663 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:51:45.663 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:51:45.671 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:51:45.671 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:51:45.671 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:51:45.671 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:51:45.672 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:51:45.677 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:51:45 [INFO] JobCore start success. +2023-09-27 16:51:49.947 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:51:49.950 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:52:10.329 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->3ms +2023-09-27 16:52:37.525 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->315ms +2023-09-27 16:52:37.554 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->11ms +2023-09-27 16:55:53.473 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 16:56:00-------------------------------- +2023-09-27 16:56:00.369 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:56:00.374 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:56:00.376 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:56:00.376 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:56:00.384 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:56:00.384 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:56:00.384 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:56:00.385 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:56:00.385 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:56:00.390 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:56:00 [INFO] JobCore start success. +2023-09-27 16:56:01.986 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 16:56:01.988 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:56:01.989 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected + +2023-09-27 16:56:20-------------------------------- +2023-09-27 16:56:21.054 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 16:56:21.060 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 16:56:21.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 16:56:21.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 16:56:21.069 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 16:56:21.069 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 16:56:21.069 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 16:56:21.070 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 16:56:21.070 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 16:56:21.076 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 16:56:21 [INFO] JobCore start success. +2023-09-27 16:56:25.614 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 16:56:25.616 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 16:56:37.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->6ms +2023-09-27 16:56:41.717 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->212ms +2023-09-27 16:56:41.747 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->8ms +2023-09-27 17:01:59.851 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 17:08:42-------------------------------- +2023-09-27 17:08:42.487 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:08:42.493 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:08:42.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:08:42.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:08:42.502 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:08:42.502 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:08:42.502 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:08:42.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:08:42.503 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:08:42.509 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:08:42 [INFO] JobCore start success. +2023-09-27 17:08:42.511 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:08:42.515 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 17:08:52.609 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:73] : TCP协议 设备lCtIzLLdIQ,认证成功 +2023-09-27 17:09:00.837 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->7ms +2023-09-27 17:09:04.369 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 ->794ms +2023-09-27 17:09:04.394 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->7ms +2023-09-27 17:10:44.534 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 17:11:00-------------------------------- +2023-09-27 17:11:00.399 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:11:00.404 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:11:00.406 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:11:00.406 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:11:00.417 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:11:00.417 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:11:00.418 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:11:00.418 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:11:00.419 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:11:00.424 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:11:00 [INFO] JobCore start success. +2023-09-27 17:11:03.651 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 17:11:03.652 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:11:03.655 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 17:11:07.330 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:73] : TCP协议 设备lCtIzLLdIQ,认证成功 +2023-09-27 17:11:09.125 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->6ms + +2023-09-27 17:13:01-------------------------------- +2023-09-27 17:13:01.278 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:13:01.284 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:13:01.286 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:13:01.286 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:13:01.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:13:01.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:13:01.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:13:01.299 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:13:01.300 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:13:01.305 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:13:01 [INFO] JobCore start success. +2023-09-27 17:13:01.306 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:13:01.310 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected + +2023-09-27 17:15:26-------------------------------- +2023-09-27 17:15:27.065 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:15:27.070 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:15:27.072 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:15:27.072 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:15:27.096 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:15:27.097 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:15:27.097 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:15:27.099 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:15:27.099 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:15:27.104 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:15:27 [INFO] JobCore start success. +2023-09-27 17:15:29.857 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->42ms +2023-09-27 17:15:30.195 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:15:30.198 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 17:15:42.841 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/lCtIzLLdIQ/status] : 获取Device状态信息 ->12058ms +2023-09-27 17:15:55.895 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->28ms +2023-09-27 17:15:57.109 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->7ms +2023-09-27 17:16:13.754 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/client/tcpclient/tcp.go:23] : 设备lCtIzLLdIQ TCP连接不存在, 发送指令失败 +2023-09-27 17:16:13.900 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/device/cmd] [uid=1] [uname=panda] : 命令下发 ->5881ms +2023-09-27 17:16:13.932 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->9ms +2023-09-27 17:16:41.433 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:73] : TCP协议 设备lCtIzLLdIQ,认证成功 +2023-09-27 17:16:46.620 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->3ms +2023-09-27 17:16:55.066 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/client/tcpclient/tcp.go:13] : 设备lCtIzLLdIQ, 发送指令"{\"close\":\"aaa\"}" +2023-09-27 17:16:55.067 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 +<-e errCode: 400, errMsg: 指令下发失败 + +2023-09-27 17:18:01-------------------------------- +2023-09-27 17:18:01.281 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:18:01.286 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:18:01.288 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:18:01.289 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:18:01.297 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:18:01.297 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:18:01.297 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:18:01.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:18:01.298 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:18:01.303 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:18:01 [INFO] JobCore start success. +2023-09-27 17:18:01.393 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 17:18:01.395 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:18:01.396 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 17:18:03.550 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->13ms +2023-09-27 17:18:06.624 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/alarm/list] : 获取告警分页列表 ->14ms +2023-09-27 17:18:07.364 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->11ms +2023-09-27 17:18:11.464 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:73] : TCP协议 设备lCtIzLLdIQ,认证成功 +2023-09-27 17:18:14.301 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->5ms +2023-09-27 17:18:18.197 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/client/tcpclient/tcp.go:13] : 设备lCtIzLLdIQ, 发送指令{"close":"asda"} +2023-09-27 17:18:18.197 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 +<-e errCode: 400, errMsg: 指令下发失败 +2023-09-27 17:20:40.728 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed + +2023-09-27 17:20:48-------------------------------- +2023-09-27 17:20:48.189 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20230914055936-853aa978dda1/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-09-27 17:20:48.198 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:45] : mysql连接成功 +2023-09-27 17:20:48.201 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:50] : Redis连接成功 +2023-09-27 17:20:48.201 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:57] : Tdengine连接成功 +2023-09-27 17:20:48.218 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:75] : 路由初始化完成 +2023-09-27 17:20:48.218 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-09-27 17:20:48.219 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-09-27 17:20:48.220 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-09-27 17:20:48.220 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-09-27 17:20:48.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-09-27 17:20:48 [INFO] JobCore start success. +2023-09-27 17:20:52.411 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:73] : TCP协议 设备lCtIzLLdIQ,认证成功 +2023-09-27 17:20:52.786 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-09-27 17:20:52.788 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-09-27 17:20:52.791 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.4 Connected +2023-09-27 17:20:58.053 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/alarm/list] : 获取告警分页列表 ->15ms +2023-09-27 17:20:58.477 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->10ms +2023-09-27 17:20:59.634 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->4ms +2023-09-27 17:21:04.140 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/client/tcpclient/tcp.go:13] : 设备lCtIzLLdIQ, 发送指令{"close":"asd"} +2023-09-27 17:21:04.416 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 ->290ms +2023-09-27 17:21:04.442 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->8ms diff --git a/pkg/mqtt/mqtt.go b/iothub/client/mqttclient/mqtt.go similarity index 93% rename from pkg/mqtt/mqtt.go rename to iothub/client/mqttclient/mqtt.go index ff0f88d..c2fc1c4 100644 --- a/pkg/mqtt/mqtt.go +++ b/iothub/client/mqttclient/mqtt.go @@ -1,4 +1,4 @@ -package mqtt +package mqttclient import ( "errors" @@ -10,6 +10,8 @@ import ( const DefaultDownStreamClientId = `@panda.iothub.internal.clientId` +var MqttClient *IothubMqttClient + type IothubMqttClient struct { Client mqtt.Client } @@ -22,10 +24,10 @@ var connectLostHandler mqtt.ConnectionLostHandler = func(client mqtt.Client, err logrus.Infof("Connect lost: %v", err) } -func InitMqtt(broker, username, password string) *IothubMqttClient { +func InitMqtt(broker, username, password string) { server := fmt.Sprintf("tcp://%s", broker) client := GetMqttClinent(server, username, password) - return &IothubMqttClient{ + MqttClient = &IothubMqttClient{ Client: client, } } diff --git a/pkg/mqtt/rpc.go b/iothub/client/mqttclient/rpc.go similarity index 98% rename from pkg/mqtt/rpc.go rename to iothub/client/mqttclient/rpc.go index 0c1b9fa..30486fe 100644 --- a/pkg/mqtt/rpc.go +++ b/iothub/client/mqttclient/rpc.go @@ -1,4 +1,4 @@ -package mqtt +package mqttclient import ( "encoding/json" @@ -26,7 +26,7 @@ type RpcPayload struct { Params any `json:"params"` } -// RequestAttributes 下发指令 +// RequestCmd 下发指令 func (rpc RpcRequest) RequestCmd(rpcPayload RpcPayload) (respPayload string, err error) { topic := fmt.Sprintf(RpcReqTopic, rpc.RequestId) payload, err := json.Marshal(rpcPayload) diff --git a/iothub/client/tcpclient/tcp.go b/iothub/client/tcpclient/tcp.go new file mode 100644 index 0000000..e4fa7ae --- /dev/null +++ b/iothub/client/tcpclient/tcp.go @@ -0,0 +1,39 @@ +package tcpclient + +import ( + "encoding/hex" + "net" + "pandax/pkg/global" +) + +var TcpClient = make(map[string]*net.TCPConn) + +func Send(deviceId, msg string) error { + if conn, ok := TcpClient[deviceId]; ok { + global.Log.Infof("设备%s, 发送指令%s", deviceId, msg) + _, err := conn.Write([]byte(msg)) + if err != nil { + return err + } + } else { + global.Log.Infof("设备%s TCP连接不存在, 发送指令失败", deviceId) + } + return nil +} + +func SendHex(deviceId, msg string) error { + if conn, ok := TcpClient[deviceId]; ok { + global.Log.Infof("设备%s, 发送指令%s", deviceId, msg) + b, err := hex.DecodeString(msg) + if err != nil { + return err + } + _, err = conn.Write(b) + if err != nil { + return err + } + } else { + global.Log.Infof("设备%s TCP连接不存在, 发送指令失败", deviceId) + } + return nil +} diff --git a/iothub/server/emqxserver/hook.go b/iothub/server/emqxserver/hook.go index 8ffdfb5..ee0281a 100644 --- a/iothub/server/emqxserver/hook.go +++ b/iothub/server/emqxserver/hook.go @@ -4,11 +4,11 @@ import ( "context" "encoding/json" "fmt" + "pandax/iothub/client/mqttclient" "pandax/iothub/hook_message_work" "pandax/iothub/netbase" exhook2 "pandax/iothub/server/emqxserver/protobuf" "pandax/pkg/global" - "pandax/pkg/mqtt" "pandax/pkg/rule_engine/message" "pandax/pkg/tool" "time" @@ -33,7 +33,7 @@ func InitEmqxHook(addr string, hs *hook_message_work.HookService) { global.Log.Infof("IOTHUB HOOK Start SUCCESS,Grpc Server listen: %s", addr) } // 初始化 MQTT客户端 - global.MqttClient = mqtt.InitMqtt(global.Conf.Mqtt.Broker, global.Conf.Mqtt.Username, global.Conf.Mqtt.Password) + mqttclient.InitMqtt(global.Conf.Mqtt.Broker, global.Conf.Mqtt.Username, global.Conf.Mqtt.Password) } func NewHookGrpcService(hs *hook_message_work.HookService) *HookGrpcService { @@ -83,7 +83,7 @@ func (s *HookGrpcService) OnClientConnack(ctx context.Context, in *exhook2.Clien func (s *HookGrpcService) OnClientConnected(ctx context.Context, in *exhook2.ClientConnectedRequest) (*exhook2.EmptySuccess, error) { global.Log.Info(fmt.Sprintf("Client %s Connected ", in.Clientinfo.GetNode())) - if in.Clientinfo.Clientid == mqtt.DefaultDownStreamClientId { + if in.Clientinfo.Clientid == mqttclient.DefaultDownStreamClientId { return &exhook2.EmptySuccess{}, nil } token := netbase.GetUserName(in.Clientinfo) @@ -97,7 +97,7 @@ func (s *HookGrpcService) OnClientConnected(ctx context.Context, in *exhook2.Cli func (s *HookGrpcService) OnClientDisconnected(ctx context.Context, in *exhook2.ClientDisconnectedRequest) (*exhook2.EmptySuccess, error) { global.Log.Info(fmt.Sprintf("%s断开连接", in.Clientinfo.Username)) token := netbase.GetUserName(in.Clientinfo) - if in.Clientinfo.Clientid == mqtt.DefaultDownStreamClientId { + if in.Clientinfo.Clientid == mqttclient.DefaultDownStreamClientId { return &exhook2.EmptySuccess{}, nil } etoken := &tool.DeviceAuth{} @@ -178,7 +178,7 @@ func (s *HookGrpcService) OnMessagePublish(ctx context.Context, in *exhook2.Mess res.Type = exhook2.ValuedResponse_STOP_AND_RETURN res.Value = &exhook2.ValuedResponse_BoolResult{BoolResult: false} - if in.Message.From == mqtt.DefaultDownStreamClientId { + if in.Message.From == mqttclient.DefaultDownStreamClientId { res.Value = &exhook2.ValuedResponse_BoolResult{BoolResult: true} return res, nil } diff --git a/iothub/server/httpserver/hook.go b/iothub/server/httpserver/hook.go index 71418e6..447fd26 100644 --- a/iothub/server/httpserver/hook.go +++ b/iothub/server/httpserver/hook.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/emicklei/go-restful/v3" "io" + "log" "net" "net/http" "pandax/iothub/hook_message_work" @@ -41,6 +42,7 @@ func InitHttpHook(addr string, hs *hook_message_work.HookService) { switch state { case http.StateHijacked, http.StateClosed: etoken, _ := activeConnections.Load(conn.RemoteAddr()) + log.Println("关闭http连接") data := netbase.CreateConnectionInfo(message.DisConnectMes, "http", conn.RemoteAddr().String(), conn.RemoteAddr().String(), etoken.(*tool.DeviceAuth)) service.HookService.MessageCh <- data activeConnections.Delete(conn.RemoteAddr()) diff --git a/iothub/server/tcpserver/hook.go b/iothub/server/tcpserver/hook.go index d44efe9..539d6be 100644 --- a/iothub/server/tcpserver/hook.go +++ b/iothub/server/tcpserver/hook.go @@ -5,6 +5,7 @@ import ( "encoding/hex" "fmt" "net" + "pandax/iothub/client/tcpclient" "pandax/iothub/hook_message_work" "pandax/iothub/netbase" "pandax/pkg/global" @@ -34,7 +35,7 @@ func InitTcpHook(addr string, hs *hook_message_work.HookService) { global.Log.Error("Error accepting connection:", err) continue } - conn.SetReadDeadline(time.Now().Add(2 * time.Minute)) + //conn.SetReadDeadline(time.Now().Add(2 * time.Minute)) hhs := &HookTcpService{ HookService: hs, conn: conn, @@ -59,6 +60,7 @@ func (hhs *HookTcpService) hook() { data := netbase.CreateConnectionInfo(message.DisConnectMes, "tcp", hhs.conn.RemoteAddr().String(), hhs.conn.RemoteAddr().String(), etoken) hhs.HookService.MessageCh <- data } + delete(tcpclient.TcpClient, etoken.DeviceId) isAuth = false return } @@ -68,15 +70,18 @@ func (hhs *HookTcpService) hook() { auth := netbase.Auth(token) // 认证成功,创建连接记录 if auth { + global.Log.Infof("TCP协议 设备%s,认证成功", etoken.DeviceId) data := netbase.CreateConnectionInfo(message.ConnectMes, "tcp", hhs.conn.RemoteAddr().String(), hhs.conn.RemoteAddr().String(), etoken) hhs.HookService.MessageCh <- data isAuth = true + tcpclient.TcpClient[etoken.DeviceId] = hhs.conn hhs.Send("success") } else { hhs.Send("fail") } } else { hexData := hex.EncodeToString(buf[:n]) + global.Log.Infof("TCP协议 设备%s, 接受消息%s", etoken.DeviceId, hexData) ts := time.Now().Format("2006-01-02 15:04:05.000") data := &netbase.DeviceEventInfo{ DeviceId: etoken.DeviceId, diff --git a/pkg/global/const_device.go b/pkg/global/const_device.go index 915f629..bc1cf60 100644 --- a/pkg/global/const_device.go +++ b/pkg/global/const_device.go @@ -43,3 +43,11 @@ const ( CMDFAIL = "1" //执行失败 CMDRUNNING = "2" // 执行中 ) + +const ( + MQTTProtocol = "MQTT" + CoAPProtocol = "CoAP" + TCPProtocol = "TCP" + HTTPProtocol = "HTTP" + LwM2MProtocol = "LwM2M" +) diff --git a/pkg/global/global.go b/pkg/global/global.go index 2a8a6a5..00230b3 100644 --- a/pkg/global/global.go +++ b/pkg/global/global.go @@ -7,18 +7,16 @@ import ( "gorm.io/gorm" "pandax/pkg/config" "pandax/pkg/events" - "pandax/pkg/mqtt" "pandax/pkg/tdengine" "time" ) var ( - Log *logrus.Logger // 日志 - Db *gorm.DB // gorm - RedisDb *rediscli.RedisDB - TdDb *tdengine.TdEngine - Conf *config.Config - MqttClient *mqtt.IothubMqttClient + Log *logrus.Logger // 日志 + Db *gorm.DB // gorm + RedisDb *rediscli.RedisDB + TdDb *tdengine.TdEngine + Conf *config.Config ) var EventEmitter = events.EventEmitter{} diff --git a/pkg/rule_engine/nodes/action_rpc_request_node.go b/pkg/rule_engine/nodes/action_rpc_request_node.go index e709505..4666fba 100644 --- a/pkg/rule_engine/nodes/action_rpc_request_node.go +++ b/pkg/rule_engine/nodes/action_rpc_request_node.go @@ -1,15 +1,14 @@ package nodes import ( - "pandax/pkg/global" - "pandax/pkg/mqtt" + "pandax/iothub/client/mqttclient" "pandax/pkg/rule_engine/message" ) type rpcRequestNode struct { bareNode - Timeout int `json:"timeout"` - Payload mqtt.RpcPayload `json:"payload"` + Timeout int `json:"timeout"` + Payload mqttclient.RpcPayload `json:"payload"` } type rpcRequestNodeFactory struct{} @@ -28,7 +27,7 @@ func (n *rpcRequestNode) Handle(msg *message.Message) error { successLableNode := n.GetLinkedNode("Success") failureLableNode := n.GetLinkedNode("Failure") - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "double", Timeout: n.Timeout} + var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "double", Timeout: n.Timeout} rpc.GetRequestId() respPayload, err := rpc.RequestCmd(n.Payload) if err != nil { diff --git a/pkg/rule_engine/nodes/action_rpc_respond_node.go b/pkg/rule_engine/nodes/action_rpc_respond_node.go index 871988e..3d50c88 100644 --- a/pkg/rule_engine/nodes/action_rpc_respond_node.go +++ b/pkg/rule_engine/nodes/action_rpc_respond_node.go @@ -1,8 +1,7 @@ package nodes import ( - "pandax/pkg/global" - "pandax/pkg/mqtt" + "pandax/iothub/client/mqttclient" "pandax/pkg/rule_engine/message" ) @@ -30,11 +29,11 @@ func (n *rpcRespondNode) Handle(msg *message.Message) error { if RequestId == 0 { RequestId = int(msg.Metadata.GetValue("requestId").(float64)) } - var datas = mqtt.RpcPayload{ + var datas = mqttclient.RpcPayload{ Method: msg.Msg.GetValue("method").(string), Params: msg.Msg.GetValue("params"), } - rpc := &mqtt.RpcRequest{Client: global.MqttClient, RequestId: RequestId} + rpc := &mqttclient.RpcRequest{Client: mqttclient.MqttClient, RequestId: RequestId} err := rpc.RespondTpc(datas) if err != nil { if failureLableNode != nil { diff --git a/pkg/tdengine/tdengine_table.go b/pkg/tdengine/tdengine_table.go index a7b2655..983033c 100644 --- a/pkg/tdengine/tdengine_table.go +++ b/pkg/tdengine/tdengine_table.go @@ -87,49 +87,49 @@ func (s *TdEngine) column(dataType, key, name string, maxLength int) string { // 删除超级表 func (s *TdEngine) DropStable(table string) (err error) { - sql := fmt.Sprintf("DROP STABLE IF EXISTS %s.%s", s.dbName, table) + sql := fmt.Sprintf("DROP STABLE IF EXISTS %s.%s", s.dbName, strings.ToLower(table)) _, err = s.db.Exec(sql) return } // 删除子表 func (s *TdEngine) DropTable(table string) (err error) { - sql := fmt.Sprintf("DROP TABLE IF EXISTS %s.%s", s.dbName, table) + sql := fmt.Sprintf("DROP TABLE IF EXISTS %s.%s", s.dbName, strings.ToLower(table)) _, err = s.db.Exec(sql) return } // AddSTableField 添加数据库超级表字段 func (s *TdEngine) AddSTableField(tableName, fieldName string, dataType string, len int) (err error) { - sql := fmt.Sprintf("ALTER STABLE %s.%s ADD COLUMN %s", s.dbName, tableName, s.column(dataType, fieldName, "", len)) + sql := fmt.Sprintf("ALTER STABLE %s.%s ADD COLUMN %s", s.dbName, strings.ToLower(tableName), s.column(dataType, fieldName, "", len)) _, err = s.db.Exec(sql) return } // AddTableField 添加数据库表字段 func (s *TdEngine) AddTableField(tableName, fieldName string, dataType string, len int) (err error) { - sql := fmt.Sprintf("ALTER TABLE %s.%s ADD COLUMN %s", s.dbName, tableName, s.column(dataType, fieldName, "", len)) + sql := fmt.Sprintf("ALTER TABLE %s.%s ADD COLUMN %s", s.dbName, strings.ToLower(tableName), s.column(dataType, fieldName, "", len)) _, err = s.db.Exec(sql) return } // DelTableField 删除数据库表字段 func (s *TdEngine) DelTableField(tableName, fieldName string) (err error) { - sql := fmt.Sprintf("ALTER TABLE %s.%s DROP COLUMN %s", s.dbName, tableName, fieldName) + sql := fmt.Sprintf("ALTER TABLE %s.%s DROP COLUMN %s", s.dbName, strings.ToLower(tableName), fieldName) _, err = s.db.Exec(sql) return } // DelSTableField 删除数据库超级表字段 func (s *TdEngine) DelSTableField(tableName, fieldName string) (err error) { - sql := fmt.Sprintf("ALTER STABLE %s.%s DROP COLUMN %s", s.dbName, tableName, fieldName) + sql := fmt.Sprintf("ALTER STABLE %s.%s DROP COLUMN %s", s.dbName, strings.ToLower(tableName), fieldName) _, err = s.db.Exec(sql) return } // ModifyDatabaseField 修改数据库指定字段长度 func (s *TdEngine) ModifyDatabaseField(tableName, fieldName string, dataType string, len int) (err error) { - sql := fmt.Sprintf("ALTER STABLE %s.%s MODIFY COLUMN %s", s.dbName, tableName, s.column(dataType, fieldName, "", len)) + sql := fmt.Sprintf("ALTER STABLE %s.%s MODIFY COLUMN %s", s.dbName, strings.ToLower(tableName), s.column(dataType, fieldName, "", len)) _, err = s.db.Exec(sql) if err != nil { err = errors.New("设置字段长度失败,长度只能增大不能缩小") diff --git a/pkg/websocket/socket_server.go b/pkg/websocket/socket_server.go index 5342970..f6f205a 100644 --- a/pkg/websocket/socket_server.go +++ b/pkg/websocket/socket_server.go @@ -6,8 +6,8 @@ import ( "github.com/gorilla/websocket" "net/http" "pandax/apps/device/entity" + "pandax/iothub/client/mqttclient" "pandax/pkg/global" - "pandax/pkg/mqtt" "strings" ) @@ -67,9 +67,9 @@ func OnMessage(ws *Websocket, message string) { //2. 根据设备下发属性更改 //topic := fmt.Sprintf(global.AttributesTopic, vtsa.TwinId) content, _ := json.Marshal(vtsa.Attrs) - var rpc = &mqtt.RpcRequest{Client: global.MqttClient, Mode: "single"} + var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single"} rpc.GetRequestId() - err = rpc.RequestAttributes(mqtt.RpcPayload{Params: string(content)}) + err = rpc.RequestAttributes(mqttclient.RpcPayload{Params: string(content)}) if err != nil { global.Log.Error("属性下发失败", err) sendMessages("02", "下发失败", screenId) diff --git a/shutdown.bat b/shutdown.bat index 4acbcb5..0655335 100644 --- a/shutdown.bat +++ b/shutdown.bat @@ -1 +1 @@ -taskkill /pid 24528 -t -f \ No newline at end of file +taskkill /pid 25960 -t -f \ No newline at end of file