NEWS
Verbesserungsvorschläge ioBroker
-
Hi,
ich habe bisher keinen Bereich gefunden in dem man als User Verbesserungsvorschläge machen kann.
Bitte nicht falsch verstehen, ich finde ioBroker super und habe absoluten Respekt vor der Arbeit und der Zeit die dort reingesteckt wird von allen Beteilligten.
Ich möchte gerne mit meinem Mitteln dazu beitragen, ioBroker noch besser zu machen und weiter zu entwickeln.
Da ich nicht programmieren kann, aber ein paar Ideen habe, würde ich diese einfach mal gerne los werden.
Vielleicht kann man hier ja auch die Ideen generell sammeln!?Vorschlag für den Admin Adapter:
Wenn man mal einen Adapter von Updates ausnehmen möchte, wäre es schön wenn man diesen im Admin Adapter irgendwie markieren könnte.
So dass dieser Adapter dann beim klick auf "alle Adapter upgraden" ausgenommen wird.Vorschlag für den Javascript Adapter:
Wenn mal ein Datenpunkt nicht mehr vorhanden ist, aufgrund von Adapter Deinstallation oder Umbenennen/Verschieben, wäre es schön wenn man im Javascript Adapter gleich sehen könnte welche Skripte einen Verweis auf einen nicht vorhanden Datenpunkt haben.Es sind zwar keine Vorschläge direkt für ioBroker selbst, aber sollte man dann für jeden Vorschlag oder Adapterspezifisch einen neuen Thread aufmachen?
Wenn ja, bitte melden oder verschieben/aufsplitten. -
@aleks-83
Vorschläge für Adapter würde ich auf GitHub als "issue" einstellen -
@aleks-83 sagte:
sollte man dann für jeden Vorschlag oder Adapterspezifisch einen neuen Thread aufmachen?
Dafür erstellt man ein Issue auf Github beim entsprechenden Adapter.
@aleks-83 sagte in Verbesserungsvorschläge ioBroker:
wenn man im Javascript Adapter gleich sehen könnte welche Skripte einen Verweis auf einen nicht vorhanden Datenpunkt haben.
Der JS-Editor kennt die Objekte nicht. Während der Abarbeitung des Skriptes wird bei nichtexistierenden Objekten eine Warnung erzeugt, aus der man (im Log-Reiter) auch die zugehörige Zeilennummer entnehmen kann. Das sollte genügen.
-
@paul53
Das genügt in der Regel auch, ist aber eben nicht wirklich komfortabel. Darauf will der TE raus und ist damit auch meiner Meinung.
Ein Programmierer oder einer der Übung mit dem IOBroker hat, wird da nichts vermissen, ein Anwender schon.
Du schreibst das es im Log erfasst wird und somit könnte man das eben ach grafisch aufhübschen.@aleks-83
Kann man hier diskutieren, sollte aber trotzdem in ein Issues auf Github beim entsrechenden Adapter plaziert werden.
Falls zu der Idee hier schon kein oder negatives Feedback kommt, kannst Dir das Issues sparen. -
@Jan1 sagte in:
somit könnte man das eben ach grafisch aufhübschen.
Im Log oder welche Vorstellungen existieren ?
-
So war das nicht ganz gemeint.
Wenn es im Log auftaucht sehe ich es ja auch irgendwann.
Aber "irgendwann" ist eben das Problem.
Ich wüsste es gerne sofort.Also sobald man einen Datenpunkt verschiebt/ändert/löscht, könnte der JS Adapter einen Trigger zur Syntaxprüfung bekommen und umgehend grafisch oder auch im Log mitteilen das ein DP vermisst wird.
Im JS Adapter selbst könnte man dann das Skript farblich markieren. -
-
-
@aleks-83 Wie ich auch auf Github geschrieben habe, eine Referenz auf einen nicht vorhandenen Datenpunkt zu erkennen ist alles andere als trivial. Der Code selbst hat nämlich noch valide Syntax (im Skript ist es einfach nur eine Zeichenkette") - ein nicht existenter DP wird erst bei der Ausführung erkannt.
Was ggf. gehen würde: Im JS-Controller den Fehlern für "State/Object existiert nicht" einen bestimmten Fehler-Code zuweisen und im Skript-Adapter darauf reagieren, wenn dieser Code aufgetreten ist, z.B. durch Markieren des Skriptes als fehlerhaft. Aber auch das wird erst passieren, wenn der Fehler auftritt.
/cc @apollon77 @Bluefox
-
-
@sigi234
Dieses Skript findet keine gelöschten Datenpunkte. -
@paul53 sagte in Verbesserungsvorschläge ioBroker:
Dieses Skript findet keine gelöschten Datenpunkte.
Kann man das einbauen?
-
@sigi234 sagte:
Kann man das einbauen?
Nein, was weg ist, kann nachträglich nicht mehr (per $Selector) gefunden werden.
-
@aleks-83
dafür (fehlende datenpunkte in scripts) könnte man doch das script von mic verwenden und nur auf solche fehler filter - anschliessend in der vis ein widget mit diesen fehlern und eine mail oder telegram - dann ist 's erledigthttps://forum.iobroker.net/topic/13971/vorlage-js-log-datei-aufbereiten-für-vis/210
-
@liv-in-sky
So erspart man sich den Blick ins log, aber der Fehler muss trotzdem erst auftreten um von der "Log-Analyse" gefunden zu werden.
Das ist ja genau das wo mein Gedanke ansetzt: Ein Skript was gerade nicht läuft oder auf den Datenpunkt zugreift, meldet keinen fehlenden Datenpunkt.Das Skript nutze ich bereits um mein (bereinigtes) Log auf der vis zu zeigen.
-
@aleks-83 Um fehlende Datenpunkt zu finden, müsste die Check-Logik den Skript-Code verstehen, d.h. sie müsste wissen, welche Variablen oder Literale einen Datenpunkt referenzieren. Das kann recht schnell beliebig kompliziert werden:
const wasistdas = "adapter.0.dpname"; // irgendwo ganz anders z.B. in einem Callback: const einwert = getState(wasistdas).val;
Allein hier müsste die Logik schon verstehen, dass...
...getState
Datenpunkte liest
...wasistdas
die ID des Datenpunkts darstellt
...wasistdas
eine Konstante ist
... wo diese definiert ist
... welchen Wert diese hat
um überhaupt prüfen zu können, ob der DP existiert.Noch ein paar kleine Änderungen und die Prüfung ist quasi unmöglich zu realisieren:
let namespace = "adapter.0"; const dpname = "wasistdas"; setTimeout(() => namespace = "anderer-adapter.1", 1000); // wird irgendwann ausgeführt, z.B. als Reaktion auf einen anderen DP: const einwert = getState(namespace + "." + "dpname").val;
Jetzt ist nicht nur die Frage, welchen Wert
namespace
hat, sondern auch wann es welchen Wert hat. -
OK.
Den Code verstehe ich nicht, aber ich weiß was du meinst.
Ich spreche aber auch erst mal nur von Datenpunkten die direkt abgesprochen werden.
Wenn sie erst mal in ne Variable verpackt sind, wird es schwierig, das glaube ich...Im JavaScript Adapter gibt es aber doch die Möglichkeit, Datenpunkte auf Vorhandensein zu prüfen, richtig?
Ich arbeite nur mit Klicki-Bunti Blockly und da finde ich sowas nicht.Der JS Adapter könnte ja dann, jedes Mal wenn ich ein Skript anlege, die darin verwendeten Datenpunkte in einem globalen Skript, was zyklisch ausgeführt wird, auf Vorhandensein prüfen.
Wenn das nicht automatisch geht, müsste man das von Hand machen.
Dann bleibe mein Vorschlag immer noch ein Vorschlag für ein gutes Skript!?So mein "Nichtprogrammierer"-Gedanke
-
@aleks-83 sagte in Verbesserungsvorschläge ioBroker:
Im JavaScript Adapter gibt es aber doch die Möglichkeit, Datenpunkte auf Vorhandensein zu prüfen, richtig?
Nein.
Dann bleibe mein Vorschlag immer noch ein Vorschlag für ein gutes Skript!?
Wie ich schon schrieb (ich glaube im Issue), das wäre durchaus sinnvoll, aber dann musst du dem Skript immer noch sagen, welche Datenpunkte es prüfen soll. Daher ist IMO die sinnvollste (und am ehesten machbare) Variante:
- Definiere alle Datenpunkt-IDs als erstes im Skript
- Prüfe beim Skriptstart die Existenz aller nötigen Datenpunkte
- Wenn alle existieren, führe die restliche Skriptlogik aus.
Punkt 2 könnte man auch in Form eines Prüfskripts tun, welches sich den Quellcode der übrigen Skripte holt, die zu Beginn definierten DPs ausliest und prüft, ob diese existieren. Das setzt aber eine gewisse Disziplin und Konsistenz beim Definieren der DPs in den übrigen Skripten voraus.
Dieses Prüfskript sollte unter keinen Umständen global sein, da es ja sonst in jedes andere Skript eingefügt wird. -
Hmmm. Irgendwie verzwickt...
-
Ist das nicht ein bisschen zu kurz gesprungen. Wenn mir z.B. ein Tür/Fenster-Kontakt abraucht und ich ihn durch einen neuen ersetze, dann muss ich z.Zt endlost suchen: Scripte, Vis, Szenen, Diagramme, sogar im shuttercontrol Adapter... Mag ja sein, dass es irgendwelche Dokumentations Asse gibt, die das alles nachgehalten haben, aber für mich ist das eine extrem nervige Sache.
Was helfen würde, wäre eine 'where used' Funktion bei den Objekten. Vlt ein extra Reiter im 'Edit Fenster'.
Ich weiss nicht genau, was die neue Alias Funktion in dem Zusammenhang bietet, vlt ist das die Lösung?