Daten filebasierend auf CCU2 SD-Karte / USBStick loggen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

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

Beitrag von 4_motion » 22.02.2021, 20:46

Bei mir ist "Bedanken" keineswegs sinnlos und auch nicht nur nett gemeint, sondern kommt von Herzen. Das mag aber jeder anders sehen.

Du fragst zudem, warum ich nicht das mache, was Du mir geraten hast. Schlicht und ergreifend, weil ich nicht verstanden habe, was Du mit "genauso machen wie in der Anleitung" meintest. Ich habe kein "Arbeitszimmer Deckenlicht" und keinen "Innensensor". Ich wollte den DutyCycle-Wert jede halbe Stunde wegschreiben. Deshalb habe ich einen eigenen Aufruf der TCL-Datei gemacht.

Du kannst Dir sicher sein, dass kein böser Wille dabei war und ich wollte Dich auch nicht ärgern. Ich habe es "missverstanden" und dafür entschuldige ich mich.

Inzwischen habe ich einiges dazugelernt, nicht nur was Du gemeint hast, sondern auch den Umgang mit dem Forum. Ich hoffe, dass ich jetzt besser kommunizieren kann.

Also vorweg genommen, genau nach Deiner Anleitung funktioniert es. Als TCL-Datei habe ich

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
Das Programm, welches die TCL-Datei aufruft ist folgendes:

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);
}
Getriggert wird das Programm mit einem Zeitmodul, zu Testzwecken alle 2 Minuten:
Programm_Test.jpg
Das Egebnis im Verzeichnis "log2file" ist:
Inhalt_log2file.jpg
Und der Inhalt der Datei "log2file_2021-02.csv" :
log2file_2021-02.csv
(992 Bytes) 46-mal heruntergeladen
Soweit ist alles gut. Jetzt kommt die spannende Frage. Warum wird diese Datei im Verzeichnis "/media/sd-mmcblk0/log2file" nicht erstellt, wenn ich den Pfad ändere. Andere csv-Dateien werden in diesem Pfad problemlos erstellt und aktualisiert, also Schreibrechte habe ich. Kann das etwas mit dem "$datum" in der TCL-Datei zu tun haben? Denn ohne diese Variable klappt es auch in diesem Verzeichnis.

Ich freue mich über jede Hilfe.

Viele Grüße

Dirk
Viele Grüße

4_motion

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“