{"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:**
* **token** (string) – autentizační token používaný při dalších API voláních.
* **tokenValidFor** (TimeSpan) – doba platnosti tokenu (např. "P1D" = 1 den).
* **changePwdBefore** (DateTime nebo null) – datum a čas, do kterého je nutné změnit aktuální heslo.
{
"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 }
}
===== Čtení dat =====
==== api/get/values ====
Vrací aktuální hodnoty datových bodů (vlastnost "Output") z jednoho nebo více projektů.
**Požadavek:**
* **URL:** ''/api/get/values?format=xml''
* **Metoda:** POST
{
"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ěď:**
13851.42
==== api/v3/get/history ====
Stažení jednoho nebo více trendů jedním API voláním.
**Pravidla:**
* Položky **segmentation**, **requestState** a **serverState** musí při stránkování vždy obsahovat hodnoty z poslední odpovědi serveru. Při prvním volání použijte prázdnou hodnotu **segmentation**.
**Požadavek:**
* **URL:** ''/api/v3/get/history?format=json''
* **Metoda:** POST
{
"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:**
* **v** – hodnota
* **ts** – časová známka (začátek období platnosti)
* **gt** – goodthrough (konec období platnosti)
* **meta.interval** – očekávaný interval mezi uloženými záznamy. Lze využít k identifikaci chybějících dat.
{
"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": "" }
}
==== api/get/history/specific ====
**Požadavek:**
* **URL:** ''/api/get/history/specific?format=json''
* **Metoda:** POST
* **dataSpec:** Definuje požadovaný bod historie (například 2 = první hodnota menší než referenční čas).
* **refTime:** Referenční čas použitý při vyhledávání.
{
"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"]
}
===== Zápis dat a provádění akcí =====
==== api/set/values ====
**Požadavek:**
* **URL:** ''/api/set/values?format=xml''
* **Metoda:** POST
23
==== api/set/executeActions ====
**Požadavek:**
* **URL:** ''/api/set/executeActions?format=xml''
* **Metoda:** POST
16
==== api/set/history & api/replace/history ====
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:**
* **URL:** ''/api/replace/history?format=xml''
* **Metoda:** POST
2.7
3.0
===== Správa projektů =====
==== api/get/projects ====
**Požadavek:**
* **URL:** ''/api/get/projects?format=xml''
* **Metoda:** POST
{
"cred": {
"n": "demo",
"p": "demo"
},
"offset": 0,
"count": 250
}
**Odpověď:**
==== api/get/projectByParts ====
Vrací strukturu Visual tree a seznam datových bodů.
**Požadavek:**
* **URL:** ''/api/get/projectByParts?format=xml''
* **Metoda:** POST
{
"cred": {
"n": "demo",
"p": "demo"
},
"projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0",
"treeId": "Visual tree",
"partType": 0,
"offset": 0,
"count": 250
}
===== Matlab Client =====
==== Obecné poznámky ====
* Názvy parametrů **ID** a **Guid** jsou v klientovi Matlab používány zaměnitelně. Vždy se jedná o globálně jedinečný identifikátor projektu nebo datového bodu.
* Pokud je parametr uveden v množném čísle, očekává se pole GUID (např. ''{'guid1', 'guid2'}''), jinak pouze jeden GUID.
==== ScadaClient ====
ScadaClient(url, username, password)
Konstruktor obalové třídy Mervis API.
==== findAllDPsWithReqTags ====
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 ====
getDpTags(projectId, DpId)
Vrátí tagy konkrétního datového bodu.
==== getAllProjectDPs ====
getAllProjectDPs(projectGuid)
Vrátí ID a názvy projektů dostupných přihlášenému uživateli.
==== getData ====
[data, time, dataInCell, info] = getData(projID, dpsIds, from, to, span, zone, doublesInterpolationMethod, interpolate_gaps_shorter_than)
Stáhne data.
* **span:** interval vzorkování v sekundách, výchozí hodnota je 300 s.
* **zone:** časové pásmo ('local' nebo 'utc') použité pro vstupní parametry i výstup, výchozí hodnota je 'local'.
* **Vrací:** ''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 ====
saveData(projID, dpID, time, data)
Uloží data do databáze Mervis.
==== setDataPointValue ====
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 ====
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.