API
Mervis SCADA nabízí otevřené REST-like API postavené na JSON a XML formátech dat. Pro kompletní popis API kontaktujte naši technickou podporu.
Přehled základních API metod
Function | Description |
---|
api/v2/get/authenticate | |
---|---|
api/checkCredentials [deprecated] | |
api/logout | |
api/get/projects | |
api/get/projectData | |
api/get/projectByParts | |
api/get/history [deprecated] | |
api/get/history/specific | |
api/set/history | |
api/get/values | |
api/get/alarms | |
api/get/alarmHistory | |
api/get/eventHistory | |
api/get/changes | |
api/set/executeActions | |
api/set/values | |
api/set/executeAlarmOps | |
api/set/projectPriorityRefresh | |
api/get/schema | |
api/get/schema/datapoints | |
api/get/schema/values | |
api/get/schema/image | |
/api/v3/get/history |
Příklad
api/v2/get/authenticate
Request
- Method: POST
{"data":{"cred":{"n":"demo","p":"demo","pe":0}}}
Response XML
<?xml version="1.0" encoding="utf-8"?> <globalResponse xmlns:r="http://dev.rcware.eu/serialization/references" xmlns:n1="http://dev.rcware.eu/scada/projects/domainWrapperClientDs2" xmlns="http://dev.rcware.eu/core/globalRequestResponse"> <data n1:token="3:d487f7c1-d372-41a4-bee8-c16eb76fe948" n1:tokenValidFor="P1D" n1:login="demo" n1:username="" n1:user="48141739-5d16-4ca3-8ae1-33e27d9eb22e" n1:domain="3c73477a-6c95-4939-b047-7bbf902bcef1" n1:clientType="DS3" r:type="34945d89-d9ab-42be-a0ec-7676745641fb" /> <result code="0" codeTxt="" desc="" dataType="" /> </globalResponse>
Response JSON
{ "data": { "ChangePwdBefore": null, "ClientType": 2, "Domain": "3c73477a-6c95-4939-b047-7bbf902bcef1", "DomainName": "GlobalDomain", "FullName": "GlobalDomain\\demo", "Login": "demo", "NotifyNearingPwdExpirationIn": null, "Token": "3:ae378e2d-c7ec-4046-aad1-12310f8f72cc", "TokenValidFor": "P1D", "User": "48141739-5d16-4ca3-8ae1-33e27d9eb22e", "Username": "" }, "result": { "code": 0, "codeTxt": null, "dataType": null, "desc": null } }
- Získaný token t je třeba použít místo dvojice jméno/heslo v následujících API voláních.
[Deprecated] api/checkCredentials
Request
- Method: POST
{"cred":{"n":"demo","p":"demo"}}
Response
<?xml version="1.0" encoding="utf-8"?> <checkCredentialsResult xmlns:r="http://dev.rcware.eu/serialization/references" d="GlobalDomain" l="demo" t="2:85be00d3-5875-4dec-a9b4-c98e2ff2acbe" xmlns="http://dev.rcware.eu/auth" />
- Získaný token t je třeba použít místo dvojice jméno/heslo v následujících API voláních.
api/get/projects
Request
- Method: POST
Formát reponse je xml a nebo json podle volané url.
{"cred": {"t": "2:85be00d3-5875-4dec-a9b4-c98e2ff2acbe" }}
Response XML
<?xml version="1.0" encoding="utf-8"?> <getProjectsResult xmlns:r="http://dev.rcware.eu/serialization/references" xmlns:n1="http://dev.rcware.eu/scada/schemas" xmlns:n2="http://dev.rcware.eu/scada/notifications" xmlns:n3="http://dev.rcware.eu/projectMetadata" xmlns:n4="http://dev.rcware.eu/loc" xmlns:n5="http://dev.rcware.eu/groups" dataVersion="K3JgNExrzoSBu8JwZ2NDYg==" xmlns="http://dev.rcware.eu/scada/projects"> <projects> <project id="2a7f1615-42f2-44ef-a643-f1438ed44e2a" name="Weather" domain="GlobalDomain" tz="Europe/Prague" r:def="2"> <mdi> <mi n1:totalAllowedSchemasCount="0" n1:totalSchemasCount="0" r:type="aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" /> <mi n2:moduleInstantiated="true" r:type="073d1b6c-24f5-435a-a5bd-1d54e04b0d06" /> </mdi> </project> <project id="1b2623be-eaa4-4e29-8596-c66dd85d5643" name="SIMPLE_DEMO" domain="GlobalDomain" tz="Europe/Prague" r:def="3"> <metadata> <metadata n3:k="oplog.config" n3:v=".." /> <metadata n3:k="oplog.enabled" n3:v="true" /> <metadata n3:k="oplog.engine" n3:v="podio" /></metadata> <mdi> <mi n2:moduleInstantiated="true" r:type="073d1b6c-24f5-435a-a5bd-1d54e04b0d06" r:def="1" /> <mi n1:totalAllowedSchemasCount="0" n1:totalSchemasCount="0" r:type="aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" /> </mdi> </project> <project id="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" name="PLYNOVA_KOTELNA" domain="GlobalDomain" tz="Europe/Prague" r:def="4"> <loc> <n4:gps lat="50.091056" lon="14.401667" /> </loc> <metadata> <metadata n3:k="oplog.enabled" n3:v="true" /> <metadata n3:k="oplog.engine" n3:v="podio" /> <metadata n3:k="oplog.podio.url" n3:v="https://podio.com/energocentrumcz/mervis-oplog/apps/operational-log" /></metadata> <mdi> <mi r:ref="1" r:type="073d1b6c-24f5-435a-a5bd-1d54e04b0d06" /> <mi n1:totalAllowedSchemasCount="1" n1:totalSchemasCount="1" r:type="aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" /> </mdi> </project> <project id="b9ad5380-7d1d-4043-b675-bd406df6003b" name="CVUT_HERBERTOV" domain="GlobalDomain" tz="Europe/Prague" r:def="5"> <loc> <n4:gps lat="48.621247" lon="14.350967" /> </loc> <mdi> <mi n2:moduleInstantiated="true" r:type="073d1b6c-24f5-435a-a5bd-1d54e04b0d06" /> <mi n1:totalAllowedSchemasCount="1" n1:totalSchemasCount="1" r:type="aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" /> </mdi> </project> <project id="843855a2-21b4-4e84-b74d-ff3901b54e37" name="PRVNI_KROKY" domain="GlobalDomain" tz="Europe/Prague" r:def="6"> <mdi> <mi n2:moduleInstantiated="true" r:type="073d1b6c-24f5-435a-a5bd-1d54e04b0d06" /> <mi n1:totalAllowedSchemasCount="6" n1:totalSchemasCount="6" r:type="aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" /> </mdi> </project> </projects> <projectGroups> <group n5:name="// fixme - flat merge instead of real one!!!"> <n5:elements> <n5:projectItem> <project r:ref="2" /> </n5:projectItem> <n5:projectItem> <project r:ref="3" /> </n5:projectItem> <n5:projectItem> <project r:ref="4" /> </n5:projectItem> <n5:projectItem> <project r:ref="5" /> </n5:projectItem> <n5:projectItem> <project r:ref="6" /> </n5:projectItem> </n5:elements> </group> </projectGroups> </getProjectsResult>
Response JSON
{ "ns": { "r": "http://dev.rcware.eu/serialization/references", "n1": "http://dev.rcware.eu/scada/projects", "n2": "http://dev.rcware.eu/scada/schemas", "n3": "http://dev.rcware.eu/scada/notifications", "n4": "http://dev.rcware.eu/projectMetadata", "n5": "http://dev.rcware.eu/loc", "n6": "http://dev.rcware.eu/groups" }, "doc": { "n1:getProjectsResult": { "n1:projects": [ { "n1:project": { "@": { "n1:id": "2a7f1615-42f2-44ef-a643-f1438ed44e2a", "n1:name": "Weather", "n1:domain": "GlobalDomain", "n1:tz": "Europe/Prague", "r:def": "2" }, "n1:mdi": [ { "n1:mi": { "@": { "n2:totalAllowedSchemasCount": 0, "n2:totalSchemasCount": 0, "r:type": "aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" } } }, { "n1:mi": { "@": { "n3:moduleInstantiated": true, "r:type": "073d1b6c-24f5-435a-a5bd-1d54e04b0d06" } } } ] } }, { "n1:project": { "@": { "n1:id": "1b2623be-eaa4-4e29-8596-c66dd85d5643", "n1:name": "SIMPLE_DEMO", "n1:domain": "GlobalDomain", "n1:tz": "Europe/Prague", "r:def": "3" }, "n1:metadata": [ { "n1:metadata": { "@": { "n4:k": "oplog.config", "n4:v": "..." } } }, { "n1:metadata": { "@": { "n4:k": "oplog.enabled", "n4:v": "true" } } }, { "n1:metadata": { "@": { "n4:k": "oplog.engine", "n4:v": "podio" } } } ], "n1:mdi": [ { "n1:mi": { "@": { "n3:moduleInstantiated": true, "r:type": "073d1b6c-24f5-435a-a5bd-1d54e04b0d06", "r:def": "1" } } }, { "n1:mi": { "@": { "n2:totalAllowedSchemasCount": 0, "n2:totalSchemasCount": 0, "r:type": "aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" } } } ] } }, { "n1:project": { "@": { "n1:id": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "n1:name": "PLYNOVA_KOTELNA", "n1:domain": "GlobalDomain", "n1:tz": "Europe/Prague", "r:def": "4" }, "n1:loc": { "n5:gps": { "@": { "n5:lat": 50.091056, "n5:lon": 14.401667 } } }, "n1:metadata": [ { "n1:metadata": { "@": { "n4:k": "oplog.enabled", "n4:v": "true" } } }, { "n1:metadata": { "@": { "n4:k": "oplog.engine", "n4:v": "podio" } } }, { "n1:metadata": { "@": { "n4:k": "oplog.podio.url", "n4:v": "https://podio.com/energocentrumcz/mervis-oplog/apps/operational-log" } } } ], "n1:mdi": [ { "n1:mi": { "@": { "r:ref": "1", "r:type": "073d1b6c-24f5-435a-a5bd-1d54e04b0d06" } } }, { "n1:mi": { "@": { "n2:totalAllowedSchemasCount": 1, "n2:totalSchemasCount": 1, "r:type": "aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" } } } ] } }, { "n1:project": { "@": { "n1:id": "b9ad5380-7d1d-4043-b675-bd406df6003b", "n1:name": "CVUT_HERBERTOV", "n1:domain": "GlobalDomain", "n1:tz": "Europe/Prague", "r:def": "5" }, "n1:loc": { "n5:gps": { "@": { "n5:lat": 48.621247, "n5:lon": 14.350967 } } }, "n1:mdi": [ { "n1:mi": { "@": { "n3:moduleInstantiated": true, "r:type": "073d1b6c-24f5-435a-a5bd-1d54e04b0d06" } } }, { "n1:mi": { "@": { "n2:totalAllowedSchemasCount": 1, "n2:totalSchemasCount": 1, "r:type": "aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" } } } ] } }, { "n1:project": { "@": { "n1:id": "843855a2-21b4-4e84-b74d-ff3901b54e37", "n1:name": "PRVNI_KROKY", "n1:domain": "GlobalDomain", "n1:tz": "Europe/Prague", "r:def": "6" }, "n1:mdi": [ { "n1:mi": { "@": { "n3:moduleInstantiated": true, "r:type": "073d1b6c-24f5-435a-a5bd-1d54e04b0d06" } } }, { "n1:mi": { "@": { "n2:totalAllowedSchemasCount": 6, "n2:totalSchemasCount": 6, "r:type": "aa8818ce-d47d-41ff-9be5-3de9f34d7ebf" } } } ] } } ], "n1:projectGroups": [ { "n1:group": { "@": { "n6:name": "// fixme - flat merge instead of real one!!!" }, "n6:elements": [ { "n6:projectItem": { "n1:project": { "@": { "r:ref": "2" } } } }, { "n6:projectItem": { "n1:project": { "@": { "r:ref": "3" } } } }, { "n6:projectItem": { "n1:project": { "@": { "r:ref": "4" } } } }, { "n6:projectItem": { "n1:project": { "@": { "r:ref": "5" } } } }, { "n6:projectItem": { "n1:project": { "@": { "r:ref": "6" } } } } ] } } ], "@": { "n1:dataVersion": "K3JgNExrzoSBu8JwZ2NDYg==" } } } }
api/get/projectByParts
Request
- Method: POST
{ "cred": { "t": "2:85be00d3-5875-4dec-a9b4-c98e2ff2acbe" }, "projId": "1b2623be-eaa4-4e29-8596-c66dd85d5643", "treeId": "Visual tree", "partType": 0, "offset": 0, "count": 2000 }
Response XML
<?xml version="1.0" encoding="utf-8"?> <getProjectByPartsResult xmlns:r="http://dev.rcware.eu/serialization/references" projId="1b2623be-eaa4-4e29-8596-c66dd85d5643" dataVersion="638854006248661233" totalCount="15" nextOffset="-1" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns:n2="http://dev.rcware.eu/scada/legacy-props" xmlns:n3="http://dev.rcware.eu/rt2com" xmlns="http://dev.rcware.eu/scada/datapoints"> <dps> <dp id="07d538d9-9f4b-46ca-ba4d-13b13b5302ff" n="analog setpoint" canAct="true" canAlr="true"> <v> <props> <p n="Source" u="°C" t="2025-07-16T23:26:36.0742528Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55" r:def="1"> <n1:v>6</n1:v> </p> <p n="Output" u="°C" t="2025-07-16T23:26:36.0742528Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>6</n1:v> </p> <p n="Dec" u="°C" t="2024-09-11T13:40:30.8120217Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>-1</n1:v> </p> <p n="Inc" u="°C" t="2024-09-11T13:40:30.8122506Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>1</n1:v> </p> <p n="Min" u="°C" t="2024-09-11T13:40:30.8112955Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>-10</n1:v> </p> <p n="Max" u="°C" t="2024-09-11T13:40:30.8112988Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>20</n1:v> </p> <p n="StdVis_V1" t="2024-09-11T13:40:30.8112085Z" q="Good" r:type="b0db7bd7-0375-4830-90f2-6d918bac41ee"> <n1:v> <n1:props> <n1:p> <n1:pn>Output</n1:pn> <n1:props> <n1:p r:type="033dd98a-337f-4908-9866-55961696f646"> <n1:dec>3</n1:dec> <n1:fs></n1:fs> </n1:p> </n1:props> </n1:p> </n1:props> </n1:v> </p> <p n="CheckMin" t="2024-09-11T13:40:30.8114074Z" q="Good" r:type="e4c0288b-9d7b-48d8-93be-fa4a0a787a36"> <n1:v>true</n1:v> </p> <p n="CheckMax" t="2024-09-11T13:40:30.811645Z" q="Good" r:type="e4c0288b-9d7b-48d8-93be-fa4a0a787a36"> <n1:v>true</n1:v> </p> <p n="LegacyRcAddress_V1" t="2024-09-11T13:40:30.8132286Z" q="Good" r:type="f426f6d7-8dd5-40a3-ac73-dd98e927fd74"> <n2:v e="1" g="1" n="2" o="15"> <n2:m> <n2:inpm i="0" p="Source" /> <n2:inpm i="15" p="Output" /> <n2:inpm i="7" p="Min" /> <n2:inpm i="8" p="Max" /> <n2:inpm i="5" p="Dec" /> <n2:inpm i="9" a="true" p="-" /> <n2:inpm i="6" p="Inc" /> <n2:inpm i="10" a="true" p="+" /> <n2:inpm i="11" a="true" p="INIT" /> </n2:m> </n2:v> </p> <p n="Tags_V1" t="2019-06-14T12:00:04.9014633Z" q="Good" r:type="e1b9ddbd-bf76-4c04-9f61-0626d2d774bb"> <n1:v> <tags> <t vt="String" k="pointy_type" v="one" /> </tags> </n1:v> </p> <p n="LAlr" u="°C" t="0001-01-01T00:00:00" q="Unknown" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>0</n1:v> </p> <p n="HAlr" u="°C" t="0001-01-01T00:00:00" q="Unknown" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>0</n1:v> </p> <p n="LAlrAct" t="0001-01-01T00:00:00" q="Unknown" r:type="e4c0288b-9d7b-48d8-93be-fa4a0a787a36"> <n1:v>false</n1:v> </p> <p n="HAlrAct" t="0001-01-01T00:00:00" q="Unknown" r:type="e4c0288b-9d7b-48d8-93be-fa4a0a787a36"> <n1:v>false</n1:v> </p> </props> </v> <a> <props> <p n="-" r:type="2e0a871a-af8e-4234-8d27-e3145aeb6bd3"> <n1:diff>Dec</n1:diff> <n1:target>Output</n1:target> </p> <p n="+" r:type="2e0a871a-af8e-4234-8d27-e3145aeb6bd3"> <n1:diff>Inc</n1:diff> <n1:target>Output</n1:target> </p> <p n="INIT" r:type="90d4f1b9-c18c-4ce9-9799-d1475d949139"> <n1:interactive>true</n1:interactive> <n1:interactiveTimestamp>false</n1:interactiveTimestamp> <n1:target>Output</n1:target> <n1:nonInteractiveValue>0</n1:nonInteractiveValue> </p> </props> </a> <core r:type="ffdebc6e-11fc-4bcb-949d-04c05dabc6d5" /> </dp> ... </dps> </getProjectByPartsResult>
Response JSON
{ "ns": { "r": "http://dev.rcware.eu/serialization/references", "n1": "http://dev.rcware.eu/scada/datapoints", "n2": "http://dev.rcware.eu/scada/basic-props", "n3": "http://dev.rcware.eu/scada/legacy-props", "n4": "http://dev.rcware.eu/rt2com" }, "doc": { "n1:getProjectByPartsResult": { "@": { "n1:projId": "1b2623be-eaa4-4e29-8596-c66dd85d5643", "n1:dataVersion": "638854006248661233", "n1:totalCount": 15, "n1:nextOffset": -1 }, "n1:dps": [ { "n1:dp": { "@": { "n1:id": "07d538d9-9f4b-46ca-ba4d-13b13b5302ff", "n1:n": "analog setpoint", "n1:canAct": true, "n1:canAlr": true }, "n1:v": { "n1:props": [ { "n1:p": { "@": { "n1:n": "Source", "n1:u": "°C", "n1:t": "2025-07-16T23:26:36.0742528Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55", "r:def": "1" }, "n2:v": 6.0 } }, { "n1:p": { "@": { "n1:n": "Output", "n1:u": "°C", "n1:t": "2025-07-16T23:26:36.0742528Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": 6.0 } }, { "n1:p": { "@": { "n1:n": "Dec", "n1:u": "°C", "n1:t": "2024-09-11T13:40:30.8120217Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": -1.0 } }, { "n1:p": { "@": { "n1:n": "Inc", "n1:u": "°C", "n1:t": "2024-09-11T13:40:30.8122506Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": 1.0 } }, { "n1:p": { "@": { "n1:n": "Min", "n1:u": "°C", "n1:t": "2024-09-11T13:40:30.8112955Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": -10.0 } }, { "n1:p": { "@": { "n1:n": "Max", "n1:u": "°C", "n1:t": "2024-09-11T13:40:30.8112988Z", "n1:q": "Good", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": 20.0 } }, { "n1:p": { "@": { "n1:n": "StdVis_V1", "n1:t": "2024-09-11T13:40:30.8112085Z", "n1:q": "Good", "r:type": "b0db7bd7-0375-4830-90f2-6d918bac41ee" }, "n2:v": { "n2:props": [ { "n2:p": { "n2:pn": "Output", "n2:props": [ { "n2:p": { "n2:dec": 3, "n2:fs": "", "@": { "r:type": "033dd98a-337f-4908-9866-55961696f646" } } } ] } } ] } } }, { "n1:p": { "@": { "n1:n": "CheckMin", "n1:t": "2024-09-11T13:40:30.8114074Z", "n1:q": "Good", "r:type": "e4c0288b-9d7b-48d8-93be-fa4a0a787a36" }, "n2:v": true } }, { "n1:p": { "@": { "n1:n": "CheckMax", "n1:t": "2024-09-11T13:40:30.811645Z", "n1:q": "Good", "r:type": "e4c0288b-9d7b-48d8-93be-fa4a0a787a36" }, "n2:v": true } }, { "n1:p": { "@": { "n1:n": "LegacyRcAddress_V1", "n1:t": "2024-09-11T13:40:30.8132286Z", "n1:q": "Good", "r:type": "f426f6d7-8dd5-40a3-ac73-dd98e927fd74" }, "n3:v": { "@": { "n3:e": 1, "n3:g": 1, "n3:n": 2, "n3:o": 15 }, "n3:m": [ { "n3:inpm": { "@": { "n3:i": 0, "n3:p": "Source" } } }, { "n3:inpm": { "@": { "n3:i": 15, "n3:p": "Output" } } }, { "n3:inpm": { "@": { "n3:i": 7, "n3:p": "Min" } } }, { "n3:inpm": { "@": { "n3:i": 8, "n3:p": "Max" } } }, { "n3:inpm": { "@": { "n3:i": 5, "n3:p": "Dec" } } }, { "n3:inpm": { "@": { "n3:i": 9, "n3:a": true, "n3:p": "-" } } }, { "n3:inpm": { "@": { "n3:i": 6, "n3:p": "Inc" } } }, { "n3:inpm": { "@": { "n3:i": 10, "n3:a": true, "n3:p": "+" } } }, { "n3:inpm": { "@": { "n3:i": 11, "n3:a": true, "n3:p": "INIT" } } } ] } } }, { "n1:p": { "@": { "n1:n": "Tags_V1", "n1:t": "2019-06-14T12:00:04.9014633Z", "n1:q": "Good", "r:type": "e1b9ddbd-bf76-4c04-9f61-0626d2d774bb" }, "n2:v": { "n1:tags": [ { "n1:t": { "@": { "n1:vt": "String", "n1:k": "pointy_type", "n1:v": "one" } } } ] } } }, { "n1:p": { "@": { "n1:n": "LAlr", "n1:u": "°C", "n1:t": "0001-01-01T00:00:00", "n1:q": "Unknown", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": 0.0 } }, { "n1:p": { "@": { "n1:n": "HAlr", "n1:u": "°C", "n1:t": "0001-01-01T00:00:00", "n1:q": "Unknown", "r:type": "b133774d-21ce-42b6-add3-57c012079c55" }, "n2:v": 0.0 } }, { "n1:p": { "@": { "n1:n": "LAlrAct", "n1:t": "0001-01-01T00:00:00", "n1:q": "Unknown", "r:type": "e4c0288b-9d7b-48d8-93be-fa4a0a787a36" }, "n2:v": false } }, { "n1:p": { "@": { "n1:n": "HAlrAct", "n1:t": "0001-01-01T00:00:00", "n1:q": "Unknown", "r:type": "e4c0288b-9d7b-48d8-93be-fa4a0a787a36" }, "n2:v": false } } ] }, "n1:a": { "n1:props": [ { "n1:p": { "@": { "n1:n": "-", "r:type": "2e0a871a-af8e-4234-8d27-e3145aeb6bd3" }, "n2:diff": "Dec", "n2:target": "Output" } }, { "n1:p": { "@": { "n1:n": "+", "r:type": "2e0a871a-af8e-4234-8d27-e3145aeb6bd3" }, "n2:diff": "Inc", "n2:target": "Output" } }, { "n1:p": { "@": { "n1:n": "INIT", "r:type": "90d4f1b9-c18c-4ce9-9799-d1475d949139" }, "n2:interactive": true, "n2:interactiveTimestamp": false, "n2:target": "Output", "n2:nonInteractiveValue": 0.0 } } ] }, "n1:core": { "@": { "r:type": "ffdebc6e-11fc-4bcb-949d-04c05dabc6d5" } } } } ... ] } } }
api/v3/get/history
Request
- URL: /api/v3/get/history?format=json
- Method: POST
- Umožňuje stahovat historii pro více datových bodů
- V ukázkách je vždy za dvěma lomítky uvedený typ property
- V sekci credentials lze místo „token“ uvést „name“ a „password“ - použití bez tokenu je ale výkonnostně penalizováno
- „seriesParameters“ - se uvádí jen pokud chceme rozdílné hodnoty než v „commonSeriesParameters“
- „clientReference“ - volitelné - pro dodatečnou identifikaci datového bodu klientem
- položky „segmenation“, „requestState“ a „serverState“ se vyplňují podle poslední odpovědi serveru. Pro první volání se tyto hodnoty neuvádějí.
{ "credentials": { "token":"guid" //string }, "request": { "commonSeriesParameters": { "from": "2018-12-01T00:00:00Z", //UTC dateTime "to": "2018-12-01T10:00:00Z"//UTC dateTime }, "series": [ { "seriesParameters": { "from": "2017-11-28T14:26:16.5029619Z",//UTC dateTime "to": "2018-11-28T14:26:16.5029619Z" //UTC dateTime }, "clientReference": "myId2a", //string "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid } } }, { "clientReference": "myId1a", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } } } ] }, "dataSpecification": { "limits": { "count": 1000 //int } }, "segmentation": { "requestState": ";;2;;0", //string "serverState": "xyz" //string } }
Response
- Dokud je v odpovědi v sekci „segmentation“ uveden „requestState“ existují v daném rozsahu další historie.
- „requestState“ a „serverState“ je nutné do dalšího případného dotazu na historii předat.
- Values
- v - hodnota
- ts - začátek platnosti hodnoty
- gt - konec platnosti hodnoty
- i - interval, pokud je jiný než uvedená hodnota u celé série
- Meta
- type - typ uložených hodnot - double, string, datetime
- unit - jednotky
- interval - informace o periodě, v jaké by měly být hodnoty v databázi uloženy. Slouží k identifikaci chybějících záznamů.
{ "result": { "code": 0, //int "subCode": 0, //int "message": "" //string }, "data": { "count": 3, //int "historyData": [ { "clientReference": "myId2a", //string "provider": { "id": "689e32fa-24a2-448e-9374-6158e6e6cb15", //guid "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid } }, "meta": { "type": "string", //string "unit": "", //string "interval": "PT3M" //string - ISO8601 Timespan }, "values": [ { "v": "AUT", //string "ts": "2018-11-26T12:22:15.25795Z", //dateTime "gt": "2018-11-26T13:22:15.5784067Z" //dateTime } ] }, { "clientReference": "myId1a", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } }, "meta": { "type": "double", "unit": "hod", "interval": "PT3M" }, "values": [ { "v": 12939,//double "ts": "2018-11-30T23:58:15.2394603Z", "gt": "2018-12-01T01:37:15.4869553Z" }, { "v": 12946, "ts": "2018-12-01T09:22:16.2049051Z", "gt": "2018-12-01T10:37:15.4023519Z", "i": "PT4M" } ] } ] }, "segmentation": { "requestState": "xyz", //string "serverState": "xyz" //string } }
Funkční demo
{ "credentials": { "name": "demo", "password": "demo" }, "request": { "commonSeriesParameters": { "from": "2018-12-01T00:00:00Z", "to": "2018-12-01T00:11:00Z" }, "series": [ { "clientReference": "myId1", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "acad79f3-3358-42dd-9b74-98733e63d771" } } }, { "clientReference": "myId2", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "14cf0dbb-b050-43aa-a6f0-22886c33ed8e" } } } ] }, "dataSpecification": { "limits": { "count": 1000 } } }
[Deprecated] api/get/history
Request
- URL: /api/get/history?format=xml
- Method: POST
{ "cred":{ "n":"demo", "p":"demo", "pe":0 }, "projId":"5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dpId":"62cf4083-31ed-4bc1-be25-044ba837a9f0", "from":"/Date(1541199600000)/", "to":"/Date(1541496190357)/", "offset":0, "count":5000, "historyState":"" }
Response
<?xml version="1.0" encoding="utf-8"?> <getHistoryResult xmlns:r="http://dev.rcware.eu/serialization/references" r:type="b133774d-21ce-42b6-add3-57c012079c55" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/scada/history"> <hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="62cf4083-31ed-4bc1-be25-044ba837a9f0" propName="Output" interval="PT3M" historyState="" nextValOfs="-1"> <errMsg/> <vals> <hv ts="2018-11-02T21:26:08.7936747Z" gt="2018-11-03T20:35:08.8060769Z"> <n1:v>12754</n1:v> </hv> <hv ts="2018-11-03T20:41:09.0100479Z" gt="2018-11-05T11:35:08.7415158Z"> <n1:v>12754</n1:v> </hv> <hv ts="2018-11-05T11:40:04.0077949Z" gt="2018-11-05T17:25:03.4285643Z"> <n1:v>12754</n1:v> </hv> <hv ts="2018-11-05T17:28:03.4133447Z" gt="2018-11-05T19:40:03.0246122Z"> <n1:v>12755</n1:v> </hv> <hv ts="2018-11-05T19:43:03.6499981Z" gt="2018-11-05T22:01:03.2620552Z"> <n1:v>12756</n1:v> </hv> <hv ts="2018-11-05T22:04:03.1530787Z" gt="2018-11-06T02:37:03.454926Z"> <n1:v>12757</n1:v> </hv> <hv ts="2018-11-06T02:40:03.61157Z" gt="2018-11-06T04:52:03.1759539Z"> <n1:v>12758</n1:v> </hv> <hv ts="2018-11-06T04:55:03.14511Z" gt="2018-11-06T06:40:03.8621601Z"> <n1:v>12759</n1:v> </hv> <hv ts="2018-11-06T06:43:03.2063072Z" gt="2018-11-06T08:55:03.3019409Z"> <n1:v>12760</n1:v> </hv> <hv ts="2018-11-06T08:58:03.083875Z" gt="2018-11-06T09:10:03.0695797Z"> <n1:v>12761</n1:v> </hv> <hv ts="2018-11-06T09:13:03.5389214Z" gt="2018-11-06T09:19:03.5238805Z"> <n1:v>12761</n1:v> </hv> <hv ts="2018-11-06T09:22:03.9461503Z"> <n1:v>12761</n1:v> </hv> </vals> </hist> </getHistoryResult>
api/set/history
Request
- URL: /api/set/history?format=xml
- Method: POST
- Content-Type: text/xml
Atribut i nastavuje interval (ISO 8601), v jakém by měla být uložena následující hodnota.
V cred lze použít i ověření pomocí jména a hesla, ale využití tokenu nabízí vyšší výkon.
Všechny časové údaje jsou očekávány v UTC.
<?xml version="1.0" encoding="UTF-8"?> <setHistoryRequest xmlns="http://dev.rcware.eu/scada/history" xmlns:n2="http://dev.rcware.eu/auth" xmlns:n1="http://dev.rcware.eu/scada/basic-props" projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="e86dba6d-1250-4e7f-aafb-84fd28324710"> <n2:cred t="xxxxx"/><!-- token should be used here --> <vals> <hv ts="2020-03-15T11:00:00+00:00" i="P1D"> <n1:v>2.7</n1:v> </hv> <hv ts="2020-03-16T11:00:00+00:00" i="P1D"> <n1:v>3.0</n1:v> </hv> <hv ts="2020-03-17T11:00:00+00:00" i="P1D"> <n1:v>2.0</n1:v> </hv> <hv ts="2020-03-18T11:00:00+00:00" i="P1D"> <n1:v>2.3</n1:v> </hv> </vals> </setHistoryRequest>
Response
- 200 OK
api/set/executeActions
- URL: /api/set/executeActions?format=xml
- Method: POST
- Content-Type: text/xml
DoubleValue
Request
<?xml version="1.0" encoding="UTF-8"?> <executeActionsRequest xmlns="http://dev.rcware.eu/scada/action-defs" xmlns:n2="http://dev.rcware.eu/scada/basic-props" xmlns:n1="http://dev.rcware.eu/auth" xmlns:r="http://dev.rcware.eu/serialization/references"> <n1:cred t="xxxxx"/> <!-- token --> <actionDefs projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0"> <actions> <actionDefItem propName="INIT" dpId="afc22e18-f8e4-4e08-899c-fb9e4759df3d"> <execParam r:type="495c9644-eed1-4b94-933b-3fae702a9aca"> <n2:value>16</n2:value> </execParam> </actionDefItem> <actionDefItem propName="ZAP" dpId="34306c80-73f1-4465-ab51-2b2c1e85ab70"> </actionDefItem> </actions> </actionDefs> </executeActionsRequest>
Response
<?xml version="1.0" encoding="utf-8"?> <executeActionsResponse xmlns:r="http://dev.rcware.eu/serialization/references" code="Ok" message="OK" xmlns="http://dev.rcware.eu/scada/error-reporting" />
PlanningCalendar
- v requestu je atribut „val“ který odkazuje na index items v definici plánovacího kalendáře
- pokud je kalendář číslený místo „val“ se musí použít „dval“ pro double hodnoty a „ival“ pro integer hodnoty
Request
<?xml version="1.0" encoding="UTF-8"?> <executeActionsRequest xmlns="http://dev.rcware.eu/scada/action-defs" xmlns:n1="http://dev.rcware.eu/auth" xmlns:r="http://dev.rcware.eu/serialization/references"> <n1:cred t="xxxxx"/> <!-- token --> <actionDefs projId="17d3ff08-40c1-41c0-ad6a-bad4489323c7"> <actions> <actionDefItem propName="SET" dpId="396bcab1-1973-4dd9-91a9-284cdced00fb"> <execParam r:type="0066EB7A-4118-4DA0-9E98-ECDE203CA945"> <n2:value xmlns:n2="http://dev.rcware.eu/scada/basic-props"> <n2:changes> <n2:layer name="Layer123"> <n2:changes> <n2:ch cmd="Create"> <n2:def start="2024-04-09T02:00:00.00Z" end="2024-04-09T06:00:00.00Z" state="Enabled" val="2" p="1" comment="test"> <n2:metadata/> </n2:def> </n2:ch> </n2:changes> </n2:layer> </n2:changes> </n2:value> </execParam> </actionDefItem> </actions> </actionDefs> </executeActionsRequest>
Response
<?xml version="1.0" encoding="utf-8"?> <executeActionsResponse xmlns:r="http://dev.rcware.eu/serialization/references" code="Ok" message="OK" xmlns="http://dev.rcware.eu/scada/error-reporting" />
api/get/values
- URL: /api/get/values?format=xml
- Method: POST
Output property
Nejvhodnější způsob vyčtení aktuálních hodnot datových bodů (property „Output“) z jednoho nebo více projektů.
Request
{ "cred": { "t": "xxxxxx" //token }, "propNamesToSerialize": ["Output"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "ba1a92f7-f213-4a72-90e4-f7142b50274b", "dpIds": ["e089dde2-a097-4e0d-8012-c8cf3dc62694", "1089dde2-a097-4e0d-8012-c8cf3dc62696"] } ] }
Response
<?xml version="1.0" encoding="utf-8"?> <values xmlns:r="http://dev.rcware.eu/serialization/references" nextOffset="-1" serverTime="2020-04-07T07:46:34.850422Z" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/scada/datapoints"> <vals> <v projId="ba1a92f7-f213-4a72-90e4-f7142b50274b" dataVersion="637217783110000000" serverTime="2020-04-07T07:46:34.850422Z"> <dps> <d id="e089dde2-a097-4e0d-8012-c8cf3dc62694" serAlr="true"> <props> <p n="Output" t="2020-04-07T07:43:42.1000676Z" q="Bad" r:type="177e726a-3180-4152-bef2-6254e7055e1f"> <n1:v>ON</n1:v> </p> </props> </d> <d id="1089dde2-a097-4e0d-8012-c8cf3dc62696" serAlr="true"> <props> <p n="Output" t="2020-04-07T07:45:00.2408399Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>0</n1:v> </p> </props> </d> </dps> </v> </vals> </values>
PlanningCalendar property
Request
{ "cred": { "t": "xxxxxx" //token }, "propNamesToSerialize": ["PlanningCalendar"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "17d3ff08-40c1-41c0-ad6a-bad4489323c7", "dpIds": ["d1243034-0809-444d-a48a-d04d800b4095"] } ] }
Response
<?xml version="1.0" encoding="utf-8"?> <values xmlns:r="http://dev.rcware.eu/serialization/references" nextOffset="-1" serverTime="2024-04-16T09:27:44.9304393Z" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/scada/datapoints"> <vals> <v projId="17d3ff08-40c1-41c0-ad6a-bad4489323c7" dataVersion="638482651650000000" serverTime="2024-04-16T09:27:44.9304393Z"> <dps> <d id="d1243034-0809-444d-a48a-d04d800b4095" serAlr="true"> <props> <p n="PlanningCalendar" t="2024-04-15T11:50:38.2117669Z" q="Good" r:type="11c39f56-7d5e-489b-9615-51d2daaf25f8"> <n1:v defaultValue="0" emailForNotifications="" type="1"> <n1:layers> <n1:l name="Decimal" type="" defaultValue="0"> <n1:events> <n1:e rev="3"> <n1:def start="2024-04-11T04:00:00Z" end="2024-04-11T11:00:00Z" id="2" state="Enabled" dval="12.5" p="1" comment="test" pLayer="" lastEditedBy="admin" lastEdited="2024-04-11T13:35:01.2373164Z" /> </n1:e> <n1:e rev="4"> <n1:def start="2024-04-11T22:00:00Z" end="2024-04-12T01:00:00Z" id="3" state="Enabled" dval="5.6" p="1" comment="test2" pLayer="" lastEditedBy="admin" lastEdited="2024-04-12T06:18:17.0853588Z" /> </n1:e> </n1:events> <n1:items /> </n1:l> <n1:l name="Positive" type="" defaultValue="0"> <n1:events> <n1:e rev="3"> <n1:def start="2024-04-11T10:00:00Z" end="2024-04-11T13:00:00Z" id="2" state="Enabled" ival="25" p="1" comment="test3" pLayer="" lastEditedBy="admin" lastEdited="2024-04-11T13:22:07.0652508Z" /> </n1:e> <n1:e rev="5"> <n1:def start="2024-04-11T22:00:00Z" end="2024-04-12T01:00:00Z" id="5" state="Enabled" ival="30" p="1" comment="test4" pLayer="" lastEditedBy="admin" lastEdited="2024-04-12T06:18:17.0853759Z" /> </n1:e> </n1:events> <n1:items /> </n1:l> <n1:l name="Negative" type="" defaultValue="0"> <n1:events> <n1:e rev="6"> <n1:def start="2024-04-11T22:00:00Z" end="2024-04-12T01:00:00Z" id="7" state="Enabled" ival="-50" p="1" comment="test5" pLayer="" lastEditedBy="admin" lastEdited="2024-04-12T06:18:17.0854241Z" /> </n1:e> </n1:events> <n1:items /> </n1:l> </n1:layers> </n1:v> </p> </props> </d> </dps> </v> </vals> </values>