FS20 IRF Tasten-Dauerdruck per php?

Hallo zusammen,
ich möchte den FS20 Infrarotsender FS20 IRF nutzen, um damit auch aus Skripten heraus (iPod Touch Oberfläche) die Lautstärke eines normalen Tuners zu regeln.
Die Doku des FS20 IRF sagt dazu:

Hält man die Taste einer FS20-Fernbedienung (FS20 S4,
FS20 S4A, FS20 S20, FS20 S8, FS20 SN, FS20 TC6, FS20 IRU)
gedrückt, so werden die zugehörigen IR-Codes wiederholt,
solange die Taste gedrückt bleibt. Ist zu einem FS20-Schaltbefehl
nur ein einziger IR-Code gespeichert, so wird der IRCode
ohne die Sendepause von 500 ms direkt wiederholt,
wodurch sich Funktionen wie „Lauter/Leiser“ schneller steuern
lassen.

Mit einer FS20-Fernbedienung klappt das auch in der Tat prima.
Banale Frage, da ich momentan fernab der Anlage weile: Wie rufe ich das aus einem Skript heraus auf, wenn ich z.B. das Lautstärkespektrum des Tuners (-3 db bis -96 db) in eine entsprechende Zeit des Gedrückthaltens oder eine entsprechende Anzahl von SwitchMode übersetze?

M.a.W.: Nutze ich dazu
a) eine Schleife mit x-maligem Absenden von FS20_SwitchMode?
oder
b) FS20_SwitchDuration mit einer errechneten Zeit?

Ich habe mehrfach gelesen, dass sich die FHZs verschlicken können, wenn sie mit zu vielen/zu schnellen Befehlsfolgen bombardiert werden.
Grüße
Martin

Hi,

hast du schon eine Lösung gefunden?
Ich überlege auch gerade das FS20 IRF bei mir einzubinden.

Puh, das Gedächtnis… ist schon so lange her.
Ich habe die Lautstärkeregelung für meine iPod/iPhone WebApp in das Script tuner_.php ausgelagert:

<?
$tuner_volume = (integer) $tmp;         // Wert, auf den eingestellt werden soll
$www= IPS_GetVariable(39974);           // 
$txx=GetValueInteger(39974);            // Letzter in der Variablen gespeicherter Lautstrkewert
$updatetime = $www["VariableUpdated"];  // Zeit des letzten Variablen-Updates
$time       = time();                   // Aktuelle Zeit
$timedelay  = $updatetime +20;          // Berechnung der Referenzzeit
$delta = date("H:i", $time-$updatetime);

print "$delta";
  while ($txx < $tuner_volume)
  {
    FS20_SwitchMode(40781, true); //
    print "
    <html>
      <head>
        <body>
          $txx";
    $txx++;
  }
SetValueInteger(39974,$tuner_volume);
?>

Es funktioniert, aber wie man sieht, ist es noch nicht fertig. Meine Idee war glaube ich, dass nach Ablauf einer gewissen inaktiven Zeitspanne (z.B. 10 Stunden) davon auszugehen ist, dass eine neue „Musik-Session“ startet. Dann sollte die Lautstärke des Tuners auf einen Ausgangswert zurückgesetzt werden, um die Einstellungen wieder auf den Bereich -3 bis -93 db zu „eichen“, denn leider gibt es ja keine Möglichkeit, den Status des Lautstärkereglers abzufragen.

Auf der Hauptseite rufe ich das auf mit

<?php
function tuner_volume($go_back) {
$tmin=-93;
$tmax=-3;                               
$tuner_volume_aktuell=GetValueInteger(39974);
$t=$tmin;

print "
  <form action=\"tuner_.php\" style=\"display:inline\">           
  <select name=\"tmp\" style=\"width: 75 px; height: 40px\" class=\"submit\">";        
while ($t < ($tuner_volume_aktuell)) 
  {
    print "<option>" . $t . "</option>";
    $t = $t+1;
  }
print "
<option selected>" . $t . "</option>";
$t = $t + 1;

while ($t <= $tmax)
  {
    print "
    <option>" . $t . "</option>";
    $t = $t + 1;
  }
print "
</select>
<input type=\"submit\" name=\"xyz\" value=\"ok\" style=\"width: 50px; height: 40px\" class=\"submit\" />
<input type=\"hidden\" name = \"backlink\" value=\"$go_back\" />
</form>";
}
?>

Hoffe, das hilft etwas, und bitte entschuldige den unaufgeräumten Laiencode.
Martin

danke für die mühe. ich werds bei mir mal näher beleuchten, wenn ich das ding habe :slight_smile: