Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
|
cs:mervis-scada:50-api [2017/07/18 09:18] m.chlupac |
cs:mervis-scada:50-api [2026/07/17 12:58] (aktuální) z.moustis |
||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== API ====== | + | ====== |
| - | Mervis SCADA nabízí otevřené REST-like API postavené | + | Mervis SCADA nabízí otevřené REST-like API založené |
| - | ===== Přehled základních | + | **Důležité upozornění k formátům: |
| - | ^Function^Description| | + | ===== Podporované API metody ===== |
| - | ^api/ | + | 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/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| - | ^api/ | + | |
| + | ^ Funkce ^ Popis | | ||
| + | | **Autentizace** | | | ||
| + | | '' | ||
| + | | **Projekty a datová struktura** | | | ||
| + | | '' | ||
| + | | '' | ||
| + | | **Čtení dat** | | | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | **Zápis dat a provádění akcí** | | | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| - | ===== 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/ |
| - | ====api/ | + | ===== Autentizace ===== |
| - | **Request** | + | ==== api/ |
| + | **Požadavek:** | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| - | * URL: /api/get/ | + | Standardní přihlášení: |
| - | | + | <code javascript> |
| + | {" | ||
| + | </code> | ||
| + | |||
| + | Přihlášení do konkrétní domény: | ||
| + | <code javascript> | ||
| + | {" | ||
| + | </code> | ||
| + | |||
| + | **Vlastnosti odpovědi:** | ||
| + | * **token** (string) – autentizační token používaný při dalších API voláních. | ||
| + | * **tokenValidFor** (TimeSpan) – doba platnosti tokenu (např. " | ||
| + | * **changePwdBefore** (DateTime nebo null) – datum a čas, do kterého je nutné změnit aktuální heslo. | ||
| <code javascript> | <code javascript> | ||
| { | { | ||
| - | "cred":{ | + | |
| - | "t":" | + | " |
| - | }, | + | " |
| - | | + | |
| - | | + | " |
| - | | + | "FullName": "GlobalDomain\\demo", |
| - | | + | "Login": "demo", |
| - | | + | "NotifyNearingPwdExpirationIn": |
| - | | + | |
| - | | + | "TokenValidFor": "P1D", |
| - | "historyState":"" | + | "User": "48141739-5d16-4ca3-8ae1-33e27d9eb22e", |
| + | "Username": | ||
| + | }, | ||
| + | "result": | ||
| } | } | ||
| </ | </ | ||
| - | **Response** | + | ===== Čtení dat ===== |
| + | ==== api/ | ||
| + | Vrací aktuální hodnoty datových bodů (vlastnost " | ||
| + | |||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Odpověď: | ||
| <code xml> | <code xml> | ||
| - | <getHistoryResult | + | <?xml version=" |
| - | <hist projId=" | + | < |
| - | <errMsg/> | + | < |
| - | < | + | <v projId=" |
| - | <hv ts="2017-05-08T22:26:53.32684Z" gt="2017-05-08T22:31:53.465467Z"> | + | < |
| - | < | + | <d id=" |
| - | </hv> | + | < |
| - | <hv ts="2017-05-08T22:36:53.283875Z"> | + | <p n=" |
| - | < | + | < |
| - | </ | + | </ |
| - | <hv ts="2017-05-08T22:41:53.435042Z"> | + | </ |
| - | < | + | </d> |
| - | </ | + | </ |
| - | <hv ts="2017-05-08T22:46:53.711496Z" | + | </ |
| - | <n1:v>4</n1:v> | + | </vals> |
| - | </hv> | + | </ |
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | Stažení jednoho nebo více trendů jedním API voláním. | ||
| + | |||
| + | **Pravidla: | ||
| + | * Položky **segmentation**, | ||
| + | |||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **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. | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | { " | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | * **dataSpec: | ||
| + | * **refTime: | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | "cred": { | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Zápis dat a provádění akcí ===== | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | | ||
| + | < | ||
| + | <d id=" | ||
| + | < | ||
| + | <p n=" | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | <n1:cred n=" | ||
| + | < | ||
| + | <actions> | ||
| + | | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | 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:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | <n2:cred n=" | ||
| + | < | ||
| + | | ||
| + | < | ||
| + | </ | ||
| + | <hv ts="2020-03-16T11:00:00+00: | ||
| + | < | ||
| + | </ | ||
| + | </vals> | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Správa projektů ===== | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Odpověď: | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | <project id=" | ||
| + | <project id=" | ||
| + | <project id=" | ||
| + | <project id=" | ||
| + | <project id=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | Vrací strukturu Visual tree a seznam datových bodů. | ||
| + | |||
| + | **Požadavek:** | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== 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ř. '' | ||
| + | |||
| + | ==== ScadaClient ==== | ||
| + | <code matlab>ScadaClient(url, | ||
| + | Konstruktor obalové třídy Mervis API. | ||
| + | |||
| + | ==== findAllDPsWithReqTags ==== | ||
| + | <code matlab> | ||
| + | Vrátí seznam datových bodů podle zadaných tagů. Příklad definice tagů: '' | ||
| + | |||
| + | ==== getDpTags ==== | ||
| + | <code matlab> | ||
| + | Vrátí tagy konkrétního datového bodu. | ||
| + | |||
| + | ==== getAllProjectDPs ==== | ||
| + | <code matlab> | ||
| + | Vrátí ID a názvy projektů dostupných přihlášenému uživateli. | ||
| + | |||
| + | ==== getData ==== | ||
| + | <code matlab> | ||
| + | Stáhne data. | ||
| + | |||
| + | * **span:** interval vzorkování | ||
| + | * **zone:** časové pásmo (' | ||
| + | * **Vrací:** '' | ||
| + | |||
| + | **Příklad stažení dat:** | ||
| + | <code matlab> | ||
| + | scada = ScadaClient(' | ||
| + | |||
| + | dataPointIDs = {' | ||
| + | projectId = ' | ||
| + | chartLegend = {'Temp UT1',' | ||
| + | from = now - 4; | ||
| + | to = now; | ||
| + | timeSpan = 300; | ||
| + | |||
| + | [data, time] = scada.getData(projectId, | ||
| + | |||
| + | plot(time, | ||
| + | legend(chartLegend); | ||
| + | datetick; | ||
| + | </code> | ||
| + | |||
| + | ==== saveData ==== | ||
| + | <code matlab> | ||
| + | Uloží data do databáze Mervis. | ||
| - | | + | ==== setDataPointValue ==== |
| - | | + | <code matlab>setDataPointValue(projGuid, |
| - | </ | + | Nastaví hodnotu datového bodu pomocí tlačítka. Jsou podporovány pouze číselné hodnoty. Parametr '' |
| + | **Příklad: | ||
| + | <code matlab> | ||
| + | dpGuid = ' | ||
| + | projectId = ' | ||
| + | buttonName = ' | ||
| + | newValue = 1; | ||
| + | scada = ScadaClient(' | ||
| + | scada.setDataPointValue(projectId, | ||
| </ | </ | ||
| + | ==== deleteVariable ==== | ||
| + | <code matlab> | ||
| + | **Upozornění: | ||