NEWS
[Tester gesucht] Visual Studio Code Extension für ioBroker
-
Für jeden Upload wird in der iobroker objects.jsonl ein neuer Eintrag für das Script erzeugt (
script.js.create-in-web). Die verschiedenen Script Stände sind somit enthalten.Ich habe das ganze mit einem Script verglichen, dass ich über die Weboberfläche erzeugt und editiert habe. Was mir auffällit:
A) Sollte es nicht immer ein Eintrag für
script.js.create-in-websein? Der Key ist ja somit nicht mehr eindeutig.
B) Durch die Extension (?) wird"engineType": "JavaScript/js",geschrieben, wenn ich es im Webinterface anlege ist es jedochJavascript/js(kleines s).Das ist erstmal auffällig würde ich sagen.
{ "k": "script.js.create-in-web", "v": { "_id": "script.js.create-in-web", "type": "script", "common": { "name": "create-in-web", "expert": true, "engineType": "Javascript/js", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello\");", "debug": false, "verbose": false }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1767103757855, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "javascript.0.scriptEnabled.create-in-web", "v": { "_id": "javascript.0.scriptEnabled.create-in-web", "common": { "name": "scriptEnabled.create-in-web", "desc": "controls script activity", "type": "boolean", "write": true, "read": true, "role": "switch.active" }, "native": { "script": "script.js.create-in-web" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767103747395, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "javascript.0.scriptProblem.create-in-web", "v": { "_id": "javascript.0.scriptProblem.create-in-web", "common": { "name": "scriptProblem.create-in-web", "desc": "Script has a problem", "type": "boolean", "expert": true, "write": false, "read": true, "role": "indicator.error" }, "native": { "script": "script.js.create-in-web" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767103747549, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "script.js.create-in-web", "v": { "_id": "script.js.create-in-web", "type": "script", "common": { "name": "create-in-web", "expert": true, "engineType": "JavaScript/js", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello\");\nlog(\"hello vscode\");\n", "debug": false, "verbose": false }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1767103757855, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "script.js.create-in-web", "v": { "_id": "script.js.create-in-web", "type": "script", "common": { "name": "create-in-web", "expert": true, "engineType": "JavaScript/js", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello\");\nlog(\"hello vscode\");\nlog(\"hello vscode 2\");", "debug": false, "verbose": false }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1767103757855, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } }EDIT:
Bei TypeScript Scripten funktioniert es wie man es erwarten würde. Hier ist"engineType": "TypeScript/ts",mit einem großen S, sowohl via Web als auch via Extension.Kann es sein, dass du eigentlich richtigerweise ein großes S bei JavaScript verwendest aber der JavaScript Adapter leider ein kleines s?
Auffälligkeit A ist bei TypeScript identisch zu JavaScript, von daher wohl eher kein Problem.
TypeScript Beispiel
{ "k": "script.js.create-ts", "v": { "_id": "script.js.create-ts", "type": "script", "common": { "name": "create-ts", "expert": true, "engineType": "TypeScript/ts", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello ts\");", "debug": false, "verbose": false, "sourceHash": "26c190389005ce76b2c59a1f030c8ba2", "compiled": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlog(\"hello ts\");\n" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767105349082, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "javascript.0.scriptEnabled.create-ts", "v": { "_id": "javascript.0.scriptEnabled.create-ts", "common": { "name": "scriptEnabled.create-ts", "desc": "controls script activity", "type": "boolean", "write": true, "read": true, "role": "switch.active" }, "native": { "script": "script.js.create-ts" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767105325970, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "javascript.0.scriptProblem.create-ts", "v": { "_id": "javascript.0.scriptProblem.create-ts", "common": { "name": "scriptProblem.create-ts", "desc": "Script has a problem", "type": "boolean", "expert": true, "write": false, "read": true, "role": "indicator.error" }, "native": { "script": "script.js.create-ts" }, "type": "state", "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767105325990, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "script.js.create-ts", "v": { "_id": "script.js.create-ts", "type": "script", "common": { "name": "create-ts", "expert": true, "engineType": "TypeScript/ts", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello ts\");\nlog(\"from vscode\");", "debug": false, "verbose": false, "sourceHash": "3bdbe4ebd04721c4e27ee4bdb6ec39c1", "compiled": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlog(\"hello ts\");\nlog(\"from vscode\");\n" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767105380251, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } { "k": "script.js.create-ts", "v": { "_id": "script.js.create-ts", "type": "script", "common": { "name": "create-ts", "expert": true, "engineType": "TypeScript/ts", "enabled": true, "engine": "system.adapter.javascript.0", "source": "log(\"hello ts\");\nlog(\"from vscode\");\nlog(\"hello 2\");", "debug": false, "verbose": false, "sourceHash": "c732d88d2c7dc9380166d70b08a35cb0", "compiled": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlog(\"hello ts\");\nlog(\"from vscode\");\nlog(\"hello 2\");\n" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1767105453376, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } } } -
Ich habe nun in dem Objekt
script.js.create-in-webmanuell das s verkleinert und siehe da, es taucht in der Webansicht auf. Auffälligkeit B) war also die Ursache.
I created a Pull Request but I never developed an extension so I can't really test it unfortunately.
-
Ich habe nun in dem Objekt
script.js.create-in-webmanuell das s verkleinert und siehe da, es taucht in der Webansicht auf. Auffälligkeit B) war also die Ursache.
I created a Pull Request but I never developed an extension so I can't really test it unfortunately.
Hallo habe auch grade deine Tests bei mir noch eimal nachgezogen, bei mir ist kein Fehler erkennbar. Das S bleibt groß egal wo ich ändere und speichere. Welche Version vom javascript Adapter und VSC Extension hast du im Einsatz.
Edit: ich habe mal meine Objekte durch gesehen. ich habe beide Varianten mit groß und klein, aber alle sind immer sichtbar. Da ist noch keins verschwunden. Liegt es vielleicht daran das du alle im root-Verzeichnis hast. Bei mir liegt alles unter common/Allgemein und da in Ordner verteilt. Unter global habe ich nur eins am laufen was auch global sein muss. Die Frage ist jetzt ist es ein Bug von JS-Adapter oder von der Extension? Vielleicht kann man Matthias alias @haus-automatisierung mit ins Boot holen, er hat den Adapter mal weiterbetreut, eventuell kann er etwas zu der Problematik sagen.
-
Hallo habe auch grade deine Tests bei mir noch eimal nachgezogen, bei mir ist kein Fehler erkennbar. Das S bleibt groß egal wo ich ändere und speichere. Welche Version vom javascript Adapter und VSC Extension hast du im Einsatz.
Edit: ich habe mal meine Objekte durch gesehen. ich habe beide Varianten mit groß und klein, aber alle sind immer sichtbar. Da ist noch keins verschwunden. Liegt es vielleicht daran das du alle im root-Verzeichnis hast. Bei mir liegt alles unter common/Allgemein und da in Ordner verteilt. Unter global habe ich nur eins am laufen was auch global sein muss. Die Frage ist jetzt ist es ein Bug von JS-Adapter oder von der Extension? Vielleicht kann man Matthias alias @haus-automatisierung mit ins Boot holen, er hat den Adapter mal weiterbetreut, eventuell kann er etwas zu der Problematik sagen.
@TT-Tom
JavaScript Adapter 9.0.11
Extension 1.9.2Das S darf genau nicht groß bleiben, der Adapter erwartet ein kleines s: https://github.com/search?q=repo%3AioBroker%2FioBroker.javascript javascript%2Fjs&type=code
Hast du mit JavaScript oder TypeScript getestet?
-
@TT-Tom
JavaScript Adapter 9.0.11
Extension 1.9.2Das S darf genau nicht groß bleiben, der Adapter erwartet ein kleines s: https://github.com/search?q=repo%3AioBroker%2FioBroker.javascript javascript%2Fjs&type=code
Hast du mit JavaScript oder TypeScript getestet?
-
@TT-Tom
JavaScript Adapter 9.0.11
Extension 1.9.2Das S darf genau nicht groß bleiben, der Adapter erwartet ein kleines s: https://github.com/search?q=repo%3AioBroker%2FioBroker.javascript javascript%2Fjs&type=code
Hast du mit JavaScript oder TypeScript getestet?
@hacki11 sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
https://github.com/search?q=repo%3AioBroker%2FioBroker.javascript javascript%2Fjs&type=code
in der type.d.ts wird es mit großen S geschrieben im Blockly auch wenn das jetzt richtig gesehen habe.
-
Gotcha, es ist der Filter! Da hatte ich nicht so drauf geachtet. Im Javascript Adapter ist eigentlich alles auf lowercase() getestet - außer beim Filter!
https://github.com/ioBroker/ioBroker.javascript/blob/e0497ba9689eee3044bf762505bb84ba1abbe3a1/src-editor/src/SideMenu.tsx#L1084
Sowohl typeFilter als auch type sind as-is ohne lowercase() conversion. Dadurch wirds herausgefiltert.
@haus-automatisierungFilter aus, alles da:

Javascript Filter an, nur engineType Javascript/js wird angezeigt, JavaScript/js nicht:

Man sollte sich auf eine Schreibweise einigen und es dann auf beiden Seiten konsistent machen.
Ich nehme an, bei dir ist mit Filter dasselbe Problem? -
Gotcha, es ist der Filter! Da hatte ich nicht so drauf geachtet. Im Javascript Adapter ist eigentlich alles auf lowercase() getestet - außer beim Filter!
https://github.com/ioBroker/ioBroker.javascript/blob/e0497ba9689eee3044bf762505bb84ba1abbe3a1/src-editor/src/SideMenu.tsx#L1084
Sowohl typeFilter als auch type sind as-is ohne lowercase() conversion. Dadurch wirds herausgefiltert.
@haus-automatisierungFilter aus, alles da:

Javascript Filter an, nur engineType Javascript/js wird angezeigt, JavaScript/js nicht:

Man sollte sich auf eine Schreibweise einigen und es dann auf beiden Seiten konsistent machen.
Ich nehme an, bei dir ist mit Filter dasselbe Problem? -
ja kann den Filter Effekt bei mir nachvollziehen. Würde das Problem aber dann im Adapter sehen, denn von der Schreibweise wäre ein großes S richtiger.
@TT-Tom Denk dazu müsste sich ein Maintainer vom Adapter melden um die Schnittstelle engineType zu definieren. Wenn die Schnittstelle case-sense ist, müssen wir uns dran halten. Wenn’s case-insens ist, muss Mans im Adapter fixen. Ich geb dir recht, das Wort wär mir großem S richtiger, wenn der Schnittstellenowner es anders vorgibt, gilt eben das.
-
@TT-Tom Denk dazu müsste sich ein Maintainer vom Adapter melden um die Schnittstelle engineType zu definieren. Wenn die Schnittstelle case-sense ist, müssen wir uns dran halten. Wenn’s case-insens ist, muss Mans im Adapter fixen. Ich geb dir recht, das Wort wär mir großem S richtiger, wenn der Schnittstellenowner es anders vorgibt, gilt eben das.
-
@hacki11
Wie gesagt, vielleicht kann Matthias (@haus-automatisierung) sich das ansehen. Mach doch beim Adapter ein Issue auf und verweise auf diesen Thread, dann musst du nicht alles Neuschreiben.@TT-Tom sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
@hacki11
Wie gesagt, vielleicht kann Matthias (@haus-automatisierung) sich das ansehen. Mach doch beim Adapter ein Issue auf und verweise auf diesen Thread, dann musst du nicht alles Neuschreiben.Erledigt
https://github.com/ioBroker/ioBroker.javascript/issues/2110 -
Gotcha, es ist der Filter! Da hatte ich nicht so drauf geachtet. Im Javascript Adapter ist eigentlich alles auf lowercase() getestet - außer beim Filter!
https://github.com/ioBroker/ioBroker.javascript/blob/e0497ba9689eee3044bf762505bb84ba1abbe3a1/src-editor/src/SideMenu.tsx#L1084
Sowohl typeFilter als auch type sind as-is ohne lowercase() conversion. Dadurch wirds herausgefiltert.
@haus-automatisierungFilter aus, alles da:

Javascript Filter an, nur engineType Javascript/js wird angezeigt, JavaScript/js nicht:

Man sollte sich auf eine Schreibweise einigen und es dann auf beiden Seiten konsistent machen.
Ich nehme an, bei dir ist mit Filter dasselbe Problem?@hacki11 sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
Man sollte sich auf eine Schreibweise einigen und es dann auf beiden Seiten konsistent machen.
Bin ich bei Dir (und ich dachte das wäre längst der Fall). Wenn Du das Problem schon weit eingrenzen konntest, mach doch gerne einen PR auf. Oder soll ich mir das mal anschauen?
-
@hacki11 sagte in [Tester gesucht] Visual Studio Code Extension für ioBroker:
Man sollte sich auf eine Schreibweise einigen und es dann auf beiden Seiten konsistent machen.
Bin ich bei Dir (und ich dachte das wäre längst der Fall). Wenn Du das Problem schon weit eingrenzen konntest, mach doch gerne einen PR auf. Oder soll ich mir das mal anschauen?
Während ich den PR für den JavaScript Adapter machte, stieß ich auf die Type Def im js-controller. Folgende Situation + Vorschlag für euch:
ioBroker.js-controller
Es gibt bereits in den ioBroker Type Definitions eine Definition desengineTypes:"Javascript/js"engineType: 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';ioBroker.javascript
Hier wurde ein Type eingeführt, der ja in js-controller fehlt, leider mit großem S.export type ScriptType = 'TypeScript/ts' | 'Blockly' | 'Rules' | 'JavaScript/js';Das heißt, es passt nicht mit der Definition zusammen, vermutlich gibt es dadurch bedingt auch ein paar
toLowerCase()Konvertierungen. In den Script Objects steht korrekterweiseJavascript/js.
https://github.com/ioBroker/ioBroker.javascript/blob/e0497ba9689eee3044bf762505bb84ba1abbe3a1/src/types.d.ts#L62ioBroker VS Code Extension
Scripte werden mitengineType: "JavaScript/js"angelegt.Das bedeutet für mich:
- Definition ist durch ioBroker vorgegeben: "Javascript/js" und Adapter und Extension sollten sich danach richten
- ioBroker.javascript:
- Anpassen des
ScriptTypeaufJavascript/js - Migrator erforderlich? Umbenennen von
JavaScript/jszuJavascript/jsfür vorhandene Einträge? Wer kann das bewerten?
- VS Code Extension: Änderung von
JavaScript/jszuJavascript/js
Was haltet ihr von dem Vorschlag? Oder wollt ihr eine Umbenennung im js-controller zur Diskussion stellen? Wird vermutlich größere Auswirkungen haben.
-
Während ich den PR für den JavaScript Adapter machte, stieß ich auf die Type Def im js-controller. Folgende Situation + Vorschlag für euch:
ioBroker.js-controller
Es gibt bereits in den ioBroker Type Definitions eine Definition desengineTypes:"Javascript/js"engineType: 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';ioBroker.javascript
Hier wurde ein Type eingeführt, der ja in js-controller fehlt, leider mit großem S.export type ScriptType = 'TypeScript/ts' | 'Blockly' | 'Rules' | 'JavaScript/js';Das heißt, es passt nicht mit der Definition zusammen, vermutlich gibt es dadurch bedingt auch ein paar
toLowerCase()Konvertierungen. In den Script Objects steht korrekterweiseJavascript/js.
https://github.com/ioBroker/ioBroker.javascript/blob/e0497ba9689eee3044bf762505bb84ba1abbe3a1/src/types.d.ts#L62ioBroker VS Code Extension
Scripte werden mitengineType: "JavaScript/js"angelegt.Das bedeutet für mich:
- Definition ist durch ioBroker vorgegeben: "Javascript/js" und Adapter und Extension sollten sich danach richten
- ioBroker.javascript:
- Anpassen des
ScriptTypeaufJavascript/js - Migrator erforderlich? Umbenennen von
JavaScript/jszuJavascript/jsfür vorhandene Einträge? Wer kann das bewerten?
- VS Code Extension: Änderung von
JavaScript/jszuJavascript/js
Was haltet ihr von dem Vorschlag? Oder wollt ihr eine Umbenennung im js-controller zur Diskussion stellen? Wird vermutlich größere Auswirkungen haben.
@hacki11 Am besten mal auf Discord im Dev Chat diskutieren. Ich wäre für ein großes S überall.