updated alarms

This commit is contained in:
Salijoghli 2025-10-01 16:14:35 +04:00
parent 9fc4d1ce9f
commit 0647a2856f
28 changed files with 2300 additions and 781 deletions

View File

@ -0,0 +1,15 @@
{
"updateMode": "Instant",
"updateMessage": "This project has been changed. Please save your work, this session will automatically update in {timeLeft} seconds.",
"updateTimeout": 30,
"locale": "Browser",
"idp": null,
"timezone": "Gateway Timezone",
"desktopPageTimeoutSeconds": 60,
"mobilePageTimeoutSeconds": 600,
"hideFromLaunchListings": false,
"thumbnailPath": "",
"sessionClosedMessage": "This Perspective session has been closed.",
"pageClosedMessage": "This Perspective page has been closed.",
"loggedOutMessage": "You are now logged out of your Perspective session. If you are on a shared device, it is recommended to log out of all other sessions before walking away."
}

View File

@ -221,7 +221,7 @@
}
},
"props": {
"address": "127.0.0.1",
"address": "[0:0:0:0:0:0:0:1]",
"device": {},
"geolocation": {},
"locale": "en-US",

View File

@ -9,8 +9,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-30T10:04:26Z"
"timestamp": "2025-10-01T10:13:13Z"
},
"lastModificationSignature": "95051ce3d0db6d2a151ba9b6c8ceb96dbbb8938f6e4693321c33477cf3cc0422"
"lastModificationSignature": "60fb9957e5858b89917d8cb99fa83d3b6bbf8243d51e2b4d33cd3c86030eaf62"
}
}

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-30T10:05:09Z"
"timestamp": "2025-10-01T12:11:45Z"
},
"lastModificationSignature": "1fd04d570a4c9993a058ef644020eb66bb6a2881aeaf316e9b3d3d9959a95be8"
"lastModificationSignature": "8b3250bd65d1c5c62d6992352ca872434f34f6524bfce631ffa4446eb751adaa"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,731 @@
{
"custom": {},
"params": {},
"props": {
"defaultSize": {
"height": 1080,
"width": 1920
}
},
"root": {
"children": [
{
"meta": {
"name": "MCM01"
},
"position": {
"height": 1080,
"width": 1920
},
"props": {
"elements": [
{
"elements": [
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path6",
"name": "path6",
"transform": "translate(-2.0833334e-5)",
"type": "path"
},
{
"type": "group"
}
],
"id": "clipPath6",
"name": "clipPath6",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path8",
"name": "path8",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath8",
"name": "clipPath8",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path9",
"name": "path9",
"transform": "matrix(1,0,0,-1,-2796,3847)",
"type": "path"
}
],
"id": "clipPath9",
"name": "clipPath9",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path10",
"name": "path10",
"transform": "matrix(1,0,0,-1,-2822,3855)",
"type": "path"
}
],
"id": "clipPath10",
"name": "clipPath10",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path12",
"name": "path12",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath12",
"name": "clipPath12",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path13",
"name": "path13",
"transform": "matrix(1,0,0,-1,-2822,3839)",
"type": "path"
}
],
"id": "clipPath13",
"name": "clipPath13",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path14",
"name": "path14",
"transform": "matrix(1,0,0,-1,-2831,3847)",
"type": "path"
}
],
"id": "clipPath14",
"name": "clipPath14",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path16",
"name": "path16",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath16",
"name": "clipPath16",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path18",
"name": "path18",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath18",
"name": "clipPath18",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path20",
"name": "path20",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath20",
"name": "clipPath20",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path22",
"name": "path22",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath22",
"name": "clipPath22",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path24",
"name": "path24",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath24",
"name": "clipPath24",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path26",
"name": "path26",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath26",
"name": "clipPath26",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path27",
"name": "path27",
"transform": "matrix(0,-1,-1,0,5714,1994)",
"type": "path"
}
],
"id": "clipPath27",
"name": "clipPath27",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path29",
"name": "path29",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath29",
"name": "clipPath29",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path31",
"name": "path31",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath31",
"name": "clipPath31",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path33",
"name": "path33",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath33",
"name": "clipPath33",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path35",
"name": "path35",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath35",
"name": "clipPath35",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path37",
"name": "path37",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath37",
"name": "clipPath37",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path39",
"name": "path39",
"transform": "translate(-2.0833334e-5)",
"type": "path"
}
],
"id": "clipPath39",
"name": "clipPath39",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path40",
"name": "path40",
"transform": "matrix(0,-1,-1,0,4932,2183)",
"type": "path"
}
],
"id": "clipPath40",
"name": "clipPath40",
"type": "clipPath"
},
{
"clipPathUnits": "userSpaceOnUse",
"elements": [
{
"d": "M 1126,0 H 3737 V 5796 H 1126 V 0",
"id": "path23935",
"name": "path23935",
"transform": "matrix(0,-1,-1,0,5714,2172)",
"type": "path"
}
],
"id": "clipPath23935",
"name": "clipPath23935",
"type": "clipPath"
}
],
"id": "defs1",
"name": "defs1",
"type": "defs"
},
{
"elements": [
{
"d": "m 17.513137,116.02606 h 7.883849 v 35.33131 h -7.925563 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path25072",
"name": "path25072",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 17.578237,115.55245 0.185181,-7.76481 c 1.517289,-4.83339 4.580567,-7.799271 8.864116,-10.344944 l 3.914525,6.935164 c -2.984985,1.33473 -4.229119,3.34824 -4.999076,6.51743 l -0.08744,4.67802 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path26615",
"name": "path26615",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 72.20209,125.20076 h 7.883848 v 53.73674 h -7.925561 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path26618",
"name": "path26618",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 72.261082,115.88006 h 7.883848 v 8.72601 h -7.925561 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27070",
"name": "path27070",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 72.231586,106.67734 h 7.883848 v 8.72601 h -7.925561 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27071",
"name": "path27071",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 72.219369,106.20226 c -0.03623,-9.238512 0.460678,-12.796916 8.960808,-17.991777 l 4.047256,6.905673 c -5.529025,2.473147 -5.25942,6.010384 -5.145507,11.136454 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27072",
"name": "path27072",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 34.461924,92.956423 3.944478,6.826134 -7.555316,4.365833 -3.965348,-6.862253 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27074",
"name": "path27074",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 42.425813,88.355065 3.944478,6.826134 -7.555316,4.365833 -3.965348,-6.862253 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27080",
"name": "path27080",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 60.100764,87.570756 -13.376385,7.447713 -3.959823,-6.887292 1.504291,-0.553046 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27081",
"name": "path27081",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 99.030276,87.61753 -13.464875,7.359226 -3.952449,-7.020023 1.430551,-0.368698 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27082",
"name": "path27082",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 158.56005,79.566794 -0.016,7.760334 -120.794639,-0.04735 0.0159,-7.801393 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27083",
"name": "path27083",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.244431"
},
"type": "path"
},
{
"d": "m 267.35173,79.640375 -0.0142,7.780257 -107.74707,-0.04746 0.0141,-7.821422 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27084",
"name": "path27084",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.243285"
},
"type": "path"
},
{
"d": "m 399.37485,79.720395 -0.0173,7.737716 -131.17963,-0.0472 0.0172,-7.778656 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27085",
"name": "path27085",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.23373"
},
"type": "path"
},
{
"d": "m 400.0944,79.650678 c 5.03604,0.02588 7.95928,-0.266973 12.23378,1.989441 1.65503,0.966601 2.74197,2.075227 3.73794,3.206593 1.85537,2.841276 3.14745,5.859861 3.05039,10.779803 l -8.06562,0.03102 c -0.0803,-1.92185 0.0446,-3.799123 -1.54746,-5.774965 -2.38574,-2.686548 -6.13811,-2.332233 -9.40355,-2.443066 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27086",
"name": "path27086",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 411.25685,96.063667 h 7.88112 v 54.940713 h -7.92282 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27087",
"name": "path27087",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.252742"
},
"type": "path"
},
{
"d": "m 411.25883,151.59084 h 7.88385 v 8.72601 h -7.92556 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27088",
"name": "path27088",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 427.45236,179.63321 c -12.30206,0.13237 -16.45431,-5.69061 -16.18738,-18.7973 l 7.85705,2.9e-4 c 0.10669,7.76558 0.23673,10.73714 8.29789,10.94492 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27089",
"name": "path27089",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.25"
},
"type": "path"
},
{
"d": "m 448.59365,171.83373 0.13725,7.76254 -20.366,0.0641 -0.13793,-7.8036 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27090",
"name": "path27090",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.268812"
},
"type": "path"
},
{
"d": "m 468.70557,171.74638 0.12932,7.77032 -19.19125,0.0641 -0.12998,-7.81142 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27091",
"name": "path27091",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.261075"
},
"type": "path"
},
{
"d": "m 481.28798,171.66728 0.06,5.6578 -11.7815,0.0672 -0.0603,-5.68771 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27092",
"name": "path27092",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.246092"
},
"type": "path"
},
{
"d": "m 494.42349,171.66846 0.003,5.65425 -12.14703,0.002 -0.003,-5.68414 z",
"fill": {
"opacity": "1",
"paint": "#ffffff"
},
"id": "path27093",
"name": "path27093",
"stroke": {
"dasharray": "none",
"opacity": "1",
"paint": "#000000",
"width": "0.249796"
},
"type": "path"
},
{
"type": "group"
}
],
"id": "layer1",
"name": "layer1",
"type": "group"
}
],
"preserveAspectRatio": "none",
"viewBox": "0 0 508 285.75"
},
"type": "ia.shapes.svg"
}
],
"events": {
"dom": {
"onClick": {
"config": {
"script": "\tsystem.perspective.print(event.keys())"
},
"scope": "G",
"type": "script"
}
}
},
"meta": {
"name": "root"
},
"type": "ia.container.coord"
}
}

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-30T14:50:24Z"
"timestamp": "2025-10-01T10:01:09Z"
},
"lastModificationSignature": "6c3bbc1fd97bc7504541fe018dee255fef567c732df15a020e2e691618dd91ea"
"lastModificationSignature": "703b32e2f5d2f02def085075ddc330c86f57bc14a7ac25ce31d6a8af3222dd67"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-30T14:50:23Z"
"timestamp": "2025-10-01T10:02:46Z"
},
"lastModificationSignature": "cce739592e2d679f1c13c756c2373387402009be88ec55c43ce7c5dff075f1aa"
"lastModificationSignature": "8a2a22c00dd87d5ae0acb6ae123f223dc2e0742cb5bafda2445275cf6e6f82cd"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-29T10:24:06Z"
"timestamp": "2025-10-01T10:13:13Z"
},
"lastModificationSignature": "6646652b2a69bb08854bd4a9109a42e5f3ed457f6d254d675371f579c605e114"
"lastModificationSignature": "9116d45470d493a88ae3df94af66ac9f4edee153c2d7d0e9852cd53b10762349"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-29T15:17:13Z"
"timestamp": "2025-10-01T10:01:23Z"
},
"lastModificationSignature": "35fbd9fbe8fb9619aa51b4a40de23a5079c17d1107d251e974a98da478959f2f"
"lastModificationSignature": "9d7c34fdc8a9128e0bc1c2f42b467658724511d9391f25ec1c23304d75c3b6b2"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -10,8 +10,8 @@
"attributes": {
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-30T14:51:57Z"
"timestamp": "2025-10-01T10:03:43Z"
},
"lastModificationSignature": "f3a46607418562736242da1164966444593661ec0978fde0cbdea8d58d87901a"
"lastModificationSignature": "a286e0a7925b76d2ed4b0ea8f296f72980f2c1ef42077ae099dbb6ca665bac01"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,28 @@
SELECT
ae.id AS ID,
ae.eventtime AS StartTimestamp,
CONCAT(
LPAD(FLOOR(TIMESTAMPDIFF(SECOND, ae.eventtime, NOW())/3600), 2, '0'), ':',
LPAD(FLOOR((TIMESTAMPDIFF(SECOND, ae.eventtime, NOW())%3600)/60), 2, '0'), ':',
LPAD( (TIMESTAMPDIFF(SECOND, ae.eventtime, NOW())%60), 2, '0')
) AS Duration,
CONCAT(REPLACE(ae.displaypath,'_','-'),' ', SUBSTRING_INDEX(ae.source,':/alm:',-1)) AS Description,
CASE ae.priority
WHEN 0 THEN 'Diagnostic' WHEN 1 THEN 'Low' WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High' WHEN 4 THEN 'Critical' ELSE 'Unknown'
END AS Priority,
CONCAT(ae.displaypath,'.HMI.Alarm.', SUBSTRING_INDEX(aed.strValue,'/',-1)) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue,'/',2),'/',-1) AS Location,
aed.strValue AS FullTag,
ae.displaypath AS Device
FROM alarm_events ae
LEFT JOIN alarm_events clr
ON clr.eventid = ae.eventid AND clr.eventtype = 1
LEFT JOIN alarm_event_data aed
ON aed.id = ae.id AND aed.propname = 'myTag'
WHERE ae.eventtype = 0
AND clr.eventid IS NULL
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
AND (:priorityList = '' OR FIND_IN_SET(CAST(ae.priority AS CHAR), :priorityList) > 0)
ORDER BY ae.eventtime DESC;

View File

@ -1,62 +0,0 @@
WITH Active AS (
SELECT
ae.id,
ae.eventtime,
ae.eventid,
ae.source,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, NOW()) AS duration_seconds
FROM alarm_events ae
WHERE ae.eventtype = 0
AND NOT EXISTS (
SELECT 1 FROM alarm_events ae_clear
WHERE ae_clear.eventid = ae.eventid
AND ae_clear.eventtype = 1
)
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
-- Priority filter using FIND_IN_SET for comma-separated values
AND (
:priorityList IS NULL
OR :priorityList = ''
OR FIND_IN_SET(ae.priority, :priorityList) > 0
)
GROUP BY ae.id
),
SingleMyTag AS (
SELECT aed.id, aed.strValue
FROM alarm_event_data aed
WHERE aed.propname = 'myTag'
GROUP BY aed.id
)
SELECT
Active.id AS ID,
Active.eventtime AS StartTimestamp,
NULL AS EndTimestamp, -- no end time since it's still active
CONCAT(
LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':',
LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':',
LPAD(Active.duration_seconds % 60, 2, '0')
) AS Duration,
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location ,
aed.strValue AS FullTag,
Active.displaypath as Device
FROM Active
LEFT JOIN SingleMyTag aed
ON aed.id = Active.id
ORDER BY Active.eventtime DESC;

View File

@ -1,40 +0,0 @@
{
"scope": "DG",
"version": 2,
"restricted": false,
"overridable": true,
"files": [
"query.sql"
],
"attributes": {
"useMaxReturnSize": false,
"autoBatchEnabled": false,
"fallbackValue": "",
"maxReturnSize": 100,
"cacheUnit": "SEC",
"type": "Query",
"enabled": true,
"cacheAmount": 1,
"cacheEnabled": false,
"database": "MariaDB",
"fallbackEnabled": false,
"lastModificationSignature": "e21931e78403e7d61d02415d95a07521861f1a620abea231875105f77528507f",
"permissions": [
{
"zone": "default",
"role": ""
}
],
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-29T11:23:02Z"
},
"parameters": [
{
"type": "Parameter",
"identifier": "priorityList",
"sqlType": 7
}
]
}
}

View File

@ -1,20 +1,3 @@
WITH Active AS (
SELECT
ae.id,
ae.eventid,
ae.priority,
aed.strValue
FROM alarm_events ae
LEFT JOIN alarm_event_data aed ON ae.id = aed.id AND aed.propname = 'myTag'
WHERE ae.eventtype = 0
AND NOT EXISTS (
SELECT 1 FROM alarm_events ae_clear
WHERE ae_clear.eventid = ae.eventid
AND ae_clear.eventtype = 1
)
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
)
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(strValue, '/', 2), '/', -1) AS Location,
CASE priority
@ -26,6 +9,25 @@ SELECT
ELSE 'Unknown'
END AS Priority,
COUNT(*) AS Count
FROM Active
FROM (
SELECT
ae.id,
ae.eventid,
ae.priority,
aed.strValue
FROM alarm_events ae
LEFT JOIN alarm_event_data aed
ON ae.id = aed.id
AND aed.propname = 'myTag'
WHERE ae.eventtype = 0
AND NOT EXISTS (
SELECT 1
FROM alarm_events ae_clear
WHERE ae_clear.eventid = ae.eventid
AND ae_clear.eventtype = 1
)
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
) AS Active
GROUP BY Location, Priority
ORDER BY Location, Priority;

View File

@ -18,7 +18,7 @@
"cacheEnabled": false,
"database": "MariaDB",
"fallbackEnabled": false,
"lastModificationSignature": "30e5941a41ccb9dc1c9a70392d5bbb2ab39c1c601778316fef83870c620b63e3",
"lastModificationSignature": "a3505bbdb9faa8b6a00129d027b58e7952c5aac5abb1a6843ae8356b6db33e55",
"permissions": [
{
"zone": "default",
@ -26,8 +26,8 @@
}
],
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-26T09:30:18Z"
"actor": "external",
"timestamp": "2025-09-20T08:33:12Z"
}
}
}

View File

@ -1,71 +0,0 @@
WITH Active AS (
SELECT
ae.id,
ae.eventtime,
ae.eventid,
ae.source,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
FROM alarm_events ae
LEFT JOIN alarm_events ae_clear
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
WHERE ae.eventtype = 0
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
GROUP BY ae.id -- Ensure one row per alarm
),
SingleMyTag AS (
SELECT aed.id, aed.strValue
FROM alarm_event_data aed
WHERE aed.propname = 'myTag'
GROUP BY aed.id -- Collapse duplicates by id
),
SingleClear AS (
SELECT eventid, MIN(eventtime) AS eventtime
FROM alarm_events
WHERE eventtype = 1
GROUP BY eventid
)
SELECT
Active.id AS ID,
Active.eventtime AS StartTimestamp,
Clear.eventtime AS EndTimestamp,
CONCAT(
LPAD(FLOOR(Active.duration_seconds / 3600), 2, '0'), ':',
LPAD(FLOOR((Active.duration_seconds % 3600) / 60), 2, '0'), ':',
LPAD(Active.duration_seconds % 60, 2, '0')
) AS Duration,
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location ,
aed.strValue AS FullTag,
Active.displaypath as Device
FROM Active
LEFT JOIN SingleClear Clear
ON Active.eventid = Clear.eventid
LEFT JOIN SingleMyTag aed
ON aed.id = Active.id
ORDER BY Active.eventtime DESC;

View File

@ -1,33 +0,0 @@
{
"scope": "DG",
"version": 2,
"restricted": false,
"overridable": true,
"files": [
"query.sql"
],
"attributes": {
"useMaxReturnSize": false,
"autoBatchEnabled": false,
"fallbackValue": "",
"maxReturnSize": 100,
"cacheUnit": "SEC",
"type": "Query",
"enabled": true,
"cacheAmount": 1,
"cacheEnabled": false,
"database": "MariaDB",
"fallbackEnabled": false,
"lastModificationSignature": "28a5cb6474508ef25ea6c95d49f312634d077d622b543d18289c481fbb8ba3b7",
"permissions": [
{
"zone": "default",
"role": ""
}
],
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-26T09:30:18Z"
}
}
}

View File

@ -1,64 +0,0 @@
SELECT
CONCAT(Active.displaypath, ' - ', SUBSTRING_INDEX(Active.source, ':/alm:', -1)) AS Description,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location,
-- Formatted OPC-style tag
CONCAT(
Active.displaypath,
'.HMI.',
SUBSTRING_INDEX(aed.strValue, '/', -1)
) AS Tag,
CASE Active.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
-- First and last seen times for this alarm
MIN(Active.eventtime) AS FirstTimestamp,
MAX(Active.eventtime) AS LastTimestamp,
-- Total duration summed from each active-clear pair
CONCAT(
LPAD(FLOOR(SUM(Active.duration_seconds) / 3600), 2, '0'), ':',
LPAD(FLOOR((SUM(Active.duration_seconds) % 3600) / 60), 2, '0'), ':',
LPAD(SUM(Active.duration_seconds) % 60, 2, '0')
) AS Duration,
-- Total number of activations
COUNT(*) AS Count,
-- Newly added columns
aed.strValue AS FullTag,
Active.displaypath AS Device
FROM (
SELECT
ae.id,
ae.source,
ae.eventid,
ae.eventtime,
ae.priority,
ae.displaypath,
TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(ae_clear.eventtime, NOW())) AS duration_seconds
FROM alarm_events ae
LEFT JOIN alarm_events ae_clear
ON ae.eventid = ae_clear.eventid AND ae_clear.eventtype = 1
WHERE ae.eventtype = 0
AND ae.displaypath NOT LIKE '%System Startup%'
AND ae.source NOT LIKE '%System Startup%'
) AS Active
-- OPC tag path for building .hmi.Tag output
LEFT JOIN alarm_event_data aed
ON aed.id = Active.id AND aed.propname = 'myTag'
-- 🔹 Group by the full unique alarm key (tag + alarm name)
GROUP BY Active.source, Active.displaypath, aed.strValue
ORDER BY FirstTimestamp DESC;

View File

@ -1,33 +0,0 @@
{
"scope": "DG",
"version": 2,
"restricted": false,
"overridable": true,
"files": [
"query.sql"
],
"attributes": {
"useMaxReturnSize": false,
"autoBatchEnabled": false,
"fallbackValue": "",
"maxReturnSize": 100,
"cacheUnit": "SEC",
"type": "Query",
"enabled": true,
"cacheAmount": 1,
"cacheEnabled": false,
"database": "MariaDB",
"fallbackEnabled": false,
"lastModificationSignature": "731a950ac10a411f50861ee6793ccb10664c7408fb607f40072e1defaaf5c584",
"permissions": [
{
"zone": "default",
"role": ""
}
],
"lastModification": {
"actor": "admin",
"timestamp": "2025-09-26T09:30:18Z"
}
}
}

View File

@ -0,0 +1,73 @@
SELECT
a.id AS ID,
a.eventtime AS StartTimestamp,
clr.eventtime AS EndTimestamp,
-- Duration calculation (HH:MM:SS format)
CONCAT(
LPAD(FLOOR(TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) / 3600), 2, '0'), ':',
LPAD(FLOOR((TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) % 3600) / 60), 2, '0'), ':',
LPAD( (TIMESTAMPDIFF(SECOND, a.eventtime, COALESCE(clr.eventtime, NOW())) % 60) , 2, '0')
) AS Duration,
-- Description combining display path and alarm name
CONCAT(REPLACE(a.displaypath, '_', '-'), ' ', SUBSTRING_INDEX(a.source, ':/alm:', -1)) AS Description,
-- Priority mapping
CASE a.priority
WHEN 0 THEN 'Diagnostic'
WHEN 1 THEN 'Low'
WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High'
WHEN 4 THEN 'Critical'
ELSE 'Unknown'
END AS Priority,
-- Tag information
CONCAT(a.displaypath, '.HMI.Alarm.', SUBSTRING_INDEX(aed.strValue, '/', -1)) AS Tag,
SUBSTRING_INDEX(SUBSTRING_INDEX(aed.strValue, '/', 2), '/', -1) AS Location,
aed.strValue AS FullTag,
a.displaypath AS Device
FROM alarm_events a
-- Join to get the earliest clear event for each alarm
LEFT JOIN (
SELECT eventid, MIN(eventtime) AS eventtime
FROM alarm_events
WHERE eventtype = 1
GROUP BY eventid
) AS clr ON clr.eventid = a.eventid
-- Join to get additional tag data
LEFT JOIN (
SELECT id, strValue
FROM alarm_event_data
WHERE propname = 'myTag'
GROUP BY id
) AS aed ON aed.id = a.id
WHERE
-- Only active alarm events (not clear events)
a.eventtype = 0
-- Exclude system startup alarms
AND a.displaypath NOT LIKE '%System Startup%'
AND a.source NOT LIKE '%System Startup%'
-- Simple date filtering using named parameters
AND (
-- Case 1: Alarm was cleared within the specified time range
(clr.eventtime IS NOT NULL AND clr.eventtime >= :starttime AND clr.eventtime < :endtime)
OR
-- Case 2: Alarm is still active (no clear time) and started within or before the range
(clr.eventtime IS NULL AND a.eventtime < :endtime)
)
-- Order by end time (most recent clears first), active alarms (NULL) at top, then by ID
ORDER BY clr.eventtime IS NULL DESC, clr.eventtime DESC, a.id DESC
-- Pagination support (100 records per page)
-- Pagination support: request one extra row to detect "has next" on the client
LIMIT :page_size_plus1 OFFSET :offset;

View File

@ -0,0 +1,93 @@
-- Params (can be NULL or empty string '')
-- :startTime DATETIME or NULL
-- :endTime DATETIME or NULL
SELECT
CONCAT(COALESCE(ae.displaypath,'Unknown'), ' - ',
SUBSTRING_INDEX(COALESCE(ae.source,''), ':/alm:', -1)) AS Description,
SUBSTRING_INDEX(SUBSTRING_INDEX(COALESCE(aed.strValue,''), '/', 2), '/', -1) AS Location,
CONCAT(COALESCE(ae.displaypath,'Unknown'), '.HMI.',
SUBSTRING_INDEX(COALESCE(aed.strValue,''),'/',-1)) AS Tag,
CASE ae.priority
WHEN 0 THEN 'Diagnostic' WHEN 1 THEN 'Low' WHEN 2 THEN 'Medium'
WHEN 3 THEN 'High' WHEN 4 THEN 'Critical' ELSE 'Unknown'
END AS Priority,
-- First/Last timestamps (clipped if a window is provided)
MIN(
CASE
WHEN NULLIF(:startTime,'') IS NULL AND NULLIF(:endTime,'') IS NULL
THEN ae.eventtime
ELSE GREATEST(ae.eventtime, COALESCE(NULLIF(:startTime,''), ae.eventtime))
END
) AS FirstTimestamp,
MAX(
CASE
WHEN NULLIF(:startTime,'') IS NULL AND NULLIF(:endTime,'') IS NULL
THEN COALESCE(clr.clear_time, NOW())
ELSE LEAST(COALESCE(clr.clear_time, NOW()),
COALESCE(NULLIF(:endTime,''), COALESCE(clr.clear_time, NOW())))
END
) AS LastTimestamp,
-- Duration within window (full if no window)
DATE_FORMAT(
SEC_TO_TIME(
SUM(
CASE
WHEN NULLIF(:startTime,'') IS NULL AND NULLIF(:endTime,'') IS NULL
THEN TIMESTAMPDIFF(SECOND, ae.eventtime, COALESCE(clr.clear_time, NOW()))
ELSE GREATEST(
TIMESTAMPDIFF(
SECOND,
GREATEST(ae.eventtime, COALESCE(NULLIF(:startTime,''), ae.eventtime)),
LEAST(COALESCE(clr.clear_time, NOW()),
COALESCE(NULLIF(:endTime,''), COALESCE(clr.clear_time, NOW())))
),
0
)
END
)
),
'%H:%i:%s'
) AS Duration,
-- This is the key metric: how many times it was jammed (activations started in window)
CAST(COUNT(*) AS SIGNED) AS ActivationCount,
aed.strValue AS FullTag,
ae.displaypath AS Device
FROM alarm_events ae
LEFT JOIN (
-- earliest clear per event
SELECT eventid, MIN(eventtime) AS clear_time
FROM alarm_events
WHERE eventtype = 1
GROUP BY eventid
) clr ON clr.eventid = ae.eventid
LEFT JOIN alarm_event_data aed
ON aed.id = ae.id AND aed.propname = 'myTag'
WHERE ae.eventtype = 0
AND COALESCE(ae.displaypath,'') NOT LIKE '%System Startup%'
AND COALESCE(ae.source,'') NOT LIKE '%System Startup%'
-- Only filter by time if a bound is provided; we count activations STARTED in the window
AND (
(NULLIF(:startTime,'') IS NULL AND NULLIF(:endTime,'') IS NULL)
OR (
ae.eventtime >= COALESCE(NULLIF(:startTime,''), ae.eventtime)
AND ae.eventtime <= COALESCE(NULLIF(:endTime,''), ae.eventtime)
)
)
GROUP BY
ae.source, ae.displaypath, aed.strValue
ORDER BY
FirstTimestamp DESC, MIN(ae.id) DESC;