修改:1、emqx和阿里云上报服务中,范围报警和阶跃报警时,遇到double类型时对min、max、step转换由atoi改成parseFloat

This commit is contained in:
pengwang 2021-09-25 21:52:40 +08:00
parent 07e455058c
commit 6faf0ff7f1
3 changed files with 236 additions and 218 deletions

View File

@ -28,228 +28,228 @@ func RouterWeb() {
loginRouter.POST("/login", apiLogin)
}
router.Use(JWTAuth())
//router.Use(JWTAuth())
//{
systemRouter := router.Group("/api/v1/system")
{
systemRouter := router.Group("/api/v1/system")
{
systemRouter.POST("/reboot", apiSystemReboot)
systemRouter.POST("/reboot", apiSystemReboot)
systemRouter.GET("/status", apiGetSystemStatus)
systemRouter.GET("/status", apiGetSystemStatus)
systemRouter.GET("/backup", apiBackupFiles)
systemRouter.GET("/backup", apiBackupFiles)
systemRouter.POST("/recover", apiRecoverFiles)
systemRouter.POST("/recover", apiRecoverFiles)
systemRouter.POST("/update", apiSystemUpdate)
systemRouter.POST("/update", apiSystemUpdate)
systemRouter.GET("/loginParam", apiSystemLoginParam)
systemRouter.GET("/loginParam", apiSystemLoginParam)
systemRouter.GET("/MemUseList", apiSystemMemoryUseList)
systemRouter.GET("/MemUseList", apiSystemMemoryUseList)
systemRouter.GET("/DiskUseList", apiSystemDiskUseList)
systemRouter.GET("/DiskUseList", apiSystemDiskUseList)
systemRouter.GET("/DeviceOnlineList", apiSystemDeviceOnlineList)
systemRouter.GET("/DeviceOnlineList", apiSystemDeviceOnlineList)
systemRouter.GET("/DevicePacketLossList", apiSystemDevicePacketLossList)
systemRouter.GET("/DevicePacketLossList", apiSystemDevicePacketLossList)
systemRouter.POST("/systemRTC", apiSystemSetSystemRTC)
}
logRouter := router.Group("/api/v1/log")
{
logRouter.GET("/param", apiGetLogParam)
logRouter.POST("/param", apiSetLogParam)
logRouter.GET("/filesInfo", apiGetLogFilesInfo)
logRouter.DELETE("/files", apiDeleteLogFile)
logRouter.GET("/file", apiGetLogFile)
}
ntpRouter := router.Group("/api/v1/system/ntp")
{
ntpRouter.POST("/hostAddr", apiSystemSetNTPHost)
ntpRouter.GET("/hostAddr", apiSystemGetNTPHost)
}
networkRouter := router.Group("/api/v1/network")
{
networkRouter.POST("/param", apiAddNetwork)
networkRouter.PUT("/param", apiModifyNetwork)
networkRouter.DELETE("/param", apiDeleteNetwork)
networkRouter.GET("/param", apiGetNetwork)
networkRouter.GET("/linkstate", apiGetNetworkLinkState)
}
serialRouter := router.Group("/api/v1/serial")
{
serialRouter.GET("/param", apiGetSerial)
}
deviceRouter := router.Group("/api/v1/device")
{
//增加采集接口
deviceRouter.POST("/interface", apiAddInterface)
//修改采集接口
deviceRouter.PUT("/interface", apiModifyInterface)
//删除采集接口
deviceRouter.DELETE("/interface", apiDeleteInterface)
//获取接口信息
deviceRouter.GET("/interface", apiGetInterfaceInfo)
//获取所有接口信息
deviceRouter.GET("/allInterface", apiGetAllInterfaceInfo)
//增加节点
deviceRouter.POST("/node", apiAddNode)
//修改单个节点
deviceRouter.PUT("/node", apiModifyNode)
//修改多个节点
deviceRouter.PUT("/nodes", apiModifyNodes)
//查看节点
deviceRouter.GET("/node", apiGetNode)
//查看节点变量
deviceRouter.GET("/nodeVariable", apiGetNodeVariableFromCache)
//查看节点历史变量
deviceRouter.GET("/nodeHistoryVariable", apiGetNodeHistoryVariableFromCache)
//查看节点变量实时值
deviceRouter.GET("/nodeRealVariable", apiGetNodeReadVariable)
//删除节点
deviceRouter.DELETE("/node", apiDeleteNode)
//增加设备模板
//deviceRouter.POST("/template", apiAddTemplate)
//获取设备模板
//deviceRouter.GET("/template", apiGetTemplate)
//增加设备物模型
deviceRouter.POST("/tsl", apiAddDeviceTSL)
//删除设备物模型
deviceRouter.DELETE("/tsl", apiDeleteDeviceTSL)
//修改设备物模型
deviceRouter.PUT("/tsl", apiModifyDeviceTSL)
//查看设备物模型
deviceRouter.GET("/tsl", apiGetDeviceTSL)
//查看设备物模型内容
deviceRouter.GET("/tsl/contents", apiGetDeviceTSLContents)
//批量导入设备物模型内容
deviceRouter.POST("/tsl/contents/csv", apiImportDeviceTSLContents)
//批量导出设备物模型内容
deviceRouter.GET("/tsl/contents/csv", apiExportDeviceTSLContents)
//导出设备物模型内容模板
deviceRouter.GET("/tsl/contents/template", apiExportDeviceTSLContentsTemplate)
//导入设备物模型插件
deviceRouter.POST("/tsl/plugin", apiImportDeviceTSLPlugin)
//导出设备物模型插件
deviceRouter.GET("/tsl/plugin", apiExportDeviceTSLPlugin)
//增加设备物模型属性
deviceRouter.POST("/tsl/property", apiAddDeviceTSLProperty)
//修改设备物模型属性
deviceRouter.PUT("/tsl/property", apiModifyDeviceTSLProperty)
//删除设备物模型属性
deviceRouter.DELETE("/tsl/properties", apiDeleteDeviceTSLProperties)
//查看设备物模型属性
deviceRouter.GET("/tsl/properties", apiGetDeviceTSLProperties)
//增加设备物模型服务
deviceRouter.POST("/tsl/service", apiAddDeviceTSLService)
//修改设备物模型服务
deviceRouter.PUT("/tsl/service", apiModifyDeviceTSLService)
//删除设备物模型服务
deviceRouter.DELETE("/tsl/services", apiDeleteDeviceTSLServices)
//获取通信接口
deviceRouter.GET("/commInterface", apiGetCommInterface)
//增加通信接口
deviceRouter.POST("/commInterface", apiAddCommInterface)
//修改通信接口
deviceRouter.PUT("/commInterface", apiModifyCommInterface)
//删除通信接口
deviceRouter.DELETE("/commInterface", apiDeleteCommInterface)
//增加串口通信接口
deviceRouter.POST("/commSerialInterface", apiAddCommSerialInterface)
//修改串口通信接口
deviceRouter.PUT("/commSerialInterface", apiModifyCommSerialInterface)
//删除串口通信接口
deviceRouter.DELETE("/commSerialInterface", apiDeleteCommSerialInterface)
//调用设备服务
deviceRouter.POST("/service", apiInvokeService)
//向采集接口发送透传数据
deviceRouter.POST("/interface/directData", apiSendDirectDataToCollInterface)
}
toolRouter := router.Group("/api/v1/tool")
{
//获取通信报文
toolRouter.POST("/commMessage", apiGetCommMessage)
}
pluginRouter := router.Group("/api/v1/update")
{
pluginRouter.POST("/plugin", apiUpdatePlugin)
}
reportRouter := router.Group("/api/v1/report")
{
reportRouter.POST("/param", apiSetReportGWParam)
reportRouter.GET("/param", apiGetReportGWParam)
reportRouter.DELETE("/param", apiDeleteReportGWParam)
reportRouter.POST("/node/param", apiSetReportNodeWParam)
reportRouter.POST("/nodes/param", apiBatchAddReportNodeParam)
reportRouter.GET("/node/param", apiGetReportNodeWParam)
reportRouter.DELETE("/node/param", apiDeleteReportNodeWParam)
}
systemRouter.POST("/systemRTC", apiSystemSetSystemRTC)
}
logRouter := router.Group("/api/v1/log")
{
logRouter.GET("/param", apiGetLogParam)
logRouter.POST("/param", apiSetLogParam)
logRouter.GET("/filesInfo", apiGetLogFilesInfo)
logRouter.DELETE("/files", apiDeleteLogFile)
logRouter.GET("/file", apiGetLogFile)
}
ntpRouter := router.Group("/api/v1/system/ntp")
{
ntpRouter.POST("/hostAddr", apiSystemSetNTPHost)
ntpRouter.GET("/hostAddr", apiSystemGetNTPHost)
}
networkRouter := router.Group("/api/v1/network")
{
networkRouter.POST("/param", apiAddNetwork)
networkRouter.PUT("/param", apiModifyNetwork)
networkRouter.DELETE("/param", apiDeleteNetwork)
networkRouter.GET("/param", apiGetNetwork)
networkRouter.GET("/linkstate", apiGetNetworkLinkState)
}
serialRouter := router.Group("/api/v1/serial")
{
serialRouter.GET("/param", apiGetSerial)
}
deviceRouter := router.Group("/api/v1/device")
{
//增加采集接口
deviceRouter.POST("/interface", apiAddInterface)
//修改采集接口
deviceRouter.PUT("/interface", apiModifyInterface)
//删除采集接口
deviceRouter.DELETE("/interface", apiDeleteInterface)
//获取接口信息
deviceRouter.GET("/interface", apiGetInterfaceInfo)
//获取所有接口信息
deviceRouter.GET("/allInterface", apiGetAllInterfaceInfo)
//增加节点
deviceRouter.POST("/node", apiAddNode)
//修改单个节点
deviceRouter.PUT("/node", apiModifyNode)
//修改多个节点
deviceRouter.PUT("/nodes", apiModifyNodes)
//查看节点
deviceRouter.GET("/node", apiGetNode)
//查看节点变量
deviceRouter.GET("/nodeVariable", apiGetNodeVariableFromCache)
//查看节点历史变量
deviceRouter.GET("/nodeHistoryVariable", apiGetNodeHistoryVariableFromCache)
//查看节点变量实时值
deviceRouter.GET("/nodeRealVariable", apiGetNodeReadVariable)
//删除节点
deviceRouter.DELETE("/node", apiDeleteNode)
//增加设备模板
//deviceRouter.POST("/template", apiAddTemplate)
//获取设备模板
//deviceRouter.GET("/template", apiGetTemplate)
//增加设备物模型
deviceRouter.POST("/tsl", apiAddDeviceTSL)
//删除设备物模型
deviceRouter.DELETE("/tsl", apiDeleteDeviceTSL)
//修改设备物模型
deviceRouter.PUT("/tsl", apiModifyDeviceTSL)
//查看设备物模型
deviceRouter.GET("/tsl", apiGetDeviceTSL)
//查看设备物模型内容
deviceRouter.GET("/tsl/contents", apiGetDeviceTSLContents)
//批量导入设备物模型内容
deviceRouter.POST("/tsl/contents/csv", apiImportDeviceTSLContents)
//批量导出设备物模型内容
deviceRouter.GET("/tsl/contents/csv", apiExportDeviceTSLContents)
//导出设备物模型内容模板
deviceRouter.GET("/tsl/contents/template", apiExportDeviceTSLContentsTemplate)
//导入设备物模型插件
deviceRouter.POST("/tsl/plugin", apiImportDeviceTSLPlugin)
//导出设备物模型插件
deviceRouter.GET("/tsl/plugin", apiExportDeviceTSLPlugin)
//增加设备物模型属性
deviceRouter.POST("/tsl/property", apiAddDeviceTSLProperty)
//修改设备物模型属性
deviceRouter.PUT("/tsl/property", apiModifyDeviceTSLProperty)
//删除设备物模型属性
deviceRouter.DELETE("/tsl/properties", apiDeleteDeviceTSLProperties)
//查看设备物模型属性
deviceRouter.GET("/tsl/properties", apiGetDeviceTSLProperties)
//增加设备物模型服务
deviceRouter.POST("/tsl/service", apiAddDeviceTSLService)
//修改设备物模型服务
deviceRouter.PUT("/tsl/service", apiModifyDeviceTSLService)
//删除设备物模型服务
deviceRouter.DELETE("/tsl/services", apiDeleteDeviceTSLServices)
//获取通信接口
deviceRouter.GET("/commInterface", apiGetCommInterface)
//增加通信接口
deviceRouter.POST("/commInterface", apiAddCommInterface)
//修改通信接口
deviceRouter.PUT("/commInterface", apiModifyCommInterface)
//删除通信接口
deviceRouter.DELETE("/commInterface", apiDeleteCommInterface)
//增加串口通信接口
deviceRouter.POST("/commSerialInterface", apiAddCommSerialInterface)
//修改串口通信接口
deviceRouter.PUT("/commSerialInterface", apiModifyCommSerialInterface)
//删除串口通信接口
deviceRouter.DELETE("/commSerialInterface", apiDeleteCommSerialInterface)
//调用设备服务
deviceRouter.POST("/service", apiInvokeService)
//向采集接口发送透传数据
deviceRouter.POST("/interface/directData", apiSendDirectDataToCollInterface)
}
toolRouter := router.Group("/api/v1/tool")
{
//获取通信报文
toolRouter.POST("/commMessage", apiGetCommMessage)
}
pluginRouter := router.Group("/api/v1/update")
{
pluginRouter.POST("/plugin", apiUpdatePlugin)
}
reportRouter := router.Group("/api/v1/report")
{
reportRouter.POST("/param", apiSetReportGWParam)
reportRouter.GET("/param", apiGetReportGWParam)
reportRouter.DELETE("/param", apiDeleteReportGWParam)
reportRouter.POST("/node/param", apiSetReportNodeWParam)
reportRouter.POST("/nodes/param", apiBatchAddReportNodeParam)
reportRouter.GET("/node/param", apiGetReportNodeWParam)
reportRouter.DELETE("/node/param", apiDeleteReportNodeWParam)
}
//}
if err := router.Run(":8080"); err != nil {
setting.Logger.Errorf("gin run err,%v", err)
}

View File

@ -347,8 +347,11 @@ func (r *ReportServiceParamAliyunTemplate) ProcessCollEvent(sub eventBus.Sub) {
} else if v.Type == device.PropertyTypeDouble {
pValueCur := v.Value[valueCnt-1].Value.(float64)
pValuePre := v.Value[valueCnt-2].Value.(float64)
step, _ := strconv.Atoi(v.Params.Step)
if math.Abs(pValueCur-pValuePre) > float64(step) {
step, err := strconv.ParseFloat(v.Params.Step, 64)
if err != nil {
continue
}
if math.Abs(pValueCur-pValuePre) > step {
reportStatus = true //满足报警条件,上报
nodeName = append(nodeName, node.Name)
}
@ -374,9 +377,15 @@ func (r *ReportServiceParamAliyunTemplate) ProcessCollEvent(sub eventBus.Sub) {
}
} else if v.Type == device.PropertyTypeDouble {
pValueCur := v.Value[valueCnt-1].Value.(float64)
min, _ := strconv.Atoi(v.Params.Min)
max, _ := strconv.Atoi(v.Params.Max)
if pValueCur < float64(min) || pValueCur > float64(max) {
min, err := strconv.ParseFloat(v.Params.Min, 64)
if err != nil {
continue
}
max, err := strconv.ParseFloat(v.Params.Max, 64)
if err != nil {
continue
}
if pValueCur < min || pValueCur > max {
reportStatus = true //满足报警条件,上报
nodeName = append(nodeName, node.Name)
}

View File

@ -376,7 +376,10 @@ func (r *ReportServiceParamEmqxTemplate) ProcessCollEvent(sub eventBus.Sub) {
} else if v.Type == device.PropertyTypeDouble {
pValueCur := v.Value[valueCnt-1].Value.(float64)
pValuePre := v.Value[valueCnt-2].Value.(float64)
step, _ := strconv.Atoi(v.Params.Step)
step, err := strconv.ParseFloat(v.Params.Step, 64)
if err != nil {
continue
}
if math.Abs(pValueCur-pValuePre) > float64(step) {
reportStatus = true //满足报警条件,上报
nodeName = append(nodeName, node.Name)
@ -403,9 +406,15 @@ func (r *ReportServiceParamEmqxTemplate) ProcessCollEvent(sub eventBus.Sub) {
}
} else if v.Type == device.PropertyTypeDouble {
pValueCur := v.Value[valueCnt-1].Value.(float64)
min, _ := strconv.Atoi(v.Params.Min)
max, _ := strconv.Atoi(v.Params.Max)
if pValueCur < float64(min) || pValueCur > float64(max) {
min, err := strconv.ParseFloat(v.Params.Min, 64)
if err != nil {
continue
}
max, err := strconv.ParseFloat(v.Params.Max, 64)
if err != nil {
continue
}
if pValueCur < min || pValueCur > max {
reportStatus = true //满足报警条件,上报
nodeName = append(nodeName, node.Name)
}