NEWS
[Tester gesucht] Visual Studio Code Extension für ioBroker
-
Die Extension habe ich noch nicht fertig eingerichtet. Ich habe nun in jedem Workspace (der nichts mit ioBroker zu tun hat) irgendwie das Problem, dass er mir die Konfiguration anlegen will. Kannst du das irgendwie umstellen, dass es zumindest erst geschieht, wenn man auf den "Tab" wechselt. Und vielleicht auch dann noch fragt, oder man sogar explizit sagen muss, dass er die Konfiguration anlegen soll?
-
Erstmal vielen Dank für das Plugin, super idee.
Hab jetzt auch mal getestet und gleich paar Fragen:- wie oder wo kann ich user und pw angeben?
scriptRoot
was muss ich hier angeben, dass Verzeichnis, wo der JS-Adapter die Skripte hin spiegelt? Ich hatte es so verstanden, dass du direkt aus demsystem.adapter.javascript.x
Objekt die Skripte holste oder?- Wenn ich das Skript speichere, wird das dann automatisch synchronisiert oder muss ich jedes mal manuel uploaden?
-
@Feuersturm Ja, das ist prinzipiell möglich, aber nicht ganz trivial. Ich werde das in die Liste möglicher Features aufnehmen.
@UncleSam Mit der neusten Version der Extension (0.6.0) sollte das nicht mehr so sein. Hier schaue ich, ob eine
.iobroker-config.json
gefunden werden kann. Wenn ja, wird eine Verbindung aufgebaut, wenn nein, dann muss man aktuell manuell das Kommandoiobroker: Connect to ioBroker
aufrufen. Hast du mit der 0.6.0 auch das von dir beschriebene Verhalten?@Scrounger Danke fürs Testen und hier die Antworten zu deinen Fragen:
- Passwortgeschützte ioBroker Installation werden aktuell noch nicht unterstützt. Das werde ich aber zeitnah umsetzen
scriptRoot
: Das ist der relative Pfad (relativ zu deinem Workspace) auf deiner Festplatte wo die Skripte hingespiegelt werden. Der Standard ist hier/
, also direkt in dein Workspace Verzeichnis. Gibst du hier z.B./test/
an, werde alle Skripte in den Unterordnertest
in deinem Workspace abgelegt. Geholt werden die Skripte direkt von den Objekte ausscript.js
.- Es wird beim Speichern NICHT automatisch synchronosiert, sprich man muss jedes mal manuell uploaden. Ich könnte dieses Verhalten konfigurierbar machen, sodass bei jedem Speichern das Skript direkt hochgeladen wird. Würde dir das helfen?
-
@nokxs sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
@UncleSam Mit der neusten Version der Extension (0.6.0) sollte das nicht mehr so sein. Hier schaue ich, ob eine .iobroker-config.json gefunden werden kann. Wenn ja, wird eine Verbindung aufgebaut, wenn nein, dann muss man aktuell manuell das Kommando iobroker: Connect to ioBroker aufrufen. Hast du mit der 0.6.0 auch das von dir beschriebene Verhalten?
Ist behoben mit 0.6.0, danke für die super Arbeit!
Ein Vorschlag noch: im "Setup" Prozess ist etwas verwirrend, dass er zuerst nach
http://localhost
fragt, und dann nach dem Port. Ich hätte das entweder in drei Schritte getrennt (http
,localhost
und8081
) oder ganz zusammen genommen (http://localhost:8081
). -
@nokxs sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
- Passwortgeschützte ioBroker Installation werden aktuell noch nicht unterstützt. Das werde ich aber zeitnah umsetzen
scriptRoot
: Das ist der relative Pfad (relativ zu deinem Workspace) auf deiner Festplatte wo die Skripte hingespiegelt werden. Der Standard ist hier/
, also direkt in dein Workspace Verzeichnis. Gibst du hier z.B./test/
an, werde alle Skripte in den Unterordnertest
in deinem Workspace abgelegt. Geholt werden die Skripte direkt von den Objekte ausscript.js
.
Thx für die Erläuterung.
- Es wird beim Speichern NICHT automatisch synchronosiert, sprich man muss jedes mal manuell uploaden. Ich könnte dieses Verhalten konfigurierbar machen, sodass bei jedem Speichern das Skript direkt hochgeladen wird. Würde dir das helfen?
Ja das wäre super praktisch.
Aber wie wird das geregelt, meines wissen nach wird wenn du etwas imsystem.adapter.javascript.x
Objekt änderst, wird die komplette instanz neu gestartet. Das wäre in dem Fall dann kontraproduktiv -
@nokxs Probier mal folgendes, bei mir scheint das zu klappen. Ergänze in der
tsconfig.json
die folgenden Zeilen in dencompilerOptions
."include": [ "global/**/*.js", ".iobroker/types/javascript.d.ts" ],
EDIT: Fehlalarm, ich hatte die dummy.ts geöffnet. Deshalb hat es geklappt...
EDIT2: So scheint es jetzt bei mir zu klappen. Mit dem"global/**/*.js"
können alle Skripte die unterglobal
liegen aufeinander verweisen. Der Zugriff voncommon
aus scheint so aber leider nicht zu klappen. -
@patrickbs96 Ich fürchte du wirst in die gleichen Probleme laufen wie ich mit den globalen Skripten und vor kurzem dem Top-Level-Await-Support.
So wie ioBroker seine Skripte verwendet (nicht-Module, die import verwenden; Module, die den Scope mit nicht-Modulen teilen, etc...), versteht TypeScript bzw. der Editor nicht ohne Nachhilfe. Da musste ich relativ viel mit generierten Exports tricksen.
Damit du einen Eindruck bekommst, hier ein paar PRs:
https://github.com/ioBroker/ioBroker.javascript/pulls?page=2&q=is%3Apr+is%3Aclosed+author%3AAlCalzoneMit dem "global/**/*.js" können alle Skripte die unter global liegen aufeinander verweisen.
Geht das noch, wenn hier
import
genutzt wird? -
@nokxs sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
Es wird beim Speichern NICHT automatisch synchronosiert, sprich man muss jedes mal manuell uploaden. Ich könnte dieses Verhalten konfigurierbar machen, sodass bei jedem Speichern das Skript direkt hochgeladen wird. Würde dir das helfen?
Ich fände dieses Feature auch super. mit sftp hatte ich das gleiche Verhalten, dass bei jedem speichern, auch das Skript in ioBroker aktualisiert wurde. Wenn es sich umsezten lässt (gerne auch konfigurierbar) würde ich mich freuen.
-
Moin,
ich habe per Suchen-Funktion nichts gefunden und hier scheint mir der beste Platz zu sein.
Ich würde gerne ohne das Plugin zu nutzen (ich nutze SSH-Remote) trotzdem IntelliSense mit den ioBroker-Objekten nutzen wollen.
Ich bin normal nicht zu blöd für Google, aber ich bin neu in VSCode und finde auf gedeih und verderb nicht, wo ich die javascript.d.ts einfügen/konfigurieren muss damit das klappt...
Kann mir hier jemand helfen, auch wenn es nicht s mit dem Plugin direkt zu tun hat? -
@creatsher Versuch es mal mit einer
tsconfig.json
:{"include":["**/*",".iobroker/dummy.ts"],"compilerOptions":{"typeRoots":["./.iobroker/types"]}}
Und folgender Directory-Struktur:
/ tsconfig.json .iobroker dummy.ts (leere Datei) types javascript.d.ts <-- dies ist die Datei
So macht es diese Extension.
Aber @nokxs, es wäre wäre schon cool, wenn deine Extension auch mit Remote SSH funktionieren würde. Ich weiss nicht genau, was es dafür alles braucht, aber sicherlich musst du sagen, dass Teile deiner Extension auf dem "Server" laufen.Edit: vergiss es, mit Remote SSH arbeitet man ja direkt auf dem ioBroker System, dann braucht man die Synchronisation nicht mehr - die macht ja dann der JS Adapter. -
@unclesam ich muss gestehen, ich versteh nur Bahnhof!? irgendwas mit ner tsconfig.json hatte ich schon gefunden, aber wie ich wo was anlegen muss, da bin ich ernsthaft überfragt.
Also welcher Ordner ist bei dir "/" ?
Du wirst ja wohl kaum meinen Sever-Root meinen!? -
@creatsher said in [Tester gesucht] Visual Studio Code Extension für ioBroker:
Also welcher Ordner ist bei dir "/" ?
Du wirst ja wohl kaum meinen Sever-Root meinen!?Dein Projektverzeichnis, wo du die Skripte hast. Oder eins höher, oder noch höher... Am besten das Root deines VS Code Workspaces.
-
@unclesam aaaah jetzt hab ich's begriffen, vielen Dank. Manchmal denke ich einfach viel zu kompliziert...
-
@nokxs Klasse , hat auf Anhieb funktioniert.
In der Anzeige vom IOBroker Script Editor werden auch die Instanzen angezeigt. Ist es im Visual Studio Code Extension auch machbar ?
-
@scrounger Ich habs garde mal probiert. Ein Hochladen führt nicht zum Restart der JS Instanz, wohl aber zum Restart des Scripts. Genauso wie auch im IOBroker Script Editor.
AutoUpLoad beim Save dann bitte konfigurierbar.
-
@nokxs Gibt es die Möglichkeit Haltepunkte zu setzen ?
-
@gargano said in [Tester gesucht] Visual Studio Code Extension für ioBroker:
AutoUpLoad beim Save dann bitte konfigurierbar.
Ja, finde ich eine gute Idee.
@gargano said in [Tester gesucht] Visual Studio Code Extension für ioBroker:
Gibt es die Möglichkeit Haltepunkte zu setzen ?
Jetzt wird's aber richtig fancy! Das wäre natürlich genial, gerade für kompliziertere Skripts. Allerdings weiss ich als Entwickler auch, dass Remote Debugging nicht so trivial ist (auf beiden Seiten). Wahrscheinlich müsste man sogar den Skript Adapter mit dem Debugger eingeschaltet starten (was mit der
iobroker
Kommandozeile möglich wäre, aber natürlich nicht so schön ist). -
@patrickbs96 Ich probiere später mal deinen Vorschlag mit der
tsconfig.json
. Mal schauen, ob das zufriedenstellender läuft als meine bisherigen Tests@Feuersturm & @Scrounger Ich werde den konfigurierbaren Auto-Upload von Skripten demnächst mal angehen. Das Ganze stelle ich mir selber auch praktisch vor.
- list itemDie Unterstützung verschiedener JS-Instanzen steht noch auf meiner Todo-Liste. Irgendwann werde ich das auch umsetzen.
- Aktuell gibt noch keine Unterstützung für Haltepunkte und ehrlich gesagt hatte ich bis jetzt auch noch nicht drüber nachgedacht. Wenn das funktionieren würde, wäre dies natürlich das Killer-Feature. Ich stelle mir das Allerdings kompliziert vor umzusetzen. Man weiß aber nie, was noch kommt
-
@alcalzone said in [Tester gesucht] Visual Studio Code Extension für ioBroker:
@patrickbs96 Ich fürchte du wirst in die gleichen Probleme laufen wie ich mit den globalen Skripten und vor kurzem dem Top-Level-Await-Support.
So wie ioBroker seine Skripte verwendet (nicht-Module, die import verwenden; Module, die den Scope mit nicht-Modulen teilen, etc...), versteht TypeScript bzw. der Editor nicht ohne Nachhilfe. Da musste ich relativ viel mit generierten Exports tricksen.
Damit du einen Eindruck bekommst, hier ein paar PRs:
https://github.com/ioBroker/ioBroker.javascript/pulls?page=2&q=is%3Apr+is%3Aclosed+author%3AAlCalzoneIch habe gerade etwas den JS Adapter Code angeschaut, und gesehen, dass es da einen TS und einen JS "Declaration Server" (tsc.Server) hat. Ist der von aussen zugänglich oder ist das Wort "Server" hier nicht als TCP Server gemeint? Falls die beiden zugänglich sind, wäre es wahrscheinlich möglich, das in diese Extension zu integrieren, oder?
Und wenn ich dich @AlCalzone schon an der Leitung habe: was sind deine Gedanken zum Remote Debugging von Scripts mit der Extension? Ich sehe zwar, dass vm2 Debugging kann, aber das bedingt wohl, dass der eigentliche Prozess den Debug Socket zur Verfügung stellt, oder?
-
@nokxs Ich habe hier nochmal herumgespielt und es scheint wohl so zu sein, das der Zugriff auf andere Funktion aus den anderen Skripten nicht auf eine bestimmte Ordnerstruktur eingeschränkt werden kann (
"global/**/*.js"
). Das führt leider dazu, dass IntelliSense nur in den Skripten unter global funktioniert und die ioBroker Funktionen sowie die Funktionen aus den anderen Skripten anzeigt...Ich bin kein Experte von VSCode, vielleicht ist es doch irgendwie möglich das richtig zu begrenzen.
"include": [ "**/*.js", "**/*.d.ts", ".iobroker/types/javascript.d.ts" ]
So sollten die ioBroker Funktionen auch unter common funktionieren aber es werden auch alle anderen Funktionen aus den anderen Skripten angezeigt. Ein "exclude" klappt hier auch nicht, das hätte den gleichen Effekt wie mit global.