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 [2018/11/02 07:32]
m.chlupac
cs:mervis-scada:50-api [2021/04/15 10:34] (aktuální)
m.chlupac [api/checkCredentials]
Řádek 28: Řádek 28:
 ^api/get/schema/values|| ^api/get/schema/values||
 ^api/get/schema/image|| ^api/get/schema/image||
 +^/api/v3/get/history||
  
  
 ===== Příklad ===== ===== Příklad =====
  
-====api/get/history====+==== api/checkCredentials ====
  
 **Request** **Request**
  
-   * URL: /api/get/history?format=xml+   * URL: https://scada.mervis.info/api/checkCredentials?format=xml
    * Method: POST    * Method: POST
  
-<code json>+ 
 +<code javascript> 
 +{"cred":{"n":"demo","p":"demo"}} 
 +</code> 
 + 
 +**Response** 
 + 
 +<code xml> 
 +<?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" /> 
 +</code> 
 + 
 +  * Získaný token **t** je třeba použít místo dvojice jméno/heslo v následujících API voláních. 
 + 
 + 
 + 
 + 
 + 
 +==== api/v3/get/history ==== 
 + 
 +**Request** 
 + 
 +   * URL: /api/v3/get/history?format=json 
 +   * Method: POST 
 +   * Umožňuje stahovat historii pro více datových bodů 
 +   * V ukázkách je vždy za dvěma lomítky uvedený typ property 
 +   * V sekci credentials lze místo "token" uvést "name" a "password" - použití bez tokenu je ale výkonnostně penalizováno 
 +   * "seriesParameters" - se uvádí jen pokud chceme rozdílné hodnoty než v "commonSeriesParameters" 
 +   * "clientReference" - volitelné - pro dodatečnou identifikaci datového bodu klientem 
 +   * položky "segmenation", "requestState" a "serverState" se vyplňují podle poslední odpovědi serveru. Pro první volání se tyto hodnoty neuvádějí. 
 + 
 + 
 +<code javascript>
 { {
-   "cred":{ +    "credentials":
-      "t":"d1871589-c455-416a-91f3-d9cda3aa5e0f"+        "token":"guid" //string 
 +    }, 
 +    "request": { 
 +        "commonSeriesParameters":
 +            "from": "2018-12-01T00:00:00Z", //UTC dateTime 
 +            "to": "2018-12-01T10:00:00Z"//UTC dateTime 
 +        }, 
 +        "series":
 +            { 
 +                "seriesParameters":
 +                    "from": "2017-11-28T14:26:16.5029619Z",//UTC dateTime 
 +                    "to": "2018-11-28T14:26:16.5029619Z" //UTC dateTime 
 +                }, 
 +                "clientReference": "myId2a", //string 
 +                "provider":
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid 
 +                        "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid 
 +                    } 
 +                } 
 +            }, 
 +            { 
 +                "clientReference": "myId1a", 
 +                "provider":
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
 +                        "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" 
 +                    } 
 +                } 
 +            } 
 +        ] 
 +    }, 
 +    "dataSpecification":
 +        "limits":
 +            "count": 1000 //int 
 +        } 
 +    }, 
 +    "segmentation":
 +        "requestState": ";;2;;0", //string 
 +        "serverState": "xyz" //string 
 +    } 
 +
 +</code> 
 + 
 +**Response** 
 + 
 +   * Dokud je v odpovědi v sekci "segmentation" uveden "requestState" existují v daném rozsahu další historie. 
 +   * "requestState" a "serverState" je nutné do dalšího případného dotazu na historii předat. 
 +   * Values 
 +     * v - hodnota 
 +     * ts - začátek platnosti hodnoty 
 +     * gt - konec platnosti hodnoty 
 +     * i - interval, pokud je jiný než uvedená hodnota u celé série 
 +   * Meta 
 +     * type - typ uložených hodnot - double, string, datetime 
 +     * unit - jednotky 
 +     * interval - informace o periodě, v jaké by měly být hodnoty v databázi uloženy. Slouží k identifikaci chybějících záznamů. 
 + 
 +<code javascript> 
 +
 +"result":
 +        "code": 0, //int 
 +        "subCode": 0, //int 
 +        "message": "" //string 
 +    }, 
 +    "data":
 +        "count": 3, //int 
 +        "historyData":
 +            { 
 +                "clientReference": "myId2a", //string 
 +                "provider":
 +                    "id": "689e32fa-24a2-448e-9374-6158e6e6cb15", //guid 
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", //guid 
 +                        "dataPointId": "2a9c26c9-2ce3-49c4-909d-9ac1143121f1" //guid 
 +                    } 
 +                }, 
 +                "meta":
 +                    "type": "string", //string 
 +                    "unit": "", //string 
 +                    "interval": "PT3M" //string - ISO8601 Timespan 
 +                }, 
 +                "values":
 +                    { 
 +                        "v": "AUT", //string 
 +                        "ts": "2018-11-26T12:22:15.25795Z", //dateTime 
 +                        "gt": "2018-11-26T13:22:15.5784067Z" //dateTime 
 +                    } 
 +                ] 
 +            }, 
 +            { 
 +                "clientReference": "myId1a", 
 +                "provider":
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
 +                        "dataPointId": "62cf4083-31ed-4bc1-be25-044ba837a9f0" 
 +                    } 
 +                }, 
 +                "meta":
 +                    "type": "double", 
 +                    "unit": "hod", 
 +                    "interval": "PT3M" 
 +                }, 
 +                "values":
 +                    { 
 +                        "v": 12939,//double 
 +                        "ts": "2018-11-30T23:58:15.2394603Z", 
 +                        "gt": "2018-12-01T01:37:15.4869553Z" 
 +                    }, 
 +                    { 
 +                        "v": 12946, 
 +                        "ts": "2018-12-01T09:22:16.2049051Z", 
 +                        "gt": "2018-12-01T10:37:15.4023519Z", 
 +                        "i": "PT4M" 
 +                    } 
 +                ] 
 +            } 
 +        ] 
 +    }, 
 +    "segmentation":
 +        "requestState": "xyz", //string 
 +        "serverState": "xyz" //string 
 +    } 
 +
 + 
 + 
 +</code> 
 + 
 +**Funkční demo** 
 +<code javascript> 
 +
 +    "credentials":
 +        "name": "demo", 
 +        "password": "demo" 
 +    }, 
 +    "request":
 +        "commonSeriesParameters":
 +            "from": "2018-12-01T00:00:00Z", 
 +            "to": "2018-12-01T00:11:00Z" 
 +        }, 
 +        "series":
 +            { 
 +                "clientReference": "myId1", 
 +                "provider":
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
 +                        "dataPointId": "acad79f3-3358-42dd-9b74-98733e63d771" 
 +                    } 
 +                } 
 +            }, 
 +            { 
 +                "clientReference": "myId2", 
 +                "provider":
 +                    "parameters":
 +                        "projectId": "5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
 +                        "dataPointId": "14cf0dbb-b050-43aa-a6f0-22886c33ed8e" 
 +                    } 
 +                } 
 +            } 
 +        ] 
 +    }, 
 +    "dataSpecification":
 +        "limits":
 +            "count": 1000 
 +        } 
 +    } 
 +
 + 
 +</code> 
 + 
 + 
 + 
 +==== [Deprecated] api/get/history==== 
 + 
 +**Request** 
 + 
 +   * URL: /api/get/history?format=xml 
 +   * Method: POST 
 + 
 +<code javascript> 
 +{   
 +   "cred":  
 +      "n":"demo", 
 +      "p":"demo", 
 +      "pe":0
    },    },
-   "projId":"2e4deb05-0517-4ef7-ae7a-02e146b23a1d", +   "projId":"5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", 
-   "dpId":"ffb370fc-eeb8-404f-9088-46577ea64134", +   "dpId":"62cf4083-31ed-4bc1-be25-044ba837a9f0", 
-   "providerId":"689E32FA-24A2-448E-9374-6158E6E6CB15", +   "from":"/Date(1541199600000)/", 
-   "from":"/Date(1494280800000)/", //UTC, Unixtime milliseconds +   "to":"/Date(1541496190357)/",
-   "to":"/Date(1494412488822)/",  //UTC, Unixtime milliseconds+
    "offset":0,    "offset":0,
    "count":5000,    "count":5000,
Řádek 58: Řádek 274:
  
 <code xml> <code xml>
 +<?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"> <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">
-  <hist projId="2e4deb05-0517-4ef7-ae7a-02e146b23a1d" dpId="ffb370fc-eeb8-404f-9088-46577ea64134" propName="Output" interval="PT5M" historyState="" nextValOfs="-1">+  <hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="62cf4083-31ed-4bc1-be25-044ba837a9f0" propName="Output" interval="PT3M" historyState="" nextValOfs="-1">
     <errMsg/>     <errMsg/>
     <vals>     <vals>
-      <hv ts="2017-05-08T22:26:53.32684Z" gt="2017-05-08T22:31:53.465467Z"> +      <hv ts="2018-11-02T21:26:08.7936747Z" gt="2018-11-03T20:35:08.8060769Z"> 
-        <n1:v>4.3</n1:v>+        <n1:v>12754</n1:v>
       </hv>       </hv>
-      <hv ts="2017-05-08T22:36:53.283875Z"> +      <hv ts="2018-11-03T20:41:09.0100479Z" gt="2018-11-05T11:35:08.7415158Z"> 
-        <n1:v>4.2</n1:v>+        <n1:v>12754</n1:v>
       </hv>       </hv>
-      <hv ts="2017-05-08T22:41:53.435042Z"> +      <hv ts="2018-11-05T11:40:04.0077949Z" gt="2018-11-05T17:25:03.4285643Z"> 
-        <n1:v>4.1</n1:v>+        <n1:v>12754</n1:v>
       </hv>       </hv>
-      <hv ts="2017-05-08T22:46:53.711496Z" gt="2017-05-08T23:36:53.776657Z"> +      <hv ts="2018-11-05T17:28:03.4133447Z" gt="2018-11-05T19:40:03.0246122Z"> 
-        <n1:v>4</n1:v>+        <n1:v>12755</n1:v> 
 +      </hv> 
 +      <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>       </hv>
- 
     </vals>     </vals>
   </hist>   </hist>
Řádek 82: Řádek 322:
 </code> </code>
  
-====api/v2/get/history====+ 
 +====api/set/history====
  
 **Request** **Request**
  
-   * URL: /api/v2/get/history?format=xml+   * URL: /api/set/history?format=xml
    * Method: POST    * Method: POST
 +   * Content-Type: text/xml
  
-<code json+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. 
-{   + 
-   "data":{   +V **cred** lze použít i ověření pomocí jména a hesla, ale využití **tokenu** nabízí vyšší výkon. 
-      "cred":{   + 
-         "n":"demo",  //username +Všechny časové údaje jsou očekávány v UTC. 
-         "p":"demo",  //password + 
-         "pe":+<code xml
-      }, +<?xml version="1.0encoding="UTF-8"?> 
-      "projId":"5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0", +<setHistoryRequest xmlns="http://dev.rcware.eu/scada/history 
-      "from":"/Date(1540388023926)/", //UTC, Unixtime milliseconds +xmlns:n2="http://dev.rcware.eu/auth"  
-      "to":"/Date(1540389034926)/",   //UTC, Unixtime milliseconds +xmlns:n1="http://dev.rcware.eu/scada/basic-props 
-      "offset":0,                     //offset-count pair for multiple variables +projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0"  
-      "variableOffset":0, +dpId="e86dba6d-1250-4e7f-aafb-84fd28324710"
-      "count":5000,            +  <n2:cred t="xxxxx"/><!-- token should be used here --> 
-      "historyState":"", +  <vals> 
-      "providersDps":[   +    <hv ts="2020-03-15T11:00:00+00:00i="P1D"> 
-         {   +      <n1:v>2.7</n1:v> 
-            "m_Item1":"689e32fa-24a2-448e-9374-6158e6e6cb15", //DB Provider ID - don't change it +    </hv> 
-            "m_Item2":"62cf4083-31ed-4bc1-be25-044ba837a9f0"  //Datapoint ID - different for each datapoint +    <hv ts="2020-03-16T11:00:00+00:00i="P1D"> 
-         }, +      <n1:v>3.0</n1:v> 
-           +    </hv> 
-            "m_Item1":"689e32fa-24a2-448e-9374-6158e6e6cb15", //DB Provider ID - don't change it +    <hv ts="2020-03-17T11:00:00+00:00i="P1D"
-            "m_Item2":"2ec7ddcb-17b5-4a6e-81da-a4b6e6f6fb11"  //Datapoint ID - different for each datapoint +      <n1:v>2.0</n1:v> 
-         } +    </hv> 
-      ] +    <hv ts="2020-03-18T11:00:00+00:00i="P1D"
-   } +      <n1:v>2.3</n1:v> 
-} +    </hv> 
-</code>+  </vals> 
 +</setHistoryRequest></code>
  
 **Response** **Response**
 +
 +   * 200 OK
 +
 +====api/set/executeActions====
 +
 +**Request**
 +
 +   * URL: /api/set/executeActions?format=xml
 +   * Method: POST
 +   * Content-Type: text/xml
  
 <code xml> <code xml>
-<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="UTF-8"?> 
-<globalResponse xmlns:r="http://dev.rcware.eu/serialization/references" xmlns:n1="http://dev.rcware.eu/scada/getHistoryV2/response" xmlns:n2="http://dev.rcware.eu/scada/datapoints" xmlns:n3="http://dev.rcware.eu/scada/history" xmlns:n4="http://dev.rcware.eu/scada/basic-props" xmlns="http://dev.rcware.eu/core/globalRequestResponse"> +<executeActionsRequest xmlns="http://dev.rcware.eu/scada/action-defs 
-    <result code="0" codeTxt="Ok" desc="" dataType="" /> +xmlns:n2="http://dev.rcware.eu/scada/basic-props 
-    <data n1:count="2" n1:nextOffset="-1" n1:nextVariableOffset="-1" n1:nextHistoryState="" r:type="d70d8bcb-04a7-4bca-a626-4f6dd466c6e0"+xmlns:n1="http://dev.rcware.eu/auth 
-        <n1:providerHistories> +xmlns:r="http://dev.rcware.eu/serialization/references"> 
-            <n1:providerHistories providerId="689e32fa-24a2-448e-9374-6158e6e6cb15"> +  <n1:cred t="xxxxx"/> <!-- token --> 
-                <n1:dpHistories+  <actionDefs projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0"> 
-                    <n2:pl> +    <actions
-                        <n2:p n="Outputu="hod" r:type="b133774d-21ce-42b6-add3-57c012079c55"> +      <actionDefItem propName="INITdpId="afc22e18-f8e4-4e08-899c-fb9e4759df3d"> 
-                            <n3:hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0" dpId="2ec7ddcb-17b5-4a6e-81da-a4b6e6f6fb11" propName="Output" interval="PT3M" historyState="" nextValOfs="-1"> +        <execParam r:type="495c9644-eed1-4b94-933b-3fae702a9aca"> 
-                                <n3:errMsg></n3:errMsg+          <n2:value>16</n2:value
-                                <n3:vals+        </execParam
-                                    <n3:hv ts="2018-10-23T16:27:41.5932104Zgt="2018-10-25T09:15:42.1992342Z"> +      </actionDefItem> 
-                                        <n4:v>11979</n4:v+      <actionDefItem propName="ZAPdpId="34306c80-73f1-4465-ab51-2b2c1e85ab70"> 
-                                    </n3:hv+      </actionDefItem
-                                </n3:vals+    </actions
-                            </n3:hist> +  </actionDefs
-                        </n2:p+</executeActionsRequest></code
-                        <n2:p n="Outputu="hod" r:type="b133774d-21ce-42b6-add3-57c012079c55"> + 
-                            <n3:hist projId="5abf8ca0-94ba-48df-8d3c-7ebe87a12fd0dpId="62cf4083-31ed-4bc1-be25-044ba837a9f0propName="Outputinterval="PT3MhistoryState="" nextValOfs="-1"> +**Response** 
-                                <n3:errMsg></n3:errMsg> + 
-                                <n3:vals+<code xml><?xml version="1.0encoding="utf-8"?
-                                    <n3:hv ts="2018-10-24T12:48:42.1926956Zgt="2018-10-24T15:06:41.9453803Z"+<executeActionsResponse xmlns:r="http://dev.rcware.eu/serialization/referencescode="Okmessage="OKxmlns="http://dev.rcware.eu/scada/error-reporting/></code> 
-                                        <n4:v>12702</n4:v> + 
-                                    </n3:hv> +====api/get/values==== 
-                                </n3:vals> + 
-                            </n3:hist> +Nejvhodnější způsob vyčtení aktuálních hodnot datových bodů (property "Output") z jednoho nebo více projektů. 
-                        </n2:p> + 
-                    </n2:pl> +**Request** 
-                </n1:dpHistories> + 
-            </n1:providerHistories> +   * URL: /api/get/values?format=xml 
-        </n1:providerHistories> +   * MethodPOST 
-    </data> + 
-</globalResponse>+<code javascript
 +
 + "cred": 
 +  "t": "xxxxxx" //token 
 + }, 
 + "propNamesToSerialize"["Output"], 
 + "offset"0, 
 + "count"1000, 
 + "serverState"null, 
 + "dps"[{ 
 +   "projId""ba1a92f7-f213-4a72-90e4-f7142b50274b", 
 +   "dpIds"["e089dde2-a097-4e0d-8012-c8cf3dc62694", "1089dde2-a097-4e0d-8012-c8cf3dc62696"] 
 +  } 
 + ] 
 +} 
 </code> </code>
 +
 +**Response**
 +
 +<code xml><?xml version="1.0" encoding="utf-8"?>
 +<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">
 + <vals>
 +  <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>
 +
  
  
  • © Energocentrum Plus, s.r.o. 2017 - 2024