<<< Vorheriges Thema - Nächstes Thema >>> |
|
Autor |
Nachricht |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 22.11.2014, 13:02 Titel: Wie sieht ein RTDC-Datenprojekt aus? |
|
|
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 |
|
Nach oben |
|
 |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 22.11.2014, 15:06 Titel: Hilfsmittel … |
|
|
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 |
|
Nach oben |
|
 |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 09.12.2014, 22:33 Titel: REST-API-READ mit Node.js … |
|
|
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
Zuletzt bearbeitet von kdw am 02.01.2015, 19:33, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 10.12.2014, 21:21 Titel: REST-API-UPDATE mit Node.js ... |
|
|
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 |
|
Nach oben |
|
 |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 11.12.2014, 15:50 Titel: REST-API-READ mit Python … |
|
|
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
Zuletzt bearbeitet von kdw am 04.01.2015, 16:49, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
 |
kdw

Anmeldedatum: 05.05.2006 Beiträge: 1442
|
Verfasst am: 11.12.2014, 19:18 Titel: REST-API-UPDATE mit Python … |
|
|
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 |
|
Nach oben |
|
 |
|
|
Sie können keine Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum nicht antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht teilnehmen.
|
|