Wago EIN solange wie auf FB Taste gedrückt

Hallo,

ich bastele nun schon seit „einigen“ Stunden an zwei Problemen rum. Zum besseren auseinanderhalten mache ich zwei Themen dafür auf (auch wenn es am Ende im gleichen Skript landen soll.

Ziel:

Ein Ausgang der Wago soll so lange an bleiben wie die Taste auf der IR-Fernbedienung gedrückt ist.

Umfeld:

Es kommen bei gedrückt halten der Taste auf der FB etwa 3 Datenpakete pro Sekunde vom µC über die RS232 rein.
Kommt in der geschätzten 1/3 sek. kein Datenpaket mehr soll der Ausgang auf AUS


<?
$data = GetValueString("TobiInput");
$teile = explode(";", $data);

// Die Sender heißen A, B, C, D usw...
// Das entspricht dann Wohnzimmer, Flur etc...
$sender = $teile[0]{1};
echo "Sender ".$sender."
";

$typ = $teile[0]{2};
if($typ == "i") //i=Infrarot
{
  $geraet = rtrim($teile[1]);
  $taste = rtrim($teile[2]);
  echo "Infrarot ";
  echo "Geraetenummer ".$geraet;
  echo " Taste *".$taste."*
";
  
  switch($geraet)
  {
	 case "0": // Gerätecode 0
		switch($taste)
		{
		  case "32":
			 echo "rauf";
			 MBT_WriteCoil(10397 /*[Wago MBT]*/ ,514 /* Ausgang514 = Licht wozi */,true);
			 break;
                         IPS_Sleep (500);
			 MBT_WriteCoil(10397 /*[Wago MBT]*/ ,514 /* Ausgang514 = Licht wozi */,false);
       

case "02":
			 echo "02";                                                                   // Taste IR Code-02 Gerät-0 mit Toggle-Funktion                                                                           
			 
			 $Hilfe02 = GetValueBoolean("HilfVTaste02");                                  //Hilfsvariable nach $Hilfe02
                         if ($Hilfe02== False){                                                       //wenn False dann folgendes ausführen
			 COMPort_SendText(20531 /*[Serial Port 17 / 3-1..4a+b]*/ , "\xffCa\0\1\xfe"); //LCD LED AN
			 SetValueBoolean("HilfVTaste02",True);                                        //HilfsVariable auf "True" setzen
			 }
			 if ($Hilfe02== True){                                                        //wenn True dann folgendes ausführen
			 COMPort_SendText(20531 /*[Serial Port 17 / 3-1..4a+b]*/ , "\xffCb\0\1\xfe"); //LCD LED AUS
			 SetValueBoolean("HilfVTaste02",False);                                       //HilfsVariable auf "False" setzen
          		 }
          		 break;
			 
  }
}

?>

Gemeint ist der Bereich --> case „32“: … …Licht wozi…

Danke

Jan

Keiner ne Idee für mich?

Oder hab ich es nicht ausführlich genug umschrieben:o Wenn ja, welche Infos fehlen?

Danke und Gruß

Jan

Hallo Jan,
ich glaube dein Problem kannst Du nur mit IPS_SetScriptTimer lösen, in dem Du den Timer mit dem Eingangssignal triggerst.

[bettelmodus] Danke, aber kann mir einer das anhand meines Skriptes genauer verklickern?:o [/bettelmodus]

Gruß

Jan