Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
cs:mervis-scada:50-api [2020/04/27 13:44]
127.0.0.1 upraveno mimo DokuWiki
cs:mervis-scada:50-api [2026/07/17 12:58] (aktuální)
z.moustis
Řádek 1: Řádek 1:
-====== API ======+====== Mervis SCADA 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 [[cs:help:support|technickou podporu]].+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 [[:cs:help:20-support|technické podpory]].
  
-===== Přehled základních API metod =====+**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.
  
-^Function^Description|+===== Podporované API metody =====
  
-^api/checkCredentials|| +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.
-^api/logout|| +
-^api/get/projects|| +
-^api/get/projectData|| +
-^api/get/projectByParts|| +
-^api/get/history|| +
-^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||+
  
 +^ 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. |
  
-===== Příklad =====+**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.
  
-====api/checkCredentials====+===== Autentizace =====
  
-**Request**+==== api/v2/get/authenticate ==== 
 +**Požadavek:** 
 +  * **URL:** ''/api/v2/get/authenticate?format=json'' 
 +  * **Metoda:** POST
  
-   * URL: https://scada.mervis.info/api/checkCredentials?format=xml +Standardní přihlášení: 
-   * Method: POST +<code javascript> 
- +{"data":{"cred":{"n":"demo","p":"demo"}}} 
-**Request**+</code>
  
 +Přihlášení do konkrétní domény:
 <code javascript> <code javascript>
-{"cred":{"n":"demo","p":"demo"}}+{"data":{"cred":{"d":"GlobalDomain","n":"demo","p":"demo"}}}
 </code> </code>
  
-**Response**+**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.
  
-<code xml> +<code javascript> 
-<?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" />+    "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 } 
 +}
 </code> </code>
  
-  * Získaný token **t** lze použít místo dvojice jméno/heslo v následujících API voláních.+===== Čtení dat =====
  
-====api/get/history====+==== api/get/values ==== 
 +Vrací aktuální hodnoty datových bodů (vlastnost "Output") z jednoho nebo více projektů.
  
-**Request** +**Požadavek:** 
- +  * **URL:** ''/api/get/values?format=xml'' 
-   * URL: /api/get/history?format=xml +  * **Metoda:** POST
-   * Method: POST+
  
 <code javascript> <code javascript>
-{   +{ 
-   "cred":{   + "cred": { 
-      "n":"demo", +  "n": "demo", 
-      "p":"demo", +  "p": "demo" 
-      "pe":0 + }, 
-   }, + "propNamesToSerialize": ["Output"], 
-   "projId":"5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", + "offset": 0, 
-   "dpId":"62cf4083-31ed-4bc1-be25-044ba837a9f0", + "count": 1000, 
-   "from":"/Date(1541199600000)/", + "serverState": null, 
-   "to":"/Date(1541496190357)/", + "dps": [{ 
-   "offset":0, +   "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
-   "count":5000, +   "dpIds": ["62cf4083-31ed-4bc1-be25-044ba837a9f0"] 
-   "historyState":""+  }]
 } }
 </code> </code>
  
-**Response** +**Odpověď:**
 <code xml> <code xml>
 <?xml version="1.0" encoding="utf-8"?> <?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"> +<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"> 
-  <hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="62cf4083-31ed-4bc1-be25-044ba837a9f0" propName="Output" interval="PT3M" historyState="" nextValOfs="-1"> + <vals> 
-    <errMsg/> +  <v projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" serverTime="2026-07-17T10:29:17Z"> 
-    <vals> +   <dps> 
-      <hv ts="2018-11-02T21:26:08.7936747Z" gt="2018-11-03T20:35:08.8060769Z"> +    <d id="62cf4083-31ed-4bc1-be25-044ba837a9f0" serAlr="true"> 
-        <n1:v>12754</n1:v> +     <props> 
-      </hv> +      <p n="Output" t="2026-07-17T10:29:17Z" q="Good" r:type="b133774d-21ce-42b6-add3-57c012079c55"> 
-      <hv ts="2018-11-03T20:41:09.0100479Z" gt="2018-11-05T11:35:08.7415158Z"> +       <n1:v>13851.42</n1:v> 
-        <n1:v>12754</n1:v> +      </p> 
-      </hv> +     </props> 
-      <hv ts="2018-11-05T11:40:04.0077949Z" gt="2018-11-05T17:25:03.4285643Z"> +    </d> 
-        <n1:v>12754</n1:v> +   </dps> 
-      </hv> +  </v> 
-      <hv ts="2018-11-05T17:28:03.4133447Z" gt="2018-11-05T19:40:03.0246122Z"> + </vals> 
-        <n1:v>12755</n1:v> +</values> 
-      </hv> +</code>
-      <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/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
 +
 +<code javascript>
 +{
 +    "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": ""
 +    }
 +}
 </code> </code>
  
-====api/set/history====+**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.
  
-**Request**+<code javascript> 
 +{ 
 +    "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": "" } 
 +} 
 +</code>
  
-   * URL: /api/set/history?format=xml +==== api/get/history/specific ==== 
-   * Method: POST +**Požadavek:** 
-   * Content-Type: text/xml+  * **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í.
  
-Atribut **i** nastavuje **interval** ([[https://en.wikipedia.org/wiki/ISO_8601#Time_intervals|ISO 8601]]), v jakém by měla být uložena následující hodnota.+<code javascript> 
 +{ 
 + "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"] 
 +} 
 +</code>
  
-V **cred** lze použít i ověření pomocí jména a hesla, ale využití **tokenu** nabízí vyšší výkon.+===== Zápis dat a provádění akcí =====
  
-Všechny časové údaje jsou očekávány v UTC.+==== api/set/values ==== 
 +**Požadavek:** 
 +  * **URL:** ''/api/set/values?format=xml'' 
 +  * **Metoda:** POST
  
 <code xml> <code xml>
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
-<setHistoryRequest xmlns="http://dev.rcware.eu/scada/history"  +<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" > 
-xmlns:n2="http://dev.rcware.eu/auth"  +   <n2:cred n="demo" p="demo"/> 
-xmlns:n1="http://dev.rcware.eu/scada/basic-props"  +        <values projId="1b2623be-eaa4-4e29-8596-c66dd85d5643"> 
-projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0"  +            <dps> 
-dpId="e86dba6d-1250-4e7f-aafb-84fd28324710"> +                <d id="07d538d9-9f4b-46ca-ba4d-13b13b5302ff"> 
-  <n2:cred t="xxxxx"/><!-- token should be used here --> +                    <props> 
-  <vals> +                        <p n="Source" t="2024-02-23T09:58:00Z" r:type="1c104bdf-ffcb-4c90-b491-e4781a91ef09"> 
-    <hv ts="2020-03-15T11:00:00+00:00" i="P1D"> +                            <n1:v>23</n1:v> 
-      <n1:v>2.7</n1:v> +                        </p> 
-    </hv> +                    </props> 
-    <hv ts="2020-03-16T11:00:00+00:00" i="P1D"> +                </d> 
-      <n1:v>3.0</n1:v> +            </dps> 
-    </hv> +        </values> 
-    <hv ts="2020-03-17T11:00:00+00:00" i="P1D"> +</setValuesRequest> 
-      <n1:v>2.0</n1:v> +</code>
-    </hv> +
-    <hv ts="2020-03-18T11:00:00+00:00" i="P1D"> +
-      <n1:v>2.3</n1:v> +
-    </hv> +
-  </vals> +
-</setHistoryRequest></code> +
- +
-**Response** +
- +
-   * 200 OK +
- +
-====api/set/executeActions==== +
- +
-**Request**+
  
-   * URL: /api/set/executeActions?format=xml +==== api/set/executeActions ==== 
-   * Method: POST +**Požadavek:** 
-   * Content-Type: text/xml+  * **URL:** ''/api/set/executeActions?format=xml'' 
 +  * **Metoda:** POST
  
 <code xml> <code xml>
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
-<executeActionsRequest xmlns="http://dev.rcware.eu/scada/action-defs"  +<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"> 
-xmlns:n2="http://dev.rcware.eu/scada/basic-props"  +  <n1:cred n="demo" p="demo"/>
-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">   <actionDefs projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0">
     <actions>     <actions>
Řádek 197: Řádek 256:
     </actions>     </actions>
   </actionDefs>   </actionDefs>
-</executeActionsRequest></code>+</executeActionsRequest> 
 +</code>
  
-**Response**+==== 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.
  
-<code xml><?xml version="1.0" encoding="utf-8"?> +**Příklad požadavku Replace History:** 
-<executeActionsResponse xmlns:r="http://dev.rcware.eu/serialization/references" code="Ok" message="OK" xmlns="http://dev.rcware.eu/scada/error-reporting" /></code>+  * **URL:** ''/api/replace/history?format=xml'' 
 +  * **Metoda:** POST
  
-====api/get/values====+<code 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> 
 +</code>
  
-Nejvhodnější způsob vyčtení aktuálních hodnot datových bodů (property "Output") z jednoho nebo více projektů.+===== Správa projektů ===== 
 + 
 +==== api/get/projects ==== 
 +**Požadavek:** 
 +  * **URL:** ''/api/get/projects?format=xml'' 
 +  * **Metoda:** POST 
 + 
 +<code javascript> 
 +{ 
 + "cred": { 
 +  "n": "demo", 
 +  "p": "demo" 
 + }, 
 + "offset": 0, 
 + "count": 250 
 +} 
 +</code> 
 + 
 +**Odpověď:** 
 +<code xml> 
 +<?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> 
 +</code>
  
-**Request**+==== api/get/projectByParts ==== 
 +Vrací strukturu Visual tree a seznam datových bodů.
  
-   * URL: /api/get/values?format=xml +**Požadavek:** 
-   * Method: POST+  * **URL:** ''/api/get/projectByParts?format=xml'' 
 +  * **Metoda:** POST
  
 <code javascript> <code javascript>
 { {
  "cred": {  "cred": {
-  "t": "xxxxxx" //token+  "n": "demo", 
 +  "p": "demo"
  },  },
- "propNamesToSerialize": ["Output"],+ "projId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
 + "treeId": "Visual tree", 
 + "partType": 0,
  "offset": 0,  "offset": 0,
- "count": 1000, + "count": 250
- "serverState": null, +
- "dps": [{ +
-   "projId": "ba1a92f7-f213-4a72-90e4-f7142b50274b", +
-   "dpIds": ["e089dde2-a097-4e0d-8012-c8cf3dc62694", "1089dde2-a097-4e0d-8012-c8cf3dc62696"] +
-  } +
- ]+
 } }
 +</code>
 +
 +===== 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 ====
 +<code matlab>ScadaClient(url, username, password)</code>
 +Konstruktor obalové třídy Mervis API.
 +
 +==== findAllDPsWithReqTags ====
 +<code matlab>findAllDPsWithReqTags(projIds, tags)</code>
 +Vrátí seznam datových bodů podle zadaných tagů. Příklad definice tagů: ''{'label','indoor_air_temperature';'room_type','office'}''
 +
 +==== getDpTags ====
 +<code matlab>getDpTags(projectId, DpId)</code>
 +Vrátí tagy konkrétního datového bodu.
 +
 +==== getAllProjectDPs ====
 +<code matlab>getAllProjectDPs(projectGuid)</code>
 +Vrátí ID a názvy projektů dostupných přihlášenému uživateli.
 +
 +==== getData ====
 +<code matlab>[data, time, dataInCell, info] = getData(projID, dpsIds, from, to, span, zone, doublesInterpolationMethod, interpolate_gaps_shorter_than)</code>
 +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:**
 +<code matlab>
 +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;
 </code> </code>
  
-**Response**+==== saveData ==== 
 +<code matlab>saveData(projID, dpID, time, data)</code> 
 +Uloží data do databáze Mervis.
  
-<code xml><?xml version="1.0" encoding="utf-8"?> +==== setDataPointValue ==== 
-<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"> +<code matlab>setDataPointValue(projGuid, dpGuid, value, buttonName)</code> 
- <vals> +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''.
-  <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></code>+
  
 +**Příklad:**
 +<code matlab>
 +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)
 +</code>
  
 +==== deleteVariable ====
 +<code matlab>deleteVariable(projGuid, dpGuid, from, to)</code>
  
 +**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.
  • © Energocentrum Plus, s.r.o. 2017 - 2026