NEWS
Fehlerhafte Json-Abfrage - Bitte um Hilfe
-
Guten Abend,
ich möchte mit dem Befehl````
http://192.168.178.58/api/auth/login.json?user=Administator3&pwd=Password_3Wenn ich diesen Befehl händisch eingebe erhalte ich folgende Ausgabe im Browser:```` { "SessionId": "1eef474c-a06f-4d30-8704-07bb64aeee05", "Result": { "Success": "true" } }
Zur Abrage verwende ich folgendes Script:
! var request = require("request");
! // JSON zum testen
! var myJson = {"SessionId": "6dff6df9-3cb7-4724-bb64-849d4b2df209",};
! var llog = true; // loging ein/aus (true/false)
! // url der auslzulesenden Daten
! var url = 'http://192.168.178.58/api/auth/login.js … Password_3';
! // in welchem Zeitintervall soll die ABfrage wiederholt werden
! var zeitintervall = "*/2 * * * *"; // alle 2 Minuten die Abfrage wiederholen
! // Pfad der Datenpunkte innerhalb der Javascriptinstanz
! var pfad = "Heizung" + ".";
! // Datenpunkte
! var SessionId = pfad + "SessionId_OZW";
! createState(SessionId, 0, {
! name: 'SessionId_OZW',
! desc: 'SessionId_OZW',
! type: 'string',
! role: 'value',
! unit: ''
! });
! function parseJson(text) {
! if (text === "") return {};
! try {
! json = JSON.parse(text);
! } catch (ex) {
! json = {};
! }
! if(!json) json = {};
! return json;
! }
! function readJson(url, callback) {
! request(url, function (err, state, body){
! if (body) {
! var json = parseJson(body);
! callback(null, json);
! } else {
! var error = "(" + err + ") ERROR bei Abfrage von: " + url;
! log(error, "warn");
! callback(error, null);
! }
! });
! }
! function jsonInDatenpunkteSchreiben(myJson) {
! if (llog) log("SessionId_OZW: " + myJson.SessionId,"info");
! setState(SessionId ,myJson.SessionId);
! }
! function main() {
! readJson(url, function(err,json) {
! if(!err) {
! jsonInDatenpunkteSchreiben (json);
! } else {
! log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
! }
! });
! }
! // zeitlich die Abfrage wiederhohlen
! schedule(zeitintervall, function () {
! main();
! });
! // Beim Skriptstart die Werte abfragen
! setTimeout(main,2000);
! //setTimeout(jsonInDatenpunkteSchreiben (myJson),2000); // zum Testen des Beispiel-JSONs
Anscheinend funktioniert auch alles. Das Objekt wird angelegt und eine 36-stellige SessionID wird als SessionId_OZW gespeichert.Zum Test habe ich dann mal die gespeicherte SessionId_OZW dann mal für einen weiteren händischen Abfragebefehl benutzt.````
http://192.168.178.58/api/menutree/read_datapoint.json?SessionId=bf71542c-a677-4d40-9b39-120ca406a149&Id=1143Daraufhin erhalte ich die Meldung:```` { "Result": { "Success": "false", "Error": { "Txt": "session not valid", "Nr": "2" } } }
Wenn ich jedoch eine händische Abfrage mache
http://192.168.178.58/api/auth/login.json?user=Administator3&pwd=Password_3
und dann die dort angezeigte SessionID mit der Eingabehttp://192.168.178.58/api/menutree/read_datapoint.json?SessionId=bf71542c-a677-4d40-9b39-120ca406a149&Id=1143
verwende erhalte ich die richtige Antwort````
{
"Data":
{"Type": "Numeric", "Value": " 10.4", "Unit": "°C" }, "Result": { "Success": "true" }
}
Also werden wohl mit dem Script fehlerhafte SessionId_OZW erzeugt? Deshalb meine Fragen: Habe ich Fehler in dem Script ? (falsche Deklaration, fehlerhafte Variablen usw.) oder Muss eventuell eine Verzögerung oder Pause in das Script eingearbeitet werden ? Wenn ja, wo und wie ? oder Kann es an der URL liegen ? Ich frage hier einen Siemens-Webserver ab. Eigentlich kann man nur "https://"-Adressen abfragen. Man kann bei diesem Webserver aber auch "Web-Zugang via http" zulassen, Das habe ich gemacht. Wie kann man mit Javascript "https://"-Abfragen machen ? Gibt es so etwas wie "-no-check-certificate" ? Bitte entschuldigt meine Amateurfragen aber ich bin blutiger Anfänger. Vielen Dank
-
Hi Gerry, ich probiere auch noch den Fehler in anderen Script zu finden was ich erstellt hatte nur da mir die source fehlt ist das mühsam.
Was für ein Gerät ist das genau, könnte ich oder jemand das Mal Lokal nachbauen?
–-----------------------
Send from mobile device
-
Informationen zu dem Webserver findest Du hier :
http://www.buildingtechnologies.siemens … 2_001.aspx
und hier :
http://www.siemens.com/download?A6V10743816
> könnte ich oder jemand das Mal Lokal nachbauen?
Das kann ich leider nicht beurteilen.Ich nutze dieses Teil momentan in Verbindung mit der CCU2 und kann dort Datenpunkte abfragen, loggen und verändern.
Eigentlich wollte ich nur von der CCU2 auf den Raspi mit ioBroker "umziehen" - vor allem wegen der Visualisierung und um die CCU2 zu entlasten.
-
Ok eventuell jemand noch eine Idee? Ich Schau sonst Mal was am Wochenende anliegt maar wieder zu viel Project (Arbeit und privat :/)
–-----------------------
Send from mobile device