Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Fehlerhafte Json-Abfrage - Bitte um Hilfe

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Fehlerhafte Json-Abfrage - Bitte um Hilfe

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gerry22 last edited by

      Guten Abend,

      ich möchte mit dem Befehl````
      http://192.168.178.58/api/auth/login.json?user=Administator3&pwd=Password_3

      
      Wenn 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=1143

      
      Daraufhin erhalte ich die Meldung:````
      {	
      	"Result": {
      		"Success": "false",
      		"Error": {
      			"Txt": "session not valid",
      			"Nr": "2"
      		}
      	}
      }
      

      Wenn ich jedoch eine händische Abfrage machehttp://192.168.178.58/api/auth/login.json?user=Administator3&pwd=Password_3und dann die dort angezeigte SessionID mit der Eingabehttp://192.168.178.58/api/menutree/read_datapoint.json?SessionId=bf71542c-a677-4d40-9b39-120ca406a149&Id=1143verwende 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
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        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

        1 Reply Last reply Reply Quote 0
        • G
          gerry22 last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            445
            Online

            31.7k
            Users

            79.8k
            Topics

            1.3m
            Posts

            2
            4
            697
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo