TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
RTDC mit HTML5 und jQuery …

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> Real Time Data Channels (RTDC)
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 12.01.2015, 12:36    Post subject: RTDC mit HTML5 und jQuery … Reply with quote

Hallo Forum.

Auf RTDC-Datenprojekte lässt sich auch problemlos mit einer HTML5-Datei zugreifen, die einfach auf dem eigenen Rechner in einem beliebigen Verzeichnis gespeichert wird. Nehmen wir einfach einmal das folgenden Datenprojekt mit dem Namen TEMP und den beiden Daten-Items T_SSV und T_SC als Beispiel:

Code:
01: {
02:     "do": [
03:         {
04:             "id": 10,
05:             "name": "TEMP",
06:             "desc": "Temperaturfuehler",
07:             "property": {},
08:             "item": [
09:                {
10:                     "id": 49,
11:                     "name": "T_SSV",
12:                     "data": [
13:                         1416655631,
14:                         "18.2"
15:                     ],
16:                     "type": "GAUGE",
17:                     "desc": "Temperatur Demo SSV",
18:                     "property": {
19:                         "unit": "C"
20:                     }
21:                 },
22:                 {
23:                     "id": 50,
24:                     "name": "T_SC",
25:                     "data": [
26:                         1416583523,
27:                         "23.6"
28:                     ],
29:                     "type": "GAUGE",
30:                     "desc": "Temperatur Demo SC",
31:                     "property": {
32:                         "unit": "C"
33:                     }
34:                 }
35:             ]
36:         }
37:     ]
38: }


Durch dieses Datenprojekt ergeben sich die folgenden RTDC-REST-API-Links für HTTP-GET-Zugriffe:

Code:
01: http://<SERVER:PORT>/rtdc/v0/?get=do
02: http://<SERVER:PORT>/rtdc/v0/?get=data
03: http://<SERVER:PORT>/rtdc/v0/?get=do&do=TEMP
04: http://<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SC
05: http://<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SSV


Mit den ersten beiden Links (Zeilen 01 und 02) lässt sich per REST-API-READ mit Hilfe einer HTTP-GET-Abfrage (HTTP-GET-Request) das komplette Datenprojekt abfragen – die HTTP Response liefert im ersten Fall die vollständigen JSON-Daten zum RTDC-Datenprojekt, im zweiten Fall nur die Daten-Items. Mit dem Link in Zeile 03 wird das vollständige Datenobjekt TEMP abgefragt – falls es weitere Datenobjekte in einem Datenprojekt gibt, werden sie in diesem Fall nicht angezeigt. Der Link in Zeile 04 dient zur Abfrage des Daten-Items T_SC im Datenobjekt TEMP, der Link in Zeile 05 bezieht sich auf T_SSV, ebenfalls im Datenobjekt TEMP. In beiden Fällen liefert die jeweilige HTTP-Response die JSON-Daten mit dem betreffenden Item. Hier ein HTML5-Beispiel:

Code:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>   
<style>
table, td, th{
   background-color: #DDDDDD;
   border: 1px solid black;
}
</style>
<script>
var auth_key = '<API KEY>';
var rtdc_url = 'http://<SERVER:PORT>/rtdc/v0/'

/* RTDC REST API READ ... */

function rtdc_get(url, user, value, callback){
   $.ajax({
      url: url,
      crossDomain: true,
      dataType: 'json',
      type: "GET",
      headers: {'X-RTDC-Auth-Key':user},
      data: value,
      success: callback
   });
}

/* Tabelle aus den Daten erstellen ... */

function create_tab(json){
   var $table = $('<table></table>');
   $table.append( '<tr><th>Object</th><th>Item</th><th>Value</th><th>Description</th></tr>' );
   for (var d in json.do) {
       $table.append( '<tr><td>' + json.do[d].name + '</td><td colspan="2"></td><td>' + json.do[d].desc + '</td></tr>' );
       for (var i in json.do[d].item) {
           $table.append( '<tr><td></td><td>' + json.do[d].item[i].name + '</td><td>' + json.do[d].item[i].data[1] + '</td><td>' + json.do[d].item[i].desc + '</td></tr>' );
       }
   }
   $('#here_table').append($table);
}

rtdc_get(rtdc_url, auth_key, {get:"do"}, create_tab);

</script>
</head>
<body>
RTDC read demo
<div id="here_table"></div>
</body>
</html>


Speichert man diesen HTML-Code zum Beispiel auf einem Windows-PC in einer Datei mit dem Namen rtdc-get-td.html und ersetzt die Platzhalter für <SERVER:PORT> und <API KEY> durch gültige Zeichenfolgen, erfolgt nach einem Doppel-Klick im Datei-Explorer auf den Dateinamen der Aufruf eines Webbrowsers mit anschließendem Zugriff auf den folgenden Link:

Code:
http://<SERVER:PORT>/rtdc/v0/?get=do


Das Beispiel benutzt jQuery (http://jquery.com/). Als Ausgabe wird eine Tabelle mit fünf Spalten im Browserfenster angezeigt. Alle in einem Datenprojekt vorhandenen Datenobjekte und alle Daten-Items bzw. deren aktuelle Werte werden in der Tabelle ausgegeben.

Gruß KDW


Last edited by kdw on 15.01.2015, 06:56; edited 1 time in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 13.01.2015, 07:43    Post subject: jQuery … Reply with quote

Hallo Forum.

Der wichtige Baustein in dem HTML-GET-Request-Beispiel weiter oben ist die JavaScript-Funktion

Code:
01: function rtdc_get(url, user, value, callback){
02:    $.ajax({
03:       url: url,
04:       crossDomain: true,
05:       dataType: 'json',
06:       type: "GET",
07:       headers: {'X-RTDC-Auth-Key':user},
08:       data: value,
09:       success: callback
10:    });
11: }


Hier werden die jQuery-AJAX-Funktionen genutzt, um einen GET-Request an einen x-beliebigen Server im Internet zu schicken. Verantwortlich dafür ist die Zeile 04 „crossDomain: true“. Siehe auch: http://api.jquery.com/jquery.ajax/

Die JavaScript-Funktion rtdc_get führt den HTTP-GET-Request aus und ruft im Erfolgsfall (JSON-Daten vom RTDC-Server per HTTP-Response erhalten) die Callback-Funktion create_tab auf:

Code:
01: function create_tab(json){
02:    var $table = $('<table></table>');
03:    $table.append( '…' );
04:    for (var d in json.do) {
05:        $table.append( '…' );
06:        for (var i in json.do[d].item) {
07:            $table.append( '…' );
08:        }
09:    }
10:    $('#here_table').append($table);
11: }


In create_tab werden die kompletten JSON-Daten der HTTP-Response gelesen und in eine Tabelle umgewandelt. Diese wird abschließen als Ergebnis angezeigt.

Gruß KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 15.01.2015, 07:24    Post subject: HTTP-PUT-Request … Reply with quote

Hallo Forum.

Auch eine HTTP-PUT-Anfrage (REST-Operation UPDATE per HTTP-PUT-Request) ist selbstverständlich per HTML5 und jQuery möglich. Hier ein Beispiel:

Code:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>   
<style>
table, td, th{
   background-color: #DDDDDD;
   border: 1px solid black;
}
</style>
<script>
var auth_key = '<API KEY1>';
var acc_key = '<API KEY2>';
var rtdc_url = 'http://<SERVER:PORT>/rtdc/v0/'

/* RTDC REST API UPDATE ... */

function rtdc_put(url, user, pass, value, callback){
   $.ajax({
      url: url,
      crossDomain: true,
      dataType: 'json',
      type: "PUT",
      headers: {'X-RTDC-Auth-Key':user,'X-RTDC-Access-Key':pass},
      contentType: "application/json; charset=utf-8",
      data: JSON.stringify(value),
      success: callback
   });
}

rtdc_put(rtdc_url, auth_key, acc_key, <JSON DATA>, function(d){alert('RTDC update done');});
</script>
</head>
<body>
RTDC update demo
</body>
</html>


Speichert man diesen HTML-Code zum Beispiel auf einem Windows-PC in einer Datei mit dem Namen rtdc-put-td.html und ersetzt die Platzhalter für <SERVER:PORT>, <API KEY1>, <API KEY2> und <JSON DATA> durch gültige Zeichenfolgen, erfolgt nach einem Doppel-Klick im Datei-Explorer auf den Dateinamen der Aufruf eines Webbrowsers mit anschließendem Zugriff auf den folgenden Link:

Code:
http://<SERVER:PORT>/rtdc/v0/


Wenn zum Beispiel im Datenobjekt TEMP das Daten-Item T_SC mit einem neuen Wert versehen werden soll, wäre z. B. folgende Zeichenfolge

Code:
{do:[{name:"TEMP",item:[{name:"T_SC",data:"31.8"}]}]}


als Ersatz für den Platzhalter <JSON DATA> erforderlich.

Gruß KDW
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> Real Time Data Channels (RTDC) All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015