Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Moderator: Co-Administratoren
-
- Beiträge: 64
- Registriert: 24.01.2016, 12:13
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo Alchy,
ich habe Dein Script probiert und wollte eine csv-Datei mit einer SV-Variablen auf die SD-Card der CCU2 schreiben. Leider tat sich bei mir nichts.
Ich habe die "src"-Änderung von Rolf A verwendet, weil bei mir das Programm zeitgesteuert ausgelöst werden soll. Nach dem Hinweis von Rolf A habe ich auch auf der SD-Card das Verzeichnis "log2file" und darin die Datei "log2file.csv" angelegt. Aber auch dann wird nichts reingeschrieben.
Hast Du noch eine Idee?
Könnte man eigentlich die Datei auch gleich auf ein angeschlossenes NAS-Laufwerk schreibene lassen. Dann braucht man nicht immer den Umweg über Filezilla.
Danke für Deine Hilfe und ein schönes Wochenende.
4--motion
ich habe Dein Script probiert und wollte eine csv-Datei mit einer SV-Variablen auf die SD-Card der CCU2 schreiben. Leider tat sich bei mir nichts.
Ich habe die "src"-Änderung von Rolf A verwendet, weil bei mir das Programm zeitgesteuert ausgelöst werden soll. Nach dem Hinweis von Rolf A habe ich auch auf der SD-Card das Verzeichnis "log2file" und darin die Datei "log2file.csv" angelegt. Aber auch dann wird nichts reingeschrieben.
Hast Du noch eine Idee?
Könnte man eigentlich die Datei auch gleich auf ein angeschlossenes NAS-Laufwerk schreibene lassen. Dann braucht man nicht immer den Umweg über Filezilla.
Danke für Deine Hilfe und ein schönes Wochenende.
4--motion
Viele Grüße
4_motion
4_motion
- Rolf A
- Beiträge: 95
- Registriert: 06.04.2016, 20:01
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Oberlichtenau
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo,
die Frage ging zwar nicht an mich, aber da auch von mir die rede ist, mische ich mich mal mit ein.
Ich habe versucht Alchys Skript Zeile für Zeile zu verstehen, und dann für mich modifiziert. Für mich eine Methode um Skript-Programierung zu lernen. Bei mir läuft das Skript jetzt so:
Das Ergebnis sieht dann so aus:
Was mein nächster Schritt sein soll, ist daß die Datei zum Monatsbeginn neu geschrieben wird, und dem entsprechend im Namen ein Datum trägt. Wie zum Beispiel: 2018 02 log2file.csv
Aber als jemand der sich da jeden Schritt mühevoll erarbeiten muß, dauert das halt.
Gruß
Rolf
die Frage ging zwar nicht an mich, aber da auch von mir die rede ist, mische ich mich mal mit ein.
Ich habe versucht Alchys Skript Zeile für Zeile zu verstehen, und dann für mich modifiziert. Für mich eine Methode um Skript-Programierung zu lernen. Bei mir läuft das Skript jetzt so:
Code: Alles auswählen
! Systemvariable in Log schreiben
! SV = Gas Zaehlerstand
! SV = Gas Verbrauch heute
string slist = "Fehler";
object src1 = dom.GetObject("Gas Zaehlerstand");
object src2 = dom.GetObject("Gas Verbrauch heute");
slist = system.Date("%d.%m.%y,%H:%M")#","#dom.GetObject(src1).Name()#","#src1.Value().ToString(3)#","#src1.ValueUnit()#","#dom.GetObject(src2).Name()#","#src2.Value().ToString(3)#","#src2.ValueUnit() ;
dom.GetObject("CUxD.CUX2801003:8.CMD_EXEC").State("tclsh /usr/local/addons/log2file/log2file.tcl " # slist);
! WriteLine(slist);
Aber als jemand der sich da jeden Schritt mühevoll erarbeiten muß, dauert das halt.
Gruß
Rolf
-
- Beiträge: 64
- Registriert: 24.01.2016, 12:13
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo Rolf A,
sorry, das war von mir unhöflich. Natürlich war die Anfrage an alle gerichtet und jeder darf antworten. Vielen Dank für die Info.
Ich habe es mal bei mir mit folgendem Programm versucht.
Bei Script Testen läuft das Programm durch, aber es tut sich in der Datei nichts. Im log2file.tcl steht folgendes:
Verzeichnis und Datei "/media/sd-mmcblk0/log2file/log2file.csv" existieren.
Hast Du oder jemand anderes noch eine Idee?
Danke 4--motion
sorry, das war von mir unhöflich. Natürlich war die Anfrage an alle gerichtet und jeder darf antworten. Vielen Dank für die Info.
Ich habe es mal bei mir mit folgendem Programm versucht.
Code: Alles auswählen
! Programmauslösende Systemvariable (jedes Types) oder Kanalnamen (soweit ich es überblicken kann) und auch das Zeitmodul ermitteln und...
! by Alchy 0.2a gekürzt
! +++++++++++++++++
! Systemvariable in Log schreiben
! SV = Küche Heizzeit
string slist = "Fehler";
object src = dom.GetObject("Kue_Heizzeit");
slist = system.Date("%d.%m.%y,%H:%M")#","#dom.GetObject(src).Name()#","#src.Value().ToString(2)#","#src.ValueUnit();
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/log2file/log2file.tcl " # slist);
! WriteLine(slist);
Code: Alles auswählen
#!/bin/tclsh
file mkdir "/media/sd-mmcblk0/log2file"
set filename "/media/sd-mmcblk0/log2file/log2file.csv"
set args [join $argv " "]
set fileId [open $filename "a+"]
puts $fileId $args
close $fileId
Verzeichnis und Datei "/media/sd-mmcblk0/log2file/log2file.csv" existieren.
Hast Du oder jemand anderes noch eine Idee?
Danke 4--motion
Zuletzt geändert von alchy am 18.02.2018, 18:42, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
Viele Grüße
4_motion
4_motion
- Rolf A
- Beiträge: 95
- Registriert: 06.04.2016, 20:01
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Oberlichtenau
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo 4__motion,
Wenn ich bei mir das Skript in der WebUI teste/ausführe, dann schreibt es mir jeweils den aktuellen Wert der Systemvariablen in die Datei. Wie schaust Du Dir die log2file.csv an. Ich hole sie mir beim Testen immermit Filezilla per kopieren von der CCU bzw. bei mir vom Raspi. So daß sie weiter hin am Zielort ist.
Am Anfang hat es bei mir auch nicht funktioniert, bis ich dahinter gekommen bin, daß die log2file.cvs bereit im Zielverzeichnis sein muß (zuerst sogar leer). Ist diese Datei nicht da, dann wird auch nichts geschrieben. Zumindest bei mir.
Das steht für mich auch noch auf der Wunschliste, daß das tcl-Skript vor demSchreiben des Wertes erst prüft, ob die Datei da ist, und wenn nicht, dann erstellt.
Gruß
Rolf
Wenn ich bei mir das Skript in der WebUI teste/ausführe, dann schreibt es mir jeweils den aktuellen Wert der Systemvariablen in die Datei. Wie schaust Du Dir die log2file.csv an. Ich hole sie mir beim Testen immermit Filezilla per kopieren von der CCU bzw. bei mir vom Raspi. So daß sie weiter hin am Zielort ist.
Am Anfang hat es bei mir auch nicht funktioniert, bis ich dahinter gekommen bin, daß die log2file.cvs bereit im Zielverzeichnis sein muß (zuerst sogar leer). Ist diese Datei nicht da, dann wird auch nichts geschrieben. Zumindest bei mir.
Das steht für mich auch noch auf der Wunschliste, daß das tcl-Skript vor demSchreiben des Wertes erst prüft, ob die Datei da ist, und wenn nicht, dann erstellt.
Gruß
Rolf
-
- Beiträge: 64
- Registriert: 24.01.2016, 12:13
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo Rolf,
danke für die schnelle Antwort.
Wenn ich das Script Teste und "WriteLine(slist)" aktiviere, dann wird der korrekte Wert angezeigt. Ich denke, es hängt an der Zeile:
Ich musste das CUxD Gerät etwas abändern, weil sonst beim Script testen das Programm nicht durchlief. Genaue Ahnung habe ich davon aber nicht. Ich habe das "CUxD.CUX2801001:1" aus einem anderen Programm kopiert, wo etwas in eine "txt-Datei" geschrieben wird. Mit meiner obenstehenden Änderung lief dann das Script testen auch durch, schreibt aber nichts in log2file.csv. Das Verzeichnis und die Datei habe ich angelegt. Die Datei hat 0 Byte, egal wie oft ich das Programm starte.
danke für die schnelle Antwort.
Wenn ich das Script Teste und "WriteLine(slist)" aktiviere, dann wird der korrekte Wert angezeigt. Ich denke, es hängt an der Zeile:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/log2file/log2file.tcl " # slist);
Zuletzt geändert von alchy am 18.02.2018, 18:43, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
Grund: Code in Codetags posten
Viele Grüße
4_motion
4_motion
-
- Beiträge: 64
- Registriert: 24.01.2016, 12:13
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo Rolf, Hallo Alchy, Hallo alle,
ich habe meinen Fehler gefunden. Ich hatte das TCL-Script an einem falschen Ort.
Sorry für meine Unwissenheit und danke Euch.
Trotzdem würde ich gerne noch einmal die Frage aufwerfen, ob man denn die Datei gleich auf einem NAS-Laufwerk erstellen lassen kann. Ich habe eine Synology.
Danke
4--motion
ich habe meinen Fehler gefunden. Ich hatte das TCL-Script an einem falschen Ort.
Sorry für meine Unwissenheit und danke Euch.
Trotzdem würde ich gerne noch einmal die Frage aufwerfen, ob man denn die Datei gleich auf einem NAS-Laufwerk erstellen lassen kann. Ich habe eine Synology.
Danke
4--motion
Viele Grüße
4_motion
4_motion
- Rolf A
- Beiträge: 95
- Registriert: 06.04.2016, 20:01
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Oberlichtenau
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 1 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo 4--motion,
https://www.schellenberger.biz/automati ... errymatic/
Die Lösung läßt für mich auch noch Wünsche offen, wie oben erwähnt, aber ich habe für alle Fälle erstmal ein tägliches Backup. Und da war es kein Problem die cvs-Datei gleich mit von der CCU zu schubsen.
Gruß
Rolf
Ich habe mich dafür entschieden die Datei mit dem täglichen Backup zusammen auf ein anderes Laufwerk nachts um 1:00 Uhr zu verschieben. Dafür war meine Vorlage das hier:4_motion hat geschrieben: Trotzdem würde ich gerne noch einmal die Frage aufwerfen, ob man denn die Datei gleich auf einem NAS-Laufwerk erstellen lassen kann. Ich habe eine Synology.
4--motion
https://www.schellenberger.biz/automati ... errymatic/
Die Lösung läßt für mich auch noch Wünsche offen, wie oben erwähnt, aber ich habe für alle Fälle erstmal ein tägliches Backup. Und da war es kein Problem die cvs-Datei gleich mit von der CCU zu schubsen.
Gruß
Rolf
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Hallo zusammen.
Alchy hat mich auf diese Tema hingewiesen und ich habe soweit auch alles zum laufen gebracht.
Das Script hab ich an meine Bedürfnisse soweit erst mal angepasst.
Bin leider noch ein Anfänger bei dem Script schreiben und hab da noch so einiges zu lernen und zu Verstehen.
Deshalb habe ich noch fragen in die Runde.
So sieht mein Script im moment aus:
Dabei kommt folgender Text raus
18-12-21 11:49:03,13180.57
18-12-21 11:49:06,13180.57
18-12-21 11:49:07,13180.57
18-12-21 11:49:08,13180.57
18-12-21 11:49:09,13180.57
18-12-21 11:52:49,13180.57 ,
18-12-21 11:52:51,13180.57 ,
18-12-21 11:52:52,13180.57 ,
18-12-21 11:52:53,13180.57 ,
Wie bekomme ich das Lehrzeichen zwischen Zahl und Komma raus.
Wie bekomme ich die Zahlen hintereinander, nicht für jede Aufruf eine neue Zeile anlegen.
Danke für alle Hinweise
Alchy hat mich auf diese Tema hingewiesen und ich habe soweit auch alles zum laufen gebracht.
Das Script hab ich an meine Bedürfnisse soweit erst mal angepasst.
Bin leider noch ein Anfänger bei dem Script schreiben und hab da noch so einiges zu lernen und zu Verstehen.
Deshalb habe ich noch fragen in die Runde.
So sieht mein Script im moment aus:
Code: Alles auswählen
! Programmauslösende Systemvariable (jedes Types) oder Kanalnamen (soweit ich es überblicken kann) und auch das Zeitmodul ermitteln und...
! by Alchy 0.2a gekürzt
! +++++++++++++++++
! SV = Gas Zaehlerstand
! SV = Gas Verbrauch heute
string slist = "Fehler";
! object src = dom.GetObject("$src$");
object src = dom.GetObject("Stromverbrauch HT");
if (src){
if (src.TypeName() == "HSSDP") {
slist = system.Date("%y-%m-%d %H:%M:%S")#","#dom.GetObject(((dom.GetObject(src)).Channel())).Name()#","#src.Value();
} else {
slist = system.Date("%y-%m-%d %H:%M:%S")#","#src.Value().ToString(3)#",";
}
dom.GetObject("CUxD.CUX2801004:8.CMD_EXEC").State("tclsh /usr/local/addons/log2file/StromverbrauchHT.tcl " # slist);
}
Dabei kommt folgender Text raus
18-12-21 11:49:03,13180.57
18-12-21 11:49:06,13180.57
18-12-21 11:49:07,13180.57
18-12-21 11:49:08,13180.57
18-12-21 11:49:09,13180.57
18-12-21 11:52:49,13180.57 ,
18-12-21 11:52:51,13180.57 ,
18-12-21 11:52:52,13180.57 ,
18-12-21 11:52:53,13180.57 ,
Wie bekomme ich das Lehrzeichen zwischen Zahl und Komma raus.
Wie bekomme ich die Zahlen hintereinander, nicht für jede Aufruf eine neue Zeile anlegen.
Danke für alle Hinweise
Je älter mann wird, um so mehr Zeit hat man für die Bastelei an der HomeMatic
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Daten filebasierend auf CCU2 SD-Karte / USBStick loggen
Warum benutzt du keine Systemvariable vom Typ Zahl?
oder anders,
welchen Typ entspricht "Stromverbrauch HT" ?
Alchy
oder anders,
welchen Typ entspricht "Stromverbrauch HT" ?
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.