Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Verbesserungsvorschläge ioBroker

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verbesserungsvorschläge ioBroker

    This topic has been deleted. Only users with topic management privileges can see it.
    • AlCalzone
      AlCalzone Developer @aleks-83 last edited by

      @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

      1 Reply Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active last edited by

        https://forum.iobroker.net/topic/25846/script-info-über-datenpunkte-sammeln

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @sigi234 last edited by

          @sigi234
          Dieses Skript findet keine gelöschten Datenpunkte.

          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @paul53 last edited by

            @paul53 sagte in Verbesserungsvorschläge ioBroker:

            Dieses Skript findet keine gelöschten Datenpunkte.

            Kann man das einbauen?

            paul53 liv-in-sky 2 Replies Last reply Reply Quote 0
            • paul53
              paul53 @sigi234 last edited by

              @sigi234 sagte:

              Kann man das einbauen?

              Nein, was weg ist, kann nachträglich nicht mehr (per $Selector) gefunden werden.

              1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @sigi234 last edited by liv-in-sky

                @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 erledigt

                https://forum.iobroker.net/topic/13971/vorlage-js-log-datei-aufbereiten-für-vis/210

                A 1 Reply Last reply Reply Quote 0
                • A
                  aleks-83 @liv-in-sky last edited by aleks-83

                  @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.

                  AlCalzone 1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer @aleks-83 last edited by AlCalzone

                    @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.

                    1 Reply Last reply Reply Quote 1
                    • A
                      aleks-83 last edited by aleks-83

                      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 😬

                      AlCalzone 1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer @aleks-83 last edited by

                        @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:

                        1. Definiere alle Datenpunkt-IDs als erstes im Skript
                        2. Prüfe beim Skriptstart die Existenz aller nötigen Datenpunkte
                        3. 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.

                        1 Reply Last reply Reply Quote 0
                        • A
                          aleks-83 last edited by

                          Hmmm. Irgendwie verzwickt...

                          1 Reply Last reply Reply Quote 0
                          • OstfrieseUnterwegs
                            OstfrieseUnterwegs last edited by

                            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?

                            AlCalzone 1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer @OstfrieseUnterwegs last edited by

                              @OstfrieseUnterwegs sagte in Verbesserungsvorschläge ioBroker:

                              Ich weiss nicht genau, was die neue Alias Funktion in dem Zusammenhang bietet, vlt ist das die Lösung?

                              Soweit ich weiß ist sie für genau sowas gedacht.

                              OstfrieseUnterwegs 1 Reply Last reply Reply Quote 0
                              • OstfrieseUnterwegs
                                OstfrieseUnterwegs @AlCalzone last edited by

                                @AlCalzone sagte in Verbesserungsvorschläge ioBroker:

                                @OstfrieseUnterwegs sagte in Verbesserungsvorschläge ioBroker:

                                Ich weiss nicht genau, was die neue Alias Funktion in dem Zusammenhang bietet, vlt ist das die Lösung?

                                Soweit ich weiß ist sie für genau sowas gedacht.

                                Das wäre super. Dann werd ich mich mal damit befassen. Danke.

                                1 Reply Last reply Reply Quote 1
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                945
                                Online

                                31.9k
                                Users

                                80.1k
                                Topics

                                1.3m
                                Posts

                                admin adapter iobroker javascript adapter optimierung verbesserung
                                8
                                22
                                1827
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo