Hallo allerseits,
die Anleitung ist super, deswegen verzweifle ich umso mehr, dass ich das nicht hinbekomme!
Ich habe eine recht anspruchsvolle Meldekette hinterlegt und würde gerne die DC auslesen, da es in der Tat plötzlich zu durchgehenden Kommunikationsstörungen kommt und ich die DC als Fehlerquelle vermute.
Ich möchte ganz simpel nur die WebUI dafür benutzen und habe eigentlich alles befolgt. Vielleicht übersehe ich irgendwo eine Kleinigkeit, deswegen würde ich mich nach tagelanger Fehlersuche über jede Hilfe freuen. Ich bin wie folgt vorgegangen:
1. Systemvariable DC_CCU, Typ Zahl, 0 - 1000 erstellt
2. dutyccu.tcl in "/usr/local/" mit dem folgenden Code erstellt und die Rechte auf 755 geändert.
Code: Alles auswählen
#!/bin/tclsh
#
# Ermitteln des duty cycle der CCU
# =================================================
# Michael Thelen aka Black in Juni 2016
#
# Aufruf mit
# tclsh dutyccu.tcl <SERNR> <SYSVAR> oder
# Wenn nur eine CCU da ist mit
# tclsh dutyccu.tcl CCU2 <SYSVAR>
# =================================================
load tclrpc.so
load tclrega.so
#Beide Übergabeparameter aus CMD holen
set item1 [lindex $argv 0]
set item2 [lindex $argv 1]
# item1 enthält den Suchbegriff
# item2 enthält den Namen der Systemvariablen
# Seriennummer ist item2 eingepackt in 2 "*"
set sernr ""
append sernr "*" $item1 "*"
set r [xmlrpc http://127.0.0.1:2001/ listBidcosInterfaces ]
set dutycycle -1
set lines [split [string map [list "ADDRESS" "\x00"] $r] "\x00"]
# und nun durch alle teile mal durch
foreach line $lines {
set treffer [string match $sernr $line]
# Seriennummer wurde gefunden
if {$treffer==1} {
regexp "DUTY_CYCLE (.*?) " $line dummy dutycycle
break
#dann aber auch break der schleife
}
}
# Es wurde ein Dutycycle gefunden ()
if {$dutycycle != -1} {
set rega_cmd ""
append rega_cmd "dom.GetObject('$item2').State('$dutycycle');"
rega_script $rega_cmd
puts "Success - Duty Cycle: $dutycycle"
}
3. Programm erstellt: Wenn "virtuelle Taste 50" kurz betätigt wird, soll das benötigte Skript ausgeführt werden:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/dutyccu.tcl CCU2 DC_CCU");
Nach dem das Programm durchlaufen ist, müsste ich doch jetzt den letzten Wert der DC in der Systemvariable "DC_CCU" im WebUI einsehen können?
Firmware-Version: 2.21.10