Ich hab mich gewundert, dass perfmon immer eine Verzögerung von >1 Sekunde bei mir meldet, wenn ich per STV meinen Fernseher ausschalte (set POWEROFF). Da ist im Code in Zeile 342 ein "sleep 1" in einer Schleife, was wohl dazu führen soll, dass beim Absenden mehrerer Befehle in Folge jedes Mal eine Sekunde Pause vor dem nächsten Befehl gemacht wird. Finde ich erstmal viel, aber wird schon seinen Grund haben.
foreach my $argnum (0 .. $#ARGV) {
# Send remote key(s)
#Log4 $name, 4, "[STV] sending ".uc($ARGV[$argnum]);
my $key = "KEY_" . uc($ARGV[$argnum]);
my $messagepart3 = chr(0x00) . chr(0x00) . chr(0x00) . chr(length(encode_base64($key, ""))) . chr(0x00) . encode_base64($key, "");
my $part3 = chr(0x00) . chr(length($tvappstring)) . chr(0x00) . $tvappstring . chr(length($messagepart3)) . chr(0x00) . $messagepart3;
print $sock $part3;
sleep(1);
# select(undef, undef, undef, 0.5);
}
Das Problem ist mMn jedoch, dass das sleep NACH dem Befehl und auch nach einem einzelnen Befehl gemacht wird. Also auch wenn nur ein Befehl verschickt wird, wird danach eine Sekunde pausiert. Ist das Absicht?
Ich hab das bei mir mal testweise geändert in:
foreach my $argnum (0 .. $#ARGV) {
NEU -> sleep(1) if ($argnum > 0);
# Send remote key(s)
#Log4 $name, 4, "[STV] sending ".uc($ARGV[$argnum]);
my $key = "KEY_" . uc($ARGV[$argnum]);
my $messagepart3 = chr(0x00) . chr(0x00) . chr(0x00) . chr(length(encode_base64($key, ""))) . chr(0x00) . encode_base64($key, "");
my $part3 = chr(0x00) . chr(length($tvappstring)) . chr(0x00) . $tvappstring . chr(length($messagepart3)) . chr(0x00) . $messagepart3;
print $sock $part3;
# select(undef, undef, undef, 0.5);
}
So dass nur VOR einem Befehl eine Pause gemacht wird und das auch erst ab dem zweiten.
Evtl. gibts Gründe, die ich übersehen habe, warum das momentan so gelöst ist. Ansonsten wäre es super, wenn das geändert sleep auch eingecheckt werden könnte.
Hallo vbs,
ich hab den code nur 1zu1 übernommen. Leider hab ich kein so neuen Samsung TV um das zu testen können.
Ich hab den sleep(1) rausgenommen und hochgeladen.
Vielen Dank Gruß
Zwiebel
Hi Zwiebel,
danke fürs Committen! Das alte sleep ist jetzt zwar raus, aber das neue sleep (mit "NEU" markiert) hast du jetzt nicht übernommen. Ist das Absicht? Evtl. gibts ganz ohne sleep Probleme (wenn man davon ausgeht, dass das sleep eine Berechtigung hatte)?
Hallo vbs,
hab den "Neu" Teil übersehen...habs abgeändert und hochgeladen.
vg
Zwiebel
Hallo Zwiebel,
ich hatte im Bereich Sonstiges (der in der Maintainer.txt für dieses Modul genannt wird) noch einen anderen Patch (http://forum.fhem.de/index.php/topic,43097.msg350856.html#msg350856) beschrieben.
Vielleicht kannst du dir den auch mal ansehen und ggf. übernehmen.
Gruß,
Kai