Ankündigung

Einklappen
Keine Ankündigung bisher.

Weboutput als einfacher Logger

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

    Weboutput als einfacher Logger

    Folgendes Makro haben wir für einen Kunden gebaut:
    Code:
    // Nutzt ein Weboutputfeld als formatiertes Loggerfenster
    // @date    18.07.2014
    // @version    1 
    // @author    Enertex Bayern GmbH (msc)
    :begin WebLogger(ID,Text)
    :info $Schreibt formatiert auf ein Weboutputfeld (QUAD-Größe) und gibt einen Textstring (40 Zeichen) dort aus$\\
        $ID des weboutput-Elements (u08)$\\
        $Textvariable$
    :shortinfo $Weboutputfeld als formatiertes Loggerfenster$
    
    :var TextLogger_out@
    :var TextLogger_Count@
    :var TextLogger_line@
    :var TextLogger_Header@
    :var TextLogger_Body@
     
    TextLogger_out@    =$$
    TextLogger_Count@  =0
    // Maximum: 40 Characters each Log entry
    TextLogger_line@   =$$c40
    TextLogger_Header@ =$<body><table border="1" width="320" rules="groups">   <thead><tr><th><font color=teal>Datum </font></th> <th  width="74%">Event </th> </tr></thead><tbody>$c200
    TextLogger_Body@   =$$
    
    if change(Text) then {
       TextLogger_line@=Text;
       if TextLogger_Count@>12 then {
         TextLogger_Body@=split(TextLogger_Body@,find(TextLogger_Body@,$</td>$,1u16)+5u16,END)+$<tr><td><font color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td>$;
       } else {
         TextLogger_Body@=TextLogger_Body@+$<tr><td><font color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td></tr>$;
         TextLogger_Count@=TextLogger_Count@+1;  
       } endif;
       TextLogger_out@=TextLogger_Header@ +TextLogger_Body@+$</tbody></table></body>$;
       weboutput(ID, TextLogger_out@);
    } endif
    :end
    Mit dem Code
    [highlight=epc]
    [WebServer]
    page (1)[$Allgemein$,$Logger$]
    design $black$
    weboutput(LoggerOut_ID)[QUAD,NOICON]
    [EibPC]
    WebLogger(LoggerOut_ID,MyText)

    MyText=$Hier ist das Event um $+convert(settime(),$$)
    [/highlight]
    kann man dann Logs wie unten in der Grafik genierieren. Bei Jeder Veränderung der Variable Text wird ein neuer Eintrag mit Zeitstempel generiert.
    Das Makro wird in der EnertexWebV3.lib zu finden sein.
    Angehängte Dateien
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    #2
    Danke für den Eventlogger, wollte ich schon lange in Angriff nehmen! Jetzt stellt sich mir nur die Frage, ob das Makro auch mit der V2 funktioniert, oder gibts darin eine Funktion, die die V3 verlangt??
    MfG MrKnx

    Kommentar


      #3
      In v2 hast du schon mal kein Weboutput...
      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

      Kommentar


        #4
        Vielen Dank Michael! Den habe ich gerade in meinen EibPC gespielt. Wollte schon immer ein Logfenster!! Funktioniert sehr gut!

        Gruss,
        Martin

        Kommentar


          #5
          Hallo Michael,

          auch von mir ein Danke für das Makro!
          Ich habe es nun eingebaut und es funktioniert.

          An drei Stellen könnte ich mir noch Verbesserungen vorstellen:
          1. Die letzte Zeile ist bei mir abgeschnitten.
            (Siehe Screenshot Firefox auf PC. Auf dem Android-Tablet hingegen passt es.)
          2. Das Datum ist nur in den ersten Zeilen gut lesbar (auch bei eurem Screenshot).
          3. Eine Umkehrung der Reihenfolge fände ich gut (nicht nur wegen 1. und 2.)

          Gruß, Jens.
          Angehängte Dateien

          Kommentar


            #6
            ich hab mir ja selber was ähnliches gebastelt.. ich bin hingegangen und hab
            einfach alles was nach X Zeilen kommt abgeschnitten.. so kann mir sowas
            wie diese halben Zeilen nicht passieren.

            Würde eine andere Farbe das Datum lesbarer machen ? wenn ja.. schau
            dir doch einfach mal das Macro an und such die stelle in der die Farbe angegeben ist.. und änder das... (Tipp: color=teal)

            Umkehrung der Reihenfolge sollte auch machbar sein..

            Gruß Martin
            Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

            Kommentar


              #7
              Hallo Martin,

              danke für deine Antworten! Dein Makro habe ich übrigens auch im Einsatz.

              Für meinen eigenen Bedarf bekomme ich das angepasst.
              Aber Enertex will daraus ja ein Standard-Makro machen. Und für dieses sind meine Anregungen gedacht.

              Gruß,
              Jens.

              Kommentar


                #8
                Zitat von DerRenovator Beitrag anzeigen
                1. Die letzte Zeile ist bei mir abgeschnitten.
                  (Siehe Screenshot Firefox auf PC. Auf dem Android-Tablet hingegen passt es.)
                Vermutlich liegt das an der Auflösung/Grafikkarte. Du kannst die Anzahl der Einträge reduzieren
                dazu im Code
                [highlight=epc]
                if TextLogger_Count@>12
                [/highlight]
                die Zahl 12 auf 11 reduzieren.
                Eine Umkehrung der Reihenfolge fände ich gut (nicht nur wegen 1. und 2.) Gruß, Jens.
                das ist natürlich Geschmacksache: dazu muss man nur die Stringoperationen umstellen- Etwa so wie anbei ungetestet:
                Code:
                 if TextLogger_Count@>12 then {
                    TextLogger_Body@=$<tr><td><font  color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td>$+split(TextLogger_Body@,find(TextLogger_Body@,$</td>$,1u16)+5u16,END); 
                   } else { 
                     TextLogger_Body@=$<tr><td><font color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td></tr>$+TextLogger_Body@;      TextLogger_Count@=TextLogger_Count@+1;      
                } endif;
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  #9
                  Hi Leute,

                  hab mir mal das Loggingmacro angeschaut.. ganz nett.. habs noch für mich
                  etwas angepasst.. vielleicht braucht das so ja auch jemand:

                  Neue Einträge kommen jetzt oben und man kann die Schriftgröße anpassen. somit
                  passen dann auch mehr Einträge in das Weboutput (Anzahl der Einträge wird angepasst)...

                  Code:
                  // Nutzt ein Weboutputfeld als formatiertes Loggerfenster
                  // @date    18.07.2014
                  // @version    1 
                  // @author    Enertex Bayern GmbH (msc)
                  :begin WebLogger(ID,Text,FSize)
                  :info $Schreibt formatiert auf ein Weboutputfeld (QUAD-Groesse) und gibt einen Textstring (40 Zeichen) dort aus$\\
                      $ID des weboutput-Elements (u08)$\\
                      $Textvariable$\\
                  	$Schriftgroesse: 0.6, 0.8, 1.0 oder 1.2$
                  :shortinfo $Weboutputfeld als formatiertes Loggerfenster$
                  
                  :var TextLogger_out@
                  :var TextLogger_Count@
                  :var TextLogger_line@
                  :var TextLogger_Header@
                  :var TextLogger_Body@
                   
                  TextLogger_out@    =$$
                  TextLogger_Count@  =0
                  TextLogger_Lines = 0
                  TextLogger_Cut = 0u16
                  
                  // Maximum: 40 Characters each Log entry
                  TextLogger_line@   =$$c40
                  TextLogger_Header@ =$<body><table border="1" width="320" rules="groups" style="font-size:$+FSize+$em">   <thead><tr><th><font color=teal>Datum </font></th> <th  width="74%">Event </th> </tr></thead><tbody>$c200
                  TextLogger_Body@   =$$
                  
                  //Anzahl Zeilen nach Textgroesse
                  if FSize == $0.6$ then TextLogger_Lines = 16; TextLogger_Cut = 33u16  endif
                  if FSize == $0.8$ then TextLogger_Lines = 14; TextLogger_Cut = 29u16 endif
                  if FSize == $1.0$ then TextLogger_Lines = 12; TextLogger_Cut = 25u16 endif
                  if FSize == $1.2$ then TextLogger_Lines = 10; TextLogger_Cut = 21u16 endif
                  
                  if change(Text) then {
                     TextLogger_line@=Text;
                     if TextLogger_Count@>TextLogger_Lines then {
                       TextLogger_Body@=$<tr><td><font color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td></tr>$+split(TextLogger_Body@,0u16,(find(TextLogger_Body@,$</td>$,TextLogger_Cut)+4u16));
                   } else {
                       TextLogger_Body@=$<tr><td><font color=teal>$+convert(settime(),$$c20)+$</font></td><td>$+TextLogger_line@+$</td></tr>$+TextLogger_Body@;
                       TextLogger_Count@=TextLogger_Count@+1;  
                     } endif;
                     TextLogger_out@=TextLogger_Header@ +TextLogger_Body@+$</tbody></table></body>$;
                     weboutput(ID, TextLogger_out@);
                  } endif
                  
                  
                  
                  :end

                  Aufruf dann so:
                  Code:
                  WebLogger(34, VarText,$0.8$)



                  Gruß Martin
                  Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                  Kommentar


                    #10
                    Danke, Martin, deine Ergänzungen gefallen mir gut.

                    Mir ist noch ein Problem aufgefallen, das allen Versionen dieses Makros gemeinsam ist:
                    Gelegentlich habe ich den Fall, dass ich mehrmals hintereinander das gleiche Ereignis protokollieren möchte. Die Ausgabe soll sich also ausschließlich im Zeitstempel unterscheiden.Wegen des "if change(Text)" wird aber nur das erste Ereignis protokolliert. Hat da jemand einen Lösungsansatz?

                    Gruß,
                    Jens.

                    Kommentar


                      #11
                      Zitat von Brick Beitrag anzeigen
                      H
                      Code:
                      WebLogger(34, VarText,$0.8$)
                      wie wärs mit nem Screenshot? Ein Bild sagt mehr als tausend Worte...
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        Zitat von DerRenovator Beitrag anzeigen
                        Wegen des "if change(Text)" wird aber nur das erste Ereignis protokolliert.
                        Event funktioniert ja nur bei GA's.. soweit ich weiß.. mir ist jetzt auf die schnelle nichts eingefallen für eine Variable..
                        im schlimmsten Fall könntest du das aber über eine DummyGA lösen.. also einfach "Text" an eine GA schicken und diese dann mit if event(GA) überwachen..

                        Zitat von enertegus Beitrag anzeigen
                        wie wärs mit nem Screenshot? Ein Bild sagt mehr als tausend Worte...
                        bitte gern..
                        Angehängte Dateien
                        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                        Kommentar


                          #13
                          Na, dann habe ich mal selber probiert. Man kann die Text-Variable zwischendurch leeren und schon funktionieren auch mehrfache Ereignisse.
                          [highlight=epc]
                          if Text != $$ then {
                          [... ]
                          Text = $$;
                          } endif
                          [/highlight]

                          Kommentar


                            #14
                            zum Verständnis....
                            Ist es dann so, dass im Output Fenster für jeden event eine neue Zeile angezeigt wird?
                            Oder ist das nur für zu bestimmende GA's? Wo wird dann die GA angegeben, die geloggt werden soll?
                            Vielleicht hat jemand ein Bild, wie es aussehen würde. Hier im neuen Forum ist kein Bild mehr vorhanden.

                            Gruß
                            Ralf

                            Kommentar


                              #15
                              DU bestimmst was geloggt wird...
                              (zB mit if event(GA)....

                              im ersten Beitrag ist der Aufruf zu sehen....
                              Angehängte Dateien
                              EPIX
                              ...und möge der Saft mit euch sein...
                              Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                              Kommentar

                              Lädt...
                              X