Systemprotokoll nach extern schreiben

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

urmeli
Beiträge: 2
Registriert: 02.11.2014, 22:32

Re: Systemprotokoll nach extern schreiben

Beitrag von urmeli » 02.11.2014, 22:40

Hallo,

habe das wget Skript bei mir am Laufen. Wichtig ist, dass es im UNIX (LF am Ende) und nicht im DOS Format (CR/LF am Ende) abgespeichert ist. Alle Anführungszeichen müssen exakt übernommen werden.
IP_CCU2 muss auf die IP Adresse der CCU2 gesetzt werdne und PW auf das eigene Admin Passwort. Bei mir geht es und HistoryBuffer.csv ist gefüllt.
In den nächsten Tagen erweitere ich noch das Skript um das Filtern der täglichen Messages.

Code: Alles auswählen

#!/bin/sh

IP_CCU2=1.2.3.4
PW=PASSWORT

USER=Admin
LOGIN=$IP_CCU2/login.htm
HISTBUF=$IP_CCU2/HistoryBuffer.csv
LOGOUT=$IP_CCU2/logout.htm

wget -o step1.log -O /dev/null http://$LOGIN
SID=`grep "http://$LOGIN.sid" step1.log | cut -d "?" -f 2`
echo $SID >sid.log
wget -o step2.log -O /dev/null --post-data="tbUsernameShow=$USER&tbUsername=$USER&tbPassword=$PW"  "http://$LOGIN?$SID"
wget -o step3.log -O HistoryBuffer.csv "http://$HISTBUF?$SID"
wget -o step4.log -O /dev/null "http://$LOGOUT?$SID"

lg urmeli

urmeli
Beiträge: 2
Registriert: 02.11.2014, 22:32

Re: Systemprotokoll nach extern schreiben

Beitrag von urmeli » 03.11.2014, 00:21

Hallo,

habe das Script zum Filtern angepasst.
Es wird immer der vorherige Tag gefiltert und eine Ausgabedatei mit allen Messages vom Vortag mit dem entsprechenden Datum erzeugt.
In meiner Umgebung funktioniert es zumindest wunschgemäß.

Code: Alles auswählen

#!/bin/sh

IP_CCU2=1.2.3.4  # mit eigener CCU2 IP erstezen
USER=Admin
PW=PASSWORT   # mit eigenem Passwort ersetzen
LOGIN=$IP_CCU2/login.htm
HISTBUF=$IP_CCU2/HistoryBuffer.csv
LOGOUT=$IP_CCU2/logout.htm
DATE=$(date +"%Y-%0m-%0d" --date="-1 day")
HISTFILE=HistoryBuffer.csv
DAILYFILE=HistoryBuffer-$DATE.csv

wget -o step1.log -O /dev/null http://$LOGIN
SID=`grep "http://$LOGIN.sid" step1.log | cut -d "?" -f 2`
echo $SID >sid.log
wget -o step2.log -O /dev/null --post-data="tbUsernameShow=$USER&tbUsername=$USER&tbPassword=$PW"  "http://$LOGIN?$SID"
wget -o step3.log -O $HISTFILE "http://$HISTBUF?$SID"
wget -o step4.log -O /dev/null "http://$LOGOUT?$SID"

echo $DATE >date.log
grep "$DATE" $HISTFILE >$DAILYFILE

lg urmeli

Rhadamanthys
Beiträge: 22
Registriert: 26.11.2013, 22:18

Re: Systemprotokoll nach extern schreiben

Beitrag von Rhadamanthys » 13.04.2015, 18:55

Habe mir das TCL-Script auch runtergeladen, unter Windows editiert und im Unixformat abgespeichert.
Änderungen: Speicherort SD-Karte, Dateiname enthält Datum/Uhrzeit, keine Erfolgsmeldung mehr (nur für Konsole interessant).
Auf meiner Reserve-CCU2 in HQ WebUI getestet: läuft!
Aufruf mit HM-Script: läuft!
Lasse es jetzt stündlich laufen, mal sehen, was wird.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("tclsh /www/addons/hb/getHB.tcl",&stdout,&stderr);
!evtl. danach löschen
!cmd="wget -q http://127.0.0.1/config/xmlapi/protocol.cgi?clear=1";
!system.Exec(cmd,&stdout,&stderr);
Dateianhänge
getHB.rar
TCL-Script, editiert
(1.49 KiB) 118-mal heruntergeladen

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von nicolas-eric » 13.04.2015, 19:10

Wenn du es dann noch über CUXD system exec aufrufst, gehst du möglichen Fehlern der fehleranfälligen CCU system exec gleich aus dem Weg.

Sicherheitsmann
Beiträge: 8
Registriert: 31.08.2016, 14:34

Re: Systemprotokoll nach extern schreiben

Beitrag von Sicherheitsmann » 08.09.2016, 12:34

Rhadamanthys hat geschrieben:Habe mir das TCL-Script auch runtergeladen, unter Windows editiert und im Unixformat abgespeichert.
Änderungen: Speicherort SD-Karte, Dateiname enthält Datum/Uhrzeit, keine Erfolgsmeldung mehr (nur für Konsole interessant).
Auf meiner Reserve-CCU2 in HQ WebUI getestet: läuft!
Aufruf mit HM-Script: läuft!
Lasse es jetzt stündlich laufen, mal sehen, was wird.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("tclsh /www/addons/hb/getHB.tcl",&stdout,&stderr);
!evtl. danach löschen
!cmd="wget -q http://127.0.0.1/config/xmlapi/protocol.cgi?clear=1";
!system.Exec(cmd,&stdout,&stderr);
Genau danach habe ich gesucht. Vielen Dank!

Ich fasse ne kurze Schritt für Schritt Anleitung zusammen, wie ich vorgegangen bin:
1. getHB.tcl in /www/addons/hb/getHB.tcl eingefügt.

2. tcl bearbeitet und in

Code: Alles auswählen

set login ""
set login [session_login "Admin" "password"]
einen Benutzer anstatt Admin eintragen und das dazugehörige Passwort an Stelle von password.

3. Mit Skript ausführen.:
Dh. bei CUxD mit:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /www/addons/hb/getHB.tcl");
sonst CCU system exec:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("tclsh /www/addons/hb/getHB.tcl",&stdout,&stderr);
!evtl. danach löschen
!cmd="wget -q http://127.0.0.1/config/xmlapi/protocol.cgi?clear=1";
!system.Exec(cmd,&stdout,&stderr);
Wäre es eingentlich auch möglich das Protokoll erst zu kopieren wenn die maximale Kapazität erreicht ist und das Protokoll neu anfängt, oder löscht die CCU2 sowieso immer den ältesten Eintrag/Zeile und trägt eine neue ein?

Andy1981
Beiträge: 349
Registriert: 25.12.2015, 08:41
Danksagung erhalten: 4 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von Andy1981 » 20.09.2016, 15:19

Könnte jemand das Script so abändern, dass die CCU2 nur immer eine neue Datei beim Tageswechsel (mit Datum des Tages dahinter) schreibt? Oder mir sagen, was ich abändern muss damit nachfolgender Sachverhalt geschieht. Wahrscheinlich gehört im TBL-Script nur etwas an der Zeile mit "Clock..." geändert oder?

Hintergrund:
Ich möchte gerne z. B. alle 15 Minuten die Datei "history_20.09.2016" neu mit allen Ereignissen des Systemprotokolls erstellen lassen. Die Datei soll die Box tagsüber auf dem Stick immer neu erzeugen mit gleichem Dateinamen. Um Mitternacht lasse ich aktuell das Protokoll löschen und möchte, dass für den neuen Tag eine neue Datei z. B. history_21.09.2016 angelegt wird. Die Datei vom Vortag soll erhalten bleiben. Natürlich könnte ich mit dem Script einfach nur um kurz vor Mitternacht einmal am Tag eine history erzeugen lassen, aber sollte mal ein Stromausfall o. ä. tagsüber sein, ist das gesamte Protokoll seit Mitternacht weg. Deshalb alle 15 Minuten...
Andy

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von Familienvater » 20.09.2016, 15:41

Hi,

grundsätzlich kann man mit jedermenge Workarounds um einen Stromausfall herumlaborieren. Das einfachste, mit zugleich der besten Wirkung ist eine USV. Dann kann der Strom ausfallen wie er will, Deine CCU funktioniert trotzdem weiter, es gehen keine Daten verloren, etc.

Das "dauernde" Schreiben auf den Stick macht diesen über kurz oder lang unbrauchbar, und da bei Dir ja anscheinend der Strom öfters ausfällt, sonst würdest da ja nicht im 15 min. Takt das Zeugs wegschreiben wollen, wenn der Strom im falschen Moment ausfällt, ist ggf. nicht nur die aktuell geschriebene Datei futsch, sondern im Worst-Case (Murphy läßt grüßen) alles, was auf dem Stick war.
Und um beim Worst-Case zu bleiben, wenn der Stromausfall auch da im falschen Moment kommt, dann hat es die CCU gerade in dem Moment ausgeknipst, wo die zyklische Sicherung der Rega lief, und es bleibt ein inkonsistenter Zustand beim Neustart übrig (es wird zwar viel getan, damit soetwas nicht passiert, es wird erst eine neue Rega unter Temp-Namen geschrieben, und dann wird die alte umbenannt, und dann erst die neue auch umbenannt, aber da ist ein minimaler Moment, in dem es keine Rega gibt!, Murphy und so).

Der Familienvater

Andy1981
Beiträge: 349
Registriert: 25.12.2015, 08:41
Danksagung erhalten: 4 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von Andy1981 » 20.09.2016, 15:54

1. Nein bei uns fällt so gut wie nie der Strom aus
2. USV habe ich mir schon angesehen, aber die Bewertungen dazu sind teilweise erschreckend, meine Bude möchte ich nicht abfackeln
3. sind die 15 Min nur sicherheitshalber, da auch mal manuell ein Neustart durchgeführt wird, gerade wenn man rumbastelt.
4. War das jetzt eigentlich keine Antwort auf meine Frage/Bitte. :D
Andy

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von Familienvater » 20.09.2016, 16:30

Hi,
Andy1981 hat geschrieben:...aber sollte mal ein Stromausfall o. ä. tagsüber sein...
Andy1981 hat geschrieben:1. Nein bei uns fällt so gut wie nie der Strom aus
Ja nee, iss klar...
Andy1981 hat geschrieben:2. USV habe ich mir schon angesehen, aber die Bewertungen dazu sind teilweise erschreckend, meine Bude möchte ich nicht abfackeln
Also ich mache nur im Kamin Feuer, und meine USVs haben mir in den letzten 20 Jahren auch noch nie die Bude abgefackelt.
Andy1981 hat geschrieben:3. sind die 15 Min nur sicherheitshalber, da auch mal manuell ein Neustart durchgeführt wird, gerade wenn man rumbastelt.
Weniger basteln :-), und Neustarts nur kurz nach Mitternacht, dann ist der Daten-Verlust am geringsten, und die Familie leidet auch nicht unter einer gerade nicht verfügbaren Haussteuerung, außer jemand leidet unter Xeroderma pigmentosum.
Andy1981 hat geschrieben:4. War das jetzt eigentlich keine Antwort auf meine Frage/Bitte.
Von TCL habe ich keine Ahnung...

Der Familienvater

Andy1981
Beiträge: 349
Registriert: 25.12.2015, 08:41
Danksagung erhalten: 4 Mal

Re: Systemprotokoll nach extern schreiben

Beitrag von Andy1981 » 20.09.2016, 16:33

Wann ich Neustart mache und wieviel ich bastel ist jedem selbst überlassen. Und wenn du nichts glaubst was ich schreib, dein Problem.
Andy

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“