Ankündigung

Einklappen
Keine Ankündigung bisher.

Komfortabel loggen mit EibPC und netcat

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

    [Codebeispiel] Komfortabel loggen mit EibPC und netcat

    Hallo zusammen,

    mich hat es ein wenig gewurmt, das ich Debugging Informationen nur über den Bus senden kann und nicht per ftp oder email oder sonst irgendwie.

    Nun habe ich kurzerhand mal sendudp ausprobiert:

    Code:
    CurrentTime = $@ $+convert(hour(),$$)+$:$+convert(minute(),$$)+$:$+convert(second(),$$)+$, Msg:$
    DoHeartbeat = EIN
    DebugPort = 5050u16
    DebugIP = 192.168.22.19
    
    DebugCount=0u32
    if cycle(0,5) and DoHeartbeat then { 
        sendudp(DebugPort,DebugIP, CurrentTime, convert(DebugCount, $$)+$. EibPC Beta lebt noch$, 13, 10);
        DebugCount =  DebugCount +1u32
    } endif
    Dieser Code sendet an meinen Rechner auf dem Port 5050 jeweils ein Telegramm mit der aktuellen Zeit im Rhythmus von 5 Sekunden.

    Auf dem Rechner läuft das Programm netcat für Windows und zeigt mir die Meldungen an mit folgender Kommandozeile:
    Code:
    C:\>nc -l -p 5050 -u
    Wenn man verschiedene Bereiche debuggen möchte kann man sich natürlich noch zusätzliche Ports aufmachen.
    Einen Mitschnitt erreicht man übrigens mit

    Code:
    C:\>nc -l -p 5050 -u > Mitschnitt.txt
    Da steht dann z.B. drin:
    Code:
    @ 22:9:48, Msg:
    1. EibPC Beta lebt noch
    
    @ 22:9:53, Msg:
    2. EibPC Beta lebt noch
    
    @ 22:9:58, Msg:
    3. EibPC Beta lebt noch
    
    @ 22:10:3, Msg:
    4. EibPC Beta lebt noch
    Wenn mir jetzt noch jemand eine Anleitung gibt, wie ich netcat auch auf der Synology DS 209-II installiere, dann wäre das .

    Gruß,
    Bernd


    #2
    Zitat von bmx Beitrag anzeigen
    Hallo zusammen,
    mich hat es ein wenig gewurmt, das ich Debugging Informationen nur über den Bus senden kann und nicht per ftp oder email oder sonst irgendwie.
    Ok, das Bug-Zeichen im Thread hat mich etwas verwirrt...
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von bmx Beitrag anzeigen
      Wenn mir jetzt noch jemand eine Anleitung gibt, wie ich netcat auch auf der Synology DS 209-II installiere, dann wäre das .
      Hmm..
      Code:
      MMHO-DS207> ipkg search nc    
      Successfully terminated.
      Sieht nach viel Crossfrickeln aus

      Ok, das Bug-Zeichen im Thread hat mich etwas verwirrt...
      Naja, mit ssh-Zugang+
      cat /<weissnich-der-socket-auf-dem-die-Telegramme> > meinlogfile.txt
      wäre es einfacher

      Duck-und-weg, Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #4
        Zitat von bmx Beitrag anzeigen
        Wenn mir jetzt noch jemand eine Anleitung gibt, wie ich netcat auch auf der Synology DS 209-II installiere, dann wäre das .
        Kannst du das dann da Visualisieren oder willst du einfach nur ein Log-file, aus dem hervorgeht wann der EibPC nicht lief?
        Nach Makkis Post nehme ich mal an, dass auf dem Teil ein Linux mit ssh-Zugang läuft und du netcat installieren konntest. Du must das ganze dann halt noch in ein Startskript der Synology einbauen.
        Statt
        nc -l -p 5050 -u > Mitschnitt.txt
        aber
        nc -l -p 5050 -u >> Mitschnitt.txt
        verwenden. Und Vorsicht: Bei netcat gibt es verschiedne Versionen. Mal heisst das Binary nc, mal neisst's netcat. Die Kommandozeilenoptionen können sich auch etwas unterscheiden.
        Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
        Amazon: KNXnet/IP Router
        , KNXnet/IP Interface

        Kommentar


          #5
          Es ging mir einfach nur darum mal kurz ein paar Debug Informationen auszugeben (oder später auch mehr) oder eine Art Log zu erstellen der Art:

          20:00 Uhr Garage wurde geöffnet
          20:05 Uhr Garage wurde geschlossen

          20:10:01 Uhr Haustür wurde geöffnet
          20:10:18 Uhr Haustür wurde geschlossen

          ohne das ich das in KNX Strings zerlegen muß.

          Gruß,
          Bernd

          Kommentar


            #6
            Seid ihr bezüglich des Loggings schon weiter? Ich habe auf einer Webseite

            Syslog: Sending log from remote servers to syslog daemon » Linux by Examples

            gelesen, dass man mit netcat auch Syslog Meldungen senden kann. Sollte man das dann nicht auch mit dem EIBPC können?

            Kommentar


              #7
              Nein, das kann man nicht.
              Firma: Enertex Bayern GmbH, Ebermannstädter Straße 8, 91301 Forchheim
              Amazon: KNXnet/IP Router
              , KNXnet/IP Interface

              Kommentar


                #8
                warum genau funktioniert das denn nicht, ich habe dort herausgelesen, dass syslog nur ein einfach string, gesendet an port 514 ist?

                Kommentar


                  #9
                  Hi Fuchs,

                  dann bau doch einfach ein Makro dafür...

                  Gruß,
                  Bernd

                  Kommentar


                    #10
                    das werde ich auch probieren :-) wenn dann der qnap da ist, kann der schön alles aufschreiben ;-)

                    Kommentar


                      #11
                      Hallo Bernd,

                      5 Sterne von meiner Seite für die Idee & Umsetzung von Dir.

                      Der Vollständigkeit halber noch die Anleitung für den Mac.

                      # Terminal Fenster öffnen
                      # Kommando nc -l -u 5050 eingeben

                      Bei der Programmierung komplexerer Makros mit vielen Unterprozessen, kann man so deutlich schneller Fehler erkennen und den Code optimieren, als mit dem statischen Auswählen von Variablen über den Debugger.

                      Der Prozess hat mir sehr geholfen abschließend festzustellen, dass der HA7E ein sehr gutes Interface ist und die im Forum stets genannte Standard-Parole "1-Wire Problem muß an der Verkabelung liegen" wiederlegbar ist.

                      Viele Grüße

                      Michael

                      Kommentar


                        #12
                        Es ist zwar noch kein Makro, aber der EibPC sendet Syslog-Meldungen

                        Für Facility und Serverity einfach den Zahlenwert aus den unteren Tabellen nehmen. Senden auf Ein und schon sendet er den Text als Syslog-Meldung an den Server.


                        [highlight=epc]
                        // ************** Syslog **************
                        Syslog_Facility=0u08
                        Syslog_Serverity=0u08
                        Syslog_PRI=0u08
                        Syslog_Senden=AUS
                        Syslog_Text=$EibPC Test$
                        Syslog_Port = 514u16
                        Syslog_IP = 192.168.123.106

                        if Syslog_Senden then {
                        Syslog_PRI=Syslog_Facility*8+Syslog_Serverity;
                        sendudp(Syslog_Port,Syslog_IP,$<$+convert(Syslog_P RI,$$)+$>$+Syslog_Text);
                        Syslog_Senden=AUS
                        } endif
                        // ************** ENDE Syslog **************
                        [/highlight]
                        Code:
                            
                        Numerical         Severity           Code             
                        0       Emergency: system is unusable            
                        1       Alert: action must be taken immediately            
                        2       Critical: critical conditions            
                        3       Error: error conditions            
                        4       Warning: warning conditions            
                        5       Notice: normal but significant condition            
                        6       Informational: informational messages            
                        7       Debug: debug-level messages
                        Code:
                            
                        Numerical       Facility           Code            
                        0             kernel messages            
                        1             user-level messages            
                        2             mail system            
                        3             system daemons            
                        4             security/authorization messages            
                        5             messages generated internally by syslogd            
                        6             line printer subsystem            
                        7             network news subsystem            
                        8             UUCP subsystem            
                        9             clock daemon           
                        10             security/authorization messages           
                        11             FTP daemon           
                        12             NTP subsystem           
                        13             log audit           
                        14             log alert           
                        15             clock daemon           
                        16             local use 0  (local0)           
                        17             local use 1  (local1)           
                        18             local use 2  (local2)           
                        19             local use 3  (local3)           
                        20             local use 4  (local4)           
                        21             local use 5  (local5)           
                        22             local use 6  (local6)           
                        23             local use 7  (local7)
                        Angehängte Dateien

                        Kommentar


                          #13
                          Code:
                          // Makro zum senden von Syslogmeldungen mit dem EibPC
                          :begin Syslog(Syslog_Facility,Syslog_Serverity,Syslog_Text)
                          :info $Sendet Syslog-Meldungen$
                              $Facility-Code$\\
                              $Serverity-Code$\\
                              $Meldung$\\
                          :shortinfo $$Sendet Syslog-Meldungen$$
                          
                          Syslog_PRI=0u08
                          Syslog_Port = 514u16
                          Syslog_IP = 192.168.123.106
                           
                          if Syslog_Senden then {
                              Syslog_PRI=Syslog_Facility*8+Syslog_Serverity;
                              sendudp(Syslog_Port,Syslog_IP,$<$+convert(Syslog_PRI,$$)+$>$+Syslog_Text);
                          } endif
                          Ich probiere gerade an dem Makro, aber wie lasse ich die Schleife bei jedem Aufruf ausführen? Ich habe ja kein True? Was schreibe ich statt "if Syslog_Senden the"?

                          Kommentar


                            #14
                            Irgendwie verstehe ich das mit dem Makro nicht. Wie schaffe ich es, das ich den Code im Quelltext mit Syslog(1u08,5u08,$Tür geschlossen$) aufrufen kann?

                            Also in der Art

                            if GA then Syslog(1u08,5u08,$Tür geschlossen$)

                            ?

                            Also quasi eine eigene Funktion generieren?

                            Kommentar


                              #15
                              Hi Fuchs,

                              Du kannst es so in etwa schreiben wie unten.

                              Zunächst einmal die IP und Port im Zusatzmakro einmalig festlegen
                              [highlight=epc]

                              :begin SyslogInit( sysIP, sysPort )
                              Syslog_Port = sysPort
                              Syslog_IP = sysIP
                              :end

                              :begin Syslog(Syslog_Facility,Syslog_Serverity,Syslog_Tex t)
                              :info $Sendet Syslog-Meldungen$
                              $Facility-Code$\\
                              $Serverity-Code$\\
                              $Meldung$\\
                              :shortinfo $$Sendet Syslog-Meldungen$$

                              :return {
                              sendudp(Syslog_Port,Syslog_IP,$<$+convert(Syslog_F acility*8+Syslog_Serverity,$$)+$>$+Syslog_Text);
                              }
                              :end
                              [/highlight]

                              Aufruf im Programm dann mit:

                              [highlight=epc]
                              SyslogInit( 192.168.123.106, 514u16 )
                              if GA then Syslog( ...)
                              [/highlight]

                              Gruß,
                              Bernd

                              Kommentar

                              Lädt...
                              X