Viel einfacher ist natürlich >>dieses alte Script<<
Die Anleitung setzt voraus, das cuxd installiert ist und das entsprechende exec Gerät funktioniert.
Natürlich würde es auch mit system.exec zum Aufruf des Scriptes funktionieren.
Der Zugriff auf das Filesstem der CCU ist >> H I E R << unter anderem beschrieben, bzw. verlinkt. Ich würde dir zu sftp wie verlinkt raten. Zum Editieren von Dateien >> Notepad++ << aber keinen Windoof Schrott Editor wie Wordpad usw.
Anleitung:
Du legst ein neues File mit Namen log2file.tcl
auf der CCU an im folgenden Beipiel im Ordner:
Code: Alles auswählen
/usr/local/addons/log2file/
Der Inhalt des Files ist:
Code: Alles auswählen
#!/bin/tclsh
file mkdir "/mnt/log2file"
set filename "/mnt/log2file/log2file.csv"
set args [join $argv " "]
set fileId [open $filename "a+"]
puts $fileId $args
close $fileId
file mkdir "/mnt/log2file"
set filename "/mnt/log2file/log2file.csv"
verweisen auf den Ordner und den Namen der Datei, wo das Log gespeichert werden soll.
Du musst einen Ort wählen welcher beschreibbar ist.
Der Unterordner log2file wird durch das script angelegt, die Datei log2file.csv auch.
In meinem Fall ist es der USB Stick, der unter /mnt erreichbar ist.
[EDIT]
Sollte jemand lieber in eine Monatsdatei loggen wollen, dann wäre diese TCL sinnvoll:
Code: Alles auswählen
#!/bin/tclsh
file mkdir "/usr/local/addons/log2file"
set datum [clock format [clock seconds] -format {%Y-%m}]
set filename "/usr/local/addons/log2file/log2file_$datum.csv"
set args [join $argv " "]
set fileId [open $filename "a+"]
puts $fileId $args
close $fileId
log2file_2021-01.csv
log2file_2021-02.csv
....
[/EDIT]
Es ist zwar nicht empfehlenswert direkt auf den USB zu loggen, aber alles andere zu erklären
würde den Rahmen hier sprengen. Die SD Karte solltest du unter
Code: Alles auswählen
/media/sd-mmcblk0
Speichern im RAM der CCU ist z.B. auch möglich, bei einem Reboot ist jedoch die Datei weg.
Also dreckig auf den USB oder SD direkt.
Nachdem du das erledigt hast, legst du in der Klickibunti ein neues Programm an.
Wenn Gerät modifiziertem Fensteraktor.....
Grundsätzlich ist es egal, ob eine Systemvariable, ein Temperatursensor, oder ein Schaltaktor, das Zeitmodul usw. in dem Programm als Auslöser dient. Was das Programm auslöst, wird geloggt.
Man muss natürlich nicht auf Aktualisierung auslösen, wenn man z.B. nur bestimmte Sachen loggen will.
Dazu meine Signatur durcharbeiten zur Logik von Programmen.
Bitte aber dabei bedenken, es nicht zu übertreiben.
Es folgt ein kleines Beispiel, um zu verdeutlichen, was alles so machbar ist.
dann Script:
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
! +++++++++++++++++
string slist = "Fehler";
object src = dom.GetObject("$src$");
if (src){
if (src.TypeName() == "HSSDP") {
slist = system.Date("%d.%m.%y,%H:%M")#","#dom.GetObject(((dom.GetObject(src)).Channel())).Name()#","#src.Value();
} else {
slist = system.Date("%d.%m.%y,%H:%M")#","#src.Name()#","#src.Value().ToString(3)#","#src.ValueUnit() ;
}
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/log2file/log2file.tcl " # slist);
}
Datum,Uhrzeit,Name des Programmauslösers,Status wie das hier:
Code: Alles auswählen
16.09.16,12:56,Arbeitszimmer Deckenlicht,true
16.09.16,13:06,Anwesenheit,false
16.09.16,13:11,Arbeitszimmer Deckenlicht,true
16.09.16,13:11,Arbeitszimmer Deckenlicht,false
16.09.16,13:13,Tor Garage,true
16.09.16,13:13,Tor Garage,false
16.09.16,13:13,Tor Garage,true
16.09.16,13:20,Tor Garage,false
16.09.16,13:23,Innensensor,21.800000
16.09.16,13:26,Innensensor,21.800000
16.09.16,13:29,Innensensor,21.800000
16.09.16,13:31,Innensensor,21.800000
16.09.16,13:33,Innensensor,21.800000
16.09.16,13:35,Zeitmodul,true
16.09.16,13:36,Innensensor,21.800000
Aber ich will den Rahmen hier nicht sprengen. Wer Änderungen wünscht kann sich ja melden.
viewtopic.php?f=31&t=35686#p342882
^^ hier gibt es dann das endgültige Script um den Auslöser eines Programmes zu loggen.
Würde mich freuen, wenn du (oder wer auch immer es probiert) eine Rückmeldung gibt.
Alchy
Und wer mehr als 1-2 Daten loggen will sollte sich folgende Zusammenfassung durchlesen:
>> CUxD << hat die filebasierte Loggingfunktion schon perfekt integriert und vor allem hast du auch gleich noch die Möglichkeit mit den Daten etwas anzufangen, wenn du >>CUxD Highcharts<< benutzt.
Wenn du den Thread, das Handbuch von CUxD durch hast oder >> H I E R << oder auch den >> H I E R << und einfach die Suche benutzt, solltest du das problemlos in den Griff kriegen.
Wenn nicht, musst du dich noch mal melden.
Das ist natürlich nur eine Möglichkeit. Da wäre z.B. noch >> CCU-Historian <<
Da CUxD aber auch noch andere gute Möglichkeiten mitbringt, würde ich das mal als besten Tipp mitgeben wollen.
Aber natürlich kann man auch ein eigenes "Logging" bewerkstelligen, so wie oben aufgeführt.
Langfristig würde ich empfehlen zumindest auf das Logging direkt in CUXD umzuschwenken, oder eine anderere Lösung zu verwenden.