Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Debug Variablen speichern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Debug Variablen speichern

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

      @killroy2
      so wie du dir das vorstellst kann das keine entwicklungsumgebung.

      du kannst an den entsprechenden stop punkten dir mit JSON.stringify die objekte auslesen und in einem texteditor zwischenspeichern

      wenn du diese wiederverwenden willst, kannst du die dann auch wieder an den entsprechenden stop punkten über die konsole den variablen wieder zuweisen oder temporär sogar ganz in den code einfügen.

      so mach ich das meistens

      oder du wendest dich der philosophy TDD (Test driven developement) zu. Da gibt es diverse bibliotheken. das bedeuted allerdings, das du für den meisten code noch extra test-code schreiben musst, was den gesamtaufwand erhöht. in diesen testcode kannst du dann deine daten als testdaten verwenden.
      für gui ist tdd allerdings nicht ganz so simpel
      https://dev.to/pat_the99/basics-of-javascript-test-driven-development-tdd-with-jest-o3c

      1 Reply Last reply Reply Quote 1
      • K
        killroy2 last edited by

        @oliverio ok
        sollte ein workaround werden, eigentlich will ich meinen servercode debuggen wenn er daten vom index_m client bekommt.
        Die Verbindung scheint zu funtionieren, ein Breakpoint auf

        onStateChange(id, state) {
        

        wird erreicht.
        in der io-package.json steht

        "messagebox": true,
            "subscribe": "messagebox",
        

        Ein Client

        sendTo(null, 'send', null, function (list) {
                                         alert(list);
                                    });
        

        löst kein

        onMessage(obj) {
        

        vom Adapter aus. Das kriege ich irgendwie nicht hin.

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

          @killroy2

          ok, woher weiß der sendTo-Befehl, an welchen Adapter er die Daten senden soll?
          Das erste null sollte sowas wie "meinadapter.0" heissen.

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

            @oliverio said in Debug Variablen speichern:

            meinadapter.0

            Theoretisch ist die Info ja da zu welchem Adapter die Seite gehört.
            Den Aufruf habe ich so in einem echten Adapter gesehen .
            Test mit Änderung auf meine Instanz hat nichts gebracht.

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

              @killroy2
              dann deinen adapter einmal deinstallieren und wieder installieren.
              ich habe festgestellt, das manche einstellungen in io-package.json bei nachträglicher änderung nicht von iobroker übernommen werden.

              dein sendTo verwendest du aus dem javascript adapter?
              die notation ist zwar nicht die selbe, aber ich verwende sendTo sehr umfangreich in den iobroker.tvprogram-widgets

              https://github.com/oweitman/ioBroker.tvprogram/blob/master/widgets/tvprogram/js/tvprogram.js#L2025

              ansonsten kannst du direkt in die doku zum sendto des javascriptadapter schauen
              https://github.com/ioBroker/ioBroker.javascript/blob/d7d3be4f8114b857c37d218190944365d6183a72/lib/javascript.d.ts#L1511

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

                @oliverio ich habs jetzt hingekriegt.

                Jetzt habe ich noch dieses Problem:

                im admin html rufe ich showMessage auf:

                <!-- Load ioBroker scripts and styles-->
                <link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
                <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
                
                <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
                <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
                
                <script type="text/javascript" src="../../js/translate.js"></script>
                <script type="text/javascript" src="../../lib/js/materialize.js"></script>
                <script type="text/javascript" src="../../js/adapter-settings.js"></script>
                
                <!-- Load our own files -->
                <link rel="stylesheet" type="text/css" href="style.css" />
                <script type="text/javascript" src="words.js"></script>
                
                                            showMessage(_('test: ') );
                

                Bekomme aber immer nur Fehler:

                Uncaught TypeError: $dialogMessage.dialog is not a function

                was mache ich falsch?
                vielen dank

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

                  @killroy2

                  Woher hast du diesen Befehl?
                  Gibt es eine Dokumentation dazu?

                  Schreib auch mal nochmal kurz wie du das messagebox Problem gelöst hast, das anderen das in Zukunft auch wieder helfen kann

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

                    @oliverio ich kann nicht rekonstruieren wo genau das Problem lag, ich habe ein bestehendes Beispiel genommen das funktionerte und dann Zug um Zug Änderungen von mir eingebaut.
                    Evtl lags am Namen unten:

                    class MeinAdapter extends utils.Adapter {
                            /**
                        
                             * @param {Partial<utils.AdapterOptions>} [options={}]
                        
                             */
                            constructor(options) {
                                super({
                                    ...options,
                                    name: "meinadapter", //und nicht filename
                    

                    ShowMessage ist die aus dem
                    https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/adapterdev.md

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

                      @killroy2 sagte in Debug Variablen speichern:

                      @oliverio ich habs jetzt hingekriegt.

                      Jetzt habe ich noch dieses Problem:

                      im admin html rufe ich showMessage auf:

                      <!-- Load ioBroker scripts and styles-->
                      <link rel="stylesheet" type="text/css" href="../../css/adapter.css" />
                      <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
                      
                      <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
                      <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
                      
                      <script type="text/javascript" src="../../js/translate.js"></script>
                      <script type="text/javascript" src="../../lib/js/materialize.js"></script>
                      <script type="text/javascript" src="../../js/adapter-settings.js"></script>
                      
                      <!-- Load our own files -->
                      <link rel="stylesheet" type="text/css" href="style.css" />
                      <script type="text/javascript" src="words.js"></script>
                      
                                                  showMessage(_('test: ') );
                      

                      Bekomme aber immer nur Fehler:

                      Uncaught TypeError: $dialogMessage.dialog is not a function

                      was mache ich falsch?
                      vielen dank

                      alles klar, jetzt weiß ich wo du bist. sorry, habe den befehl selbst noch nicht verwendet. mache meine konfig-gui mittlerweile mit react

                      der befehl selbst sieht gut aus.
                      ich vermute, du hast irgendwo noch generell ein fehler im seitenaufbau drin.
                      gehe im browser in die konsole (f12 drücken und je nach browser geht ein zusätzlicher bereich/fenster auf, wo es einen reiter mit konsole gibt.
                      dort werden die fehler ausgegeben.
                      evtl ist das nur ein folgefehler, den du zuerst beheben musst

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

                        @oliverio said in Debug Variablen speichern:

                        problematisch ist die funktion in
                        adapter-settings.js
                        letzte Zeile crasht weil dialogMessage unknown ist. Ich habe bisher nicht herausgefunden was meiner Seite fehlt damit der Dialog angezeigt wird.

                        function showMessageJQ(message, title, icon, width) {
                        > 
                        >     var $dialogMessage = $('#dialog-message-settings');
                        > 
                        >     if (!$dialogMessage.length) {
                        > 
                        >         $('body').append('<div id="dialog-message-settings" title="Message" style="display: none">\n' +
                        > 
                        >             '<p>' +
                        > 
                        >             '<span id="dialog-message-icon-settings" class="ui-icon ui-icon-circle-check" style="float :left; margin: 0 7px 50px 0;"></span>\n' +
                        > 
                        >             '<span id="dialog-message-text-settings"></span>\n' +
                        > 
                        >             '</p>\n' +
                        > 
                        >             '</div>');
                        > 
                        >         $dialogMessage = $('#dialog-message-settings');
                        > 
                        >         $dialogMessage.dialog({
                        > 
                        >             autoOpen: false,
                        > 
                        >             modal:    true,
                        > 
                        >             buttons: [
                        > 
                        >                 {
                        > 
                        >                     text: _('Ok'),
                        > 
                        >                     click: function () {
                        > 
                        >                         $(this).dialog('close');
                        > 
                        >                     }
                        > 
                        >                 }
                        > 
                        >             ]
                        > 
                        >         });
                        > 
                        >     }
                        > 
                        >     $dialogMessage.dialog('option', 'width', width + 500); <-- crash
                        
                        OliverIO 2 Replies Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @killroy2 last edited by

                          @killroy2

                          und wo sind die fehler meldungen aus der browser console?
                          zeig die bitte, alle.

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

                            @oliverio

                            Uncaught TypeError: $dialogMessage.dialog is not a function
                                showMessageJQ http://127.0.0.1:8081/js/adapter-settings.js:785
                                showMessage http://127.0.0.1:8081/js/adapter-settings.js:819
                                transmitXML http://127.0.0.1:8081/adapter/meinadapter/index.html?0&newReact=true&0:650
                                findAnswer http://127.0.0.1:8081/socket.io/socket.io.js:255
                                onmessage http://127.0.0.1:8081/socket.io/socket.io.js:163
                                connect http://127.0.0.1:8081/socket.io/socket.io.js:143
                                <anonymous> http://127.0.0.1:8081/js/adapter-settings.js:10
                            
                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @killroy2 last edited by OliverIO

                              @killroy2

                              oh mann, welchen browser benutzt du?
                              es sollte ungefähr so aussehen:
                              Hier nur die Fehler aus der Browserconsole mit dem chrome

                              16main.js:37 Uncaught TypeError: Cannot read properties of undefined (reading 'test')
                                  at HTMLAnchorElement.u (main.js:37)
                                  at HTMLAnchorElement.handle (jquery.js:5909)
                                  at HTMLBodyElement.dispatch (jquery.js:5429)
                                  at HTMLBodyElement.g.handle (jquery.js:5233)
                              /socket.io/?EIO=4&transport=polling&t=Npwn_Zu:1 Failed to load resource: net::ERR_INTERNET_DISCONNECTED
                              /socket.io/?EIO=4&transport=polling&t=Npwo04u:1 Failed to load resource: net::ERR_INTERNET_DISCONNECTED
                              43main.js:37 Uncaught TypeError: Cannot read properties of undefined (reading 'test')
                                  at HTMLAnchorElement.u (main.js:37)
                                  at HTMLAnchorElement.handle (jquery.js:5909)
                                  at HTMLBodyElement.dispatch (jquery.js:5429)
                                  at HTMLBodyElement.g.handle (jquery.js:5233)
                              

                              das was du da kopiert hast ist genau ein einziger fehler. und den hast du ja schon oben geschrieben.
                              wie gesagt ich vermute es ist ein folgefehler aufgrund eines fehlers, der vorher schon passiert ist. daher, alle fehlermeldungen, die seit dem laden der seite aufgetreten sind.

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

                                @oliverio Firefox, und nein es kann kein Folgefehler sein, wenn ich die Zeile entferne ist alles gut bzw wenn ich showMessage wo anders aufrufe kommt der Fehler dort. Es hat eher was mit Integration zu tun

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

                                  bin zwar immer noch der Meinung.
                                  aber wenn die fehlermeldungen in deinem browser geheim sind, dann alles gut.
                                  wenn du den befehl entfernst, dann werden die zeilen, die fehler erzeugen auch nicht aufgerufen.

                                  dann musst du hier debuggen, warum durch diesen codeteil das htmlelement nicht angelegt wird, die referenz nicht in $dialogMessage landet und jquery da den dialog nicht drauf registrieren kann.

                                  @killroy2 sagte in Debug Variablen speichern:

                                  @oliverio said in Debug Variablen speichern:

                                  problematisch ist die funktion in
                                  adapter-settings.js
                                  letzte Zeile crasht weil dialogMessage unknown ist. Ich habe bisher nicht herausgefunden was meiner Seite fehlt damit der Dialog angezeigt wird.

                                  function showMessageJQ(message, title, icon, width) {
                                  > 
                                  >     var $dialogMessage = $('#dialog-message-settings');
                                  > 
                                  >     if (!$dialogMessage.length) {
                                  > 
                                  >         $('body').append('<div id="dialog-message-settings" title="Message" style="display: none">\n' +
                                  > 
                                  >             '<p>' +
                                  > 
                                  >             '<span id="dialog-message-icon-settings" class="ui-icon ui-icon-circle-check" style="float :left; margin: 0 7px 50px 0;"></span>\n' +
                                  > 
                                  >             '<span id="dialog-message-text-settings"></span>\n' +
                                  > 
                                  >             '</p>\n' +
                                  > 
                                  >             '</div>');
                                  > 
                                  >         $dialogMessage = $('#dialog-message-settings');
                                  > 
                                  >         $dialogMessage.dialog({
                                  > 
                                  >             autoOpen: false,
                                  > 
                                  >             modal:    true,
                                  > 
                                  >             buttons: [
                                  > 
                                  >                 {
                                  > 
                                  >                     text: _('Ok'),
                                  > 
                                  >                     click: function () {
                                  > 
                                  >                         $(this).dialog('close');
                                  > 
                                  >                     }
                                  > 
                                  >                 }
                                  > 
                                  >             ]
                                  > 
                                  >         });
                                  > 
                                  >     }
                                  > 
                                  >     $dialogMessage.dialog('option', 'width', width + 500); <-- crash
                                  
                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    killroy2 @OliverIO last edited by

                                    @oliverio nein, es gibt keine weitere Fehlermeldung, im Log sind ein paar get's drin bis zur Exception, alles irrelevant.

                                    Ich habe es mal weiter untersucht, er sucht nach index_m.html und springt dann zum JQ Dialog statt Materialize.
                                    Ich hatte meine Admin Seite temporär nach index.html umbenannt weil er die Laden will und ich noch nicht herausgefunden habe was ich dafür einstellen muss.

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

                                      @killroy2
                                      evtl solltest du mit dem adapter creator mal eine neue grundstruktur erzeugen und dort alles nach und nach einbauen was du schon hast
                                      die admin grundfunktionalitäten funktionieren soweit
                                      ansonsten doktorst du an evtl kleinigkeiten rum die du nicht so einfach findest

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

                                        @oliverio mal eine andere dumme Frage:
                                        Äderungen von Objekten zum Adapter zugehörig können mit onStateChange(id, state) abgefragt werden.
                                        Ich habe 2 Informationen die ich auswerten will.
                                        -Ein Nutzer, Script.. schreibt normalerweise auf val: StateValue; das ist auch so bei mir
                                        -Parallel soll mein Adapter nichts mit dem Wert vom Objekt machen sondern der Nutzer soll eine andere Art von Nutzung einfach antriggern können.
                                        Das gillt für jedes Objekt, und für den 2ten Use Case will ich nicht den ganzen Objektbaum mit ähnlichen Elementen duplizieren. Ich hoffe das war verständlich. Gibt es eine gute Idee sowas zu tun?

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

                                          @killroy2

                                          wenn du nur triggern willst:
                                          ich habe im adapter squeeboxrpc den folgenden datenpunk in einem adapter

                                              'getFavorites': {
                                                  name:   'getFavorites',
                                                  read:   true,
                                                  write:  true,
                                                  type:   'boolean',
                                                  role:   'button',
                                                  def: false
                                              }};
                                          

                                          in der alten objekt ansicht, wird wegen der role button ein knopf angezeigt
                                          in der neuen leider nicht mehr, da bin ich noch am schauen, warum das so ist.

                                          wenn der wert wichtig ist, den der nutzer da einträgt,
                                          ja dann mit stateChange geht das.

                                          du kannst ja in meine adapter reinschauen, ich verwende das in fast jedem adapter

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

                                            @oliverio verstehe ich so dass du komplett auf Trigger umgestellt hast, nicht parallel.

                                            Mein Problem etwas konkreter:
                                            -Ich habe einen Kommunikationsadapter, damit kann ich Werte auf den Bus senden. Die Sendeadresse ist hinterlegt im entsprechenden Objekt. Write geht über die Änderung des Werts.
                                            -Gleichzeitig sieht das Kommunikationsprotokoll vor, auch einen Request des Werts (von anderen Teilnehmern angefordert) auf den Bus zu schreiben. Adresse wieder im Objekt hinterlegt.

                                            Für den zweiten Fall will ich nicht den kompletten Objektbaum, der tausende Einträge haben kann, duplizieren. Dafür brauche ich einen zweiten Trigger

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            613
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            28
                                            1175
                                            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