ich bin gerade dabei mich in die Materie CUxD weiter einzuarbeiten und habe noch ein paar Verständnisprobleme bei der Umsetzung eines Projektes. Ich habe eine CCU2 mit Firmware 2.29.23, einen Temperatur/Luftfeuchtemesser (HM-WDS10-TH-O) und CUxD in Version 1.11a installiert. Das Projekt ist nun, dass alle x Minuten die Werte des Sensors in eine Datei geschrieben werden - aber eben über die CUxD Zeitsteuerung.
Dazu habe ich auf der CUxD ein neues System-Gerät (28) mit der Funktion "Timer" erzeugt und nach dem Anlegen alles neu gestartet. Nun soll je nach Timer Konfiguration ein Programm gestartet werden. Das habe ich so eingestellt (basierend auf CUxD_1.11_Dokumentation.pdf)): Generell funktioniert der periodische Aufruf auch, denn wenn ich unter "Status und Bedienung" -> "Programme" mir das Programm hersuche, sehe ich in Spalte "Letzte Ausführung", dass es entsprechend TIMER_PRESET ausgeführt wurde.
Im Timer selbst habe ich den Kanal 1 wie folgt konfiguriert: Bei TIMER_PRESET steht 900 (15min), REPEAT ist angehakt, EXEC_FUNC steht auf "system()" und nun kommt es zum Parameter CMD_EXEC. Ich dachte, diesen kann ich per Programm setzen und dort einige Übergabeparameter mitgeben. Allerdings gibt es den Parameter nicht als Datenpunkt... daher funktioniert Folgendes nicht:
Code: Alles auswählen
var thermoChannel= dom.GetObject("HM-WDS10-TH-O OEQ0087107:1");
var temp= thermoChannel.DPByHssDP("TEMPERATURE");
var humi = thermoChannel.DPByHssDP("HUMIDITY");
string temperatur = temp.Value().ToString(1);
string luftfeuchte = humi .Value().ToString(1);
var slist = temperatur + "," + luftfeuchte ;
dom.GetObject("CUxD.CUX2800001:1.CMD_EXEC").State("tclsh /usr/local/logs/logging.tcl " #slist);
Das TCL-Skript macht nicht wirklich viel, falls es jemanden interessiert:
Code: Alles auswählen
#!/bin/tclsh
set filename "../../logs/temperatur.csv"
set args [join $argv " "]
set fileId [open $filename "a+"]
puts $fileId $args
close $fileId
Wenn ich unter "Status und Bedienung" -> "Geräte" den Timer auswähle und das Icon "Betätigen" klicke, wird beim entsprechenden Kanal immer der Wert in "SYSTEM|TIMER_PRESET" gelöscht, alle anderen Werte (REPEAT, CMD_EXEC,..) bleiben stehen. Warum ist das so?
Vielen Dank!
Gruß,
Itzamna