diff --git a/apps/develop/services/gen_table.go b/apps/develop/services/gen_table.go index c1ff5d9..73e0074 100644 --- a/apps/develop/services/gen_table.go +++ b/apps/develop/services/gen_table.go @@ -6,7 +6,7 @@ import ( "github.com/PandaXGO/PandaKit/utils" "pandax/apps/develop/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) /** @@ -135,7 +135,7 @@ func (m *devGenTableModelImpl) FindTree(data entity.DevGenTable) *[]entity.DevGe db = db.Where("table_comment = ?", data.TableComment) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Find(&resData).Error biz.ErrIsNil(err, "获取TableTree失败") for i := 0; i < len(resData); i++ { @@ -162,7 +162,7 @@ func (m *devGenTableModelImpl) FindListPage(page, pageSize int, data entity.DevG db = db.Where("table_comment = ?", data.TableComment) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) db.Where("delete_time IS NULL") err := db.Count(&total).Error err = db.Limit(pageSize).Offset(offset).Find(&list).Error diff --git a/apps/device/api/device.go b/apps/device/api/device.go index 2ac17d5..65e9855 100644 --- a/apps/device/api/device.go +++ b/apps/device/api/device.go @@ -14,8 +14,8 @@ import ( "pandax/iothub/client/mqttclient" "pandax/iothub/client/tcpclient" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/shadow" - "pandax/pkg/tool" "strings" "time" @@ -161,7 +161,7 @@ func (p *DeviceApi) DownAttribute(rc *restfulx.ReqCtx) { content, _ := json.Marshal(contentMap) var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single"} rpc.GetRequestId() - err := rpc.RequestAttributes(mqttclient.RpcPayload{Params: string(content)}) + err := rpc.RequestAttributes(global_model.RpcPayload{Params: string(content)}) biz.ErrIsNil(err, "属性下发失败") } } @@ -174,7 +174,7 @@ func (p *DeviceApi) InsertDevice(rc *restfulx.ReqCtx) { data.OrgId = rc.LoginAccount.OrganizationId list := p.DeviceApp.FindList(entity.Device{Name: data.Name}) biz.IsTrue(!(list != nil && len(*list) > 0), fmt.Sprintf("名称%s已存在,设置其他命名", data.Name)) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.LinkStatus = global.INACTIVE data.LastAt = time.Now() p.DeviceApp.Insert(data) diff --git a/apps/device/api/device_cmd.go b/apps/device/api/device_cmd.go index 3e9b8d9..3333027 100644 --- a/apps/device/api/device_cmd.go +++ b/apps/device/api/device_cmd.go @@ -2,12 +2,17 @@ package api // ========================================================================== import ( + "context" + "encoding/json" "github.com/PandaXGO/PandaKit/biz" "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" - "pandax/iothub/client/mqttclient" - "pandax/iothub/client/tcpclient" + ruleEntity "pandax/apps/rule/entity" + ruleService "pandax/apps/rule/services" "pandax/pkg/global" + "pandax/pkg/global_model" + "pandax/pkg/rule_engine" + "pandax/pkg/rule_engine/message" "pandax/pkg/tool" "strings" "time" @@ -44,29 +49,57 @@ func (p *DeviceCmdLogApi) GetDeviceCmdLogList(rc *restfulx.ReqCtx) { func (p *DeviceCmdLogApi) InsertDeviceCmdLog(rc *restfulx.ReqCtx) { var data entity.DeviceCmdLog restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + //验证指令格式 + ms := make(map[string]interface{}) + err := json.Unmarshal([]byte(data.CmdContent), &ms) + biz.ErrIsNil(err, "指令格式不正确") + + data.Id = global_model.GenerateID() data.State = "2" data.RequestTime = time.Now().Format("2006-01-02 15:04:05") one := p.DeviceApp.FindOne(data.DeviceId) biz.IsTrue(one.LinkStatus == global.ONLINE, "设备不在线无法下发指令") - if one.Product.ProtocolName == global.TCPProtocol { - err := tcpclient.Send(data.DeviceId, data.CmdContent) - biz.ErrIsNil(err, "指令下发失败") - data.State = "0" - data.ResponseTime = time.Now().Format("2006-01-02 15:04:05.000") + // 查询规则链 + findOne := ruleService.RuleChainModelDao.FindOne(one.Product.RuleChainId) + ruleData := ruleEntity.RuleDataJson{} + err = tool.StringToStruct(findOne.RuleDataJson, &ruleData) + biz.ErrIsNil(err, "规则链数据转化失败") + dataCode := ruleData.LfData.DataCode + code, err := json.Marshal(dataCode) + //新建规则链实体 + instance, errs := rule_engine.NewRuleChainInstance(code) + if len(errs) > 0 { + global.Log.Error("规则链初始化失败", errs[0]) + return } - if one.Product.ProtocolName == global.MQTTProtocol { - // 下发指令 - var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: data.Mode} - rpc.GetRequestId() - res, err := rpc.RequestCmd(mqttclient.RpcPayload{Method: data.CmdName, Params: data.CmdContent}) - biz.ErrIsNil(err, "指令下发失败") - data.State = "0" + go func() { + // 构建规则链消息 + metadataVals := map[string]interface{}{ + "deviceId": data.DeviceId, + "mode": data.Mode, + "deviceName": one.Name, + "deviceType": one.DeviceType, + "deviceProtocol": one.Product.ProtocolName, + "productId": one.Pid, + "orgId": one.OrgId, + "owner": one.Owner, + } + msg := message.NewMessage(one.Owner, message.RpcRequestToDevice, map[string]interface{}{ + "method": data.CmdName, + "params": ms, + }, metadataVals) + err = instance.StartRuleChain(context.Background(), msg) + if err != nil { + global.Log.Error("规则链执行失败", errs) + data.State = "1" + } else { + data.State = "0" + } data.ResponseTime = time.Now().Format("2006-01-02 15:04:05.000") - data.CmdContent = res - } - err := p.DeviceCmdLogApp.Insert(data) - biz.ErrIsNil(err, "添加指令记录失败") + err = p.DeviceCmdLogApp.Insert(data) + biz.ErrIsNil(err, "添加指令记录失败") + }() + } // DeleteDeviceCmdLog 删除告警 diff --git a/apps/device/api/device_group.go b/apps/device/api/device_group.go index bba7860..2eacd8d 100644 --- a/apps/device/api/device_group.go +++ b/apps/device/api/device_group.go @@ -4,7 +4,7 @@ import ( "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/entity" "pandax/apps/device/services" - "pandax/pkg/tool" + "pandax/pkg/global_model" "strings" ) @@ -70,7 +70,7 @@ func (p *DeviceGroupApi) GetDeviceGroup(rc *restfulx.ReqCtx) { func (p *DeviceGroupApi) InsertDeviceGroup(rc *restfulx.ReqCtx) { var data entity.DeviceGroup restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.Owner = rc.LoginAccount.UserName data.OrgId = rc.LoginAccount.OrganizationId p.DeviceGroupApp.Insert(data) diff --git a/apps/device/api/product.go b/apps/device/api/product.go index 3afc882..ad23097 100644 --- a/apps/device/api/product.go +++ b/apps/device/api/product.go @@ -11,7 +11,7 @@ import ( "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" "strings" "pandax/apps/device/entity" @@ -102,7 +102,7 @@ func (p *ProductApi) GetProduct(rc *restfulx.ReqCtx) { func (p *ProductApi) InsertProduct(rc *restfulx.ReqCtx) { var data entity.Product restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.Owner = rc.LoginAccount.UserName data.OrgId = rc.LoginAccount.OrganizationId // 如果未设置规则链,默认为主链 diff --git a/apps/device/api/product_category.go b/apps/device/api/product_category.go index a3305b2..eb074b4 100644 --- a/apps/device/api/product_category.go +++ b/apps/device/api/product_category.go @@ -4,7 +4,7 @@ import ( "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/device/entity" "pandax/apps/device/services" - "pandax/pkg/tool" + "pandax/pkg/global_model" "strings" ) @@ -59,7 +59,7 @@ func (p *ProductCategoryApi) GetProductCategory(rc *restfulx.ReqCtx) { func (p *ProductCategoryApi) InsertProductCategory(rc *restfulx.ReqCtx) { var data entity.ProductCategory restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.Owner = rc.LoginAccount.UserName data.OrgId = rc.LoginAccount.OrganizationId p.ProductCategoryApp.Insert(data) diff --git a/apps/device/api/product_ota.go b/apps/device/api/product_ota.go index 6af9011..f0b77b2 100644 --- a/apps/device/api/product_ota.go +++ b/apps/device/api/product_ota.go @@ -5,6 +5,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" + "pandax/pkg/global_model" "pandax/pkg/tool" "path" "strings" @@ -50,7 +51,7 @@ func (p *ProductOtaApi) InsertProductOta(rc *restfulx.ReqCtx) { // 生成文件MD5值 md5, err := tool.GetFileMd5(path.Join(filePath, data.Url)) biz.ErrIsNil(err, "读取文件md5校验值错误") - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.Check = md5 p.ProductOtaApp.Insert(data) } diff --git a/apps/device/api/product_template.go b/apps/device/api/product_template.go index c416600..e885d6c 100644 --- a/apps/device/api/product_template.go +++ b/apps/device/api/product_template.go @@ -5,7 +5,7 @@ import ( "github.com/PandaXGO/PandaKit/model" "github.com/PandaXGO/PandaKit/restfulx" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" "strings" "pandax/apps/device/entity" @@ -55,7 +55,7 @@ func (p *ProductTemplateApi) GetProductTemplate(rc *restfulx.ReqCtx) { func (p *ProductTemplateApi) InsertProductTemplate(rc *restfulx.ReqCtx) { var data entity.ProductTemplate restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.OrgId = rc.LoginAccount.OrganizationId if data.Classify == entity.ATTRIBUTES_TSL || data.Classify == entity.TELEMETRY_TSL { // 向超级表及子表中添加字段 diff --git a/apps/device/entity/device.go b/apps/device/entity/device.go index f67d26d..dcb1cdf 100644 --- a/apps/device/entity/device.go +++ b/apps/device/entity/device.go @@ -4,13 +4,13 @@ import ( "database/sql/driver" "encoding/json" "errors" - "pandax/pkg/global" + "pandax/pkg/global_model" "time" ) // DeviceGroup 设备分组 type DeviceGroup struct { - global.BaseAuthModel + global_model.BaseAuthModel Name string `json:"name" gorm:"type:varchar(128);comment:设备分组名称" validate:"required"` Pid string `json:"pid" gorm:"type:varchar(64);comment:设备分组类型"` Path string `json:"path" gorm:"type:varchar(255);comment:设备分组路径"` @@ -30,7 +30,7 @@ type DeviceGroupLabel struct { } type Device struct { - global.BaseAuthModel + global_model.BaseAuthModel Name string `json:"name" gorm:"type:varchar(128);comment:设备名称" validate:"required,alphanum"` // mqtt 用户名英文 ParentId string `json:"parentId" gorm:"type:varchar(64);comment:父设备"` DeviceType string `json:"deviceType" gorm:"type:varchar(64);comment:设备类型"` diff --git a/apps/device/entity/product.go b/apps/device/entity/product.go index 58351d1..e77e359 100644 --- a/apps/device/entity/product.go +++ b/apps/device/entity/product.go @@ -4,7 +4,7 @@ import ( "database/sql/driver" "encoding/json" "errors" - "pandax/pkg/global" + "pandax/pkg/global_model" ) const ( @@ -22,7 +22,7 @@ const ( ) type ProductCategory struct { - global.BaseAuthModel + global_model.BaseAuthModel Name string `json:"name" gorm:"type:varchar(128);comment:产品类型名称" validate:"required"` Pid string `json:"pid" gorm:"type:varchar(64);comment:父产品类型"` Path string `json:"path" gorm:"type:varchar(255);comment:产品类型路径"` @@ -39,7 +39,7 @@ type ProductCategoryLabel struct { } type Product struct { - global.BaseAuthModel + global_model.BaseAuthModel Name string `json:"name" gorm:"type:varchar(128);comment:产品名称" validate:"required"` PhotoUrl string `json:"photoUrl" gorm:"type:varchar(255);comment:图片地址"` Description string `json:"description" gorm:"type:varchar(255);comment:产品说明"` @@ -58,7 +58,7 @@ type ProductRes struct { } type ProductTemplate struct { - global.BaseModel + global_model.BaseModel Pid string `json:"pid" gorm:"type:varchar(64);comment:产品Id" validate:"required"` Classify string `json:"classify" gorm:"type:varchar(64);comment:模型归类" validate:"required"` // 属性 遥测 命令 事件 Name string `json:"name" gorm:"type:varchar(64);comment:名称" validate:"required"` @@ -69,7 +69,7 @@ type ProductTemplate struct { } type ProductOta struct { - global.BaseModel + global_model.BaseModel Pid string `json:"pid" gorm:"comment:产品Id" validate:"required"` Name string `json:"name" gorm:"type:varchar(64);comment:固件名称" validate:"required"` Version string `json:"version" gorm:"type:varchar(64);comment:固件版本" validate:"required"` diff --git a/apps/device/services/device.go b/apps/device/services/device.go index 08bc326..195e854 100644 --- a/apps/device/services/device.go +++ b/apps/device/services/device.go @@ -5,20 +5,20 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" "time" ) type ( DeviceModel interface { Insert(data entity.Device) *entity.Device - FindOneByToken(token string) (*entity.Device, error) - FindOneByName(name string) (*entity.Device, error) + FindOneByToken(token string) (*entity.DeviceRes, error) + FindOneByName(name string) (*entity.DeviceRes, error) FindOne(id string) *entity.DeviceRes FindListPage(page, pageSize int, data entity.Device) (*[]entity.DeviceRes, int64) FindList(data entity.Device) *[]entity.DeviceRes Update(data entity.Device) *entity.Device - UpdateStatus(id, linkStatus string) + UpdateStatus(id, linkStatus string) error Delete(ids []string) FindDeviceCount() entity.DeviceCount FindDeviceCountGroupByLinkStatus() []entity.DeviceCountLinkStatus @@ -40,7 +40,8 @@ func (m *deviceModelImpl) Insert(data entity.Device) *entity.Device { list := m.FindList(entity.Device{Name: data.Name}) biz.IsTrue(list != nil && len(*list) == 0, "设备名称已经存在") //2 创建认证TOKEN IOTHUB使用 - _, err := GetDeviceToken(&data) + token := GetDeviceToken(&data) + err := global.RedisDb.Set(data.Token, token.GetMarshal(), time.Hour*24*365) biz.ErrIsNil(err, "设备缓存失败") // 子网关不需要设置token if data.DeviceType == global.GATEWAYS { @@ -67,16 +68,16 @@ func (m *deviceModelImpl) FindOne(id string) *entity.DeviceRes { return resData } -func (m *deviceModelImpl) FindOneByName(token string) (*entity.Device, error) { - resData := new(entity.Device) - db := global.Db.Table(m.table).Where("name = ?", token) +func (m *deviceModelImpl) FindOneByName(name string) (*entity.DeviceRes, error) { + resData := new(entity.DeviceRes) + db := global.Db.Table(m.table).Where("name = ?", name) err := db.First(resData).Error return resData, err } -func (m *deviceModelImpl) FindOneByToken(token string) (*entity.Device, error) { - resData := new(entity.Device) - db := global.Db.Table(m.table).Where("token = ?", token) +func (m *deviceModelImpl) FindOneByToken(token string) (*entity.DeviceRes, error) { + resData := new(entity.DeviceRes) + db := global.Db.Table(m.table).Preload("Product").Where("token = ?", token) err := db.First(resData).Error return resData, err } @@ -109,7 +110,7 @@ func (m *deviceModelImpl) FindListPage(page, pageSize int, data entity.Device) ( db = db.Where("parent_id = ?", data.ParentId) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("create_time").Preload("Product").Preload("DeviceGroup").Limit(pageSize).Offset(offset).Find(&list).Error @@ -145,20 +146,25 @@ func (m *deviceModelImpl) FindList(data entity.Device) *[]entity.DeviceRes { if data.ParentId != "" { db = db.Where("parent_id = ?", data.ParentId) } - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) db.Preload("Product").Preload("DeviceGroup") biz.ErrIsNil(db.Order("create_time").Find(&list).Error, "查询设备列表失败") return &list } func (m *deviceModelImpl) Update(data entity.Device) *entity.Device { - _, err := GetDeviceToken(&data) - biz.ErrIsNil(err, "设备更改缓存失败") + if data.DeviceType == global.GATEWAYS { + data.Token = "" + } else { + token := GetDeviceToken(&data) + err := global.RedisDb.Set(data.Token, token.GetMarshal(), time.Hour*24*365) + biz.ErrIsNil(err, "设备更改缓存失败") + } biz.ErrIsNil(global.Db.Table(m.table).Updates(&data).Error, "修改设备失败") return &data } -func (m *deviceModelImpl) UpdateStatus(id, linkStatus string) { - global.Db.Table(m.table).Where("id", id).Update("link_status", linkStatus).Update("last_time", time.Now()) +func (m *deviceModelImpl) UpdateStatus(id, linkStatus string) error { + return global.Db.Table(m.table).Where("id", id).Update("link_status", linkStatus).Update("last_time", time.Now()).Error } func (m *deviceModelImpl) Delete(ids []string) { @@ -199,9 +205,9 @@ func deleteDeviceTable(device string) error { return nil } -func GetDeviceToken(data *entity.Device) (*tool.DeviceAuth, error) { +func GetDeviceToken(data *entity.Device) *global_model.DeviceAuth { now := time.Now() - etoken := &tool.DeviceAuth{ + etoken := &global_model.DeviceAuth{ DeviceId: data.Id, OrgId: data.OrgId, Owner: data.Owner, @@ -215,8 +221,7 @@ func GetDeviceToken(data *entity.Device) (*tool.DeviceAuth, error) { if data.Token == "" { data.Token = etoken.MD5ID() } - err := etoken.CreateDeviceToken(data.Token) - return etoken, err + return etoken } // 获取设备数量统计 diff --git a/apps/device/services/device_alarm.go b/apps/device/services/device_alarm.go index 33042dd..1317b92 100644 --- a/apps/device/services/device_alarm.go +++ b/apps/device/services/device_alarm.go @@ -4,7 +4,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -76,7 +76,7 @@ func (m *alarmModelImpl) FindListPage(page, pageSize int, data entity.DeviceAlar db = db.Where("time < ?", data.EndTime) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("time").Limit(pageSize).Offset(offset).Find(&list).Error diff --git a/apps/device/services/device_group.go b/apps/device/services/device_group.go index 0c6f904..80895b7 100644 --- a/apps/device/services/device_group.go +++ b/apps/device/services/device_group.go @@ -5,7 +5,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/device/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -69,7 +69,7 @@ func (m *deviceGroupModelImpl) FindListPage(page, pageSize int, data entity.Devi db = db.Where("status = ?", data.Status) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("sort").Limit(pageSize).Offset(offset).Find(&list).Error @@ -91,7 +91,7 @@ func (m *deviceGroupModelImpl) FindList(data entity.DeviceGroup) *[]entity.Devic db = db.Where("status = ?", data.Status) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) biz.ErrIsNil(db.Order("sort").Find(&list).Error, "查询设备分组列表失败") return &list } diff --git a/apps/device/services/product.go b/apps/device/services/product.go index 9d5a491..0f6ef97 100644 --- a/apps/device/services/product.go +++ b/apps/device/services/product.go @@ -77,6 +77,7 @@ func (m *productModelImpl) FindListPage(page, pageSize int, data entity.Product) } err := db.Count(&total).Error err = db.Order("create_time").Preload("ProductCategory").Limit(pageSize).Offset(offset).Find(&list).Error + log.Println(err) biz.ErrIsNil(err, "查询产品分页列表失败") return &list, total } diff --git a/apps/job/api/job.go b/apps/job/api/job.go index 06b6978..597e09a 100644 --- a/apps/job/api/job.go +++ b/apps/job/api/job.go @@ -9,7 +9,7 @@ import ( "pandax/apps/job/entity" "pandax/apps/job/jobs" "pandax/apps/job/services" - "pandax/pkg/tool" + "pandax/pkg/global_model" "strings" ) @@ -20,7 +20,7 @@ type JobApi struct { func (j *JobApi) CreateJob(rc *restfulx.ReqCtx) { var job entity.SysJob restfulx.BindQuery(rc, &job) - job.Id = tool.GenerateID() + job.Id = global_model.GenerateID() job.Owner = rc.LoginAccount.UserName job.OrgId = rc.LoginAccount.OrganizationId j.JobApp.Insert(job) diff --git a/apps/job/entity/job.go b/apps/job/entity/job.go index e65b2b8..6eae1a6 100644 --- a/apps/job/entity/job.go +++ b/apps/job/entity/job.go @@ -1,11 +1,11 @@ package entity import ( - "pandax/pkg/global" + "pandax/pkg/global_model" ) type SysJob struct { - global.BaseAuthModel + global_model.BaseAuthModel JobName string `json:"jobName" gorm:"type:varchar(255);"` // 名称 TargetInvoke string `json:"targetInvoke" gorm:"type:varchar(64);comment:目标类型"` //调用目标 设备还是产品 TargetArgs string `json:"targetArgs" gorm:"type:varchar(64);comment:目标Id"` //目标传参 设备或者产品id diff --git a/apps/job/entity/log_job.go b/apps/job/entity/log_job.go index 47b9623..85b9842 100644 --- a/apps/job/entity/log_job.go +++ b/apps/job/entity/log_job.go @@ -1,11 +1,11 @@ package entity import ( - "pandax/pkg/global" + "pandax/pkg/global_model" ) type JobLog struct { - global.BaseAuthModel + global_model.BaseAuthModel Name string `json:"name" gorm:"type:varchar(128);comment:任务名称"` EntryId int `json:"entryId" gorm:"type:int;comment:任务id"` TargetInvoke string `json:"targetInvoke" gorm:"type:varchar(128);comment:调用方法"` diff --git a/apps/job/jobs/jobbase.go b/apps/job/jobs/jobbase.go index 11972c6..97208a7 100644 --- a/apps/job/jobs/jobbase.go +++ b/apps/job/jobs/jobbase.go @@ -3,12 +3,11 @@ package jobs import ( "fmt" "pandax/apps/job/entity" - "pandax/apps/job/services" - "pandax/pkg/global" - "pandax/pkg/tool" - logEntity "pandax/apps/job/entity" + "pandax/apps/job/services" logServices "pandax/apps/job/services" + "pandax/pkg/global" + "pandax/pkg/global_model" "sync" "time" @@ -54,7 +53,7 @@ type ExecJob struct { func (e *ExecJob) Run() { startTime := time.Now() jobLog := logEntity.JobLog{Name: e.Name, EntryId: e.EntryId, TargetInvoke: e.InvokeTarget, Status: "0"} - jobLog.Id = tool.GenerateID() + jobLog.Id = global_model.GenerateID() jobLog.OrgId = e.OrgId jobLog.Owner = e.Owner var obj = jobList[e.InvokeTarget] diff --git a/apps/job/services/job.go b/apps/job/services/job.go index ced4a19..2867846 100644 --- a/apps/job/services/job.go +++ b/apps/job/services/job.go @@ -4,7 +4,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/job/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -55,7 +55,7 @@ func (m *jobModelImpl) FindListPage(page, pageSize int, data entity.SysJob) (*[] } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("create_time desc").Limit(pageSize).Offset(offset).Find(&list).Error @@ -75,7 +75,7 @@ func (m *jobModelImpl) FindList(data entity.SysJob) *[]entity.SysJob { db = db.Where("status = ?", data.Status) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Order("create_time desc").Find(&list).Error if err != nil { global.Log.Error("查询任务分页信息失败:" + err.Error()) diff --git a/apps/job/services/log_job.go b/apps/job/services/log_job.go index a8b1d5c..3936181 100644 --- a/apps/job/services/log_job.go +++ b/apps/job/services/log_job.go @@ -4,7 +4,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/job/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -43,7 +43,7 @@ func (m *JobLogModelImpl) FindListPage(page, pageSize int, data entity.JobLog) ( } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("create_time desc").Limit(pageSize).Offset(offset).Find(&list).Error diff --git a/apps/rule/api/rulechain.go b/apps/rule/api/rulechain.go index 9167596..bf4417a 100644 --- a/apps/rule/api/rulechain.go +++ b/apps/rule/api/rulechain.go @@ -7,10 +7,10 @@ import ( "github.com/PandaXGO/PandaKit/restfulx" "pandax/apps/rule/entity" "pandax/apps/rule/services" + "pandax/pkg/global_model" "pandax/pkg/rule_engine" "pandax/pkg/rule_engine/message" "pandax/pkg/rule_engine/nodes" - "pandax/pkg/tool" "strings" ) @@ -66,7 +66,7 @@ func (p *RuleChainApi) GetRuleChain(rc *restfulx.ReqCtx) { func (p *RuleChainApi) InsertRuleChain(rc *restfulx.ReqCtx) { var data entity.RuleChain restfulx.BindJsonAndValid(rc, &data) - data.Id = tool.GenerateID() + data.Id = global_model.GenerateID() data.Owner = rc.LoginAccount.UserName data.OrgId = rc.LoginAccount.OrganizationId p.RuleChainApp.Insert(data) @@ -93,7 +93,7 @@ func (p *RuleChainApi) CloneRuleChain(rc *restfulx.ReqCtx) { id := restfulx.PathParam(rc, "id") one := p.RuleChainApp.FindOne(id) one.RuleName = one.RuleName + "-克隆" - one.Id = tool.GenerateID() + one.Id = global_model.GenerateID() one.Root = "0" p.RuleChainApp.Insert(*one) } diff --git a/apps/rule/entity/rulechain.go b/apps/rule/entity/rulechain.go index c4b0bfc..46de91a 100644 --- a/apps/rule/entity/rulechain.go +++ b/apps/rule/entity/rulechain.go @@ -1,7 +1,7 @@ package entity import ( - "pandax/pkg/global" + "pandax/pkg/global_model" "time" ) @@ -12,7 +12,7 @@ type RuleChainBaseLabel struct { } type RuleChainBase struct { - global.BaseAuthModel + global_model.BaseAuthModel Root string `json:"root" gorm:"comment:是否根节点,1 根链 0 普通链"` RuleName string `gorm:"ruleName;type:varchar(50);comment:名称" json:"ruleName"` RuleBase64 string `gorm:"ruleBase64;type:longtext;comment:Base64缩略图" json:"ruleBase64"` //缩略图 base64 diff --git a/apps/rule/services/rulechain.go b/apps/rule/services/rulechain.go index bf16418..4ba171f 100644 --- a/apps/rule/services/rulechain.go +++ b/apps/rule/services/rulechain.go @@ -11,7 +11,7 @@ import ( "pandax/apps/rule/entity" "pandax/pkg/events" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -77,7 +77,7 @@ func (m *ruleChainModelImpl) FindListPage(page, pageSize int, data entity.RuleCh db = db.Where("rule_remark like ?", "%"+data.RuleRemark+"%") } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("create_time").Limit(pageSize).Offset(offset).Find(&list).Error biz.ErrIsNil(err, "查询规则链分页列表失败") @@ -95,7 +95,7 @@ func (m *ruleChainModelImpl) FindList(data entity.RuleChain) *[]entity.RuleChain db = db.Where("rule_remark like ?", "%"+data.RuleRemark+"%") } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) biz.ErrIsNil(db.Order("create_time").Find(&list).Error, "查询规则链列表失败") return &list } @@ -108,7 +108,7 @@ func (m *ruleChainModelImpl) FindListBaseLabel(data entity.RuleChain) *[]entity. db = db.Where("rule_name like ?", "%"+data.RuleName+"%") } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) biz.ErrIsNil(db.Find(&list).Error, "查询规则链列表失败") return &list } diff --git a/apps/rule/services/rulechain_log.go b/apps/rule/services/rulechain_log.go index 0a4ccee..844f36c 100644 --- a/apps/rule/services/rulechain_log.go +++ b/apps/rule/services/rulechain_log.go @@ -10,7 +10,7 @@ import ( "github.com/PandaXGO/PandaKit/biz" "pandax/apps/rule/entity" "pandax/pkg/global" - "pandax/pkg/tool" + "pandax/pkg/global_model" ) type ( @@ -51,7 +51,7 @@ func (m *ruleChainLogModelImpl) FindListPage(page, pageSize int, data entity.Rul db = db.Where("msg_type = ?", data.MsgType) } // 组织数据访问权限 - tool.OrgAuthSet(db, data.RoleId, data.Owner) + global_model.OrgAuthSet(db, data.RoleId, data.Owner) err := db.Count(&total).Error err = db.Order("create_at").Limit(pageSize).Offset(offset).Find(&list).Error biz.ErrIsNil(err, "查询规则链分页列表失败") diff --git a/fatal/latest.log b/fatal/latest.log index f9434e9..4001b03 100644 --- a/fatal/latest.log +++ b/fatal/latest.log @@ -322,3 +322,840 @@ 2023-10-12 20:22:49.155 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/9GOIPOI6GQ/property/history] : 获取设备属性的遥测历史 ->25ms 2023-10-12 20:23:00.954 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/9GOIPOI6GQ/property/history] : 获取设备属性的遥测历史 ->14ms 2023-10-12 20:23:03.125 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/9GOIPOI6GQ/property/history] : 获取设备属性的遥测历史 ->17ms +2023-10-13 19:35:13.421 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 19:35:13.444 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 20:20:59.246 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 +<-e errCode: 4001, errMsg: 没有权限操作,可能是TOKEN过期了,请先登录 +2023-10-13 20:21:25.545 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->97ms +2023-10-13 20:21:25.577 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->22ms +2023-10-13 20:21:26.040 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/alarm/panel] [uid=1] [uname=panda] : 获取面板告警分组 ->10ms +2023-10-13 20:21:26.085 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/panel] : 获取DevicePanel ->40ms +2023-10-13 20:21:33.500 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 20:21:33.522 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/notice/list] [uid=1] : 获取通知分页列表 ->19ms +2023-10-13 20:21:38.197 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 20:21:44.947 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/notice/list] [uid=1] [uname=panda] : 获取通知分页列表 ->12ms +2023-10-13 20:21:49.094 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->12ms +2023-10-13 20:22:09.696 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->12ms +2023-10-13 20:22:28.929 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/notice/list] [uid=1] : 获取通知分页列表 ->12ms +2023-10-13 20:23:29.409 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->8ms +2023-10-13 20:23:29.415 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->24ms +2023-10-13 20:23:32.075 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 20:23:44.397 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->11ms +2023-10-13 20:23:46.476 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/notice/list] : 获取通知分页列表 ->11ms +2023-10-13 20:24:06.975 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-10-13 20:24:06.993 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/list] [uid=1] [uname=panda] : 获取规则引擎分页列表 ->14ms +2023-10-13 20:24:10.589 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->35ms +2023-10-13 20:24:11.394 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/rulee765e9ef022812a8b89dfb4c] [uid=1] : 获取规则引擎信息 ->8ms +2023-10-13 20:24:11.657 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 20:28:50.167 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 20:28:50.172 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 20:28:50.175 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 20:28:50.175 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 20:28:50.182 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 20:28:50.182 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 20:28:50.182 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 20:28:50.183 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 20:28:50.183 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 20:28:50.183 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 20:28:50.188 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:87] : 2023-10-13 20:28:50 [INFO] JobCore start success. +2023-10-13 20:28:52.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-10-13 20:28:52.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 20:28:52.053 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 20:29:51.682 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/rulee765e9ef022812a8b89dfb4c] [uid=1] [uname=panda] : 获取规则引擎信息 ->4ms +2023-10-13 20:29:51.894 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 20:30:40.646 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/nodeLabels] [uid=1] : 获取所有节点标签 ->0ms +2023-10-13 20:30:40.858 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 +<-e errCode: 4001, errMsg: 没有权限操作,可能是TOKEN过期了,请先登录 +2023-10-13 20:30:44.667 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/rulee765e9ef022812a8b89dfb4c] [uid=1] [uname=panda] : 获取规则引擎信息 ->4ms +2023-10-13 20:30:44.904 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 20:31:25.656 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/initialize/event.go:14] : 规则链rulee765e9ef022812a8b89dfb4c变更 +2023-10-13 20:31:26.041 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [PUT=/rule/chain] [uid=1] [uname=panda] : 修改规则引擎信息 ->384ms +2023-10-13 20:37:13.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/nodeLabels] [uid=1] [uname=panda] : 获取所有节点标签 ->0ms +2023-10-13 20:37:13.242 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 +<-e errCode: 4001, errMsg: 没有权限操作,可能是TOKEN过期了,请先登录 +2023-10-13 21:43:44.990 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 21:43:44.995 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 21:43:44.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 21:43:44.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 21:43:45.007 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 21:43:45.007 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 21:43:45.007 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 21:43:45.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:43:45.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 21:43:45.008 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:43:45.014 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 21:43:45 [INFO] JobCore start success. +2023-10-13 21:43:45.019 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 21:43:45.022 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:44:01.156 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->23ms +2023-10-13 21:44:01.903 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rulee765e9ef022812a8b89dfb4c] : 获取规则引擎信息 ->3ms +2023-10-13 21:44:02.130 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/nodeLabels] [uid=1] : 获取所有节点标签 ->0ms +2023-10-13 21:45:21.917 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->26ms +2023-10-13 21:45:50.404 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->7ms +2023-10-13 21:45:50.415 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list/all] [uid=1] : 获取Product分页列表 ->12ms +2023-10-13 21:45:50.415 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/list] [uid=1] [uname=panda] : 获取Device分页列表 ->28ms +2023-10-13 21:45:50.417 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 21:45:50.585 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/1df420e901be965018e95bac136ec17f_20231012191851.jpg] : 获取文件 ->67ms +2023-10-13 21:46:12.869 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 21:46:12.873 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:46:13.824 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$dz/events/device/s7-device/data/update"] +2023-10-13 21:46:14.252 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 21:46:14.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$hw/events/device/s7-device/twin/update"] +2023-10-13 21:46:14.873 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 21:46:49.606 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->12ms +2023-10-13 21:46:49.615 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->29ms +2023-10-13 21:46:49.616 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->13ms +2023-10-13 21:46:49.619 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 21:47:44.736 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->17ms +2023-10-13 21:47:44.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/list] [uid=1] [uname=panda] : 获取Device分页列表 ->47ms +2023-10-13 21:47:44.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->16ms +2023-10-13 21:47:44.752 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 21:47:55.101 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 21:48:09.657 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 21:48:09.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:48:10.485 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$dz/events/device/s7-device/data/update"] +2023-10-13 21:48:10.800 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 21:48:11.096 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"$hw/events/device/s7-device/twin/update"] +2023-10-13 21:48:11.396 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 21:48:28.131 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->22ms +2023-10-13 21:48:28.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 21:48:28.141 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->16ms +2023-10-13 21:48:28.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->42ms +2023-10-13 21:48:39.320 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->21ms +2023-10-13 21:48:39.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->9ms +2023-10-13 21:48:39.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->35ms +2023-10-13 21:48:39.326 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 21:50:52.769 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->13ms +2023-10-13 21:50:54.236 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->11ms +2023-10-13 21:51:04.120 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 +<-e errCode: 400, errMsg: 设备不在线无法下发指令 +2023-10-13 21:51:10.831 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list/tree/label] [uid=1] : 获取DeviceGroup树 ->20ms +2023-10-13 21:51:10.841 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->17ms +2023-10-13 21:51:10.843 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->40ms +2023-10-13 21:51:10.844 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 21:51:38.583 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 21:51:49.318 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 21:51:49.321 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:51:50.229 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 21:51:50.578 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 21:52:05.057 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->23ms +2023-10-13 21:52:05.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->12ms +2023-10-13 21:52:05.071 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->44ms +2023-10-13 21:52:05.077 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->13ms +2023-10-13 21:52:58.327 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 21:53:05.117 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 21:53:05.122 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 21:53:05.124 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 21:53:05.124 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 21:53:05.131 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 21:53:05.131 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 21:53:05.131 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 21:53:05.132 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:53:05.132 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 21:53:05.132 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:53:05.137 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 21:53:05 [INFO] JobCore start success. +2023-10-13 21:53:05.334 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 21:53:05.336 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:53:18.685 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 21:53:27.435 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 21:53:27.438 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:53:28.159 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 21:53:28.408 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 21:56:00.046 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 21:56:00.051 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 21:56:00.053 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 21:56:00.053 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 21:56:00.061 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 21:56:00.061 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 21:56:00.061 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 21:56:00.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:56:00.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 21:56:00.062 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:56:00.069 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 21:56:00 [INFO] JobCore start success. +2023-10-13 21:56:03.707 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-10-13 21:56:03.712 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 21:56:03.714 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:56:04.917 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 21:56:09.311 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 21:56:09.314 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:56:09.324 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:95] : +2023-10-13 21:56:10.020 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 21:56:10.273 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 21:59:51.982 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 21:59:51.989 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 21:59:51.991 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 21:59:51.991 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 21:59:51.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 21:59:51.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 21:59:51.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 21:59:51.999 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 21:59:51.999 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:59:51.999 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 21:59:52.006 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 21:59:52 [INFO] JobCore start success. +2023-10-13 21:59:52.049 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : pandax断开连接 +2023-10-13 21:59:52.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 21:59:52.052 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 21:59:57.005 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:98] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 22:00:01.684 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 22:00:01.687 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-13 22:00:01.699 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:94] : +2023-10-13 22:00:02.407 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 22:00:02.659 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:138] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 22:01:59.414 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:03:14.550 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:03:14.556 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:03:14.558 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:03:14.558 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:03:14.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:03:14.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:03:14.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:03:14.571 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:03:14.572 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:03:14.572 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:03:14.578 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:03:14 [INFO] JobCore start success. +2023-10-13 22:03:14.580 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:114] : 账号pandax,开始认证 +2023-10-13 22:06:03.740 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:06:03.746 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:06:03.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:06:03.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:06:03.755 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:06:03.755 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:06:03.755 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:06:03.756 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:06:03.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:06:03.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:06:03.762 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:06:03 [INFO] JobCore start success. +2023-10-13 22:06:05.847 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 22:06:05.849 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:06:05.849 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 22:06:05.852 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:06:05.854 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:06:05.865 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:94] : +2023-10-13 22:06:10.085 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 22:06:15.524 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 22:06:15.527 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:06:15.539 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:94] : +2023-10-13 22:06:16.211 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 22:06:16.461 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 22:07:13.776 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 22:07:17.185 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 22:07:17.198 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:07:17.571 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:94] : +2023-10-13 22:07:17.936 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-13 22:07:18.192 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-13 22:18:37.897 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-10-13 22:18:37.911 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->13ms +2023-10-13 22:18:37.929 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list/all] [uid=1] : 获取Product分页列表 ->11ms +2023-10-13 22:18:37.937 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->28ms +2023-10-13 22:18:44.327 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->12ms +2023-10-13 22:18:45.701 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->5ms +2023-10-13 22:18:50.027 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 +<-e errCode: 400, errMsg: 添加指令记录失败 +2023-10-13 22:21:32.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/log/list] : 获取规则引擎日志分页列表 ->21ms +2023-10-13 22:21:33.523 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 22:21:33.544 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list] : 获取规则引擎分页列表 ->15ms +2023-10-13 22:21:41.472 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list/tree/label] [uid=1] : 获取DeviceGroup树 ->15ms +2023-10-13 22:21:41.473 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 22:21:41.494 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->11ms +2023-10-13 22:21:41.512 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->23ms +2023-10-13 22:21:49.984 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/category/list/tree/label] [uid=1] : 获取ProductCategory树 ->3ms +2023-10-13 22:21:49.999 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 22:21:50.002 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 ->14ms +2023-10-13 22:21:50.168 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/9b37cd4ca37090649adcee8bf17cfdcc_20230414141350.png] : 获取文件 ->94ms +2023-10-13 22:22:00.101 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list/label] : 获取规则引擎Label列表 ->6ms +2023-10-13 22:22:00.109 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->5ms +2023-10-13 22:22:00.119 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 22:22:18.349 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->3ms +2023-10-13 22:22:18.360 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms +2023-10-13 22:22:18.371 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list/label] : 获取规则引擎Label列表 ->6ms +2023-10-13 22:24:30.809 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list] [uid=1] [uname=panda] : 获取ProductCategory列表 ->4ms +2023-10-13 22:24:30.818 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 22:24:31.931 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 22:24:31.945 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->3ms +2023-10-13 22:24:31.948 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 ->15ms +2023-10-13 22:24:57.248 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->5ms +2023-10-13 22:24:57.266 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/list/label] : 获取规则引擎Label列表 ->8ms +2023-10-13 22:24:57.279 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->7ms +2023-10-13 22:25:27.018 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/notice/list] [uid=1] : 获取通知分页列表 ->15ms +2023-10-13 22:28:34.801 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:28:45.260 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:28:45.265 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:28:45.268 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:28:45.268 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:28:45.276 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:28:45.277 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:28:45.277 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:28:45.278 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:28:45.278 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:28:45.278 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:28:45.284 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:28:45 [INFO] JobCore start success. +2023-10-13 22:28:46.764 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:28:46.767 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:28:54.056 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 22:28:54.061 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->4ms +2023-10-13 22:28:55.127 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 22:28:55.139 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [GET=/device/product/list] [uid=1] : 获取Product分页列表 +<-e errCode: 400, errMsg: 查询产品分页列表失败 +2023-10-13 22:28:55.145 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->4ms +2023-10-13 22:30:58.863 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:31:06.094 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:31:06.101 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:31:06.103 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:31:06.103 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:31:06.109 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:31:06.110 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:31:06.110 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:31:06.111 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:31:06.111 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:31:06.111 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:31:06.121 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:31:06 [INFO] JobCore start success. +2023-10-13 22:31:10.838 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:31:10.840 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:31:16.357 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list] [uid=1] [uname=panda] : 获取ProductCategory列表 ->4ms +2023-10-13 22:31:16.365 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 22:31:17.203 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 22:31:17.220 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->5ms +2023-10-13 22:31:17.225 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [GET=/device/product/list] [uid=1] : 获取Product分页列表 +<-e errCode: 400, errMsg: 查询产品分页列表失败 +2023-10-13 22:32:09.200 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:32:17.249 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:32:17.255 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:32:17.257 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:32:17.257 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:32:17.264 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:32:17.264 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:32:17.264 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:32:17.265 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:32:17.265 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:32:17.265 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:32:17.271 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:32:17 [INFO] JobCore start success. +2023-10-13 22:32:20.149 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 22:32:20.156 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/category/list] [uid=1] [uname=panda] : 获取ProductCategory列表 ->6ms +2023-10-13 22:32:21.165 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:32:21.167 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:32:21.340 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 22:32:21.346 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list/tree/label] : 获取ProductCategory树 ->4ms +2023-10-13 22:32:21.366 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [GET=/device/product/list] : 获取Product分页列表 +<-e errCode: 400, errMsg: 查询产品分页列表失败 +2023-10-13 22:37:24.788 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:37:24.793 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:37:24.796 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:37:24.796 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:37:24.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:37:24.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:37:24.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:37:24.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:37:24.805 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:37:24.805 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:37:24.811 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:37:24 [INFO] JobCore start success. +2023-10-13 22:37:28.471 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:37:28.474 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:38:08.625 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:38:19.300 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:38:19.305 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:38:19.307 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:38:19.308 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:38:19.314 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:38:19.314 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:38:19.314 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:38:19.315 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:38:19.315 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:38:19.315 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:38:19.321 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:38:19 [INFO] JobCore start success. +2023-10-13 22:38:20.597 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : pandax断开连接 +2023-10-13 22:38:20.599 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:38:20.600 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:38:28.933 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/category/list] : 获取ProductCategory列表 ->3ms +2023-10-13 22:38:28.941 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-13 22:38:29.552 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->50ms +2023-10-13 22:38:29.566 [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-10-13 22:38:29.585 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list] [uid=1] [uname=panda] : 获取Product分页列表 ->15ms +2023-10-13 22:39:36.789 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->10ms +2023-10-13 22:39:36.814 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/list] [uid=1] : 获取规则引擎分页列表 ->16ms +2023-10-13 22:39:40.644 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->26ms +2023-10-13 22:39:41.318 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] : 获取规则引擎信息 ->6ms +2023-10-13 22:39:41.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:40:09.461 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/initialize/event.go:14] : 规则链rule_a37571bb6c45378b57803793变更 +2023-10-13 22:40:09.941 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/rule/chain] : 修改规则引擎信息 ->481ms +2023-10-13 22:40:24.015 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list/tree/label] [uid=1] : 获取DeviceGroup树 ->15ms +2023-10-13 22:40:24.017 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->8ms +2023-10-13 22:40:24.023 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/list] [uid=1] [uname=panda] : 获取Device分页列表 ->41ms +2023-10-13 22:40:24.034 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->11ms +2023-10-13 22:40:29.196 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->12ms +2023-10-13 22:40:30.849 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->8ms +2023-10-13 22:40:35.065 [ERROR] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/restfulx/restfulx.go:106] : runtime error: invalid memory address or nil pointer dereference +2023-10-13 22:40:35.065 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [POST=/device/cmd] [uid=1] [uname=panda] : 命令下发 +<-e errMsg: runtime error: invalid memory address or nil pointer dereference +goroutine 230 [running]: +runtime/debug.Stack() + D:/go/go1.20/src/runtime/debug/stack.go:24 +0x65 +pandax/pkg/middleware.getErrMsg(0xc0001b4fc0, {0x1841fe0?, 0x3291bb0}) + D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:65 +0x3d6 +pandax/pkg/middleware.LogHandler(0xc0001b4fc0) + D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31 +0x238 +github.com/PandaXGO/PandaKit/restfulx.ApplyHandlerInterceptor(...) + D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/restfulx/req_ctx.go:124 +github.com/PandaXGO/PandaKit/restfulx.(*ReqCtx).Handle.func1() + D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/restfulx/req_ctx.go:40 +0xb8 +panic({0x1841fe0, 0x3291bb0}) + D:/go/go1.20/src/runtime/panic.go:884 +0x213 +pandax/pkg/rule_engine/nodes.GetNodes(0xc00119e280) + D:/workspace/go/project/PandaX/PandaX/pkg/rule_engine/nodes/node.go:92 +0x4b2 +pandax/pkg/rule_engine.newInstanceWithManifest(0xc00119e280) + D:/workspace/go/project/PandaX/PandaX/pkg/rule_engine/instance.go:31 +0x3d +pandax/pkg/rule_engine.NewRuleChainInstance({0xc00054d900, 0x1266, 0x1300}) + D:/workspace/go/project/PandaX/PandaX/pkg/rule_engine/instance.go:25 +0x133 +pandax/apps/device/api.(*DeviceCmdLogApi).InsertDeviceCmdLog(0xc000362920, 0x479397?) + D:/workspace/go/project/PandaX/PandaX/apps/device/api/device_cmd.go:70 +0x2a5 +github.com/PandaXGO/PandaKit/restfulx.(*ReqCtx).Handle(0xc0001b4fc0, 0xc002bbb120) + D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/restfulx/req_ctx.go:56 +0x1b5 +pandax/apps/device/router.InitDeviceCmdLogRouter.func2(0xc001dae2e8?, 0xc000628a90?) + D:/workspace/go/project/PandaX/PandaX/apps/device/router/device_cmd.go:38 +0x7e +github.com/emicklei/go-restful/v3.(*FilterChain).ProcessFilter(0xc000628a90?, 0x232ef40?, 0xc0001b4ee0?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/filter.go:23 +0x58 +pandax/pkg/middleware.Rate(0xc00290e800, 0x1?, 0xc8?) + D:/workspace/go/project/PandaX/PandaX/pkg/middleware/rate.go:24 +0xb1 +github.com/emicklei/go-restful/v3.(*FilterChain).ProcessFilter(0x0?, 0x0?, 0x2714e403328?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/filter.go:21 +0x47 +github.com/emicklei/go-restful/v3.(*Container).OPTIONSFilter(0xc0000fe3c0?, 0x5?, 0x5?, 0x0?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/options_filter.go:15 +0x54 +github.com/emicklei/go-restful/v3.(*FilterChain).ProcessFilter(0xc00061a240?, 0x4?, 0x4?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/filter.go:21 +0x47 +github.com/emicklei/go-restful/v3.CrossOriginResourceSharing.Filter({{0xc00061a240, 0x4, 0x4}, {0xc00066c2a0, 0x7, 0x7}, {0x0, 0x0, 0x0}, 0x0, ...}, ...) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/cors_filter.go:65 +0x1c5 +github.com/emicklei/go-restful/v3.(*FilterChain).ProcessFilter(0xb800000000000070?, 0x1a08c40?, 0xc000580400?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/filter.go:21 +0x47 +pandax/pkg/middleware.EscapeHTML(0xc00290e800, 0x1989d60?, 0x1?) + D:/workspace/go/project/PandaX/PandaX/pkg/middleware/escape_html.go:16 +0x11f +github.com/emicklei/go-restful/v3.(*FilterChain).ProcessFilter(0xc0005dcd80?, 0xc00290e820?, 0xc00126e8a0?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/filter.go:21 +0x47 +github.com/emicklei/go-restful/v3.(*Container).dispatch(0xc0006c6510, {0x232ef10, 0xc00126e8a0}, 0xc001624a00) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/container.go:296 +0x5d0 +net/http.HandlerFunc.ServeHTTP(0x10?, {0x232ef10?, 0xc00126e8a0?}, 0x1abd5e8?) + D:/go/go1.20/src/net/http/server.go:2122 +0x2f +net/http.(*ServeMux).ServeHTTP(0x2331c40?, {0x232ef10, 0xc00126e8a0}, 0xc001624a00) + D:/go/go1.20/src/net/http/server.go:2500 +0x149 +github.com/emicklei/go-restful/v3.(*Container).ServeHTTP(0xc0006c6510, {0x2331c40, 0xc0005e2700}, 0x86ea74?) + D:/workspace/go/pkg/mod/github.com/emicklei/go-restful/v3@v3.9.0/container.go:346 +0x112 +net/http.serverHandler.ServeHTTP({0x232c3e8?}, {0x2331c40, 0xc0005e2700}, 0xc001624a00) + D:/go/go1.20/src/net/http/server.go:2936 +0x316 +net/http.(*conn).serve(0xc0013a8750, {0x2333350, 0xc00055a3f0}) + D:/go/go1.20/src/net/http/server.go:1995 +0x612 +created by net/http.(*Server).Serve + D:/go/go1.20/src/net/http/server.go:3089 +0x5ed + +2023-10-13 22:41:34.871 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:41:34.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:42:46.142 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:42:55.630 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:42:55.636 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:42:55.638 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:42:55.638 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:42:55.645 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:42:55.646 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:42:55.646 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:42:55.646 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:42:55.646 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:42:55.647 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:42:55.652 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:42:55 [INFO] JobCore start success. +2023-10-13 22:42:58.133 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : pandax断开连接 +2023-10-13 22:42:58.135 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:42:58.138 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:44:27.846 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/nodeLabels] [uid=1] : 获取所有节点标签 ->0ms +2023-10-13 22:44:27.874 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:44:43.969 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->5ms +2023-10-13 22:44:43.976 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/list] [uid=1] : 获取规则引擎分页列表 ->17ms +2023-10-13 22:44:47.488 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/user/auth] [uid=1] : 认证信息 ->26ms +2023-10-13 22:44:48.287 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] : 获取规则引擎信息 ->6ms +2023-10-13 22:44:48.455 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/nodeLabels] [uid=1] [uname=panda] : 获取所有节点标签 ->0ms +2023-10-13 22:45:23.240 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] : 获取规则引擎信息 ->8ms +2023-10-13 22:45:23.498 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/nodeLabels] [uid=1] [uname=panda] : 获取所有节点标签 ->0ms +2023-10-13 22:46:44.004 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/rule_a37571bb6c45378b57803793] [uid=1] [uname=panda] : 获取规则引擎信息 ->13ms +2023-10-13 22:46:44.207 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:47:28.045 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] : 获取规则引擎信息 ->8ms +2023-10-13 22:47:28.331 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:47:43.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/initialize/event.go:14] : 规则链rule_a37571bb6c45378b57803793变更 +2023-10-13 22:47:44.257 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/rule/chain] : 修改规则引擎信息 ->605ms +2023-10-13 22:48:43.989 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->42ms +2023-10-13 22:48:44.488 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/rule/chain/rulee765e9ef022812a8b89dfb4c] [uid=1] [uname=panda] : 获取规则引擎信息 ->5ms +2023-10-13 22:48:44.729 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/nodeLabels] [uid=1] : 获取所有节点标签 ->0ms +2023-10-13 22:49:06.316 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/group/list/tree/label] [uid=1] [uname=panda] : 获取DeviceGroup树 ->12ms +2023-10-13 22:49:06.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->12ms +2023-10-13 22:49:06.327 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->6ms +2023-10-13 22:49:06.327 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/list] [uid=1] : 获取Device分页列表 ->33ms +2023-10-13 22:49:10.239 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->11ms +2023-10-13 22:49:11.964 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/template/list/all] [uid=1] [uname=panda] : 获取Template列表 ->6ms +2023-10-13 22:49:17.149 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 +<-e errCode: 400, errMsg: 添加指令记录失败 +2023-10-13 22:50:21.666 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] [uid=1] : 获取规则引擎信息 ->9ms +2023-10-13 22:50:21.931 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-13 22:51:29.598 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-13 22:51:34.908 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-13 22:51:34.913 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-13 22:51:34.916 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-13 22:51:34.916 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-13 22:51:34.923 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-13 22:51:34.923 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-13 22:51:34.923 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-13 22:51:34.923 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:51:34.923 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-13 22:51:34.924 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-13 22:51:34.929 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-13 22:51:34 [INFO] JobCore start success. +2023-10-13 22:51:35.089 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号pandax,开始认证 +2023-10-13 22:51:35.091 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 22:51:57.561 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 +<-e errCode: 400, errMsg: 添加指令记录失败 +2023-10-13 23:09:40.750 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:09:45.654 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:09:45.659 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:09:45.676 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:09:46.090 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-13 23:18:40.459 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:18:44.656 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:18:44.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:18:44.674 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:18:45.098 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-13 23:27:39.465 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:27:43.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:27:43.665 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:27:43.677 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:27:43.942 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-13 23:35:09.324 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:35:13.657 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:35:13.661 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:35:13.675 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:35:13.974 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-13 23:42:39.325 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:42:43.649 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:42:43.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:42:43.664 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:42:44.099 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-13 23:56:05.847 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-13 23:56:10.655 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-13 23:56:10.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-13 23:56:10.676 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-13 23:56:11.049 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:02:07.194 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:02:11.649 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:02:11.653 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:02:11.665 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-14 00:02:12.074 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:08:08.184 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:08:12.641 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:08:12.645 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:08:12.659 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-14 00:08:13.020 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:14:09.174 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:14:13.654 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:14:13.657 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:14:13.671 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-14 00:14:14.162 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:23:08.462 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:23:12.651 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:23:12.655 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:23:12.669 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-14 00:23:13.069 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:29:09.188 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:29:13.658 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:29:13.662 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:29:13.675 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:140] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry" name:"v1/devices/me/rpc/request/+"] +2023-10-14 00:29:14.160 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:36:39.323 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 00:36:43.641 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:116] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 00:36:43.648 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:85] : Client emqx@172.17.0.3 Connected +2023-10-14 00:36:44.203 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 00:38:12.786 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:100] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 08:54:14.550 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/system/user/login] : 登录 ->73ms +2023-10-14 08:54:14.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->18ms +2023-10-14 08:54:14.948 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/alarm/panel] : 获取面板告警分组 ->26ms +2023-10-14 08:54:14.964 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/panel] [uid=1] [uname=panda] : 获取DevicePanel ->61ms +2023-10-14 08:54:19.932 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->3ms +2023-10-14 08:54:19.940 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/rule/chain/list] [uid=1] : 获取规则引擎分页列表 ->17ms +2023-10-14 08:54:23.545 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/user/auth] : 认证信息 ->23ms +2023-10-14 08:54:24.203 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/rule_a37571bb6c45378b57803793] : 获取规则引擎信息 ->5ms +2023-10-14 08:54:24.442 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/rule/chain/nodeLabels] : 获取所有节点标签 ->0ms +2023-10-14 09:05:26.485 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:05:34.881 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:05:34.887 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:05:34.889 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:05:34.889 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:05:34.896 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:05:34.896 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:05:34.897 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:05:34.897 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:05:34.898 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:05:34.898 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:05:34.902 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:05:34 [INFO] JobCore start success. +2023-10-14 09:05:42.773 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/initialize/event.go:15] : 规则链rule_a37571bb6c45378b57803793变更 +2023-10-14 09:05:43.019 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [PUT=/rule/chain] : 修改规则引擎信息 ->246ms +panic: not Authorized + +goroutine 49 [running]: +pandax/iothub/client/mqttclient.GetMqttClinent({0xc001322048, 0x14}, {0xc00050a660, 0x6}, {0xc00050a680, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:50 +0x31d +pandax/iothub/client/mqttclient.InitMqtt({0xc00050a600?, 0x25934c1?}, {0xc00050a660, 0x6}, {0xc00050a680, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:29 +0x93 +pandax/iothub/server/emqxserver.InitEmqxHook({0x0, 0x0}, 0xc001248980) + D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:37 +0x1f1 +created by pandax/iothub.InitIothub + D:/workspace/go/project/PandaX/PandaX/iothub/iothub.go:14 +0xed +2023-10-14 09:06:58.958 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231013022859-bcaa3c1cd20b/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:06:58.969 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:06:58.972 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:06:58.972 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:06:58.984 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:06:58.985 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:06:58.985 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:06:58.985 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:06:58.986 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:34] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:06:58.986 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:06:58.998 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:06:58 [INFO] JobCore start success. +panic: not Authorized + +goroutine 36 [running]: +pandax/iothub/client/mqttclient.GetMqttClinent({0xc0003c4780, 0x14}, {0xc0000448d0, 0x6}, {0xc0000448f0, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:50 +0x31d +pandax/iothub/client/mqttclient.InitMqtt({0xc000044800?, 0x20334c1?}, {0xc0000448d0, 0x6}, {0xc0000448f0, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:29 +0x93 +pandax/iothub/server/emqxserver.InitEmqxHook({0x0, 0x0}, 0xc0004e0000) + D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:37 +0x1f1 +created by pandax/iothub.InitIothub + D:/workspace/go/project/PandaX/PandaX/iothub/iothub.go:14 +0xed +2023-10-14 09:10:46.016 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:10:46.023 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:10:46.024 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:10:46.024 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:10:46.032 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:10:46.032 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:10:46.032 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:10:46.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:10:46.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:10:46.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:10:46.039 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:10:46 [INFO] JobCore start success. +panic: not Authorized + +goroutine 40 [running]: +pandax/iothub/client/mqttclient.GetMqttClinent({0xc00058e030, 0x14}, {0xc000044a90, 0x6}, {0xc000044ab0, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:50 +0x31d +pandax/iothub/client/mqttclient.InitMqtt({0xc000044920?, 0x22a34bb?}, {0xc000044a90, 0x6}, {0xc000044ab0, 0x6}) + D:/workspace/go/project/PandaX/PandaX/iothub/client/mqttclient/mqtt.go:29 +0x93 +pandax/iothub/server/emqxserver.InitEmqxHook({0x0, 0x0}, 0xc00044a080) + D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:36 +0x1f1 +created by pandax/iothub.InitIothub + D:/workspace/go/project/PandaX/PandaX/iothub/iothub.go:14 +0xed +2023-10-14 09:12:02.794 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:12:02.799 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:12:02.801 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:12:02.801 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:12:02.809 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:12:02.809 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:12:02.809 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:12:02.810 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:12:02.810 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:12:02.810 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:12:02.815 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:12:02 [INFO] JobCore start success. +2023-10-14 09:13:21.874 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->9ms +2023-10-14 09:13:21.884 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/product/list/all] [uid=1] : 获取Product分页列表 ->12ms +2023-10-14 09:13:21.884 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->26ms +2023-10-14 09:13:21.888 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->6ms +2023-10-14 09:13:21.969 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/upload/get/1df420e901be965018e95bac136ec17f_20231012191851.jpg] : 获取文件 ->0ms +2023-10-14 09:13:31.147 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 09:13:36.674 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 09:13:36.677 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:13:37.094 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:93] : +2023-10-14 09:13:37.376 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:137] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-14 09:13:37.630 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:137] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-14 09:13:40.945 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/group/list/tree/label] [uid=1] : 获取DeviceGroup树 ->24ms +2023-10-14 09:13:40.952 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/system/dict/data/type] [uid=1] [uname=panda] : 获取字典数据列表通过字典类型 ->7ms +2023-10-14 09:13:40.959 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->46ms +2023-10-14 09:13:40.966 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->8ms +2023-10-14 09:13:45.107 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->12ms +2023-10-14 09:13:46.531 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->7ms +2023-10-14 09:13:51.879 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 +<-e errCode: 400, errMsg: 添加指令记录失败 +2023-10-14 09:14:49.911 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:14:58.732 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:14:58.738 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:14:58.739 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:14:58.740 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:14:58.747 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:14:58.747 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:14:58.747 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:14:58.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:14:58.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:14:58.748 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:14:58.754 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:14:58 [INFO] JobCore start success. +2023-10-14 09:14:58.754 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:14:58.757 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:15:04.706 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:31] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 +<-e errCode: 400, errMsg: 添加指令记录失败 +2023-10-14 09:20:45.596 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:20:58.125 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:20:58.131 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:20:58.133 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:20:58.133 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:20:58.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:20:58.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:20:58.144 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:20:58.146 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:20:58.147 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:20:58.148 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:20:58.152 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:20:58 [INFO] JobCore start success. +2023-10-14 09:20:58.584 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:20:58.586 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:34:51.795 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:34:51.801 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:34:51.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:34:51.804 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:34:51.817 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:34:51.817 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:34:51.817 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:34:51.820 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:34:51.820 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:34:51.821 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:34:51.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:34:51 [INFO] JobCore start success. +2023-10-14 09:34:51.828 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:34:51.834 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:35:58.738 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->5ms +2023-10-14 09:36:03.673 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/group/list/tree/label] : 获取DeviceGroup树 ->30ms +2023-10-14 09:36:03.683 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/system/dict/data/type] [uid=1] : 获取字典数据列表通过字典类型 ->8ms +2023-10-14 09:36:03.683 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->53ms +2023-10-14 09:36:03.698 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/product/list/all] : 获取Product分页列表 ->12ms +2023-10-14 09:36:50.316 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->11ms +2023-10-14 09:36:51.951 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->6ms +2023-10-14 09:37:35.253 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:37:35.259 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:37:35.260 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:37:35.260 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:37:35.268 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:37:35.269 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:37:35.269 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:37:35.269 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:37:35.269 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:37:35.269 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:37:35.278 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:37:35 [INFO] JobCore start success. +2023-10-14 09:37:38.703 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : pandax断开连接 +2023-10-14 09:37:38.704 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:37:38.707 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:37:41.926 [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-10-14 09:37:41.932 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/product/list/all] [uid=1] [uname=panda] : 获取Product分页列表 ->9ms +2023-10-14 09:37:41.932 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/list] : 获取Device分页列表 ->25ms +2023-10-14 09:37:41.936 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/system/dict/data/type] : 获取字典数据列表通过字典类型 ->4ms +2023-10-14 09:39:39.869 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:39:47.036 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:39:47.042 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:39:47.043 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:39:47.044 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:39:47.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:39:47.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:39:47.050 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:39:47.052 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:39:47.052 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:39:47.052 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:39:47.058 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:39:47 [INFO] JobCore start success. +2023-10-14 09:39:51.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : pandax断开连接 +2023-10-14 09:39:51.828 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:39:51.831 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:40:04.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->10ms +2023-10-14 09:40:05.874 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->7ms +2023-10-14 09:40:09.597 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->180ms +2023-10-14 09:40:09.620 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->7ms +2023-10-14 09:43:27.835 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:43:37.014 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:43:37.020 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:43:37.023 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:43:37.023 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:43:37.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:43:37.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:43:37.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:43:37.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:43:37.032 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:43:37.032 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:43:37.037 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:43:37 [INFO] JobCore start success. +2023-10-14 09:43:39.778 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : pandax断开连接 +2023-10-14 09:43:39.779 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:43:39.782 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:43:45.105 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3断开连接 +2023-10-14 09:43:46.931 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3,开始认证 +2023-10-14 09:43:46.935 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:43:47.279 [ERROR] [D:/workspace/go/project/PandaX/PandaX/iothub/hook_message_work/hook_message_work.go:92] : +2023-10-14 09:43:47.706 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:137] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/telemetry"] +2023-10-14 09:43:47.987 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:137] : YWRlMTA0MmYtMzc2MS0zZTljLThjNjAtMzNhMzg4ZjdkOGQ3订阅了[name:"v1/devices/me/rpc/request/+"] +2023-10-14 09:44:20.409 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->4ms +2023-10-14 09:44:25.078 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [POST=/device/cmd] [uid=1] [uname=panda] : 命令下发 ->299ms +2023-10-14 09:44:25.103 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->9ms +2023-10-14 09:46:51.843 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:46:59.553 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:46:59.559 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:46:59.561 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:46:59.561 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:46:59.568 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:46:59.568 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:46:59.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:46:59.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:46:59.569 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:46:59.570 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:46:59.576 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:46:59 [INFO] JobCore start success. +2023-10-14 09:47:00.568 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->6ms +2023-10-14 09:47:03.816 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : pandax断开连接 +2023-10-14 09:47:03.818 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:47:03.821 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:47:04.139 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->273ms +2023-10-14 09:47:04.164 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [GET=/device/cmd/list] [uid=1] [uname=panda] : 获取命令下发分页列表 ->7ms +2023-10-14 09:47:38.171 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:47:46.550 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:47:46.556 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:47:46.558 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:47:46.558 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:47:46.566 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:47:46.566 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:47:46.566 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:47:46.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:47:46.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:47:46.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:47:46.573 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:47:46 [INFO] JobCore start success. +2023-10-14 09:47:50.123 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:47:50.125 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:48:04.487 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->7ms +2023-10-14 09:48:07.654 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [POST=/device/cmd] : 命令下发 ->392ms +2023-10-14 09:48:07.677 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->8ms +2023-10-14 09:48:46.508 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:48:52.706 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:48:52.712 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:48:52.714 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:48:52.714 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:48:52.722 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:48:52.722 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:48:52.722 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:48:52.723 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:48:52.723 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:48:52.723 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:48:52.731 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:48:52 [INFO] JobCore start success. +2023-10-14 09:48:53.028 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:97] : pandax断开连接 +2023-10-14 09:48:53.031 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:48:53.033 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:48:55.827 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->4ms +2023-10-14 09:49:01.884 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->3188ms +2023-10-14 09:49:01.921 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->11ms +2023-10-14 09:50:04.567 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/template/list/all] : 获取Template列表 ->6ms +2023-10-14 09:50:13.312 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->5128ms +2023-10-14 09:50:13.565 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->80ms +2023-10-14 09:51:56.104 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/cmd/list] [uid=1] : 获取命令下发分页列表 ->185ms +2023-10-14 09:52:00.522 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->9ms +2023-10-14 09:52:03.681 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [POST=/device/cmd] [uid=1] : 命令下发 ->241ms +2023-10-14 09:52:03.889 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uid=1] [uname=panda] [GET=/device/cmd/list] : 获取命令下发分页列表 ->66ms +2023-10-14 09:53:49.165 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed +2023-10-14 09:53:55.876 [INFO] [D:/workspace/go/pkg/mod/github.com/!panda!x!g!o/!panda!kit@v0.0.0-20231014010146-3a169666cab5/starter/gorm.go:36] : 连接mysql [root:!MyEMS1@tcp(127.0.0.1:3306)/pandax_iot?charset=utf8&loc=Local&parseTime=true] +2023-10-14 09:53:55.881 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:44] : mysql连接成功 +2023-10-14 09:53:55.883 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:49] : Redis连接成功 +2023-10-14 09:53:55.883 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:56] : Tdengine连接成功 +2023-10-14 09:53:55.890 [INFO] [D:/workspace/go/project/PandaX/PandaX/main.go:74] : 路由初始化完成 +2023-10-14 09:53:55.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:38] : HTTP Server listen: :7788 +2023-10-14 09:53:55.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:46] : HTTP Server listen: :7788 +2023-10-14 09:53:55.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/tcpserver/hook.go:29] : TCP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:53:55.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:33] : IOTHUB HOOK Start SUCCESS,Grpc Server listen: +2023-10-14 09:53:55.891 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/udpserver/hook.go:27] : UDP IOTHUB HOOK Start SUCCESS, Server listen: +2023-10-14 09:53:55.897 [INFO] [D:/workspace/go/project/PandaX/PandaX/apps/job/jobs/jobbase.go:86] : 2023-10-14 09:53:55 [INFO] JobCore start success. +2023-10-14 09:53:56.151 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:113] : 账号pandax,开始认证 +2023-10-14 09:53:56.154 [INFO] [D:/workspace/go/project/PandaX/PandaX/iothub/server/emqxserver/hook.go:84] : Client emqx@172.17.0.3 Connected +2023-10-14 09:53:58.764 [INFO] [D:/workspace/go/project/PandaX/PandaX/pkg/middleware/log.go:34] [uname=panda] [GET=/device/template/list/all] [uid=1] : 获取Template列表 ->5ms +2023-10-14 09:56:01.540 [ERROR] [D:/workspace/go/project/PandaX/PandaX/pkg/transport/http_server.go:48] : error http serve: http: Server closed diff --git a/go.mod b/go.mod index b73653f..6a34fa0 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module pandax go 1.19 require ( - github.com/PandaXGO/PandaKit v0.0.0-20231013022859-bcaa3c1cd20b + github.com/PandaXGO/PandaKit v0.0.0-20231014010146-3a169666cab5 github.com/Shopify/sarama v1.38.1 github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/didip/tollbooth v4.0.2+incompatible diff --git a/go.sum b/go.sum index b606a39..98b796f 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,8 @@ github.com/PandaXGO/PandaKit v0.0.0-20230914055936-853aa978dda1 h1:LfDtQriNZcP4K github.com/PandaXGO/PandaKit v0.0.0-20230914055936-853aa978dda1/go.mod h1:/H1PTodkWhRyVqE/1tROVJEO2nwqwE6el7ZzwSebLxY= github.com/PandaXGO/PandaKit v0.0.0-20231013022859-bcaa3c1cd20b h1:W4avR/i7mBU7pkbyMULaCHGv2BhhHCfSiSt9pF0rbgI= github.com/PandaXGO/PandaKit v0.0.0-20231013022859-bcaa3c1cd20b/go.mod h1:/H1PTodkWhRyVqE/1tROVJEO2nwqwE6el7ZzwSebLxY= +github.com/PandaXGO/PandaKit v0.0.0-20231014010146-3a169666cab5 h1:vV2y9A70rSAdVNB+moACcYf9Q9dup3bz9KZgH07iFiU= +github.com/PandaXGO/PandaKit v0.0.0-20231014010146-3a169666cab5/go.mod h1:VsTIkY1oxUoOoady/U6evOB24BHhv2O7ELH4WukqIXo= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A= diff --git a/iothub/client/mqttclient/rpc.go b/iothub/client/mqttclient/rpc.go index 8a5bfbd..a9420b2 100644 --- a/iothub/client/mqttclient/rpc.go +++ b/iothub/client/mqttclient/rpc.go @@ -6,6 +6,7 @@ import ( "fmt" mqtt "github.com/eclipse/paho.mqtt.golang" "math/rand" + "pandax/pkg/global_model" "time" ) @@ -26,19 +27,10 @@ type RpcRequest struct { Timeout int // 设置双向时,等待的超时时间 } -type RpcPayload struct { - Method string `json:"method"` - Params any `json:"params"` -} - // RequestCmd 下发指令 -func (rpc RpcRequest) RequestCmd(rpcPayload RpcPayload) (respPayload string, err error) { +func (rpc RpcRequest) RequestCmd(rpcPayload string) (respPayload string, err error) { topic := fmt.Sprintf(RpcReqTopic, rpc.RequestId) - payload, err := json.Marshal(rpcPayload) - if err != nil { - return "", err - } - err = rpc.Client.Pub(topic, 0, string(payload)) + err = rpc.Client.Pub(topic, 0, rpcPayload) if err != nil { return "", err } @@ -73,7 +65,7 @@ func (rpc RpcRequest) RequestCmd(rpcPayload RpcPayload) (respPayload string, err } // RequestAttributes rpc 下发属性 -func (rpc RpcRequest) RequestAttributes(rpcPayload RpcPayload) error { +func (rpc RpcRequest) RequestAttributes(rpcPayload global_model.RpcPayload) error { topic := fmt.Sprintf(RpcReqTopic, rpc.RequestId) if rpcPayload.Method == "" { rpcPayload.Method = "setAttributes" @@ -85,18 +77,9 @@ func (rpc RpcRequest) RequestAttributes(rpcPayload RpcPayload) error { return rpc.Client.Pub(topic, 0, string(payload)) } -// RespondTpc 处理设备端请求服务端方法 -func (rpc RpcRequest) RespondTpc(reqPayload RpcPayload) error { +func (rpc RpcRequest) Pub(reqPayload string) error { topic := fmt.Sprintf(RpcRespTopic, rpc.RequestId) - //TODO 此处处理设备的请求参数逻辑 - //自己定义请求逻辑 - if reqPayload.Params == "getCurrentTime" { - unix := time.Now().Unix() - msg := fmt.Sprintf("%d", unix) - return rpc.Client.Pub(topic, 0, msg) - } - // 获取属性 ... - return nil + return rpc.Client.Pub(topic, 0, reqPayload) } func (rpc *RpcRequest) GetRequestId() { diff --git a/iothub/hook_message_work/hook_message_work.go b/iothub/hook_message_work/hook_message_work.go index a1cea09..aa08a3d 100644 --- a/iothub/hook_message_work/hook_message_work.go +++ b/iothub/hook_message_work/hook_message_work.go @@ -12,6 +12,7 @@ import ( ruleService "pandax/apps/rule/services" "pandax/iothub/netbase" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/rule_engine" "pandax/pkg/rule_engine/message" "pandax/pkg/shadow" @@ -44,7 +45,7 @@ func (s *HookService) handleOne(msg *netbase.DeviceEventInfo) { } }() switch msg.Type { - case message.RowMes, message.AttributesMes, message.TelemetryMes, message.RpcRequestMes: + case message.RowMes, message.AttributesMes, message.TelemetryMes, message.RpcRequestFromDevice: msgVals := make(map[string]interface{}) err := json.Unmarshal([]byte(msg.Datas), &msgVals) if err != nil { @@ -74,7 +75,7 @@ func (s *HookService) handleOne(msg *netbase.DeviceEventInfo) { global.Log.Error("规则链执行失败", errs) } // 保存设备影子 - if msg.Type != message.RpcRequestMes { + if msg.Type != message.RpcRequestFromDevice { SetDeviceShadow(msg.DeviceAuth, ruleMessage.Msg, msg.Type) } case message.DisConnectMes, message.ConnectMes: @@ -87,7 +88,8 @@ func (s *HookService) handleOne(msg *netbase.DeviceEventInfo) { } // 更改设备在线状态 if msg.Type == message.ConnectMes { - services.DeviceModelDao.UpdateStatus(msg.DeviceId, global.ONLINE) + err := services.DeviceModelDao.UpdateStatus(msg.DeviceId, global.ONLINE) + global.Log.Error(err) } else { services.DeviceModelDao.UpdateStatus(msg.DeviceId, global.OFFLINE) } @@ -106,7 +108,7 @@ func (s *HookService) handleOne(msg *netbase.DeviceEventInfo) { }() } -func getRuleChain(etoken *tool.DeviceAuth) *ruleEntity.RuleDataJson { +func getRuleChain(etoken *global_model.DeviceAuth) *ruleEntity.RuleDataJson { defer func() { if err := recover(); err != nil { global.Log.Error(err) @@ -118,21 +120,22 @@ func getRuleChain(etoken *tool.DeviceAuth) *ruleEntity.RuleDataJson { rule := ruleService.RuleChainModelDao.FindOne(one.RuleChainId) return rule.RuleDataJson, nil }) - ruleData := ruleEntity.RuleDataJson{} biz.ErrIsNil(err, "缓存读取规则链失败") + ruleData := ruleEntity.RuleDataJson{} err = tool.StringToStruct(get.(string), &ruleData) biz.ErrIsNil(err, "规则链数据转化失败") return &ruleData } -func buildRuleMessage(etoken *tool.DeviceAuth, msgVals map[string]interface{}, msgType string) *message.Message { +func buildRuleMessage(etoken *global_model.DeviceAuth, msgVals map[string]interface{}, msgType string) *message.Message { metadataVals := map[string]interface{}{ - "deviceId": etoken.DeviceId, - "deviceName": etoken.Name, - "deviceType": etoken.DeviceType, - "productId": etoken.ProductId, - "orgId": etoken.OrgId, - "owner": etoken.Owner, + "deviceId": etoken.DeviceId, + "deviceName": etoken.Name, + "deviceType": etoken.DeviceType, + "deviceProtocol": etoken.DeviceProtocol, + "productId": etoken.ProductId, + "orgId": etoken.OrgId, + "owner": etoken.Owner, } return message.NewMessage(etoken.Owner, msgType, msgVals, metadataVals) } @@ -154,7 +157,7 @@ func SendZtWebsocket(deviceId, message string) { } // SetDeviceShadow 设置设备点 -func SetDeviceShadow(etoken *tool.DeviceAuth, msgVals map[string]interface{}, msgType string) { +func SetDeviceShadow(etoken *global_model.DeviceAuth, msgVals map[string]interface{}, msgType string) { defer func() { if err := recover(); &err != nil { global.Log.Error(err) diff --git a/iothub/netbase/hook_base.go b/iothub/netbase/hook_base.go index ba71f61..836ca46 100644 --- a/iothub/netbase/hook_base.go +++ b/iothub/netbase/hook_base.go @@ -5,8 +5,8 @@ import ( "pandax/apps/device/services" "pandax/iothub/server/emqxserver/protobuf" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/tdengine" - "pandax/pkg/tool" "regexp" "strings" "time" @@ -17,7 +17,7 @@ func Auth(authToken string) bool { if authToken == "pandax" { return true } - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} // redis 中有就查询,没有就添加 exists, err := global.RedisDb.Exists(global.RedisDb.Context(), authToken).Result() if exists == 1 { @@ -28,7 +28,9 @@ func Auth(authToken string) bool { global.Log.Infof("设备token %s 不存在", authToken) return false } - etoken, err = services.GetDeviceToken(device) + etoken = services.GetDeviceToken(&device.Device) + etoken.DeviceProtocol = device.Product.ProtocolName + err = global.RedisDb.Set(authToken, etoken.GetMarshal(), time.Hour*24*365) if err != nil { global.Log.Infof("设备TOKEN %s添加缓存失败", authToken) return false @@ -46,8 +48,8 @@ func Auth(authToken string) bool { return true } -func SubAuth(name string) (*tool.DeviceAuth, bool) { - etoken := &tool.DeviceAuth{} +func SubAuth(name string) (*global_model.DeviceAuth, bool) { + etoken := &global_model.DeviceAuth{} // redis 中有就查询,没有就添加 exists, err := global.RedisDb.Exists(global.RedisDb.Context(), name).Result() if exists == 1 { @@ -59,7 +61,10 @@ func SubAuth(name string) (*tool.DeviceAuth, bool) { global.Log.Infof("设备标识 %s 不存在", name) return nil, false } - etoken, err = services.GetDeviceToken(device) + etoken = services.GetDeviceToken(&device.Device) + etoken.DeviceProtocol = device.Product.ProtocolName + // todo 子设备没有token + err = global.RedisDb.Set(device.Token, etoken.GetMarshal(), time.Hour*24*365) if err != nil { global.Log.Infof("设备标识 %s添加缓存失败", name) return nil, false @@ -148,7 +153,7 @@ func GetRequestIdFromTopic(reg, topic string) (requestId string) { return "" } -func CreateConnectionInfo(msgType, protocol, clientID, peerHost string, deviceAuth *tool.DeviceAuth) *DeviceEventInfo { +func CreateConnectionInfo(msgType, protocol, clientID, peerHost string, deviceAuth *global_model.DeviceAuth) *DeviceEventInfo { ts := time.Now().Format("2006-01-02 15:04:05.000") ci := &tdengine.ConnectInfo{ ClientID: clientID, diff --git a/iothub/netbase/iothub_session.go b/iothub/netbase/iothub_session.go index 260ee8e..bb9288b 100644 --- a/iothub/netbase/iothub_session.go +++ b/iothub/netbase/iothub_session.go @@ -1,11 +1,13 @@ package netbase -import "pandax/pkg/tool" +import ( + "pandax/pkg/global_model" +) type DeviceEventInfo struct { - DeviceId string `json:"deviceId"` - DeviceAuth *tool.DeviceAuth `json:"deviceAuth"` - Datas string `json:"datas"` - Type string `json:"type"` - RequestId string `json:"requestId"` + DeviceId string `json:"deviceId"` + DeviceAuth *global_model.DeviceAuth `json:"deviceAuth"` + Datas string `json:"datas"` + Type string `json:"type"` + RequestId string `json:"requestId"` } diff --git a/iothub/server/emqxserver/const.go b/iothub/server/emqxserver/const.go index ba92134..5c485c8 100644 --- a/iothub/server/emqxserver/const.go +++ b/iothub/server/emqxserver/const.go @@ -16,7 +16,7 @@ const ( TelemetryGatewayTopic = "v1/gateway/telemetry" ConnectGatewayTopic = "v1/gateway/connect" - RpcReqReg = `v1/devices/me/rpc/request/(.*?)$` + RpcReq = `v1/devices/me/rpc/request/(.*?)$` ) var IotHubTopic = NewIotHubTopic() @@ -40,7 +40,7 @@ func (iht TopicMeg) GetMessageType(topic string) string { return meg } if strings.Contains(topic, "v1/devices/me/rpc/request") { - return message.RpcRequestMes + return message.RpcRequestFromDevice } return "" } diff --git a/iothub/server/emqxserver/hook.go b/iothub/server/emqxserver/hook.go index 1bce726..81b6585 100644 --- a/iothub/server/emqxserver/hook.go +++ b/iothub/server/emqxserver/hook.go @@ -9,8 +9,8 @@ import ( "pandax/iothub/netbase" exhook2 "pandax/iothub/server/emqxserver/protobuf" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/rule_engine/message" - "pandax/pkg/tool" "time" ) @@ -82,12 +82,11 @@ 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 == mqttclient.DefaultDownStreamClientId { return &exhook2.EmptySuccess{}, nil } token := netbase.GetUserName(in.Clientinfo) - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} etoken.GetDeviceToken(token) data := netbase.CreateConnectionInfo(message.ConnectMes, "mqtt", in.Clientinfo.Clientid, in.Clientinfo.Peerhost, etoken) s.HookService.MessageCh <- data @@ -100,7 +99,7 @@ func (s *HookGrpcService) OnClientDisconnected(ctx context.Context, in *exhook2. if in.Clientinfo.Clientid == mqttclient.DefaultDownStreamClientId { return &exhook2.EmptySuccess{}, nil } - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} err := etoken.GetDeviceToken(token) if err != nil { return nil, err @@ -182,7 +181,7 @@ func (s *HookGrpcService) OnMessagePublish(ctx context.Context, in *exhook2.Mess res.Value = &exhook2.ValuedResponse_BoolResult{BoolResult: true} return res, nil } - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} etoken.GetDeviceToken(in.Message.Headers["username"]) // 获取topic类型 ts := time.Now().Format("2006-01-02 15:04:05.000") @@ -273,9 +272,9 @@ func (s *HookGrpcService) OnMessagePublish(ctx context.Context, in *exhook2.Mess } bytes, _ := json.Marshal(telemetryData) data.Datas = string(bytes) - case message.RpcRequestMes: + case message.RpcRequestFromDevice: // 获取请求id - id := netbase.GetRequestIdFromTopic(RpcReqReg, in.Message.Topic) + id := netbase.GetRequestIdFromTopic(RpcReq, in.Message.Topic) data.RequestId = id } diff --git a/iothub/server/httpserver/hook.go b/iothub/server/httpserver/hook.go index 7d1c46d..0b8e083 100644 --- a/iothub/server/httpserver/hook.go +++ b/iothub/server/httpserver/hook.go @@ -11,8 +11,8 @@ import ( "pandax/iothub/hook_message_work" "pandax/iothub/netbase" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/rule_engine/message" - "pandax/pkg/tool" "sync" "time" ) @@ -42,7 +42,7 @@ func InitHttpHook(addr string, hs *hook_message_work.HookService) { case http.StateHijacked, http.StateClosed: etoken, _ := activeConnections.Load(conn.RemoteAddr().String()) if etoken != nil { - data := netbase.CreateConnectionInfo(message.DisConnectMes, "http", conn.RemoteAddr().String(), conn.RemoteAddr().String(), etoken.(*tool.DeviceAuth)) + data := netbase.CreateConnectionInfo(message.DisConnectMes, "http", conn.RemoteAddr().String(), conn.RemoteAddr().String(), etoken.(*global_model.DeviceAuth)) activeConnections.Delete(conn.RemoteAddr().String()) service.HookService.MessageCh <- data } @@ -80,7 +80,7 @@ func (hhs *HookHttpService) hook(req *restful.Request, resp *restful.Response) { resp.Write([]byte("解析上报参数失败")) return } - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} etoken.GetDeviceToken(token) _, ok := activeConnections.Load(req.Request.RemoteAddr) // 是否需要添加设备上线通知 diff --git a/iothub/server/tcpserver/hook.go b/iothub/server/tcpserver/hook.go index a52873e..a886b50 100644 --- a/iothub/server/tcpserver/hook.go +++ b/iothub/server/tcpserver/hook.go @@ -9,8 +9,8 @@ import ( "pandax/iothub/hook_message_work" "pandax/iothub/netbase" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/rule_engine/message" - "pandax/pkg/tool" "time" ) @@ -48,7 +48,7 @@ func InitTcpHook(addr string, hs *hook_message_work.HookService) { func (hhs *HookTcpService) hook() { isAuth := false - etoken := &tool.DeviceAuth{} + etoken := &global_model.DeviceAuth{} for { buf := make([]byte, 128) n := 0 diff --git a/main.go b/main.go index 5f68ebd..aa9c291 100644 --- a/main.go +++ b/main.go @@ -58,7 +58,7 @@ var rootCmd = &cobra.Command{ global.TdDb = tDengine initialize.InitTable() // 初始化事件监听 - initialize.InitEvents() + go initialize.InitEvents() } else { global.Log.Panic("请配置config") } diff --git a/pkg/global/const_device.go b/pkg/global/global_const_device.go similarity index 97% rename from pkg/global/const_device.go rename to pkg/global/global_const_device.go index bc1cf60..83ce689 100644 --- a/pkg/global/const_device.go +++ b/pkg/global/global_const_device.go @@ -48,6 +48,7 @@ const ( MQTTProtocol = "MQTT" CoAPProtocol = "CoAP" TCPProtocol = "TCP" + UDPProtocol = "UDP" HTTPProtocol = "HTTP" LwM2MProtocol = "LwM2M" ) diff --git a/pkg/tool/device.go b/pkg/global_model/device_auth_model.go similarity index 79% rename from pkg/tool/device.go rename to pkg/global_model/device_auth_model.go index cb98b41..87bec3b 100644 --- a/pkg/tool/device.go +++ b/pkg/global_model/device_auth_model.go @@ -1,4 +1,4 @@ -package tool +package global_model import ( "bytes" @@ -17,19 +17,16 @@ import ( ) type DeviceAuth struct { - Owner string `json:"owner"` - OrgId int64 `json:"orgId"` - DeviceId string `json:"device_id"` - DeviceType string `json:"device_type"` - ProductId string `json:"product_id"` - RuleChainId string `json:"rule_chain_id"` - Name string `json:"name"` - CreatedAt int64 `json:"created_at"` - ExpiredAt int64 `json:"expired_at"` -} - -func (entity *DeviceAuth) CreateDeviceToken(key string) (err error) { - return global.RedisDb.Set(key, entity.GetMarshal(), time.Hour*24*365) + Owner string `json:"owner"` + OrgId int64 `json:"orgId"` + DeviceId string `json:"deviceId"` + DeviceType string `json:"deviceType"` + DeviceProtocol string `json:"deviceProtocol"` + ProductId string `json:"productId"` + RuleChainId string `json:"ruleChainId"` + Name string `json:"name"` + CreatedAt int64 `json:"created_at"` + ExpiredAt int64 `json:"expired_at"` } func (entity *DeviceAuth) GetDeviceToken(key string) error { diff --git a/pkg/global/global_model.go b/pkg/global_model/global_model.go similarity index 94% rename from pkg/global/global_model.go rename to pkg/global_model/global_model.go index 1baf53b..fa71f9c 100644 --- a/pkg/global/global_model.go +++ b/pkg/global_model/global_model.go @@ -1,6 +1,8 @@ -package global +package global_model -import "time" +import ( + "time" +) type BaseModel struct { Id string `json:"id" gorm:"primary_key;"` diff --git a/pkg/global_model/rpc_model.go b/pkg/global_model/rpc_model.go new file mode 100644 index 0000000..5c71d18 --- /dev/null +++ b/pkg/global_model/rpc_model.go @@ -0,0 +1,25 @@ +package global_model + +import ( + "errors" + "fmt" + "time" +) + +type RpcPayload struct { + Method string `json:"method"` + Params any `json:"params"` +} + +// GetRequestResult 处理设备端请求服务端方法 +func (rpc RpcPayload) GetRequestResult() (string, error) { + //TODO 此处处理设备的请求参数逻辑 + //自己定义请求逻辑 + if rpc.Params == "getCurrentTime" { + unix := time.Now().Unix() + msg := fmt.Sprintf("%d", unix) + return msg, nil + } + // 获取属性 ... + return "", errors.New("未获取到请求方法") +} diff --git a/pkg/initialize/event.go b/pkg/initialize/event.go index 22ecea1..b442b26 100644 --- a/pkg/initialize/event.go +++ b/pkg/initialize/event.go @@ -1,6 +1,7 @@ package initialize import ( + "log" "pandax/apps/device/entity" "pandax/apps/device/services" "pandax/pkg/events" @@ -17,6 +18,7 @@ func InitEvents() { }) if list != nil { for _, product := range *list { + log.Println("修改了产品的规则链", product.Id) global.ProductCache.Put(product.Id, codeData) } } diff --git a/pkg/rule_engine/instance.go b/pkg/rule_engine/instance.go index 869788a..f2c86ba 100644 --- a/pkg/rule_engine/instance.go +++ b/pkg/rule_engine/instance.go @@ -43,7 +43,7 @@ func newInstanceWithManifest(m *manifest.Manifest) (*ruleChainInstance, []error) // StartRuleChain TODO 是否需要添加context func (c *ruleChainInstance) StartRuleChain(context context.Context, message *message.Message) error { if node, found := c.nodes[c.firstRuleNodeId]; found { - node.Handle(message) + return node.Handle(message) } return nil } diff --git a/pkg/rule_engine/message/message.go b/pkg/rule_engine/message/message.go index 0d8c98b..e292f49 100644 --- a/pkg/rule_engine/message/message.go +++ b/pkg/rule_engine/message/message.go @@ -8,15 +8,15 @@ import ( // 消息类型 const ( - ConnectMes = "Connect" - DisConnectMes = "Disconnect" - RpcRequestMes = "RpcRequestFromDevice" - RpcRequestServerMes = "RpcRequestFromServer" - UpEventMes = "Event" - AlarmMes = "Alarm" - RowMes = "Row" - TelemetryMes = "Telemetry" - AttributesMes = "Attributes" + ConnectMes = "Connect" + DisConnectMes = "Disconnect" + RpcRequestFromDevice = "RpcRequestFromDevice" + RpcRequestToDevice = "RpcRequestToDevice" + UpEventMes = "Event" + AlarmMes = "Alarm" + RowMes = "Row" + TelemetryMes = "Telemetry" + AttributesMes = "Attributes" ) // 数据类型Originator diff --git a/pkg/rule_engine/nodes/action_create_alarm_node.go b/pkg/rule_engine/nodes/action_create_alarm_node.go index c760048..dd9bdd5 100644 --- a/pkg/rule_engine/nodes/action_create_alarm_node.go +++ b/pkg/rule_engine/nodes/action_create_alarm_node.go @@ -6,8 +6,8 @@ import ( "pandax/apps/device/entity" "pandax/apps/device/services" "pandax/pkg/global" + "pandax/pkg/global_model" "pandax/pkg/rule_engine/message" - "pandax/pkg/tool" "time" ) @@ -52,7 +52,7 @@ func (n *createAlarmNode) Handle(msg *message.Message) error { } } else { alarm = &entity.DeviceAlarm{} - alarm.Id = tool.GenerateID() + alarm.Id = global_model.GenerateID() alarm.DeviceId = msg.Metadata.GetValue("deviceId").(string) alarm.ProductId = msg.Metadata.GetValue("productId").(string) alarm.Name = msg.Metadata.GetValue("deviceName").(string) diff --git a/pkg/rule_engine/nodes/action_rpc_request_from_device_node.go b/pkg/rule_engine/nodes/action_rpc_request_from_device_node.go new file mode 100644 index 0000000..c0a3e09 --- /dev/null +++ b/pkg/rule_engine/nodes/action_rpc_request_from_device_node.go @@ -0,0 +1,84 @@ +package nodes + +import ( + "errors" + "github.com/sirupsen/logrus" + "pandax/iothub/client/mqttclient" + "pandax/iothub/client/tcpclient" + "pandax/pkg/global" + "pandax/pkg/global_model" + "pandax/pkg/rule_engine/message" +) + +type rpcRequestFromDeviceNode struct { + bareNode + RequestId int `json:"requestId"` +} + +type rpcRequestFromDeviceFactory struct{} + +func (f rpcRequestFromDeviceFactory) Name() string { return "RpcRequestFromDeviceNode" } +func (f rpcRequestFromDeviceFactory) Category() string { return NODE_CATEGORY_ACTION } +func (f rpcRequestFromDeviceFactory) Labels() []string { return []string{"Success", "Failure"} } +func (f rpcRequestFromDeviceFactory) Create(id string, meta Metadata) (Node, error) { + node := &rpcRequestFromDeviceNode{ + bareNode: newBareNode(f.Name(), id, meta, f.Labels()), + } + return decodePath(meta, node) +} + +func (n *rpcRequestFromDeviceNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) + successLableNode := n.GetLinkedNode("Success") + failureLableNode := n.GetLinkedNode("Failure") + + if msg.Msg.GetValue("method") == nil || msg.Msg.GetValue("params") == nil { + return errors.New("指令请求格式错误") + } + var rpcp = global_model.RpcPayload{ + Method: msg.Msg.GetValue("method").(string), + Params: msg.Msg.GetValue("params"), + } + result, err := rpcp.GetRequestResult() + if err != nil { + if failureLableNode != nil { + return failureLableNode.Handle(msg) + } else { + return err + } + } + // 判断设备协议,根据不通协议,发送不通内容 + deviceProtocol := global.MQTTProtocol + if msg.Metadata.GetValue("deviceProtocol") != nil && msg.Metadata.GetValue("deviceProtocol").(string) != "" { + deviceProtocol = msg.Metadata.GetValue("deviceProtocol").(string) + } + if deviceProtocol == global.MQTTProtocol { + rpc := &mqttclient.RpcRequest{Client: mqttclient.MqttClient} + RequestId := n.RequestId + if RequestId == 0 { + if msg.Metadata.GetValue("requestId") == nil { + rpc.GetRequestId() + } else { + RequestId = int(msg.Metadata.GetValue("requestId").(float64)) + } + } else { + rpc.RequestId = RequestId + } + err = rpc.Pub(result) + } + if deviceProtocol == global.TCPProtocol { + deviceId := msg.Metadata.GetValue("deviceId").(string) + err = tcpclient.Send(deviceId, result) + } + if err != nil { + if failureLableNode != nil { + return failureLableNode.Handle(msg) + } else { + return err + } + } + if successLableNode != nil { + return successLableNode.Handle(msg) + } + return nil +} diff --git a/pkg/rule_engine/nodes/action_rpc_request_node.go b/pkg/rule_engine/nodes/action_rpc_request_node.go deleted file mode 100644 index 06ce109..0000000 --- a/pkg/rule_engine/nodes/action_rpc_request_node.go +++ /dev/null @@ -1,47 +0,0 @@ -package nodes - -import ( - "pandax/iothub/client/mqttclient" - "pandax/pkg/rule_engine/message" -) - -type rpcRequestNode struct { - bareNode - Timeout int `json:"timeout"` - Payload mqttclient.RpcPayload `json:"payload"` -} - -type rpcRequestNodeFactory struct{} - -func (f rpcRequestNodeFactory) Name() string { return "RpcRequestNode" } -func (f rpcRequestNodeFactory) Category() string { return NODE_CATEGORY_ACTION } -func (f rpcRequestNodeFactory) Labels() []string { return []string{"Success", "Failure"} } -func (f rpcRequestNodeFactory) Create(id string, meta Metadata) (Node, error) { - node := &rpcRequestNode{ - bareNode: newBareNode(f.Name(), id, meta, f.Labels()), - } - return decodePath(meta, node) -} - -func (n *rpcRequestNode) Handle(msg *message.Message) error { - successLableNode := n.GetLinkedNode("Success") - failureLableNode := n.GetLinkedNode("Failure") - - var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single", Timeout: n.Timeout} - rpc.GetRequestId() - respPayload, err := rpc.RequestCmd(n.Payload) - if err != nil { - if failureLableNode != nil { - return failureLableNode.Handle(msg) - } else { - return err - } - } - msgM := msg.Msg - msgM["payload"] = respPayload - msg.Msg = msgM - if successLableNode != nil { - return successLableNode.Handle(msg) - } - return nil -} diff --git a/pkg/rule_engine/nodes/action_rpc_request_to_device_node.go b/pkg/rule_engine/nodes/action_rpc_request_to_device_node.go new file mode 100644 index 0000000..998f01f --- /dev/null +++ b/pkg/rule_engine/nodes/action_rpc_request_to_device_node.go @@ -0,0 +1,73 @@ +package nodes + +import ( + "encoding/json" + "errors" + "github.com/sirupsen/logrus" + "pandax/iothub/client/mqttclient" + "pandax/iothub/client/tcpclient" + "pandax/pkg/global" + "pandax/pkg/global_model" + "pandax/pkg/rule_engine/message" +) + +type rpcRequestToDeviceNode struct { + bareNode + Timeout int `json:"timeout"` +} + +type rpcRequestToDeviceNodeFactory struct{} + +func (f rpcRequestToDeviceNodeFactory) Name() string { return "RpcRequestToDeviceNode" } +func (f rpcRequestToDeviceNodeFactory) Category() string { return NODE_CATEGORY_ACTION } +func (f rpcRequestToDeviceNodeFactory) Labels() []string { return []string{"Success", "Failure"} } +func (f rpcRequestToDeviceNodeFactory) Create(id string, meta Metadata) (Node, error) { + node := &rpcRequestToDeviceNode{ + bareNode: newBareNode(f.Name(), id, meta, f.Labels()), + } + return decodePath(meta, node) +} + +func (n *rpcRequestToDeviceNode) Handle(msg *message.Message) error { + logrus.Infof("%s handle message '%s'", n.Name(), msg.MsgType) + successLableNode := n.GetLinkedNode("Success") + failureLableNode := n.GetLinkedNode("Failure") + if msg.Msg.GetValue("method") == nil || msg.Msg.GetValue("params") == nil { + return errors.New("指令下发格式错误") + } + var datas = global_model.RpcPayload{ + Method: msg.Msg.GetValue("method").(string), + Params: msg.Msg.GetValue("params"), + } + payload, _ := json.Marshal(datas) + mode := mqttclient.SingleMode + if n.Timeout > 0 { + mode = mqttclient.DoubleMode + } + // 判断设备协议,根据不通协议,发送不通内容 + deviceProtocol := global.MQTTProtocol + if msg.Metadata.GetValue("deviceProtocol") != nil && msg.Metadata.GetValue("deviceProtocol").(string) != "" { + deviceProtocol = msg.Metadata.GetValue("deviceProtocol").(string) + } + var err error + if deviceProtocol == global.MQTTProtocol { + var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: mode, Timeout: n.Timeout} + rpc.GetRequestId() + _, err = rpc.RequestCmd(string(payload)) + } + if deviceProtocol == global.TCPProtocol { + deviceId := msg.Metadata.GetValue("deviceId").(string) + err = tcpclient.Send(deviceId, string(payload)) + } + if err != nil { + if failureLableNode != nil { + return failureLableNode.Handle(msg) + } else { + return err + } + } + if successLableNode != nil { + return successLableNode.Handle(msg) + } + return nil +} diff --git a/pkg/rule_engine/nodes/action_rpc_respond_node.go b/pkg/rule_engine/nodes/action_rpc_respond_node.go deleted file mode 100644 index 3d50c88..0000000 --- a/pkg/rule_engine/nodes/action_rpc_respond_node.go +++ /dev/null @@ -1,49 +0,0 @@ -package nodes - -import ( - "pandax/iothub/client/mqttclient" - "pandax/pkg/rule_engine/message" -) - -type rpcRespondNode struct { - bareNode - RequestId int `json:"requestId"` -} - -type rpcRespondFactory struct{} - -func (f rpcRespondFactory) Name() string { return "RpcRespondNode" } -func (f rpcRespondFactory) Category() string { return NODE_CATEGORY_ACTION } -func (f rpcRespondFactory) Labels() []string { return []string{"Success", "Failure"} } -func (f rpcRespondFactory) Create(id string, meta Metadata) (Node, error) { - node := &rpcRespondNode{ - bareNode: newBareNode(f.Name(), id, meta, f.Labels()), - } - return decodePath(meta, node) -} - -func (n *rpcRespondNode) Handle(msg *message.Message) error { - successLableNode := n.GetLinkedNode("Success") - failureLableNode := n.GetLinkedNode("Failure") - RequestId := n.RequestId - if RequestId == 0 { - RequestId = int(msg.Metadata.GetValue("requestId").(float64)) - } - var datas = mqttclient.RpcPayload{ - Method: msg.Msg.GetValue("method").(string), - Params: msg.Msg.GetValue("params"), - } - rpc := &mqttclient.RpcRequest{Client: mqttclient.MqttClient, RequestId: RequestId} - err := rpc.RespondTpc(datas) - if err != nil { - if failureLableNode != nil { - return failureLableNode.Handle(msg) - } else { - return err - } - } - if successLableNode != nil { - return successLableNode.Handle(msg) - } - return nil -} diff --git a/pkg/rule_engine/nodes/filter_message_type_switch_node.go b/pkg/rule_engine/nodes/filter_message_type_switch_node.go index 2c5f822..5fa84c6 100644 --- a/pkg/rule_engine/nodes/filter_message_type_switch_node.go +++ b/pkg/rule_engine/nodes/filter_message_type_switch_node.go @@ -17,8 +17,8 @@ func (f messageTypeSwitchNodeFactory) Labels() []string { message.RowMes, message.AttributesMes, message.TelemetryMes, - message.RpcRequestMes, - message.RpcRequestServerMes, + message.RpcRequestFromDevice, + message.RpcRequestToDevice, message.AlarmMes, message.UpEventMes, message.ConnectMes, diff --git a/pkg/rule_engine/nodes/filter_switch_node.go b/pkg/rule_engine/nodes/filter_switch_node.go index a5b50aa..62f1db5 100644 --- a/pkg/rule_engine/nodes/filter_switch_node.go +++ b/pkg/rule_engine/nodes/filter_switch_node.go @@ -20,8 +20,8 @@ func (f switchFilterNodeFactory) Labels() []string { message.RowMes, message.AttributesMes, message.TelemetryMes, - message.RpcRequestMes, - message.RpcRequestServerMes, + message.RpcRequestFromDevice, + message.RpcRequestToDevice, message.AlarmMes, message.UpEventMes, message.ConnectMes, diff --git a/pkg/rule_engine/nodes/init.go b/pkg/rule_engine/nodes/init.go index 529c779..b2510fc 100644 --- a/pkg/rule_engine/nodes/init.go +++ b/pkg/rule_engine/nodes/init.go @@ -28,6 +28,6 @@ func init() { RegisterFactory(externalSendEmailNodeFactory{}) RegisterFactory(externalSendSmsNodeFactory{}) RegisterFactory(externalRuleChainNodeFactory{}) - RegisterFactory(rpcRespondFactory{}) - RegisterFactory(rpcRequestNodeFactory{}) + RegisterFactory(rpcRequestFromDeviceFactory{}) + RegisterFactory(rpcRequestToDeviceNodeFactory{}) } diff --git a/pkg/tool/base_test.go b/pkg/tool/base_test.go index 4c859c7..78cc4ce 100644 --- a/pkg/tool/base_test.go +++ b/pkg/tool/base_test.go @@ -1,6 +1,9 @@ package tool -import "testing" +import ( + "pandax/pkg/global_model" + "testing" +) func TestToCamelCase(t *testing.T) { camelCase := ToCamelCase("hello_world") @@ -8,7 +11,7 @@ func TestToCamelCase(t *testing.T) { } func TestGenerateID(t *testing.T) { - id := GenerateID() + id := global_model.GenerateID() t.Log(id) } diff --git a/pkg/websocket/socket_server.go b/pkg/websocket/socket_server.go index f6f205a..585d717 100644 --- a/pkg/websocket/socket_server.go +++ b/pkg/websocket/socket_server.go @@ -8,6 +8,7 @@ import ( "pandax/apps/device/entity" "pandax/iothub/client/mqttclient" "pandax/pkg/global" + "pandax/pkg/global_model" "strings" ) @@ -69,7 +70,7 @@ func OnMessage(ws *Websocket, message string) { content, _ := json.Marshal(vtsa.Attrs) var rpc = &mqttclient.RpcRequest{Client: mqttclient.MqttClient, Mode: "single"} rpc.GetRequestId() - err = rpc.RequestAttributes(mqttclient.RpcPayload{Params: string(content)}) + err = rpc.RequestAttributes(global_model.RpcPayload{Params: string(content)}) if err != nil { global.Log.Error("属性下发失败", err) sendMessages("02", "下发失败", screenId) diff --git a/shutdown.bat b/shutdown.bat index 1df5f55..eb4fa7a 100644 --- a/shutdown.bat +++ b/shutdown.bat @@ -1 +1 @@ -taskkill /pid 24048 -t -f \ No newline at end of file +taskkill /pid 28744 -t -f \ No newline at end of file