FS20 Komponente , Schaltzeit für x.x sec.

Hallo,

gibt es eine Möglichkeit ein FS20-Aktor für z.B 5.3 Sekunden ein zuschalten.

Mit FS20_SwitchDuration kann man ja nur volle Sekunden einschalten.

Gruß
BMKSTB

http://www.php.net/manual/de/function.microtime.php könnte etwas für dich sein.

Hallo !

Ich denke dass wird v.a. davon abhängen ob der Timerchip in den FS20 Dingern <1 sec verabeiten kann.
Vielleicht weiss da jemand mehr?

Gruß

Peter

Was hat das damit zu tun? Der Aktor schaltet doch nach erhalt des Funktelegramms und wartet nicht erst wenn eine Sekunde vergangen ist. Es geht hier ja nicht um den internen Timer des Gerätes sondern es wird eher kompliziert sein solch kurze Zeiten mit IPS genau darzustellen.

Mit FS20_SwitchDuration verwende ich doch den internen Timer des Aktors, oder nicht?
Ich glaube nicht das du eine Schaltgenauigkeit von 100 Millisekunden mit dem FS20 Funksignal hinbekommst. Evtl. geht das Signal ja sogar ganz verloren.

Viele Grüße
chris

Ich habe nichts von FS20_SwitchDuration geschrieben, davon mal abgesehen das ich FS20 und das Darstellen von ms Schaltzeiten sowieso nicht für sinnvoll erachte geht es hier ja nur um die Machbarkeit des ganzen.
Man müßte ein Script basteln in dem der microtime Wert abgefragt wird und dann der Aktor ausgeschalten wird. Dabei sind Scriptlaufzeiten und Signallaufzeiten zu beachten.

Du nicht, aber der Threadstarter.
Meine Befürchtung war eben auch der Versatz (Script- und Signallaufzeit) und die Zuverlässigkeit des Signals.

Machbar ist es sicher mit deinem Vorschlag. Die Frage ist nur wie Zuverlässig.

Viele Grüße
Chris

Also ich habe mir mal die Arbeit gemacht das in Scriptform zu bringen:


$switch_time 		= 3300; //Einschaltzeit in Millisekunden
$id_aktor      	= 11844;
$id_aktor_status  = 38693;

//Aktor einschalten
FS20_SwitchMode($id_aktor,true);
//Einschaltzeit feststellen
$var_info1 	= IPS_GetVariable($id_aktor_status);
$var_info1 	= $var_info1['VariableUpdated'];
$time_start = microtime(true);

usleep($switch_time*1000); // Einschaltzeit abwarten

//Aktor ausschalten
FS20_SwitchMode($id_aktor,false);
$time_end = microtime(true);
//Ausschaltzeit feststellen
$var_info2 = IPS_GetVariable($id_aktor_status);
$var_info2 = $var_info2['VariableUpdated'];


//Berechnungen
$time_aktor		= $time_end-$time_start;
$varinfo_result 	= $var_info2-$var_info1;

echo "Zeit durch IPS ermittelt	: ".$varinfo_result."
";
echo "Zeit durch Script ermittelt: ".$time_aktor;


Deas Resultat ist etwas seltsam, ich würde meinen es geht, nur manchmal ist ca. 1 Sekunde Differenz zwischen der gemessenen Zeit und der Zeit die IPS meldet:confused:

@Horst oder paresy
Gibts hier ein Bug oder ist meine Scriptlogik falsch?

Das ist ein Bug, der im nächsten Update behoben sein wird.

Danke für das Feedback und den Fix!

@bmkstb

Dann kannst Du das Script für Deinen Wunsch benutzen.:wink:

Das o.g. Problem ist mit einem 3 Zeiler zu lösen


FS20_SwitchMode($id_aktor,true);
IPS_Sleep(5300);
FS20_SwitchMode($id_aktor,false);

paresy

Ja ne ist klar Michael, der rest meines Scriptes war ja auch nur zum Nachweiß ,für alle Ungläubigen, gedacht das es auch geht.:wink: