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
Wie sieht ein RTDC-Datenprojekt aus?

 
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: 22.11.2014, 13:02    Post subject: Wie sieht ein RTDC-Datenprojekt aus? Reply with quote

Hallo Forum.

Die wichtigsten RTDC-Bausteine sind das Datenprojekt, die Datenobjekte innerhalb eines Datenprojekts und die einzelnen Daten-Items eines Datenobjekts. Hier ein Beispiel für ein Datenprojekt mit einem Datenobjekt und zwei Items:

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: }


Das Datenobjekt (do) beginnt in Zeile 02 und endet in Zeile 37. Es trägt den Namen TEMP (siehe Zeile 05). In den Zeilen 06 und 07 sind optionale Metadaten zum Datenobjekt gespeichert (siehe desc und property).

Das erste Daten-Item belegt die Zeilen 09 bis 21. Es hat den Namen T_SSV (siehe Zeile 11) und soll eine Temperatur repräsentieren. Der aktuelle Temperaturwert für dieses Item ist in der Zeile 14 (siehe 18.2) abgespeichert. Die Zeilen 16 bis 20 sind die Metadaten dieses Items.

Das zweite Daten-Item beginnt in der Zeile 22 und endet in 34. Dieses Item trägt den Namen T_SC (siehe Zeile 24) und repräsentiert ebenfalls eine Temperatur. Der eigentliche Datenwert dieses Items ist in der Zeile 27 (siehe 23.6) zu finden. In den Zeilen 29 bis 33 sind die Metadaten des Items zu finden.

In den Zeilen 13 und 26 ist der jeweilige Zeitstempel des Items im Unix-Timestamp-Format gespeichert (siehe hierzu auch http://www.convert-unix-time.com/). Über den Zeitstempel wird festgehalten, wann das jeweilige Daten-Item zuletzt mit einem Update versehen wurde – mit anderen Worten: Hier ist gespeichert, wann das Item zuletzt beschrieben wurde. Beispiel: Die Temperatur T_SSV = 18.2 Grad Celsius wurde am 22.11.2014 um 12:27:11 (entspricht 1416655631) geschrieben.

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



Joined: 05 May 2006
Posts: 1460

PostPosted: 22.11.2014, 15:06    Post subject: Hilfsmittel … Reply with quote

Hallo Forum.

Die JSON-Rohdaten eines RTDC-Datenprojekts sind relativ umfangreiche Texte und für den Menschen auf den ersten Blick nicht unbedingt einfach zu überblicken.

Aber es gibt zahlreiche Hilfsmittel. Die meisten davon stehen im Internet kostenlos zur Verfügung, obwohl sie zum Teil durchaus echtes Profiniveau aufweisen. Ein Beispiel ist der „JSON Editor Online“, der über http://www.jsoneditoronline.org/ im Internet zu finden ist. Ein anderes hilfreiches Werkzeug – den „JSON Daten Validator“ – findet man über den Link http://jsonlint.com/. Damit kann man die Syntax der eigenen JSON-Daten prüfen.

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



Joined: 05 May 2006
Posts: 1460

PostPosted: 09.12.2014, 22:33    Post subject: REST-API-READ mit Node.js … Reply with quote

Hallo Forum.

Das Datenobjekt TEMP mit den Daten-Items T_SSV und T_SC in dem eingangs vorgestellten RTDC-Datenprojekt lässt sich zum Beispiel per REST-API-READ mittels einer HTTP-GET-Abfrage (HTTP GET Request) lesen. Hier der JavaScript-Beispiel-Code für Node.js:

Code:
var request = require('request');

// url: 'http://<SERVER:PORT>/rtdc/v0/?get=do'
// url: 'http://<SERVER:PORT>/rtdc/v0/?get=do&do=TEMP'
// url: 'http://<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SC',
// url: 'http://<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SSV'

var options = {
  url: 'http://<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SSV',
  method: 'GET',
  headers: {'X-RTDC-Auth-Key' : '<API KEY>',
            'Content-Type' : 'application/json; charset=utf-8‚}
}

request(options, function(error, response, body){
  if (error) console.log('ERROR: ' + error);
  else {
    console.log("STATUS: ", + response.statusCode);
    console.log("BODY: " + body);
  }
})


Speichert man diesen Code in einer Datei mit dem Namen rtdc_rest_get_td.js und ersetzt die Platzhalter für <SERVER:PORT> und <API KEY> durch gültige Zeichenfolgen, ist über die folgende Kommandozeile die Abfrage des Items T_SSV möglich:

Code:
node rtdc_rest_get_td.js


Gruß KDW


Last edited by kdw on 02.01.2015, 19:33; edited 1 time in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 10.12.2014, 21:21    Post subject: REST-API-UPDATE mit Node.js ... Reply with quote

Hallo Forum.

Die Daten-Items T_SSV und T_SC des Datenobjekt TEMP in dem eingangs vorgestellten RTDC-Datenprojekt lassen sich zum Beispiel per REST-API-UPDATE mittels einer HTTP-PUT-Anfrage (HTTP PUT Request) mit neuen Werten versehen. Hier der JavaScript-Beispiel-Code für Node.js:

Code:
var request = require('request');

// body: new Buffer('<JSON DATA FOR T_SC>')
// body: new Buffer('<JSON DATA FOR T_SSV>')

var options = {
  url: 'http://<SERVER:PORT>/rtdc/v0/',
  method: 'PUT',
  headers: {'X-RTDC-Auth-Key' : '<API KEY1>',
            'X-RTDC-Access-Key' : '<API KEY2>',
            'Content-Type' : 'application/json; charset=utf-8'},
  body: new Buffer('<JSON DATA FOR T_SC>')
}

request(options, function(error, response, body){
  if (error) console.log('ERROR: ' + error);
  else {
    console.log("STATUS: ", + response.statusCode);
    console.log("BODY: " + body);
  }
})


Speichert man diesen Code in einer Datei mit dem Namen rtdc_rest_put_td.js und ersetzt die Platzhalter für <SERVER:PORT>, <API KEY1>, <API KEY2> und <JSON DATA FOR …> durch gültige Zeichenfolgen, ist über die folgende Kommandozeile ein Daten-Update des gewünschten Items möglich:

Code:
node rtdc_rest_put_td.js


Beispiel für <JSON DATA FOR T_SC>
Code:
{"do":[{"name":"TEMP","item":[{"name":"T_SC","data": 12.3}]}]}


Beispiel für <JSON DATA FOR T_SSV>
Code:
{"do":[{"name":"TEMP","item":[{"name":"T_SSV","data": 12.3}]}]}


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



Joined: 05 May 2006
Posts: 1460

PostPosted: 11.12.2014, 15:50    Post subject: REST-API-READ mit Python … Reply with quote

Hallo Forum.

Analog zu dem weiter oben vorgestellten Beispiel in JavaScript für Node.js lässt sich auch Python benutzen, um zum Beispiel per REST-API-READ mittels einer HTTP-GET-Abfrage (HTTP GET Request) im Datenobjekt TEMP die Daten-Items T_SSV und T_SC zu lesen. Hier ein Python-Beispiel-Code:

Code:
import httplib
import socket
# uri: '<SERVER:PORT>/rtdc/v0/?get=do'
# uri: '<SERVER:PORT>/rtdc/v0/?get=do&do=TEMP'
# uri: '<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SC',
# uri: '<SERVER:PORT>/rtdc/v0/?get=data&do=TEMP&item=T_SSV'
try:
    conn = httplib.HTTPConnection('<SERVER>', <PORT>)
    conn.connect()
    request = conn.putrequest('GET',
              '/rtdc/v0/?get=data&do=TEMP&item=T_SSV')
    headers = {}
    headers['X-RTDC-Auth-Key'] = '<API KEY>'
    headers['Content-Type'] = 'application/json; charset=utf-8'
    for item in headers:
        conn.putheader(item, headers[item])
    conn.endheaders()
    response = conn.getresponse()
    print response.status, response.reason
    print response.read()
    conn.close()
except (httplib.HTTPException, socket.error) as ex:
    print 'RTDC service not ready ...'


Speichert man diesen Code in einer Datei mit dem Namen rtdc_rest_get_td.py und ersetzt die Platzhalter für <SERVER:PORT>, <SERVER>, <PORT> und <API KEY> durch gültige Zeichenfolgen, ist über die folgende Kommandozeile die Abfrage des Items T_SSV möglich:

Code:
python rtdc_rest_get_td.py


Gruß KDW


Last edited by kdw on 04.01.2015, 16:49; edited 3 times in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 11.12.2014, 19:18    Post subject: REST-API-UPDATE mit Python … Reply with quote

Hallo Forum.

Analog zu dem weiter oben vorgestellten Node.js-JavaScript-Beispiel lässt sich auch Python benutzen, um zum Beispiel per REST-API-UPDATE mittels einer HTTP-PUT-Anfrage (HTTP PUT Request) die Daten-Items T_SSV und T_SC des Datenobjekt TEMP in dem eingangs vorgestellten RTDC-Datenprojekt mit neuen Werten zu versehen. Hier der Python-Beispiel-Code:

Code:
import httplib
import socket

# body_js = '<JSON DATA FOR T_SC>'
body_js = '<JSON DATA FOR T_SSV>'

try:
    conn = httplib.HTTPConnection('<SERVER>', <PORT>)
    conn.connect()
    request = conn.putrequest('PUT', '/rtdc/v0/')
    headers = {}
    headers['X-RTDC-Auth-Key'] = '<API KEY1>'
    headers['X-RTDC-Access-Key'] = '<API KEY2>'
    headers['Content-Type'] = 'application/json; charset=utf-8'
    headers['Content-Length'] = "%d"%(len(body_js))
    for item in headers:
        conn.putheader(item, headers[item])
    conn.endheaders()
    conn.send(body_js)
    response = conn.getresponse()
    print response.status, response.reason
    print response.read()
    conn.close()
except (httplib.HTTPException, socket.error) as ex:
    print 'RTDC service not ready ...'


Speichert man diesen Code in einer Datei mit dem Namen rtdc_rest_put_td.py und ersetzt die Platzhalter für <SERVER>, <PORT>, <API KEY1>, <API KEY2> und <JSON DATA FOR …> durch gültige Zeichenfolgen, ist über die folgende Kommandozeile ein Daten-Update des gewünschten Items möglich:

Code:
python rtdc_rest_put_td.py


Beispiel für <JSON DATA FOR T_SC>
Code:
{"do":[{"name":"TEMP","item":[{"name":"T_SC","data": 12.3}]}]}


Beispiel für <JSON DATA FOR T_SSV>
Code:
{"do":[{"name":"TEMP","item":[{"name":"T_SSV","data": 12.3}]}]}


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