NEWS
Probleme mit JS Script nach JS-Adapter Update > 7.9.0
-
Ich würde eure Hilfe benötigen, da ich kaum Kenntnisse in JS habe. Ich habe ein Script welches Daten an Thingspeak sendet. Wenn ich den JS-Adapter auf die aktuellste Version update, bekomme ich folgende Fehlermeldungen:
javascript.0 2024-04-13 10:24:30.361 error at process.processTimers (node:internal/timers:512:7) javascript.0 2024-04-13 10:24:30.359 error at listOnTimeout (node:internal/timers:569:17) javascript.0 2024-04-13 10:24:30.356 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3104:34) javascript.0 2024-04-13 10:24:30.354 error at Object.DoThingSpeakRequest (script.js.Thingspeak_1:9:1) javascript.0 2024-04-13 10:24:30.336 error Error in callback: ReferenceError: request is not defined
Ich nutze aktuell die Verson 7.9.0 und diese macht keine Probleme. Das Skript ist wie folgt aufgebaut:
function ExportToThingspeak(ChannelApiKey,Field,FieldValue,TimeOutSek) { var ChannelUrl = "https://api.thingspeak.com/update?api_key="+ChannelApiKey+"&"+Field+"="+FieldValue; setTimeout(DoThingSpeakRequest, TimeOutSek*1000, ChannelUrl); } function DoThingSpeakRequest(ChannelUrl) { request( { url: ChannelUrl, json: true }, function (error, response, body) { log('DoThingSpeakRequest - ChannelUrl: ' + ChannelUrl); } ); } on({id: "deconz.0.Sensors.3.temperature", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field1",value.toString(),20); }); on({id: "deconz.0.Sensors.4.humidity", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field2",value.toString(),40); }); on({id: "deconz.0.Sensors.5.pressure", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field3",value.toString(),60); }); on({id: "deconz.0.Sensors.3.battery", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field5",value.toString(),80); }); on({id: "deconz.0.Sensors.2.lux", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field1",value.toString(),100); }); on({id: "deconz.0.Sensors.2.battery", change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; ExportToThingspeak("XXX","field2",value.toString(),120); });
Die XXX habe ich ersetzt. Das Skript funktioniert problemlos mit Version 7.9.0
Könnt ihr mir da weiterhelfen?
Vielen lieben Dank!
-
@zeron850 sagte: request is not defined
In neuen JS-Versionen ist
request
nicht mehr vordefiniert und man benötigt zu Beginnconst request = require('request');
-
Wäre es nicht sinnvoll auf axios umzustellen, wenn möglich?
-
@thomas-braun sagte: auf axios umzustellen, wenn möglich?
Der Javascript-Adapter liefert in neuen Versionen die Funktion httpGet().
-
@zeron850 said in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Ich würde eure Hilfe benötigen, da ich kaum Kenntnisse in JS habe. Ich habe ein Script welches Daten an Thingspeak sendet. Wenn ich den JS-Adapter auf die aktuellste Version update, bekomme ich folgende Fehlermeldungen:
2024-04-13 10:24:30.336 error Error in callback: ReferenceError: request is not defined
Du hast aber schon die Releasenotes angesehen und die BREAKING changes durchgesehen bevor du eine MAJOR Release installierst? ...
Dort steht auch was du tun kannst wenn du request unbedingt weiter benutzen willst ...
-
@mcm57 sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Du hast aber schon die Releasenotes angesehen und die BREAKING changes durchgesehen bevor du eine MAJOR Release installierst? ...
ganz ehrlich!??
wenn man einen ganzen Schwung via Konsole updated ist das gar nicht so einfach.
zumal es sicher nicht jedem User geläufig ist, was das alles bedeutet.
Insbesondere Usern, die nicht selber scripten können, sondern nur kopieren -
@homoran Zumindest breaking changes sind bei mir da immer farblich oder fett markiert, wenn ich mich recht erinnere.
Aber wo sollte man den User denn (noch) auf etwaige Besonderheiten aufmerksam machen? Wer das nicht einmal in einem Fenster liest, welches beim Update zwangsweise aufpoppt, der wird wohl erst recht nicht auf eigene Faust vorher bei Guthub schauen, ob es was zu beachten gibt?!
Also ich für meinen Teil schaue im Normalfall vor jedem Update wirklich kurz bei Github nach. Ist ja nur ein Mausklick auf das Fragezeichen hinten dann „in neuem Tab öffnen“…Gruss, Jürgen
EDIT: Gerade gelesen, Du redest von Updates via Konsole. Da bin ich gar nicht sicher, ob da die Changes auch so prominent dargestellt sind und man erst noch bestätigen muss. Wobei das Updaten per Konsole ja sicher kein unbedarfter User macht, der eigentlich gar nicht genau weiss, warum und was er da tut.
-
@wildbill sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Wer das nicht einmal in einem Fenster liest, welches beim Update zwangsweise aufpoppt,
@homoran sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
via Konsole updated
da poppt nix!
Natürlich hast du grundsätzlich recht!
aber gar so einfach ist es für Ottilie Einfachuserin leider nicht.AUCH EDIT!
bei einem Upgrade einer älteren Installation wird wohl auch ein Standarduser die Konsole nehmen, und sogar möglicherweise die Optionall -y
verwenden.Wofür gibt es denn sonst JuhTjub
-
@homoran OK, wenn da per Konsole gar nix weiter kommt und das einfach durchrauscht ist das natürlich nicht so prickelnd. Vielleicht lässt sich in die Update-Routine was einbauen, dass man zumindest bei breaking changes eine Meldung bekommt, die man aktiv bestätigen muss?
Ich hab aber keine Ahnung, was da wie im Hintergrund läuft, wenn man per Konsole updated.
Gruss, Jürgen
-
Nein, auch im Terminal steht in Großbuchstaben ein Hinweis auf einen Braking Change.
Bestätigen musst du das eh, wenn nicht -y als Option mitgegeben wurde. -
@wildbill Doch, die Meldung Breaking Change kam, aber bei großen Sprüngen bleibt eigentlich keine Zeit und Nuße nachzudenken.
Man will ja auf die neueste Version.
-
@homoran Na zumindest ich nehme mir da für Updates schon die Zeit und schaue, was Sache ist. Ich möchte ja danach ein aktuelles, aber auch noch funktionsfähiges System. Wer es da eilig hat, der macht IMHO was falsch. Dann lieber das Update einen Tag verschieben, bis man die Zeit dazu hat.
Gruss, Jürgen
-
@wildbill sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
bis man die Zeit dazu hat.
....
-
@homoran sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
aber bei großen Sprüngen
Ja, wenn du da alle Pakete und Module aus den letzten drei Jahren auf einmal einspielen musst, weil du das System nicht regelmäßig aktuell gehalten hast, dann kann man die ganzen Changes auch nicht mehr überblicken. Deswegen gilt ja auch statt 'Never touch a running system' die Weisheit: 'Keep your system running by constantly updating'.
-
@thomas-braun full d'accord!
Aber genau diese Ntars User werden irgendwann in so eine Falle laufen.
Dass man dann im Nachhinein nochmal die Versionshinweise suchen und lesen sollte ist für mich der erste Weg.
Aber ich glaube nicht, dass jeder user im Voraus die Folgen der im popup genannten Dinge 100%ig erkennen kann. -
@homoran said in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
@mcm57 sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Du hast aber schon die Releasenotes angesehen und die BREAKING changes durchgesehen bevor du eine MAJOR Release installierst? ...
ganz ehrlich!??
wenn man einen ganzen Schwung via Konsole updated ist das gar nicht so einfach.
zumal es sicher nicht jedem User geläufig ist, was das alles bedeutet.
Insbesondere Usern, die nicht selber scripten können, sondern nur kopierenWenn wer auf der Console aktualisisert sollte er auch lesen. Wenn er das nicht kann / mag dann soll er dich bitte UI verwenden, da muss er das extra abklicken.
Merh als MAJOR Release ist nicht möglich. Und außerdem sind wir heir sogar nich im TESTER / BETA Channel, also nix mit 0815 unerfahrener User ...
-
@homoran sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Aber ich glaube nicht, dass jeder user im Voraus die Folgen der im popup genannten Dinge 100%ig erkennen kann.
Nein, das glaube ich auch nicht.
Aber was soll die Lösung sein? Gar keine ChangeLogs? Nur im GitHub?
Fehlende Erfahrung kannst du ja nicht per PopUp ersetzen. Mit den PopUps und entsprechender Dokumentation kannst du nur bei der Vergrößerung des Erfahrungsschatzes helfen. -
@homoran said in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
möglicherweise die Option
all -y
verwenden.LOK, sollte ev besser Harakiri Mode on heißen
EGAL
Spätestens bei Problemen sollte man nach einem Update einen Blick in die einschlägigen Releasenotes werfen,. Das wär wohl nicht zuviel verlangt. -
Aber stellt euch schon mal auf den STABLE Update ein und bereitet eine Standardantwort mit Erläuterung vor
-
@mcm57 sagte in Probleme mit JS Script nach JS-Adapter Update > 7.9.0:
Aber stellt euch schon mal auf den STABLE Update ein und bereitet eine Standardantwort mit Erläuterung vor
Du meinst, ich soll einen Textbaustein anlegen?
"RTFM!!111!!!!111"
Na ich weiß nich...