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 [2019/07/10 11:39] 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/ | + | Standardní přihlášení: |
| - | * Method: POST | + | <code javascript> |
| + | {" | ||
| + | </code> | ||
| + | |||
| + | Přihlášení do konkrétní domény: | ||
| + | <code javascript> | ||
| + | {" | ||
| + | </ | ||
| - | **Request** | + | **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": | + | { |
| + | | ||
| + | | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | } | ||
| </ | </ | ||
| - | **Response** | + | ===== Čtení dat ===== |
| + | ==== api/ | ||
| + | Vrací aktuální hodnoty datových bodů (vlastnost " | ||
| + | |||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Odpověď: | ||
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| - | <checkCredentialsResult | + | <values |
| + | < | ||
| + | <v projId=" | ||
| + | < | ||
| + | <d id=" | ||
| + | < | ||
| + | <p n=" | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </values> | ||
| </ | </ | ||
| - | * Získaný token **t** lze použít místo dvojice jméno/heslo v následujících | + | ==== api/v3/ |
| + | Stažení jednoho nebo více trendů jedním | ||
| - | ====api/ | + | **Pravidla: |
| + | * Položky **segmentation**, | ||
| - | **Request** | + | **Požadavek:** |
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| - | * URL: /api/ | + | <code javascript> |
| - | | + | { |
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | **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> | <code javascript> | ||
| - | { | + | { |
| - | | + | "result": { " |
| - | "n":" | + | "data": |
| - | "p":" | + | |
| - | "pe":0 | + | "historyData": |
| - | }, | + | { |
| - | | + | |
| - | | + | "provider": |
| - | | + | " |
| - | "to":" | + | "parameters": |
| - | "offset":0, | + | " |
| - | | + | "dataPointId": " |
| - | | + | } |
| + | }, | ||
| + | "meta": | ||
| + | "values": | ||
| + | { " | ||
| + | ] | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | | ||
| } | } | ||
| </ | </ | ||
| - | **Response** | + | ==== api/ |
| + | **Požadavek:** | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | * **dataSpec: | ||
| + | * **refTime: | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Zápis dat a provádění akcí ===== | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | <values projId=" | ||
| + | <dps> | ||
| + | <d id=" | ||
| + | < | ||
| + | <p n=" | ||
| + | < | ||
| + | </p> | ||
| + | </ | ||
| + | </d> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | <n1:cred n=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== 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=" | ||
| + | < | ||
| + | </hv> | ||
| + | <hv ts=" | ||
| + | < | ||
| + | </hv> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Správa projektů ===== | ||
| + | |||
| + | ==== api/ | ||
| + | **Požadavek: | ||
| + | * **URL:** ''/ | ||
| + | * **Metoda:** POST | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Odpověď: | ||
| <code xml> | <code xml> | ||
| <?xml version=" | <?xml version=" | ||
| - | <getHistoryResult | + | <getProjectsResult |
| - | <hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" | + | < |
| - | <errMsg/> | + | <project id="2a7f1615-..." name=" |
| - | < | + | <project id="1b2623be-eaa4-4e29-8596-c66dd85d5643" |
| - | | + | <project id="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" |
| - | <n1:v>12754</n1:v> | + | <project id="b9ad5380-..." |
| - | </hv> | + | <project id="843855a2-..." |
| - | < | + | </projects> |
| - | < | + | </getProjectsResult> |
| - | </hv> | + | </code> |
| - | < | + | |
| - | < | + | ==== api/ |
| - | </ | + | Vrací strukturu Visual tree a seznam datových bodů. |
| - | < | + | |
| - | < | + | **Požadavek:** |
| - | </hv> | + | * **URL:** '' |
| - | < | + | * **Metoda:** POST |
| - | < | + | |
| - | | + | <code javascript> |
| - | < | + | { |
| - | <n1:v>12757</n1:v> | + | " |
| - | </ | + | |
| - | < | + | " |
| - | <n1:v>12758</n1:v> | + | }, |
| - | </ | + | " |
| - | < | + | " |
| - | <n1:v>12759</n1:v> | + | " |
| - | </ | + | " |
| - | < | + | " |
| - | <n1:v>12760</n1:v> | + | } |
| - | </ | + | </code> |
| - | < | + | |
| - | < | + | ===== Matlab Client ===== |
| - | </hv> | + | |
| - | < | + | ==== 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. |
| - | </hv> | + | * Pokud je parametr uveden |
| - | < | + | |
| - | <n1:v>12761</n1:v> | + | ==== ScadaClient ==== |
| - | </ | + | <code matlab>ScadaClient(url, |
| - | </vals> | + | Konstruktor obalové třídy Mervis API. |
| - | | + | |
| - | </ | + | ==== findAllDPsWithReqTags ==== |
| + | <code matlab>findAllDPsWithReqTags(projIds, | ||
| + | Vrátí seznam datových bodů podle zadaných tagů. Příklad definice tagů: '' | ||
| + | |||
| + | ==== getDpTags ==== | ||
| + | <code matlab>getDpTags(projectId, | ||
| + | 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, | ||
| + | Stáhne data. | ||
| + | |||
| + | * **span:** interval vzorkování v sekundách, výchozí hodnota je 300 s. | ||
| + | * **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>saveData(projID, | ||
| + | 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í: | ||