NEWS
Heizungssteuerung mit Siemens-Webserver OZW 672
-
Leider wieder eine Fehlermeldung : [error] javascript.0 script.js.Skript6: TypeError: Cannot read property 'SessionId' of undefined
-
Leider wieder eine Fehlermeldung : [error] javascript.0 script.js.Skript6: TypeError: Cannot read property 'SessionId' of undefined ` ]
die generierte URL stimmer aber hoffe ich, mach mal:
schedule("*/1 * * * *", function () { var objekt; //Username und password variable setzen var username = "deinusername"; var password = "deinpassword"; var sessionID; log('https://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password); });
und gebe das resultat in deinem browser ein, dan muesstest du die ausgabe in deinem browser bekommen:
{ "SessionId": "zuefaelligeID", "Result": { "Success": "true" } }
-
Ich bekomme das````
{"SessionId": "895ef41c-cd0f-4468-b88f-3a9e1a66576d", "Result": { "Success": "true" }
}
Es wurde dieser Link erzeugt: javascript.0 script.js.Skript7: [https://192.168.178.58/api/auth/login.j … Password.2](https://192.168.178.58/api/auth/login.json?user=Administrator2&pwd=Password.2) Username (Administrator2) und Passwort (Password.2) stimmen
-
Ok morgen weiter da stimmt was nicht in meine parse Script
Ist halt schwer blind zu Coden
–-----------------------
Send from mobile device
-
Ich glaube das ich den Fehler gefunden habe.
Wenn ich
//Session ID in variable speichern sessionID = object.SessionId; //Session ID ins log schreiben log (sessionID);
direkt unter````
objekt = JSON.parse(results);Hier nochmal das komplette Script mit ein paar Test-log`s```` schedule("*/1 * * * *", function () { var objekt; //Username und password variable setzen var username = "Admin3"; var password = "Password_3"; var sessionId; //(TEST) log('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password); //URL request fuer die session ID try { require("request") ('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password, function (error, response, results) { objekt = JSON.parse(results); //(TEST)results ins log schreiben log (results); //Session ID in variable speichern sessionId = objekt.SessionId; //Session ID ins log schreiben log (sessionId); //(TEST)URL zur Json-Abfrage der Außentemperatur (Id=1143) erzeugen log('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143'); }); } catch (e) { console.error(e); } }); ````Und hier die Log-Datei: ` > 00:10:00.593 [info] javascript.0 Start javascript script.js.test32 > > 00:10:00.594 [info] javascript.0 script.js.test32: registered 0 subscriptions and 1 schedule > > 00:10:00.594 [info] javascript.0 script.js.test32: [http://192.168.178.58/api/auth/login.js … Password_3](http://192.168.178.58/api/auth/login.json?user=Admin3&pwd=Password_3) > > 00:10:01.681 [info] javascript.0 script.js.test32: { "SessionId": "1cb30bc6-ea9f-43d7-878d-afda7943a5a1", "Result": { "Success": "true" } } > > 00:10:01.683 [info] javascript.0 script.js.test32: 1cb30bc6-ea9f-43d7-878d-afda7943a5a1 > > 00:10:01.683 [info] javascript.0 script.js.test32: [http://192.168.178.58/api/menutree/read … a1&Id=1143](http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=1cb30bc6-ea9f-43d7-878d-afda7943a5a1&Id=1143) > > 00:10:37.880 [info] javascript.0 Stop script script.js.test32 ` Aber leider funktioniert die erzeugte URL zur Abfrage des Datenpunktes nicht. Ich erhalte eine "session not valid" Meldung.
-
ehm ja du hast den fehler gefunden war auch bloede von mir um die log variable auserhalb der function ab zu fragen das kan natuerlich nicht gehen
warum jezt aber die meldung "session not valid" kommt ist mor nicht ganz klar, eventuell kan man dieselbe session ID nicht abfragen UND im browser aufrufen
was passiert den wen du einfach in der function die abfrager der URL zur temperatur hinzufuegst, dieser code hier sollte das machen.
Ist eine erweiterung deines codes mit abfrage der URL temperatur und schreiber der varible value aus der JSON ins log:
schedule("*/1 * * * *", function () { var objekt; //Username und password variable setzen var username = "Admin3"; var password = "Password_3"; var sessionId; var value //(TEST) log('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password); //URL request fuer die session ID try { require("request") ('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password, function (error, response, results) { objekt = JSON.parse(results); //(TEST)results ins log schreiben log (objekt); //Session ID in variable speichern sessionId = objekt.SessionId; //Session ID ins log schreiben log (sessionId); //(TEST)URL zur Json-Abfrage der Außentemperatur (Id=1143) erzeugen log('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143'); // URL der Temperatur abfragen und in eine variable schreiben require("request") ('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143'){ objekt = JSON.parse(results); value = objekt.Value; log (objekt) log(value) }}); } catch (e) { console.error(e); } });
-
Leider wieder ein error.
` > Log13:23:14.920 [info] javascript.0 Start javascript script.js.test33
13:23:14.921 [error] javascript.0 script.js.test33 compile failed: SyntaxError: Unexpected token { `
-
hatte einen fehler in der request function, nochmal:
schedule("*/1 * * * *", function () { var objekt; //Username und password variable setzen var username = "Admin3"; var password = "Password_3"; var sessionId; var value; //(TEST) log('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password); //URL request fuer die session ID try { require("request") ('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password, function (error, response, results) { objekt = JSON.parse(results); //(TEST)results ins log schreiben log (objekt); //Session ID in variable speichern sessionId = objekt.SessionId; //Session ID ins log schreiben log (sessionId); //(TEST)URL zur Json-Abfrage der Außentemperatur (Id=1143) erzeugen log('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143'); // URL der Temperatur abfragen und in eine variable schreiben require("request") ('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143', function (error, response, results){ objekt = JSON.parse(results); value = objekt.Value; log (objekt); log(value); }); }); } catch (e) { console.error(e); } });
-
` > Log
13:58:33.457 [info] javascript.0 Start javascript script.js.test34
13:58:33.458 [info] javascript.0 script.js.test34: registered 0 subscriptions and 1 schedule
13:59:00.463 [info] javascript.0 script.js.test34: http://192.168.178.58/api/auth/login.js … Password_3
13:59:01.471 [info] javascript.0 script.js.test34: [object Object]
13:59:01.472 [info] javascript.0 script.js.test34: 6e35b358-92a5-4e38-ba99-636db9829d64
13:59:01.472 [info] javascript.0 script.js.test34: http://192.168.178.58/api/menutree/read … 64&Id=1143
13:59:01.525 [info] javascript.0 script.js.test34: [object Object]
13:59:01.526 [info] javascript.0 script.js.test34: undefined
13:59:06.980 [info] javascript.0 Stop script script.js.test34 `
-
Ich habe unten mal ein````
log (results);Leider erhalte ich den "valid"-Fehler.
Log
14:47:49.788 [info] javascript.0 Stop script script.js.test34
14:47:50.050 [info] javascript.0 Start javascript script.js.test34
14:47:50.051 [info] javascript.0 script.js.test34: registered 0 subscriptions and 1 schedule
14:48:00.173 [info] javascript.0 script.js.test34: http://192.168.178.58/api/auth/login.json?user=Admin3&pwd=Password_3
14:48:01.068 [info] javascript.0 script.js.test34: [object Object]
14:48:01.070 [info] javascript.0 script.js.test34: 1c8248fb-ead5-40db-8304-99e536d23193
14:48:01.070 [info] javascript.0 script.js.test34: http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=1c8248fb-ead5-40db-8304-99e536d23193&Id=1143
14:48:01.126 [info] javascript.0 script.js.test34: { "Result": { "Success": "false", "Error": { "Txt": "session not valid", "Nr": "2" } } }
14:48:01.128 [info] javascript.0 script.js.test34: [object Object]
14:48:01.128 [info] javascript.0 script.js.test34: undefinedAuf der CCU2 hole ich die SessionId so:```` var url = "https://192.168.178.58/api/auth/login.json?user=Administrator&pwd=Password.2"; dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q --no-check-certificate -O - '"#url#"'"); dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1); string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); ! if ( (srueck.Find("false") == -1) && (srueck) ) { string tmpa = srueck.StrValueByIndex(",",0).StrValueByIndex(":",1); string sSID = tmpa.Substr(2, tmpa.Length()-3); WriteLine(" SessionID erfolgreich geholt:"#sSID);
Wenn ich es hier mit ioBroker nicht hinbekomme dann muss ich das Script wohl auf der CCU2 weiter laufen lassen und die SessionId von dort an ioBroker übergeben. Das müsste doch gehen.
-
Es liegt nicht am ioBroker sondern unserer Dummheit
Ich verstehe nur nicht wo der Fehler liegt die Session ID sieht ok aus, trotzdem schluckt er die nicht
–-----------------------
Send from mobile device
-
Probier Mal objekt.Data.Value anstatt Objekt.Value
–-----------------------
Send from mobile device
-
Ich habe bei der zweiten Abfrage die Apostroph durch Anführungszeichen ersetzt.````
schedule("*/1 * * * *", function () {
var objekt;//Username und password variable setzen var username = "Admin3"; var password = "Password_3"; var sessionId; var value; //(TEST) log('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password); //URL request fuer die session ID try { require("request") ('http://192.168.178.58/api/auth/login.json?user=' + username + '&pwd=' + password, function (error, response, results) { objekt = JSON.parse(results); //(TEST)results ins log schreiben log (objekt); //Session ID in variable speichern sessionId = objekt.SessionId; //Session ID ins log schreiben log (sessionId); //(TEST)URL zur Json-Abfrage der Außentemperatur (Id=1143) erzeugen log('http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=' + sessionId + '&Id=1143'); // URL der Temperatur abfragen und in eine variable schreiben require("request") ("http://192.168.178.58/api/menutree/read_datapoint.json?SessionId=" + sessionId + "&Id=1143", function (error, response, results){ objekt = JSON.parse(results); log (results); value = objekt.Data.Value; log(value); }); }); } catch (e) { console.error(e); }
});
ergibt folgendes Log: ` > Log > > 01:14:10.660 [info] javascript.0 Start javascript script.js.test40 > > 01:14:10.661 [info] javascript.0 script.js.test40: registered 0 subscriptions and 1 schedule > > 01:15:00.661 [info] javascript.0 script.js.test40: [http://192.168.178.58/api/auth/login.js … Password_3](http://192.168.178.58/api/auth/login.json?user=Admin3&pwd=Password_3) > > 01:15:01.563 [info] javascript.0 script.js.test40: [object Object] > > 01:15:01.564 [info] javascript.0 script.js.test40: 04b3cec8-5e9b-4792-95c1-85dbfdd7cf0d > > 01:15:01.565 [info] javascript.0 script.js.test40: [http://192.168.178.58/api/menutree/read … 0d&Id=1143](http://192.168.178.58/api/menutree/read_datapoint.json?sessionId=04b3cec8-5e9b-4792-95c1-85dbfdd7cf0d&Id=1143) > > 01:15:01.894 [info] javascript.0 script.js.test40: { "Data": { "Type": "Numeric", "Value": " 14.2", "Unit": "°C" }, "Result": { "Success": "true" } } > > 01:15:01.897 [info] javascript.0 script.js.test40: 14.2 > > 01:15:08.812 [info] javascript.0 Stop script script.js.test40 `
-
Und siehe da im Log steht jetzt auch der Wert 14.2 also geschafft !
01:15:01.897 [info] javascript.0 script.js.test40: 14.2
Als nästen Schritt wolltest du das jetzt in ein object schreiben und dan alle x Minuten Update ?
–-----------------------
Send from mobile device