NEWS
[Gelöst Blockly] Javascript Adapter hängt sich bei Skript auf
-
Hallo zusammen,
ich habe seit einigen Wochen immer mal wieder das Problem, dass sich mein Javascript Adapter aufhängt und einen Log auswirft.
So wie es für mich aussieht, kommt er mit dem Skript des Wandtablets nicht klar. Kann einer einen Fehler erkennen? Oder kann mir einer verraten, wie ich das Skript anders verpacken kann?
Hier der Auszug des Logs:
! ````
host.raspberrypi 2017-12-19 19:50:49.828 error instance system.adapter.javascript.0 terminated with code 0 (OK)
Caught 2017-12-19 19:50:49.826 error by controller[1]: [ReferenceError: e is not defined]
Caught 2017-12-19 19:50:49.825 error by controller[0]: [ReferenceError: e is not defined]
javascript.0 2017-12-19 19:50:49.785 error at TCP._onclose (net.js:487:12)
javascript.0 2017-12-19 19:50:49.785 error at Socket.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.785 error at emitOne (events.js:82:20)
javascript.0 2017-12-19 19:50:49.785 error at Socket.socketCloseListener (_http_client.js:245:9)
javascript.0 2017-12-19 19:50:49.785 error at ClientRequest.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.785 error at emitOne (events.js:77:13)
javascript.0 2017-12-19 19:50:49.785 error at Request.onRequestError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:878:8)
javascript.0 2017-12-19 19:50:49.785 error at Request.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.785 error at emitOne (events.js:77:13)
javascript.0 2017-12-19 19:50:49.785 error at Request. (script.js.Programme.Tablet_einschalten:7:113)
javascript.0 2017-12-19 19:50:49.785 error ReferenceError: e is not defined
javascript.0 2017-12-19 19:50:49.783 error uncaught exception: e is not defined
javascript.0 2017-12-19 19:50:49.777 error at emitErrorNT (net.js:1269:8)
javascript.0 2017-12-19 19:50:49.777 error at Socket.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.777 error at emitOne (events.js:77:13)
javascript.0 2017-12-19 19:50:49.777 error at Socket.socketErrorListener (_http_client.js:269:9)
javascript.0 2017-12-19 19:50:49.777 error at ClientRequest.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.777 error at emitOne (events.js:77:13)
javascript.0 2017-12-19 19:50:49.777 error at Request.onRequestError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:878:8)
javascript.0 2017-12-19 19:50:49.777 error at Request.emit (events.js:169:7)
javascript.0 2017-12-19 19:50:49.777 error at emitOne (events.js:77:13)
javascript.0 2017-12-19 19:50:49.777 error at Request. (script.js.Programme.Tablet_einschalten:7:113)
javascript.0 2017-12-19 19:50:49.777 error ReferenceError: e is not defined
javascript.0 2017-12-19 19:50:49.769 error uncaught exception: e is not definedNachfolgend das Skript: ![2044_blockly.jpg](/assets/uploads/files/2044_blockly.jpg) Jemand eine Idee? Grüße, Stefan
-
Ich kann zur Lösung leider nicht beitragen, ich kann dir nur erstmal raten, eine weitere Javascript-Instanz zu installieren und dieses Blockly da rein schieben (einfach in der Liste von "0" auf "1" z.B. stellen).
Bei diesem Request scheint irgendwas faul zu sein, ich habe diesen Fehler auch genau bei solch einer Aktion mit URL zu Tasker, aber eben auch nicht immer.
Vielleicht kann ja einer der Wissenden was dazu sagen. :?
Enrico
-
Hat du logs wen der Fehler Auftritt?
Ich habe da eine Vermutung, nämlich das die url nicht erreichbar ist und dadurch die Instanz crasht.
In javascript könnte man das mit einen try/Catch abfangen.
Poste Mal bitte den Code der durch dieses blockly generiert wird
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindestens Umsatz 10% für die community
-
Hat du logs wen der Fehler Auftritt? `
Na klar :
! ```
2017-12-19 08:19:51.574 - [31merror[39m: Caught by controller[0]: ReferenceError: e is not defined 2017-12-19 08:19:51.580 - [31merror[39m: Caught by controller[0]: at Request. <anonymous>(script.js.Komfort-Steuerungen.Display_Tablets:24:113) 2017-12-19 08:19:51.581 - [31merror[39m: Caught by controller[0]: at emitOne (events.js:96:13) 2017-12-19 08:19:51.581 - [31merror[39m: Caught by controller[0]: at Request.emit (events.js:188:7) 2017-12-19 08:19:51.582 - [31merror[39m: Caught by controller[0]: at Request.onRequestError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:884:8) 2017-12-19 08:19:51.582 - [31merror[39m: Caught by controller[0]: at emitOne (events.js:96:13) 2017-12-19 08:19:51.582 - [31merror[39m: Caught by controller[0]: at ClientRequest.emit (events.js:188:7) 2017-12-19 08:19:51.582 - [31merror[39m: Caught by controller[0]: at Socket.socketErrorListener (_http_client.js:310:9) 2017-12-19 08:19:51.583 - [31merror[39m: Caught by controller[0]: at emitOne (events.js:96:13) 2017-12-19 08:19:51.583 - [31merror[39m: Caught by controller[0]: at Socket.emit (events.js:188:7) 2017-12-19 08:19:51.583 - [31merror[39m: Caught by controller[0]: at emitErrorNT (net.js:1281:8) 2017-12-19 08:19:51.583 - [31merror[39m: Caught by controller[1]: ReferenceError: e is not defined 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at Request. <anonymous>(script.js.Komfort-Steuerungen.Display_Tablets:24:113) 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at emitOne (events.js:96:13) 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at Request.emit (events.js:188:7) 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at Request.onRequestError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:884:8) 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at emitOne (events.js:96:13) 2017-12-19 08:19:51.584 - [31merror[39m: Caught by controller[1]: at ClientRequest.emit (events.js:188:7) 2017-12-19 08:19:51.585 - [31merror[39m: Caught by controller[1]: at Socket.socketCloseListener (_http_client.js:286:9) 2017-12-19 08:19:51.585 - [31merror[39m: Caught by controller[1]: at emitOne (events.js:101:20) 2017-12-19 08:19:51.585 - [31merror[39m: Caught by controller[1]: at Socket.emit (events.js:188:7) 2017-12-19 08:19:51.585 - [31merror[39m: Caught by controller[1]: at TCP._handle.close [as _onclose] (net.js:497:12) 2017-12-19 08:19:51.585 - [31merror[39m: host.SMARTHOME-PC instance system.adapter.javascript.1 terminated with code 0 (OK) 2017-12-19 08:19:51.585 - [32minfo[39m: host.SMARTHOME-PC Restart adapter system.adapter.javascript.1 because enabled 2017-12-19 08:20:21.631 - [32minfo[39m: host.SMARTHOME-PC instance system.adapter.javascript.1 started with pid 16524 2017-12-19 08:20:23.753 - [32minfo[39m: javascript.1 starting. Version 3.4.0 in /opt/iobroker/node_modules/iobroker.javascript, node: v6.12.0 2017-12-19 08:20:23.770 - [32minfo[39m: javascript.1 requesting all states 2017-12-19 08:20:23.774 - [32minfo[39m: javascript.1 requesting all objects 2017-12-19 08:20:26.281 - [32minfo[39m: javascript.1 received all states 2017-12-19 08:20:28.070 - [32minfo[39m: javascript.1 received all objects 2017-12-19 08:20:28.357 - [32minfo[39m: javascript.1 Start javascript script.js.Anwesenheit.Anwesenheit_Familie/Zustaende 2017-12-19 08:20:28.428 - [32minfo[39m: javascript.1 script.js.Anwesenheit.Anwesenheit_Familie/Zustaende: registered 9 subscriptions and 1 schedule 2017-12-19 08:20:28.430 - [32minfo[39m: javascript.1 Start javascript script.js.Komfort-Steuerungen.Display_Tablets 2017-12-19 08:20:28.448 - [32minfo[39m: javascript.1 script.js.Komfort-Steuerungen.Display_Tablets: registered 1 subscription and 2 schedules[/code]</anonymous></anonymous>
! Und hier noch das Script:
!
! Den Javascript-Absturz habe ich erst seitdem ich diesen Teil aus der CCU2 in ein Script übernommen habe.
! Enrico
! Edit: Das wäre der Code-Teil zu diesem Blockly-Abschnitt:
! >![spoiler]~~[code]~~}); // Anwesenheit Tasker on({id: "hm-rega.0.4879"/*Anwesenheit_allgemein_neu_Var*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rega.0.4879").val == true) { try { require("request")('http://192.168.178.46:50000/tasker=Anwesenheit').on("error", function () {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + 'http://192.168.178.46:50000/tasker=Anwesenheit'); } else { try { require("request")('http://192.168.178.46:50000/tasker=Abwesenheit').on("error", function () {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + 'http://192.168.178.46:50000/tasker=Abwesenheit'); } }); [/code]
[/spoiler] -
Poste das Script Mal bitte als Java Code (Knopf oben rechts) ich möchte gerne wissen wie der Code aussieht der generiert wird nicht die Blöcke
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Is das nicht das im Edit??
Enrico
-
Is das nicht das im Edit??
Enrico `
Nope Lehrer Spoiler oder mein tapatalk v Spinnt–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Dann spinnt dein Tapatalk leider, is ja nicht das erste Mal, das es damit Probleme gibt, Da ist auf jeden Fall was drin!
Enrico
-
Hier nochmal ohne Spoiler:
}); // Anwesenheit Tasker on({id: "hm-rega.0.4879"/*Anwesenheit_allgemein_neu_Var*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("hm-rega.0.4879").val == true) { try { require("request")('http://192.168.178.46:50000/tasker=Anwesenheit').on("error", function () {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + 'http://192.168.178.46:50000/tasker=Anwesenheit'); } else { try { require("request")('http://192.168.178.46:50000/tasker=Abwesenheit').on("error", function () {console.error(e);}); } catch (e) { console.error(e); } console.log("request: " + 'http://192.168.178.46:50000/tasker=Abwesenheit'); } });
Enrico
-
Dann spinnt dein Tapatalk leider, is ja nicht das erste Mal, das es damit Probleme gibt, Da ist auf jeden Fall was drin!
Enrico `
Grrr ja hab jetzt in Web geschaut und es ist da…
Ok meine Vermutung ist wieder legt, blockly erstellt einen "try" und "Catch Error" wie es sein soll also daran liegt es nicht.
Da muss dan jemand anders ran mit mehr Ahnung
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Da ist das Problem:
.on("error", function () {console.error(e);});
e ist hier nicht definiert.
Ist dein JS-Adapter aktuell? Ich dachte das Problem wäre bereits behoben.
-
Ich habe da eine Vermutung, nämlich das die url nicht erreichbar ist und dadurch die Instanz crasht.
In javascript könnte man das mit einen try/Catch abfangen.
Poste Mal bitte den Code der durch dieses blockly generiert wird `
Da ist er:
! ````
// Bewegung erkennen
on({id: 'hm-rpc.0.LEQ023XXXX.1.MOTION', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
// URL Befehl senden
try {
require("request")('http://192.168.178.29:50000/tasker=Einschalten').on("error", function () {console.error(e);});
} catch (e) { console.error(e); }
});Javascript Adapter läuft mit Version 3.5.1, ist also leider aktuell. ****"e ist hier nicht definiert."**** Das passt also auch bei mir. Jemand eine Idee, wie ich das umgehen kann? Grüße, Stefan
-
Probier Mal eine Variable die e heißt im Script ein zu führen üppigen, der Fehler selber muss im Adapter gefixed werden, zur Erklärung:
Die Funktion try/Catch mit dem (e) tritt auf wenn irgendwas schief geht mir den http Befehl und sollte Dan einen Absturz des Adapters vermeiden ( try / cach = versuche und fange fehler ab wen einer auftritt) durch die fehlende definition sorgt er jetzt für einen Absturz
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Probier Mal eine Variable die e heißt im Script ein zu führen üppigen, der Fehler selber muss im Adapter gefixed werden, `
Meinst Du so?
-
Nope, nicht als object sondern Variable
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Nope, nicht als object sondern Variable `
So? Stehe wahrscheinlich auf dem Schlauch.
Hier noch der Code zur einfacheren Hilfe.
! var e;
! // Bewegung erkennen
! on({id: 'hm-rpc.0.LEQ023XXXX.1.MOTION', change: "any"}, function (obj) {
! var value = obj.state.val;
! var oldValue = obj.oldState.val;
! // URL Befehl senden
! try {
! require("request")('http://192.168.178.29:50000/tasker=Einschalten').on("error", function () {console.error(e);});
! } catch (e) { console.error(e); }
! e = 0;
! });
! //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbW1lbnQlMjIlMjBpZCUzRCUyMnklNDA0KU8wQ0YlMjUlN0N6KEolN0J5JTNBJTdDdCg2JTIyJTIweCUzRCUyMi0zMTIlMjIlMjB5JTNEJTIyLTIzNyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNPTU1FTlQlMjIlM0VCZXdlZ3VuZyUyMGVya2VubmVuJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyb25fZXh0JTIyJTIwaWQlM0QlMjJ5Z0xvLkoufmIlNDAyJTJCalJydVItTEYlMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFYW55JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQwJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIyRCUyQyU0MFolNUQlM0YlN0QlN0JqJTNBJTdEeSU1QktfQWIzTXAlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJvaWQlMjIlM0VobS1ycGMuMC5MRVEwMjM5NzEwLjEuTU9USU9OJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjIlMkIlNURwKCUzRigyJTVEbktKJTIzY3d1JTYwUiklN0NRJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVVSTCUyMEJlZmVobCUyMHNlbmRlbiUzQyUyRmZpZWxkJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnJlcXVlc3QlMjIlMjBpZCUzRCUyMmklNjAlM0FtRyU1QmdTMUUqVnNXLipySkE1JTIyJTNFJTNDbXV0YXRpb24lMjB3aXRoX3N0YXRlbWVudCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJXSVRIX1NUQVRFTUVOVCUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJMT0clMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlVSTCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJ6QXpqUSU0MCUyRiUyQjAlNUVXcCUyQiU3Q3olMkNjdChjJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRWh0dHAlM0ElMkYlMkYxOTIuMTY4LjE3OC4yOSUzQTUwMDAwJTJGdGFza2VyJTNERWluc2NoYWx0ZW4lM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19zZXQlMjIlMjBpZCUzRCUyMnVST0ozRyU3QlFsUy0lNDBqbjlPc3cqWSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUzRWUlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U=Danke.
-
Genau! Hänge Aber bitte noch war das dran zB Textblock mit irgendwas drin das sollte dann erstmal Abhilfe schaffen
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
Ich habe da eine Vermutung, nämlich das die url nicht erreichbar ist und dadurch die Instanz crasht.
In javascript könnte man das mit einen try/Catch abfangen.
Poste Mal bitte den Code der durch dieses blockly generiert wird `
Da ist er:
! ````
// Bewegung erkennen
on({id: 'hm-rpc.0.LEQ023XXXX.1.MOTION', change: "any"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
// URL Befehl senden
try {
require("request")('http://192.168.178.29:50000/tasker=Einschalten').on("error", function () {console.error(e);});
} catch (e) { console.error(e); }
});Javascript Adapter läuft mit Version 3.5.1, ist also leider aktuell. ****"e ist hier nicht definiert."**** Das passt also auch bei mir. Jemand eine Idee, wie ich das umgehen kann? Grüße, Stefan `
Also 3.5.1 hat den fix. Man muss nur dieses Skript noch mal von Blockly generieren lassen.
An dem Skrip was klein ändern und speichern. Dann soll es gehen.
-
Dann hab ich es jetzt. :lol:
Dankeschön. Werde testen.
Grüße,
Stefan
-
Vielleicht bevor dann````
iobroker u javascirpt