Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Debugging

    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

    Debugging

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jack
      Jack last edited by Jack

      Hallo an alle Entwickler! Mich würde es echt freuen, wenn Ihr Nachfolgendes umsetzen könntet:

      Hier einige kleine Skripte (werden dann eh immer gleich "groß") schreiben, damit das Licht an geht, aus geht, oder auch doch nicht, ist ärgerlich. - Dann: Debuggen - . Man schreibt nochmals doppelt so viel Code, als das eigentliche Skript hat, damit man eruieren kann wo der Fehler liegt, und die Versuche das Problem zu lösen, führen öfter dazu, dass der Code zu Tode Verriegelt wird, als dass die wirkliche Ursache gefunden wird.

      Ich komme nicht von der IT, sondern aus der OT. Und bei uns gibt es seit jeher (schon im vorigen Jahrtausend) sehr tolle Möglichkeiten, die 'dieses Debugging' nicht benötigen.

      Viel um den heißen Brei geredet. Hier ein paar Bilder, die zeigen was ich meine:

      Ein Programm im "Funktionsplan" (FUP) geschrieben, das man wie alle weiteren Online beobachten kann:
      7f87e58d-f7ef-4c60-8512-0ce01afb873f-image001.png
      file:///home/jack/Downloads/image001.png

      Ein Auszug aus SCL. Rechts sieht man den Wert jeder Variable vom Code:
      273abec8-33d2-4a4e-865f-2747e210cd7b-image003.png file:///home/jack/Downloads/image003.png

      Screenshot eines Motion Controllers; per Maus-Tooltip sieht man die Zustände der Variablen:
      ada4a761-3293-458f-831c-3808450630e9-image004.png file:///home/jack/Downloads/image004.png

      Kennt jeder Elektriker, wenn er das Bild um 90° dreht; Kontaktplan (KOP):
      e6b36ed7-4f80-4ba3-b134-8868b37b3f80-image006.png file:///home/jack/Downloads/image006.png

      Mich wundert ja, das das nicht mal Google's Blokly kann. Aber vielleicht finden sich ja hier ein paar Leute, die einen Adapter zusammen bauen, damit Debugging in (kleinen) Javaskripten im großen und ganzen überflüssig ist.

      Ich hoffe euch zumindest ein wenig motiviert zu haben,
      Jack

      Meister Mopper paul53 OliverIO Jack 4 Replies Last reply Reply Quote 0
      • Meister Mopper
        Meister Mopper @Jack last edited by

        @jack sagte in Debugging:

        Ich komme nicht von der IT, sondern aus der OT.

        Was bedeutet dies?

        Jack 1 Reply Last reply Reply Quote 0
        • Jack
          Jack @Meister Mopper last edited by Jack

          @meister-mopper https://www.channelpartner.de/a/so-unterscheiden-sich-it-und-ot,3335362

          Meister Mopper 1 Reply Last reply Reply Quote 0
          • Meister Mopper
            Meister Mopper @Jack last edited by

            @jack
            Danke, operation technology war mir nicht bekannt.

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              Also das kann der Javascript Adapter durchaus, aber wenn du das mal genutzt hast wird dir klar warum es das in Blockly nicht gibt wie du dir das vorstellst.
              Es frisst unglaublich Ressourcen.

              Jack 1 Reply Last reply Reply Quote 0
              • Jack
                Jack @Jey Cee last edited by Jack

                @jey-cee Ja, mir ist das Problem mit den Speicherbereichen und dem Kompilat (Kompilierter Code. Schreibt man das nicht so?) durchaus klar. -Der Javaskript Adapter hier im IOBroker kann das?- Aber wenn man die Logik schreibt, würde ein solcher Adapter meiner Meinung nach durchaus sinn machen. Ist der Code fertig, [strgC] [strgV] und man hat einen funktionierenden Code in Javascript. - Dann braucht eh keiner mehr das "Debugging". Und wenn was geändert wird, zurück in die Entwiklungsumgebung kopieren, basteln, und wenns geht, wieder rausnehmen.

                DJMarc75 cash 2 Replies Last reply Reply Quote 0
                • DJMarc75
                  DJMarc75 @Jack last edited by

                  @jack sorry aber das hat in der Kategorie "Einsteigerfragen" wenig zu suchen.... das ist voll Nerd und bring Einsteiger hier nicht weiter und bestimmt sehr durcheinander !

                  ... meine Meinung - kann mich aber wie oft auch täuschen !!!

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

                    @jack sagte: damit Debugging in (kleinen) Javaskripten im großen und ganzen überflüssig ist.

                    Das gezeigte sind Interpreter, die zyklisch abarbeiten. Node.js kompiliert aber und Javascript arbeitet Ereignis gesteuert.

                    EDIT: Dein Logo (RS-Flipflop) gefällt mir.

                    Jack 2 Replies Last reply Reply Quote 0
                    • cash
                      cash Most Active @Jack last edited by

                      @jack Ich verstehe es trotzdem nicht. Was habe ich davon zu wissen wie die Variablen gefüllt werden? Je nach Script haben Variablen in Ihren langen Scriptläufen unterschiedliche Stände…

                      Nochdazu sind Scripte abhängig von anderen Scripten oder Zuständen, die man auch nicht so einfach nachstellen kann oder will. Deshalb passieren manche Tests in Reallife. Und wie was das mit den Notfallübungen die so schön funktionieren und in Reallife fast immer durch einen dummen Zufall dann doch nicht so laufen wie gedacht 🙂

                      Noch dazu kann es Fehler beim Adapter geben um ein debugging in Scripten kommt man nach meiner Meinung nicht drumherum und unleserlicher wird das Script dadurch auch nicht. Ich kommentiere auch noch fleißig einzelne Bereiche so das viele Scripte hinterher 500 oder auch 1000 Zeilen haben. Das ganze kann man lesen. Auch nach 2 Monaten kann ich problemslos kleine Anpassungen an den div. Scripten vornehmen…. Oft baue ich zwar debugging bewußt ein nutze es aber tortzdem nicht wenn ich mir erstmal denke das es so läuft… was es dann auch in 9 von 10 Fällen so tut.

                      Jack 1 Reply Last reply Reply Quote 0
                      • Jack
                        Jack @DJMarc75 last edited by

                        @djmarc75 Sollte ja auch zur Vereinfachung der Fehlersuche dienen. Ist ja die Kategorie " Anregungen - Wünsche - Verbesserungsvorschläge"... Und Punkto Nerd, hier -IOBroker/Javascript- bin ich Einsteiger...

                        Wenn das hier wo anders besser hin passt, bitte Verschieben (lassen), oder auch löschen, sollte es sowieso keine Möglichkeit geben, so etwas umzusetzen...

                        Homoran 1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators @Jack last edited by

                          @jack sagte in Debugging:

                          Und Punkto Nerd, hier -IOBroker/Javascript- bin ich Einsteiger...

                          aber das Thema ist definitiv kein Einsteigerniveau

                          wo darf's denn hin?
                          Skripte oder allgemein?

                          Jack 1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Jack last edited by

                            @jack

                            also generell debugging wird man immer machen müssen. keiner ist so perfekt, egal in welcher sprache, das man immer ein perfektes ergebnis erhält ohne irgend einen fehler zu machen. egal in welcher programmiersprache oder syntaxlogik

                            blockly versucht ja, dem nutzer zumindest die möglichkeiten der syntax unter die arme zu greifen, in dem er nur syntaktisch korrekten code erzeugen kann.
                            leider hilft das bei der logik manchmal nicht immer weiter.

                            ich gebe dir recht, in blockly ist das mit dem debugging nur mit individuellem variablen-output möglich.
                            selbst google hat da keine besserein ideen
                            https://www.youtube.com/watch?v=N0ahsEvo45M

                            in javascript selbst (also browser javascript und nodejs) ist direkt ein debugger protokoll eingebaut, welches genau die von dir oben genannten informationen liefert (step-by-step-ausführung, breakt-points, auch conditional breakpoints, inspection, etc.)
                            nodejs
                            https://nodejs.org/en/docs/guides/debugging-getting-started/
                            chrome und edge: über die web developer tools

                            für die skripte im javascript-adapter müsste das theoretisch auch klappen,
                            da die skripte in einer jeweiligen javascript VM ausgeführt werden.
                            ausprobiert habe ich das nie.
                            auch gibt es noch eine Erweiterung für vs code, mit der man skripte in vscode entwickeln kann und dann wieder mit iobroker synchronisieren kann.

                            ich selbst entwickle meine iobroker skripte auch lieber in vs code. für die iobroker spezifiischen befehle mach ich mir dann individuell wrapper, die die funktionalität simulieren. endgültig getestet wird dann im iobroker

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

                              @paul53 Ja, ich weis. Es sind 2 Verschiedene Welten (OT <=> IT) immerhin arbeite "ich" mit Software von "euch". Aber hier im IOBroker, hätte ich schon gedacht, das man - wie soll ich sagen?

                              on(["fhem.0.SZ_D2.state"],
                                  function (obj) {
                                      var sDim = getState("fhem.0.SZ_D2.state").val;
                                      if (sDim == "off") {
                                          setState('zigbee.0.001788010b9af0de.brightness', 0);
                                          return;
                                      }
                              

                              Und nicht darunter sondern (wie auf meinen Bildern rechts daneben):

                              on([TRUE],
                                  function (obj) {
                                      var sDim = "dim 40";
                                      if (sDim == "off") {
                              /* von hier bis ende Komentar ist ausgegraut, da FALSE
                                          setState('zigbee.0.001788010b9af0de.brightness', 0);
                                          return;
                              */
                                      }
                              

                              Man nimmt im Grunde die Daten aus den IOBroker Objekten, und ersetzt sie hier. Einfach damit man gleich sieht was man tut.

                              Ich dachte ja nicht daran etwas am Javascripting zu ändern, sondern das erstellen der Scripts zu vereinfachen.

                              OliverIO paul53 2 Replies Last reply Reply Quote 0
                              • Jack
                                Jack @Homoran last edited by

                                @homoran Keine Ahnung... Ich wollte damit keine Diskusion ins rollen bringen. - War "nur" eine "Idee".
                                Aber wohl "Skripte"

                                Homoran 1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @Jack last edited by

                                  @jack sagte in Debugging:

                                  Es sind 2 Verschiedene Welten (OT <=> IT)

                                  ist es das tatsächlich? in einer Welt in der immer mehr von "Software defined xyz" geredet wird, ist das doch alles bereits zusammen.

                                  Jack 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @Jack last edited by

                                    @jack sagte in Debugging:

                                    Ich wollte damit keine Diskusion ins rollen bringe

                                    Warum nicht?
                                    konstruktive Diskussionen sind immer gut!

                                    @jack sagte in Debugging:

                                    Aber wohl "Skripte"

                                    erledigt
                                    bevor es für echte Noobs zu abschreckend wird 😀

                                    Jack 1 Reply Last reply Reply Quote 1
                                    • paul53
                                      paul53 @Jack last edited by

                                      @jack sagte: nicht darunter sondern (wie auf meinen Bildern rechts daneben):

                                      Wie soll ein kompiliertes Programm Rückgriff auf den Editor erhalten?

                                      Jack paul53 2 Replies Last reply Reply Quote 0
                                      • Jack
                                        Jack @paul53 last edited by

                                        PAUSE!

                                        Ich arbeite das hier mal wie ich es von SPSen gewohnt bin, von oben nach unten ab. -Und dann wieder von vorne.

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

                                          @paul53 sagte in Debugging:

                                          Das gezeigte sind Interpreter, die zyklisch abarbeiten. Node.js kompiliert aber und Javascript arbeitet Ereignis gesteuert.

                                          Danke für das Kompliment 🙂 - Ich Programmiere Maschinen. Keine Software.

                                          Auch in der Automatisierung wird vieles kompiliert, und man muss in den Kompiler-Optionen angeben wie "Tief?" man dann einblick haben möchte. -Aber es geht- Es geht auch auf die Resourcen, aber wie gesagt, braucht man es ja auch nur zum entwickeln. wenn die Sache läuft, dann läuft sie ja.

                                          1 Reply Last reply Reply Quote 0
                                          • Jack
                                            Jack @cash last edited by

                                            @cash sagte in Debugging:

                                            @jack Ich verstehe es trotzdem nicht. Was habe ich davon zu wissen wie die Variablen gefüllt werden? Je nach Script haben Variablen in Ihren langen Scriptläufen unterschiedliche Stände…

                                            Klar. Aber wenn die Variable per Du nicht den passenden Wert hat, ist klar das sie irgendwo davor eben falsch befüllt wurde.

                                            Und wenn Du jetzt "einfach in Deinem Code hoch scrollst", bis zur vorherigen Verwendungsstelle, siehst Du warum sie dort einen "Falschen" Wert bekommen hat.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            872
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            52
                                            1851
                                            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