Rolladenpositionen mit BS4

Moin,

gibt es irgendeine Möglichkeit, die vom BS4 geregelte Motorposition mit IPS abzufragen ? Ich hatte diese Baustelle schon mal vor 5 Jahren https://www.symcon.de/forum/threads/11487-LCN-Busmeldung-Motorposition-auswerten

aber die Filterung aller PCK Meldungen über die Registervariable erzeugt einfach eine viel zu hohe CPU Last (da triggert das Script jede Sekunde und belegt fast alle Slots)

Das andere Thema verweist doch auf die TVar. Die kannst du doch mit IPS empfangen, oder?

paresy

Hallo Tom,

ich habe folgende Skrite im Einsatz für die Abfrage der Positionen. LCN-PCHK 2.8 !!!
Getriggert von ClientSocket LCN -> RegisterVariable

<?
$debug = true;

if ($_IPS['SENDER'] == "RegisterVariable")
	{
	$Value = 123456;
	IPS_LogMessage($_IPS['SELF'],"S0_Zähler".$_IPS['VALUE']);

	$Value = substr($_IPS['VALUE'],1,9);
	//print_r($_IPS);
	
	switch ($Value)
	   {
	   case "M000140.C":
	   //if ($Value == "M000140.C")  // Modul 140
			$Zaehler = substr($_IPS['VALUE'],10,1);
			$wert = substr($_IPS['VALUE'],-11);
			if ($debug) echo "
S0-Zähler:".$Zaehler." Zählerstand:". $wert."
";
			switch ($Zaehler)
		   	{
		   	case 1:
		   	   setValue(38631 /*[LCN\S0-Zähler LCN\S0_Zaehler1]*/,$wert);
		 	     break;
			   case 2:
	   	   	setValue(47914 /*[LCN\S0-Zähler LCN\S0_Zaehler2]*/,$wert);
			      break;
			   case 3:
	   	   	setValue(35361 /*[LCN\S0-Zähler LCN\S0_Zaehler3]*/,$wert);
			      break;
			   case 4:
	   	   	setValue(13236 /*[LCN\S0-Zähler LCN\S0_Zaehler4]*/,$wert);
			      break;
				}
				break;
		break;
		case "M000110.R":
		   $Roll = substr($_IPS['VALUE'],9);
		   $Pos = explode ("RM",$Roll);
		   for ($i=0;$i<=2;$i++)
		      {
		   	$pos = substr($Pos[$i],0,1);
				switch ($pos)
				   {
				   case 1:
				      echo "Motor 1 ".substr($Pos[$i],1,3);
				      SetValue (16317 /*[LCN\S0-Zähler LCN\Dachfenster Flur Motor 1]*/,(substr($Pos[$i],1,3)/2));
				      break;
				      
               case 2:
				      echo "Motor 2 ".substr($Pos[$i],1,3);
				      SetValue (14925 /*[LCN\S0-Zähler LCN\Dachfenster Flur Motor 2]*/,(substr($Pos[$i],1,3)/2));
				      break;
				      
				   case 3:
				      echo "Motor 3 ".substr($Pos[$i],1,3);
				      SetValue (56690 /*[LCN\S0-Zähler LCN\Dachfenster Lager Motor 3]*/,(substr($Pos[$i],1,3)/2));
				      break;
				      
				   case 4:
				      echo "Motor 4 ".substr($Pos[$i],1,3);
				      SetValue (34919 /*[LCN\S0-Zähler LCN\Dachfenster Lager Motor 4]*/,(substr($Pos[$i],1,3)/2));
				      break;

					default:
						break;
				   }
				}
		   echo "Positon*******************".$Roll;
		   print_r($Pos);
		   
		   break;
		   
		case "M000090.R":
		   $Roll = substr($_IPS['VALUE'],9);
		   $Pos = explode ("RM",$Roll);
		   for ($i=0;$i<=2;$i++)
		      {
		   	$pos = substr($Pos[$i],0,1);
				switch ($pos)
				   {
				   case 1:
				      echo "Motor 1 ".substr($Pos[$i],1,3);
				      SetValue (17970 /*[LCN\S0-Zähler LCN\Fenster Chef Motor 1]*/,(substr($Pos[$i],1,3)/2));
				      break;

               case 2:
				      echo "Motor 2 ".substr($Pos[$i],1,3);
				      SetValue (52235 /*[LCN\S0-Zähler LCN\Fenster Sek. Motor 2]*/,(substr($Pos[$i],1,3)/2));
				      break;

				   case 3:
				      echo "Motor 3 ".substr($Pos[$i],1,3);
				      SetValue (12279 /*[LCN\S0-Zähler LCN\Fenster Aufenthaltsraum Motor 3]*/,(substr($Pos[$i],1,3)/2));
				      break;

				   case 4:
				      echo "Motor 4 ".substr($Pos[$i],1,3);
          	      break;

					default:
						break;
				   }
				}
		   echo "Positon*******************".$Roll;
		   print_r($Pos);
		//RM12002000182401731RM22002000183901799
		   //=M000110.RM12002000182401731RM22002000183901799


		   break;
		default:
		   break;
		}
	}

?>
  1. Skript getriggert durch Statusänderung der Motorenrelais
<?

LCN_SendCommand(21498 /*[UV (000,110)]*/, "R8","M1P1");
ips_sleep(100);
LCN_SendCommand(21498 /*[UV (000,110)]*/, "R8","M1P2");
ips_sleep(100);
LCN_SendCommand(48391 /*[UV (000,090)]*/, "R8","M1P1");
ips_sleep(100);
LCN_SendCommand(48391 /*[UV (000,090)]*/, "R8","M1P2");

?>

Hi Karlheinz,

schönen Dank, kann es aber leider nicht probieren, ich habe keine Rollo’s.
@Tom, versuchen und berichten. (und mal die L… abschalten…)

Vielen Dank für die Skripte und Tipps. Ja, es geht mit RegVar+CS - aber: Auf meiner Banane erzeugt das eine derartige CPU-Last, dass ich damit kaum arbeiten kann…

Ist deine Bus-Last zu groß?

Noch keine elegantere (direkte Lösung) von IPS möglich? :frowning:

Zu Version 4.2 gibt es ein neues LCN Shutter (Motor) Modul, welches die direkt Positionierung erlaubt und auch den Positionswert abfragen kann :slight_smile:

paresy

Version 4.2

ich finde im download leide nur die 4.1

bzw wie kann ich die updaten damit ich die für mich interessante option ausnutzen kann

MfG Sophos

Es gibt noch keine offiziellen Test-Versionen für die Version 4.2. Dies wird wahrscheinlich auch noch einige Wochen dauern.

paresy

Hi Paresy,

das weckt Neugierde. Gibt es nähere Infos über das Modul ? Arbeitet es direkt mit den PCK Positionierungsbefehlen ? Das wäre schon sehr kuhl.

Ja, wir haben extra ein Modul gemacht, welches die zusätzlichen Befehle nutzt :slight_smile:

poaresy