NEWS
Javascript spinnt
-
In den letzten Tagen habe ich einige seltsame Begegnungen mit Javascript gehabt.
Ich habe meinen Pool fertig machen wollen und wollte die Sonne der letzten Tage ausnutzen das Wasser schon mal langsam von knapp über dem Gefrierpunkt auf eine brauchbare Temperatur zu bringen.
Gut - ich habe auch einiges an Sicherheits- / Komfortfunktionen eingebaut.
So soll die Pumpe nur laufen wenn die Sonne in einem bestimmten Winkel auf die Garage scheint, so dass auch der Kollektor beschienen wird.
Durch ein Problem mit der js.0 Instanz hatte ich letzten Herbst alle Scripte auf js.1 umgezogen und natürlich die Datenpunkte nicht angepasst.Das habe ich jetzt gemacht - und traue meinen Augen nicht: am frühen Nachmittag steht die Sonne angeblich bei 28° Azimut und dafür etwa 85° Elevation. (Das Skript auf der CCU lieferte 188° Azimut und etwa 47° Elevation)
Ich hatte wirklich alles versucht: Die Koordinaten waren korrekt in der Instanz angelegt. Mit und ohne "Systemeinstellungen verwenden" - nach jeder Änderung zur Sicherheit auch das Skript neu gestartet - es blieb bei den ominösen Werten (Das Skript ist von hier
erstellt: 06.07.2015 nach ioBroker Forum
)
entnervt habe ich erst mal auf die Datenpunkte von dem CCU-Skript umgestellt.
abends hatte ich dann noch weiter gesucht, das Skript meckerte 'suncalc' an, dass es das nicht finden könne - war aber in der Instanz eingetragen.
Gelöscht, neu eingetragen - wurde immer noch angemeckert aber jetzt lief esEin weiters Phänomen betrifft eine Meldung über den Druck im Sandfilter, der bei Anfahren überprüft wird, da sich ab und zu der Filterkorb im Skimmer verklemmt und dann die Pumpe trocken laufen würde.
Eigentlich soll das Log bei erreichen des Mindestdrucks nur einmal geschrieben werden und dann der Block "stop zyklische Ausführung" greifen -tut es aber nicht.
Auch hier mehrfach Änderungen eingebracht - da klappte es.
Heute morgen jedoch wieder nicht.
Ab dem x-ten Versuch lief es auf einmal.Hat da jemand hilfreiche Informationen bitte?
js-controller: 2.2.8
Admin: 4.0.2
javascript: 4.4.2Danke für jede Hilfe
-
@Homoran sagte:
das Skript meckerte 'suncalc' an, dass es das nicht finden könne
Der Script-Editor meckert alle NPM-Module an, was man ignorieren sollte.
-
@paul53 sagte in Javascript spinnt:
@Homoran sagte:
das Skript meckerte 'suncalc' an, dass es das nicht finden könne
Der Script-Editor meckert alle NPM-Module an, was man ignorieren sollte.
das weiß ich inzwischen auch
trotzdem hat das Löschen und wieder anlegen scheinbar geholfen. (oder das mehrfach speichern, oder der mehrfache restart der Instanz, oder....)
Oder morgen läuft es wieder schief -
@Homoran sagte:
trotzdem hat das Löschen und wieder anlegen scheinbar geholfen.
Das NPM-Modul "suncalc" ist Bestandteil des Javascript-Adapters und muss (sollte) nicht zusätzlich installiert werden (intern wird das Modul "suncalc2" verwendet).
-
@paul53
Danke für die Info
Werde es wieder rausnehmen, aber ich glaube nicht, dass es daran lag, dass ich irgendwo in der Nähe des Äquators angesiedelt wurde -
Ich habe da gerade noch etwas beobachtet, weiß nicht ob das relevant ist.
Nachdem ein weiteres Skript nicht so macht wie ich will, habe ich den Teil dort deaktiviert und in einem extraskript neu angelegt zum Testen.
Jetzt erscheint im log:
javascript.0 2020-04-11 15:29:19.933 info (3120) script.js.Pool.Tastertest: registered 1 subscription and 0 schedules javascript.0 2020-04-11 15:29:19.931 info (3120) Start javascript script.js.Pool.Tastertest javascript.1 2020-04-11 15:29:19.771 info (6815) Stop script script.js.Pool.Tastertest javascript.0 2020-04-11 15:29:19.770 info (3120) Stop script script.js.Pool.Tastertest javascript.0 2020-04-11 15:29:02.748 info (3120) script.js.Pool.Tastertest: registered 1 subscription and 0 schedules javascript.0 2020-04-11 15:29:02.746 info (3120) Start javascript script.js.Pool.Tastertest javascript.1 2020-04-11 15:29:02.612 info (6815) Stop script script.js.Pool.Tastertest javascript.0 2020-04-11 15:29:02.611 info (3120) Stop script script.js.Pool.Tastertest
Natürlich existiert dieses Skript nur einmal (irrtümlich unter js.0)
Ist es normal, dass es bei beiden Instanzen auftritt?
und zwar immer nur das stopEDIT:
habe das Skript jetzt auf js.1 verschoben, jetzt kommt auch nur noch was bei js.1 im log -
@Homoran sagte:
Ist es normal, dass es bei beiden Instanzen auftritt?
und zwar immer nur das stopJa, leider.
15:46:27.553 info javascript.0 (1868) Stop script script.js.common.Edit 15:46:27.554 info javascript.1 (1996) Stop script script.js.common.Edit 15:47:19.245 info javascript.0 (1868) Stop script script.js.common.Edit 15:47:19.246 info javascript.1 (1996) Stop script script.js.common.Edit 15:48:09.309 info javascript.0 (1868) Stop script script.js.common.Edit 15:48:09.310 info javascript.1 (1996) Stop script script.js.common.Edit
-
@Homoran sagte in Javascript spinnt:
js-controller: 2.2.8
Admin: 4.0.2
javascript: 4.4.2Habe jetzt das Blockly auf eine andere Installation kopiert, da läuft es einwandfrei
js-controller: 2.2.7
Admin: 3.7.8
javascript: 4.3.4Danach nochmals die Instanzen auf dem produktiven System neu gestartet - ohne Erfolg
Dort werden nicht einmal mehr die debug-Ausgaben getätigt -
Gestern lief das Skript (Blockly) eine ganze Zeit absolut problemlos.
Auf einmal fiel wieder das "stop zyklische Ausführung" über extrem viele Zyklen aus.
Mehrfaches Neustarten des Skripts hatte nicht geholfenErst nach mehrfachem neustart der Pumpe lief es dann.
Es will einfach nicht in meinen Kopf.
um die Meldung ausgeben zu können durchläuft das Blockly doch das selbe "SONST FALLS" in der auch die zyklische Ausführung beendet werden müsste:
-
Langsam verzweifle ich.
Nachdem ich zuerst immer den Fehler bei mir gesucht hatte, habe ich jetzt seit einigen Tagen nichts mehr am Blockly geändert.
Dann habe ich es immer mal wieder versucht.
gestern lief es absolut problemlos:
(bei einer Außentemperatur um 11°C sprang natürlich immer wieder die Automatic in die Quere)Heute geht es weider nicht:
trotz überschreiten der Sollgrenze wird zwar das richtige log geschrieben, aber der Stop der zyklischen Abarbeitung im gleichen "sonst falls" löst mehrfach nicht aus!
Was kann ich noch machen?
-
@Homoran
Nur eine Vermutung: Vielleicht macht der Umlaut "ä" in der Timer-Variable Probleme ? -
@paul53 sagte in Javascript spinnt:
Nur eine Vermutung:
Danke! ich bin ja froh über jeden Strohhalm.
Habe eben noch mal etwas geändert - abgespeichert - lief!
noch mal gestartet - lief wieder nichtwerde jetzt mal das ä rausnehemn
-
@paul53 sagte in Javascript spinnt:
Der Script-Editor meckert alle NPM-Module an, was man ignorieren sollte.
Ist das immer noch so?
Der Fix dafür sollte eigentlich schon längst published sein...
-
@Homoran sagte in Javascript spinnt:
werde jetzt mal das ä rausnehemn
vorsichtiger Optimismus:
Hat jetzt 4 Testzyklen in Folge keine Probleme gemacht.Nach dem Abspeichern klappt es meistens sowieso einmal - aber 4x ist schon fast eine Revolution.
Werde es weiter beobachten.Allerdings lief es letztes Jahr auch mit dem ä ohne Probleme, da aber mit anderen Versionen von controller und js
-
@Homoran sagte:
da aber mit anderen Versionen von controller und js
JS-Adapter und js-controller dürften keinen Einfluss auf Variablenbezeichner haben, eher der Compiler (V8) einer neueren Node.js-Version.
-
@AlCalzone sagte:
Der Fix dafür sollte eigentlich schon längst published sein...
Schon in Version 4.4.0 ?
-
@paul53 Eigentlich schon 4.3.2:
https://github.com/ioBroker/ioBroker.javascript#432-2019-10-27Vielleicht hab ich auch die passende Entwicklerversion installiert, aber für require("axios") geht es bei mir.
-
@AlCalzone
4.4.0 meldet bei mir: Cannot find module 'suncalc' -
@paul53 Bei mir auch - hast du das in den zusätzlichen Modulen eingetragen oder lädst du das bereits integrierte Modul?
-
@AlCalzone sagte:
lädst du das bereits integrierte Modul?
Ja.
Die Fehlermeldung erhalte ich aber auch bei dem zusätzlich installierten Modul "xml2js".