WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Software (http://www.wcm.at/forum/forumdisplay.php?f=5)
-   -   Log-Datei in Diagramm umwandeln (http://www.wcm.at/forum/showthread.php?t=246918)

Lowrider20 01.10.2013 20:46

Log-Datei in Diagramm umwandeln
 
Hall Leute,

nachdem ich es geschafft habe, die Temperatursensor zu loggen, bekomme ich nun eine Datei mit folgendem Inhalt:

Code:

2013/10/01 16:30:01 Temperature 23.56C
2013/10/01 16:30:01 Temperature 22.81C
2013/10/01 16:30:01 Temperature 23.44C
2013/10/01 16:30:01 Temperature 22.44C
2013/10/01 16:30:01 Temperature 22.44C
2013/10/01 16:30:01 Temperature 22.62C
2013/10/01 16:30:01 Temperature 21.94C
2013/10/01 16:30:01 Temperature 21.38C
2013/10/01 16:30:01 Temperature 21.69C
2013/10/01 16:30:01 Temperature 21.88C
2013/10/01 16:30:01 Temperature 22.19C
2013/10/01 16:30:01 Temperature 21.06C
2013/10/01 16:35:01 Temperature 23.56C
2013/10/01 16:35:01 Temperature 22.88C
2013/10/01 16:35:01 Temperature 23.44C
2013/10/01 16:35:01 Temperature 22.62C
2013/10/01 16:35:01 Temperature 22.56C
2013/10/01 16:35:01 Temperature 22.75C
2013/10/01 16:35:01 Temperature 21.94C
2013/10/01 16:35:01 Temperature 21.44C
2013/10/01 16:35:01 Temperature 21.69C
2013/10/01 16:35:01 Temperature 21.81C
2013/10/01 16:35:01 Temperature 22.12C
2013/10/01 16:35:02 Temperature 21.31C

Zur Erklärung: Es sind 12 Sensoren, die derzeit alle fünf Minuten abgefragt werden. Wie ist es nun möglich, diese Log-Datei in ein schönes Diagramm mit zwölff Kurven umzuwandeln? Egal, ob jetzt Ubuntu (wo die Fühler ausgelesen werden) oder bei Bedarf unter Windows (Log hole ich mir einfach vom System).

enjoy2 01.10.2013 21:45

du könntest dir zB. Notepad++ herunterladen und damit ein kl. Makro erstellen, dass dir die Infos so umstellt, dass eine Tabellenkalkulation eine Diagramm damit darstellen kann.

wird sicher auch einen Editor unter Linux geben, der Makros anbietet

Lowrider20 01.10.2013 21:55

Uiuiuiui. Und das als Programmiernoob.

Sloter 01.10.2013 22:09

in eine datenbank reinschreiben und von dort die grafiken erstellen, entweder mit perl oder php.....ein wenig arbeit oder
http://www.logviewer1.com/

in excel reinholen sollte auch gehen, denke ich mal.....

Lowrider20 01.10.2013 22:30

Direkt in Excel (bzw. Calc von LibreOffice) funktioniert. Sämtliche Daten sind jeweils in einer eigenen Spalte (Also Datum, Uhrzeit, Benennung, Temperatur). Wie sagt man jetzt aber, nimm nur jede 12. Zeile für die jeweilige Kurve?

ZombyKillah 01.10.2013 23:58

Also ich bin es gewohnt, dass jeder Sensor eine Spalte hat und die Uhrzeit nur 1x angeschrieben wird.

Also:
Code:

2013/10/01 16:30:01 23.56C 22.81C 23.44C 22.44C 22.44C 22.62C 21.94C 21.38C 21.69C
Was verwendest du zum log erstellen?
Vielleicht muss man das nur ein wenig anpassen ...
Ansonst müsstest du die Datei umwandeln.

Lowrider20 02.10.2013 06:22

Ein Skript namens Pcsensor-1.0.0 welches per Cron alle 5min. in die Log schreibt. http://www.wcm.at/forum/showthread.p...ux-246910.html

Sloter 02.10.2013 12:32

oder mit awk, mit grep sollte es auch gehen
http://www.linux-schule.com/trans_ht...ernierend.html

Lowrider20 02.10.2013 17:10

Ok. Und wie sieht es bei awk mit jeder 12. Zeile in ein Log aus? Also 1./13./25. // 2./14./26. usw.

enjoy2 02.10.2013 17:22

Zitat:

Zitat von Lowrider20 (Beitrag 2490387)
Uiuiuiui. Und das als Programmiernoob.

du öffnest Notepad++, kopierst die Log-Daten hinein, stellst den Cursor aufin die erste Zeile, vor dem ersten Zeichen, klickst auf Makro-Aufzeichnung starten, mit der Pfeiltaste den Cursor nach rechts bewegen, bis zu Temperature, solange Del drücken, bzw. der Temp. Wert da steht, auf Ende klicken, mit Backspace Taste das C löschen, Tabulator einfügen, mit Del die Zeilenschaltung und alle Eingaben bis zur nächsten Temp.-Wert löschen, auf Ende klicken, Backspacetaste um das C zu löschen, Tabulator einfügen, usw.

so oft wiederholen, bis die 12 Werte in einer Zeile stehen, dann auf die nächste Zeile mit der re. Pfeiltaste wechseln, Makroaufnahme stoppen.
Dann aufgenommenes Makro speichern

dann würde ich noch die Punkte mit Beistrichen ersetzen (Strg+H), die gesamten Werte kopieren und in Tabellenkalkulation einsetzen - Diagramm einfügen - fertig.

Das Schreiben dieses Textes hat ca. genau so lange gebraucht, wie das "Programmieren" des Makros ;)

Lowrider20 02.10.2013 17:59

Hm. Muß ich mich wirklich mit der Makro-Aufzeichnung mal in einer ruhigen Minute befassen! Danke enjoy2!

ZombyKillah 03.10.2013 22:02

Ich würde vorschlagen, dass im C Programm entsprechend zu ändern

Ist der geringste Aufwand und die schönste Lösung.

TMG_deleted 04.10.2013 02:33

Eigentlich ganz einfach mit HTML und JS.

http://www.chartjs.org

Musst eigentlich nur noch ein kleines Script schreiben, welches dir die Daten aus dem Log holt.

PHP-Code:

$(document).ready(function() {
  
jQuery.get('temp.log', function(data) {
    var 
lines data.split("\n");
    $.
each(lines, function(nline) {
      var 
lineItems line.split(" ");
       
// ...
    
});
  }, 
'text');
}); 

Aber eigentlich ist mir nicht ganz klar, was das Ziel sein soll. Willst du 12 unterschiedliche Temperaturen anzeigen, also jeden Sensor einzeln oder eine Temperaturlinie? Im ersten Fall wäre es wohl besser 12 unterschiedliche Logfiles, also für jeden Sensor anzulegen. Bei einer Linie wäre mir nicht ganz klar, wie du die Daten darstellen willst, da die Zeitpunkte der Logs fast immer identisch sind/sein werden.

Abgesehen davon wäre ein anderes Format für das Logfile deutlich einfacher zu verarbeiten. XML oder gleich Json, da tust du dir wesentlich einfacher die Daten zu sortieren, kannst alles praktisch 1:1 übernehmen, im Moment musst viel rumspielen, bis Datum/Zeit und Temperatur sortiert in einem Array angekommen sind.

Lowrider20 06.10.2013 08:11

So. Ich hab mich mal mit Notepad++ rumgespielt. Die Makroaufzeichnung gefällt schon mal. Zu den anderen Vorschlägen bin ich noch nicht gekommen. Sorry.

Aber ein Problem mit der Log-Aufzeichnung wurde entdeckt:
Folgender cronjob läuft ja:
Code:

* * * * * root /usr/local/bin/pcsensor -c >> /var/log/pcsensor.log
Also jede Minute ins Log schreiben. Interessant jedoch, das er für fünf Minuten jede Minute schreibt und dann 13 Minuten Pause macht.

Das System ist jetzt sauber mit Xubuntu aufgesetzt. War unter Ubuntu das selbe. Woher kommt die Nachdenkpause?

Sloter 06.10.2013 22:43

*/1 * * * * root /usr/local/bin/pcsensor -c >> /var/log/pcsensor.log

Lowrider20 06.10.2013 22:55

Damit würde er nur jede 1. Minute jeder Stunde einen Eintrag machen.

*/1 * * * * ändert genauso wenig daran wie */5 * * * *. Immer eine 13minütige Pause.

Sloter 06.10.2013 23:07

*/1 schreibt jede minute

Sloter 06.10.2013 23:09

starte mal den cron neu, vielleicht macht er den restart unsauber nach einem eintrag.

Lowrider20 06.10.2013 23:18

Nicht Editieren! Dann paßt meine Antwort ja nimmer ;)

cron wurde schon mehrmals neu gestartet. Bzw. der ganze Rechner.

TMG_deleted 07.10.2013 01:18

Code:

*/1 * * * *
...startet jede Minute.

Wie schauts mit ACPI und Freunde aus? Alle 13 Minuten, klingt so danach.

Vielleicht hilft "xset -dpms"

Lowrider20 09.10.2013 21:12

Was macht denn dieses xset in Verbindung mit diesem Parameter? Bei mir rührt sich da im Terminal nichts.

TMG_deleted 10.10.2013 14:38

http://wiki.ubuntuusers.de/Bildschirmschoner#XServer
http://de.wikipedia.org/wiki/Display...ment_Signaling

Schaltet im Prinzip den Bildschirmschoner und stand by (zumindest bis zum Neustart des Systems) aus.

Lowrider20 10.10.2013 18:39

Ok. Hat nichts geändert.

Lowrider20 13.10.2013 18:52

Keiner der Linux-Gurus noch eine Idee?

Sloter 13.10.2013 20:13

keine Ahnung...sagen die logs etwas dazu, script liest vielleicht nicht ständig die werte aus....machen alle crons pause, probier mal */1 * * * * root /usr/bin/beep -r3 falls er pfeifen kann......

Lowrider20 14.10.2013 21:58

Pfeifen kann das Netbook scheinbar nicht.

Nach einem Neustart schaffte er es eine ganze Viertel Stunde minütlich aufzuzeichnen. Dann gings wieder in den 5/13-Takt.

Das Script wird ja nur bei jedem Cronjob-Aufruf ausgeführt. Mehr als eine Ausgabe der Temperaturwerte ist es ja nicht. Da sollte keine Zeit drin sein.

Welche Logs meinst du denn?

Sloter 15.10.2013 11:40

/var/log daemon, syslog, messages, kern vielleicht steht etwas drinnen warum eine gewerkschaftspause eingelegt wird

mach mal einen cron touch test.txt ob der auch pausiert.....

Lowrider20 15.10.2013 21:42

Also in den Logs finde ich nichts auffälliges. Nichts, was auf eine Zwangspause hindeuten würde.

Das mit cron touch test.txt müßtest mir mal genauer erklären.

Folgende Frage hat sich noch aufgetan: Liegt die Cron-Datei eh richtig im Ordner /etc/cron.d/ ? Gespeichert wurde sie dort mit crontab -e (nano als Editor).

Sloter 16.10.2013 17:58

touch test.txt erzeugt eine leere datei....pfad und eintrag ist ok.

ich bin am ende, wenn die logs nichts zeigen wird wohl die hardware schuld an der pause sein.....

einen habe ich noch, liegt vielleicht ein script in /etc/pm/sleep.d oder /usr/lib/pm-utils/sleep.d dort kannst das system auch schlafen schicken.

enjoy2 24.10.2013 22:19

text gelöscht, falsches Posting


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag