Ankündigung

Einklappen
Keine Ankündigung bisher.

Debugging...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Debugging...

    wie kan man eigentlich auf EDOMI debuggen?
    Nachdem ich beim eibPC mehr Zeit für das debuggen und Ursachenfinden als für das Programmieren /Umsetzen aufwände überlege ich wie man das Ganze bei EDOMI macht?
    Kann man die Variable "live" abfragen, oder im Baustein Code debugging Funktionen (Halt, Trace,..) einbauen?
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    #2
    Grundsätzlich kannst du im Logikeditor die livewerte an den Eingängen sichtbar machen. Und bei Bedarf die Werte aller KOs dieser Seite. Und (etwas sperrig) in der Bausteinhilfe (aus dem Logikeditor heraus) siehst Du den Status und die Variablen eines LBS.

    Ansonsten bleibt noch das TraceLog: writeToTraceLog(0,true,"...")

    "halt" usw. gibt es naturgemäß nicht in PHP...
    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

    Kommentar


      #3
      Hier ein Minibeispiel ...

      PHP-Code:
      if (array_key_exists('LSV5',   $output)) {
          
      setLogicLinkAusgang($id,24,$output['LSV5']);
          
      writeToTraceLog(0,true,'iTunes RM | A24 | LSV-05 exists        : '.array_key_exists('LSV5',$output));
          
      writeToTraceLog(0,true,'iTunes RM | A24 | Lautstärke LSV-05 ist: '.$output['LSV5'].' %');

      Danke und LG, Dariusz
      GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

      Kommentar


        #4
        klingt gut
        DANKE
        EPIX
        ...und möge der Saft mit euch sein...
        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

        Kommentar


          #5
          Ich empfehle dir im ganzen Code an wichtigen Stellen ein writeToTraceLog einzusetzen. Das ganze jedoch mit einem debug Eingang zu verbinden, sodass du jederzeit das Debugging einschalten/ausschalten kannst.
          Somit musst du nicht mühsam alle writeToTracelog-Zeilen wieder entfernen/auskommentieren, wenn du den LBS veröffentlichst. Zudem kann auch der User später problemlos das Debugging wieder aktivieren.

          Mein Debug-Log (im Edomi Trace-Log) sieht jeweils so aus:

          tracelog.png

          Im Code lautet die Trace Log Zeile jeweils so:
          PHP-Code:
          if ($debug==1) {writeToTraceLog(0,true,"URL Pfad nicht gefunden!");} 
          Mit Copy/Paste kannst du die dann (fast) überall verwenden. (Natürlich musst du die Variable $debug so früh als möglich setzen und von einem Eingang übernehmen. Ich lasse E1 für den Trigger und E2 immer für das Debug. Alle weiteren Eingänge können dann beliebig erweitert werden, ohne, dass ich was ändern muss.)
          Zuletzt geändert von rdeckard; 02.03.2016, 18:48.

          Kommentar


            #6
            Zitat von rdeckard Beitrag anzeigen
            Im Code lautet die Trace Log Zeile jeweils so:
            PHP-Code:
            if ($debug==1) {writeToTraceLog(0,true,"URL Pfad nicht gefunden!");} 
            Danke, jetzt ist mein Mausrad kaputt

            Ich packe in meine debug Routine gern ein:
            PHP-Code:
            writeToTraceLog(0,true,"LBSLBSID: $meldung"); 
            rein, dann steht im trace welche LBS-ID den Eintrag erzeugt hat.

            Geht aber nicht im EXEC-Teil!

            gruesse :: Michael
            Zuletzt geändert von wintermute; 02.03.2016, 23:44. Grund: typo

            Kommentar


              #7
              Du kannst auch einfach $id nehmen, dies ist die LBS-Instanz-ID (also die ID in Klammern hinter der Bezeichnung eines LBS im Logikeditor). Das geht auch im EXEC-Teil
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #8
                Zitat von gaert Beitrag anzeigen
                Du kannst auch einfach $id nehmen, dies ist die LBS-Instanz-ID (also die ID in Klammern hinter der Bezeichnung eines LBS im Logikeditor). Das geht auch im EXEC-Teil
                Dann mach ich das halt zukuenftig so

                Kommentar


                  #9
                  [...] Dies war etwas OT ... Sorry! - Mache ggf. einen neuen Thread auf.
                  Zuletzt geändert von MIT; 03.03.2016, 12:26.

                  Kommentar


                    #10
                    Du kannst auch einfach $id nehmen, dies ist die LBS-Instanz-ID (also die ID in Klammern hinter der Bezeichnung eines LBS im Logikeditor).
                    Könntest du das auch anhand eines Beispiels zeigen/erklären ?
                    DANKE !
                    Danke und LG, Dariusz
                    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                    Kommentar


                      #11
                      Zitat von coliflower Beitrag anzeigen
                      Könntest du das auch anhand eines Beispiels zeigen/erklären ?
                      Gern
                      Diese Funktion:
                      PHP-Code:
                      function LB_LBSID_debug($id,$a) {
                          
                      writeToTraceLog(0,true,"LBSLBSID($id): $a");

                      mit diesem Aufruf:
                      PHP-Code:
                      LB_LBSID_debug($id,"Modus $modus (Partymodus aktivert)"); 
                      erzeugt dann (zum Beispiel) folgende Ausgabe:
                      Code:
                      LBS19000153(112): Modus 1 (Baustein aktivert)
                      Somit kann man nicht nur sehen welche BausteinID (19000153) verantwortlich ist, sondern auch welche Instanz (112).

                      Nur im EXEC Teil wird daraus dann ein
                      Code:
                      LBSLBSID(112): Modus 1 (Baustein aktivert)
                      (wie vorher schon bemerkt)

                      gruesse :: Michael

                      Kommentar


                        #12
                        Dankeschön !

                        D.h., im LBS-Teile würde ich einmal am Anfang diesen Code einfügen
                        PHP-Code:
                        function LB_LBSID_debug($id,$a) {
                            
                        writeToTraceLog(0,true,"LBSLBSID($id): $a");


                        und dort wo ich es auswerten möchte z.B.:
                        PHP-Code:
                        if (($E[10]['value'] == 1) && ($E[10]['refresh'] == 1)) {
                        LB_LBSID_debug($id,"iTunes $E[10]['value'] (AirPlay aktiviert)"); 

                        Anstatt
                        PHP-Code:
                        if (($E[10]['value'] == 1) && ($E[10]['refresh'] == 1)) {
                        writeToTraceLog(0,true,'iTunes | E10 | AirPlay aktiviert: '.$E[10]['value']); 
                        Danke und LG, Dariusz
                        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                        Kommentar


                          #13
                          Zitat von coliflower Beitrag anzeigen
                          D.h....
                          Richtig... ich finde zwar Funktionsdefinitionen gehoeren ans Ende und nicht an den Anfang, aber syntaktisch ist das egal

                          Kommentar


                            #14
                            Der Platzhalter LBSLBSID wird übrigens vom "LBS-Parser" durch die ID des LBS ersetzt. Und da dies im EXEC-Teil eigentlich nicht notwendig ist (es gibt dort ja keine entsprechende Funktion wie im LBS-Part), habe ich mir dies gespart. Wenn aber Bedarf in dieser Richtung besteht (offensichtlich ist dies ja der Fall - zum Loggen), kann ich den Parser gerne noch darum bitten...
                            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                            Kommentar


                              #15
                              Zitat von gaert Beitrag anzeigen
                              Der Platzhalter LBSLBSID
                              Nur LBSID

                              Aber ja, ich finde das praktisch. Und kosten tuts ja auch nicht, wird ja nur einmalig gemacht...

                              Kommentar

                              Lädt...
                              X