Hallo zusammen,
ich bin Einsteiger, hab aber Aufgrund der tolle Anleitungen und Kommentare schon einiges erreicht. Nur die Bewegung der Jalousie erfolgt nur kurz, obwohl ich auch das abgewandelte Script mit dem Loop getestet hab.
Ich habe einen Somfy RTS Reciever Power 1 X 2,5 DC mit der Betriebsart 'Jalousie', Einen CC1101-USB-Lite 433MHz (CUL433) von busware.
Nach der Installation hatte ich das Problem, dass im Status 'kein TTY-Device connected' angezeigt wurde und damit auch kein Anlernen funktionierte.
USB 1-1.4 - {CUX} CUL433 [COMM] - /dev/ttyACM0 - Fri Dec 31 13:26:40 2021
Kein TTY-Device connected
Dieses Problem konnte ich lösen, indem ich die Setup-Parameter von
TTYPARAM=tty
USB0:38400:8N1
TTYASSIGN=tty
USB0:CUX
auf
TTYPARAM=tty
ACM0:38400:8N1
TTYASSIGN=tty
ACM0:CUX
geändert habe. (Vielleicht hilft es ja jemanden, der auch so am Schlauch steht, wie ich)
Damit sah die Statusmeldung nun so aus
USB 1-1.4 - {CUX} CUL433 [COMM] - /dev/ttyACM0 {:540s} -
V 1.67 CUL433 (CUL_V3) - Fri Dec 31 13:26:40 2021
Damit hat auch das Anlernen des Somfy Receivers funktioniert und ich dachte, ich hab es geschafft.
Wenn ich allerdings nun den Command 'tclsh /usr/local/addons/rollo/somfy.tcl CUX4000001:1 Somfy CLOSE A0 A00000 J' absetze,
somfy.tcl:
Code: Alles auswählen
#!/bin/tclsh
#tclsh /usr/local/addons/rollo/somfy.tcl CUX4000001:1 Somfy STOP A0 A00001 J
#device_name = CUX4000001:1
#device_sysvar_name = Somfy
#device_cmd = STOP
#device_remote_enc = A0
#device_remote_id = A00001
#device_kind = J (J-Mode)
load tclrega.so
set device_name [lindex $argv 0]
set device_sysvar_name [lindex $argv 1]
set device_cmd [lindex $argv 2]
set device_remote_enc [lindex $argv 3]
set device_remote_id [lindex $argv 4]
set device_kind [lindex $argv 5]
#DEBUG:
#puts "device_name = $device_name"
#puts "device_sysvar_name = $device_sysvar_name"
#puts "device_cmd = $device_cmd"
# command-line for reading rolling counter sysvar
set cmd "var remote_counter = dom.GetObject(\"$device_sysvar_name\").Value();"
# read sysvar
array set values [rega_script $cmd ]
# Zähler für J-Mode, initial 1
set loop 1
switch $device_cmd {
"OPEN" { set device_cmd_hex "20" }
"1000" {
set device_cmd_hex "20"
if { $device_kind == "J" } {
set loop 2
}
}
"CLOSE" { set device_cmd_hex "40" }
"0" {
set device_cmd_hex "40"
if { $device_kind == "J" } {
set loop 2
}
}
"PROG" { set device_cmd_hex "80" }
"MY" { set device_cmd_hex "10" }
"500" { set device_cmd_hex "10" }
"STOP" { set device_cmd_hex "11" }
default {
puts "WRONG SOMFY COMMAND"
exit 100
}
}
# initiale Befüllung aus CCU-Variable
set remote_counter $values(remote_counter)
# Im J-Mode (z.B. für SOLIRIS MOD RTS) sind zwei Befehle notwendig
while {$loop > 0} {
# convert to integer
set remote_counter [ expr int($remote_counter)]
# convert to HEX
set remote_counter_hex [ format %04X $remote_counter ]
set somfy_cmd "\"Ys$device_remote_enc$device_cmd_hex$remote_counter_hex$device_remote_id\""
set cmd "dom.GetObject(\"CUxD.$device_name.SEND_CMD\").State($somfy_cmd);"
#DEBUG:
puts $cmd
rega_script $cmd
#rega_script { dom.GetObject("CUxD.CUX4000001:1.SEND_CMD").State("YsA0200018ABCDEF");}
# erhöhe Remote-Counter-Wert
set remote_counter [ expr $remote_counter + 1 ]
#DEBUG:
#puts $remote_counter
# setze neuen Remote-Counter-Wert in CCU
set cmd ""
append cmd "var i = dom.GetObject('$device_sysvar_name');"
append cmd "i.State('$remote_counter');"
array set values [rega_script $cmd ]
set loop [expr {$loop - 1}]
#DEBUG:
#puts "loop-counter = $loop"
after 10
}
bewegt sich die Jalousie nur ca. 1cm. Ich hab es auch schon mit mehrfachen aufrufen, oder statt CLOSE die 1000 (wie im Script mit dem Loop angegeben) versucht. Leider keine Änderung.
Im Terminal wird
17:39:41 [ttyACM0] <-- YsA0200036A00000
17:39:41 [ttyACM0] --> YsA02700360000A0
angezeigt.
Hat noch jemand eine Idee ?
Danke für Eure Unterstützung.
Gottfried