Mervis SCADA nabízí otevřené REST-like API založené na datových formátech JSON a XML pro bezproblémovou integraci s aplikacemi třetích stran. Podrobný popis pokročilých funkcí získáte u technické podpory.
Důležité upozornění k formátům: Přestože jsou v novějších API metodách ve velké míře využívány formáty JSON, jediným oficiálně podporovaným zpětně kompatibilním formátem odpovědí v rámci celého původního API je XML.
Níže je uveden konsolidovaný seznam doporučených API metod. Jsou zde uvedeny pouze metody s kompletní dokumentací a ověřenými příklady.
| Funkce | Popis |
|---|---|
| Autentizace | |
api/v2/get/authenticate | Ověří uživatele a vrátí token relace pro následná API volání. |
| Projekty a datová struktura | |
api/get/projects | Vrátí seznam všech projektů dostupných přihlášenému uživateli. |
api/get/projectByParts | Vrátí strukturu Visual tree a seznam datových bodů ve vybraném projektu. |
| Čtení dat | |
api/get/values | Vrátí aktuální hodnoty zadaných datových bodů v reálném čase. |
api/v3/get/history | Stáhne historická trendová data jedné nebo více časových řad v jednom stránkovaném volání. |
api/get/history/specific | Vrátí konkrétní historické hodnoty vzhledem k zadanému referenčnímu času. |
| Zápis dat a provádění akcí | |
api/set/values | Zapíše nové hodnoty do zadaných datových bodů. |
api/set/executeActions | Spustí předdefinované akce nebo tlačítka (například INIT nebo ZAP) nad datovými body. |
api/set/history | Vloží nové historické hodnoty do databáze. |
api/replace/history | Kompletně nahradí existující historická data ve zvoleném časovém rozsahu. |
Poznámka k přihlašovacím údajům: API metody můžete testovat pomocí přihlašovacích údajů `n: demo` a `p: demo`. V produkčních aplikacích je doporučeno nejprve získat autentizační token pomocí metody `api/v2/get/authenticate` a následně jej používat (`t: [token_string]`) při dalších API voláních. Tím je zajištěn optimální výkon.
Požadavek:
/api/v2/get/authenticate?format=jsonStandardní přihlášení:
{"data":{"cred":{"n":"demo","p":"demo"}}}
Přihlášení do konkrétní domény:
{"data":{"cred":{"d":"GlobalDomain","n":"demo","p":"demo"}}}
Vlastnosti odpovědi:
{ "data": { "ChangePwdBefore": null, "ClientType": 2, "Domain": "3c73477a-6c95-4939-b047-7bbf902bcef1", "DomainName": "GlobalDomain", "FullName": "GlobalDomain\\demo", "Login": "demo", "NotifyNearingPwdExpirationIn": null, "Token": "3:b83d56f8-2e25-4745-a4e5-1a259c286c5f", "TokenValidFor": "P1D", "User": "48141739-5d16-4ca3-8ae1-33e27d9eb22e", "Username": "" }, "result": { "code": 0, "codeTxt": null, "dataType": null, "desc": null } }
Vrací aktuální hodnoty datových bodů (vlastnost „Output“) z jednoho nebo více projektů.
Požadavek:
/api/get/values?format=xml{ "cred": { "n": "demo", "p": "demo" }, "propNamesToSerialize": ["Output"], "offset": 0, "count": 1000, "serverState": null, "dps": [{ "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dpIds": ["62cf4083-31ed-4bc1-be25-044ba837a9f0"] }] }
Odpověď:
<?xml version="1.0" encoding="utf-8"?> <values xmlns:r="http://dev.rcware.eu/serialization/references" nextOffset="-1" serverTime="2026-07-17T10:29:17Z" xmlns:n1="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/scada/datapoints"> <vals> <v projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" serverTime="2026-07-17T10:29:17Z"> <dps> <d id="62cf4083-31ed-4bc1-be25-044ba837a9f0" serAlr="true"> <props> <p n="Output" t="2026-07-17T10:29:17Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> <n1:v>13851.42</n1:v> </p> </props> </d> </dps> </v> </vals> </values>
Stažení jednoho nebo více trendů jedním API voláním.
Pravidla:
Požadavek:
/api/v3/get/history?format=json{ "credentials": { "name": "demo", "password": "demo" }, "request": { "commonSeriesParameters": { "from": "2026-06-20T00:00:00Z", "to": "2026-07-17T00:00:00Z" }, "series": [ { "clientReference": "test1", "provider": { "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } } } ] }, "dataSpecification": { "limits": { "count": 1000 } }, "segmentation": { "requestState": "", "serverState": "" } }
Popis odpovědi:
{ "result": { "code": 0, "subCode": 0, "message": "" }, "data": { "count": 1, "historyData": [ { "clientReference": "test1", "provider": { "id": "689e32fa-24a2-448e-9374-6158e6e6cb15", "parameters": { "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" } }, "meta": { "type": "double", "unit": "h", "interval": "PT3M" }, "values": [ { "v": 13851.4, "ts": "2026-06-25T12:00:00.000Z" } ] } ] }, "segmentation": { "requestState": "", "serverState": "" } }
Požadavek:
/api/get/history/specific?format=json{ "cred": { "n": "demo", "p": "demo" }, "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "offset": 0, "count": 1000, "dataSpec": 2, "refTime": "\/Date(1692788459000)\/", "dpIds": ["62cf4083-31ed-4bc1-be25-044ba837a9f0"] }
Požadavek:
/api/set/values?format=xml<?xml version="1.0" encoding="UTF-8"?> <setValuesRequest xmlns:r="http://dev.rcware.eu/serialization/references" xmlns="http://dev.rcware.eu/scada/datapoints" xmlns:n2="http://dev.rcware.eu/auth" xmlns:n1="http://dev.rcware.eu/scada/comm-props" > <n2:cred n="demo" p="demo"/> <values projId="1b2623be-eaa4-4e29-8596-c66dd85d5643"> <dps> <d id="07d538d9-9f4b-46ca-ba4d-13b13b5302ff"> <props> <p n="Source" t="2024-02-23T09:58:00Z" r:type="1c104bdf-ffcb-4c90-b491-e4781a91ef09"> <n1:v>23</n1:v> </p> </props> </d> </dps> </values> </setValuesRequest>
Požadavek:
/api/set/executeActions?format=xml<?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 n="demo" p="demo"/> <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>
Atribut i určuje interval (ISO 8601), ve kterém je očekávána následující hodnota. Všechny datumové a časové údaje musí být uvedeny v UTC.
Příklad požadavku Replace History:
/api/replace/history?format=xml<?xml version="1.0" encoding="UTF-8"?> <replaceHistoryRequest 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" from="2020-03-15T11:00:00+00:00" to="2020-03-18T11:00:00+00:00"> <n2:cred n="demo" p="demo"/> <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> </vals> </replaceHistoryRequest>
Požadavek:
/api/get/projects?format=xml{ "cred": { "n": "demo", "p": "demo" }, "offset": 0, "count": 250 }
Odpověď:
<?xml version="1.0" encoding="utf-8"?> <getProjectsResult xmlns:r="http://dev.rcware.eu/serialization/references" xmlns="http://dev.rcware.eu/scada/projects"> <projects> <project id="2a7f1615-..." name="Weather" /> <project id="1b2623be-eaa4-4e29-8596-c66dd85d5643" name="SIMPLE_DEMO" /> <project id="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" name="PLYNOVA_KOTELNA" /> <project id="b9ad5380-..." name="CVUT_HERBERTOV" /> <project id="843855a2-..." name="PRVNI_KROKY" /> </projects> </getProjectsResult>
Vrací strukturu Visual tree a seznam datových bodů.
Požadavek:
/api/get/projectByParts?format=xml{ "cred": { "n": "demo", "p": "demo" }, "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", "treeId": "Visual tree", "partType": 0, "offset": 0, "count": 250 }
{'guid1', 'guid2'}), jinak pouze jeden GUID.ScadaClient(url, username, password)
Konstruktor obalové třídy Mervis API.
findAllDPsWithReqTags(projIds, tags)
Vrátí seznam datových bodů podle zadaných tagů. Příklad definice tagů: {'label','indoor_air_temperature';'room_type','office'}
getDpTags(projectId, DpId)
Vrátí tagy konkrétního datového bodu.
getAllProjectDPs(projectGuid)
Vrátí ID a názvy projektů dostupných přihlášenému uživateli.
[data, time, dataInCell, info] = getData(projID, dpsIds, from, to, span, zone, doublesInterpolationMethod, interpolate_gaps_shorter_than)
Stáhne data.
data (pro chybějící hodnoty se používá NaN), time, dataInCell (užitečné pro textové hodnoty) a info.Příklad stažení dat:
scada = ScadaClient('https://scada.mervis.info/','demo','demo'); dataPointIDs = {'acad79f3-3358-42dd-9b74-98733e63d771','1afa7d9b-1183-4ab1-a6b1-18e464ae2d4d','e496bb8c-14ce-4c2c-b53b-3b71daeabca6'}; projectId = '5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0'; chartLegend = {'Temp UT1','Temp UT1 Return','Valve Position'}; from = now - 4; to = now; timeSpan = 300; [data, time] = scada.getData(projectId, dataPointIDs, from, to, timeSpan); plot(time,data); legend(chartLegend); datetick;
saveData(projID, dpID, time, data)
Uloží data do databáze Mervis.
setDataPointValue(projGuid, dpGuid, value, buttonName)
Nastaví hodnotu datového bodu pomocí tlačítka. Jsou podporovány pouze číselné hodnoty. Parametr buttonName není povinný. Pokud není zadán, použije se INIT.
Příklad:
dpGuid = 'ccaacb77-295b-48a8-a712-3fb272aa9b6f'; projectId = '6b65447e-8622-4a0d-b3b9-42f1d905fdaa'; buttonName = 'INIT'; newValue = 1; scada = ScadaClient('https://scada.mervis.info/','demo','demo'); scada.setDataPointValue(projectId, dpGuid, newValue, buttonName)
deleteVariable(projGuid, dpGuid, from, to)
Upozornění: Odstraní data jednoho datového bodu v zadaném intervalu from-to. Pokud interval není zadán, budou odstraněna všechna data. Tuto operaci používejte s maximální opatrností – odstranění dat nelze vrátit zpět.