NetIO 230A - Installationsscript

Hallo zusammen,

ausgehend vom Beitrag Einbinden Netzwerksteckdosen Netio 230a habe ich ein Script geschrieben, welches die benötigten Variablen und Scripte anlegt.

Es gibt:

[ul]
[li]für jeden Port eine Statusvariable[/li][li]für jeden Port ein „An-Script“[/li][li]für jeden Port ein „Aus-Script“[/li][li]für jeden Port ein „Umschalt-Script“[/li][li]ein Script, welches alle Ports ausschaltet[/li][li]ein Script, welches den Status aller Ports abfragt[/li][/ul]

Die An- und Aus-Scripte schalten, wie der Name schon sagt, den jeweiligen Port an oder aus. Nach dem Schalten wird noch einmal der Status abgefragt, um so sicherzugehen, dass der Schaltvorgang angekommen ist. Erst danach wird die Statusvariable entsprechend gesetzt.

Das Script, welches alle Ports ausschaltet, sollte selbsterklärend sein.

Das Umschalt-Script toggelt, d.h. ist der Port an, wird er ausgeschaltet und umgekehrt.

Das Script, welches den Status aller Ports abfragt, kann man nach Belieben ausführen oder z.B. timergesteuert laufen lassen. Sofern man am Gerät auch manuell schaltet, sollte man es timergesteuert z.B. alle 60 Sekunden laufen lassen. Ich lasse es hier nur nach dem Start von IPS laufen, damit IPS die Zustände der Ports kennt, denn ich schalte nicht direkt am Gerät.

Zur Installation einfach in den ersten Zeilen des Scriptes die Variablen anpassen und Script ausführen.

Die Logindaten und die IP-Adresse werden in Variablen geschrieben. Beim Ändern der Logindaten oder der IP müssen somit nur diese Variablen angefasst werden, anstatt 14 Scripte zu editieren.

Ich habe mich bewusst für die Abfrage des Status des zu schaltenden Ports in den jeweiligen Scripten entschieden, denn so wird nur der Timestamp des zu schaltenden Ports aktualisiert, anstatt alle Variablen.

Ich habe das Script nach bestem Wissen und Gewissen geschrieben. Ich habe es hier ausführlich getestet und konnte keine Fehler feststellen. Ich habe es so geschrieben, wie es mir meine beschränkten PHP-Grundkenntnisse erlauben und bin mir sicher, dass man vieles besser, einfacher und eleganter lösen kann. Trotzdem habe ich mich dazu entschieden, es zur Verfügung zu stellen, denn vielleicht haben andere noch was davon. Ich übernehme keine Haftung für evtl. kaputtgeschossene IPS Installationen :slight_smile:

Dank an dieser Stelle an Raketenschnecke für das Grundgerüst der Scripte und an Ferengi-Master, aus dessen Wecker-Script ich mir angeschaut habe, wie man IPS dazu bringt, Kategorien, Scripte und Variablen per Script anzulegen. Ich hoffe, es ist okay, dass ich mir ein wenig abgekupfert habe.

Freue mich über Feedback!

Grüße,
Christoph

Script:

<?

// Hier Werte eintragen
$IP = "192.168.126.13";
$USERNAME = "user";
$PASSWORD = "user";
$NAME = "NetIO Wohnzimmer";



// ab hier nichts mehr ändern
//--------------------------- Kategorien anlegen --------------------------
		// Hauptkategorie anlegen
		$ID_Category = IPS_CreateCategory();
		IPS_SetName($ID_Category, $NAME);
		IPS_SetHidden($ID_Category, true); // Kategorie verstecken

		// Unterkategorie anlegen
      $ID_CategoryLogin = IPS_CreateCategory();
		IPS_SetName($ID_CategoryLogin, "Logindaten");
		IPS_SetParent($ID_CategoryLogin, $ID_Category);

//--------------------------- Variablen anlegen ---------------------------
		// Variablen für IP, Username und Password anlegen
		$VarIP = IPS_CreateVariable(3);
		IPS_SetName($VarIP, "IP-Address");
		IPS_SetParent($VarIP,$ID_CategoryLogin);
		SetValueString($VarIP, $IP);

		$VarUser = IPS_CreateVariable(3);
		IPS_SetName($VarUser, "Username");
		IPS_SetParent($VarUser,$ID_CategoryLogin);
		SetValueString($VarUser, $USERNAME);

		$VarPass = IPS_CreateVariable(3);
		IPS_SetName($VarPass, "Password");
		IPS_SetParent($VarPass,$ID_CategoryLogin);
		SetValueString($VarPass, $PASSWORD);

//--------------------------- Scripte anlegen -----------------------------
		// Pro Port ein Script anlegen
		$PortScripts = array
		('Port 1','Port 2','Port 3','Port 4');

		// Array für Statusvariablen
		$StatusVarIDs = array();

		$length = count($PortScripts); // Länge auslesen
 		for ($x=0; $x<=$length-1; $x++)
 		{
         $VarPort = IPS_CreateVariable(0);
         $StatusVarIDs[$x] = $VarPort;
			$y = $x + 1;   // Variable, welcher Port gerade behandelt wird
   		IPS_SetName($VarPort, $PortScripts[$x]);
   		IPS_SetParent($VarPort,$ID_Category);

			// Kommandos für jedes einzelne Script erzeugen
			switch($x){
			  case 0:
				 $SwitchOnCommand = "1uuu";
				 $SwitchOffCommand = "0uuu";
				 $PortStatus = "\$Port1Status = substr(\$PortStatus,6,1);";
			  break;
			  case 1:
				 $SwitchOnCommand = "u1uu";
				 $SwitchOffCommand = "u0uu";
				 $PortStatus = "\$Port2Status = substr(\$PortStatus,8,1);";
			  break;
			  case 2:
				 $SwitchOnCommand = "uu1u";
				 $SwitchOffCommand = "uu0u";
				 $PortStatus = "\$Port3Status = substr(\$PortStatus,10,1);";
			  break;
			  case 3:
				 $SwitchOnCommand = "uuu1";
				 $SwitchOffCommand = "uuu0";
				 $PortStatus = "\$Port4Status = substr(\$PortStatus,12,1);"."
";
			  break;
			}

			// Einschaltscript
			$newScriptON 	= IPS_CreateScript(0);
			$ScriptPath = $newScriptON . ".ips.php";
			IPS_SetParent($newScriptON, $VarPort);
			IPS_SetName($newScriptON, $PortScripts[$x] . " - ON");

			// Script erzeugen
   		$Script1="<?"."
";
      	$Script1.="/*"."
";
      	$Script1.="// Script zum Einschalten von " . $PortScripts[$x] ."
";
      	$Script1.="*/"."

";
      	$Script1.="\$IPAddress = GetValueString(". $VarIP .");" . "
";
      	$Script1.="\$Username = GetValueString(". $VarUser .");" . "
";
      	$Script1.="\$Password = GetValueString(". $VarPass .");" . "
";
      	$Script1.="
";
      	$Script1.="// Kommandos definieren " . "
";
      	$Script1.="\$Login = \"http://\$IPAddress/tgi/control.tgi?login=p:\$Username:\$Password\";" . "
";
			$Script1.="\$Switch = \"http://\$IPAddress/tgi/control.tgi?p=" . $SwitchOnCommand . "\";" ."
";
			$Script1.="\$GetStatus = \"http://\$IPAddress/tgi/control.tgi?p=l\";" ."
";
			$Script1.="\$Logout = \"http://\$IPAddress/tgi/control.tgi?quit=quit\";" ."
";
			$Script1.="\$DoLogin = Sys_GetURLContent(\$Login);" ."
";
			$Script1.="\$DoSwitch = Sys_GetURLContent(\$Switch);" ."
";
			$Script1.="\$PortStatus = Sys_GetURLContent(\$GetStatus);"."
";
			$Script1.="\$DoLogout = Sys_GetURLContent(\$Logout);"."
";
			$Script1.="
";
      	$Script1.="// Statusvariable für Port aktualisieren: " . "
";
			$Script1.=$PortStatus ."
";
			$Script1.="SetValue(" . $StatusVarIDs[$x] . ",\$Port" . $y . "Status)";
			$Script1.="
";
	      $Script1.="
" . "?>"."
";
   	   $fn = IPS_GetKernelDir()."scripts\\".$newScriptON.".ips.php";
      	$handle=fopen($fn,"w");
      	fwrite($handle,$Script1);
      	fclose($handle);
			IPS_SetScriptFile($newScriptON, $ScriptPath);

			// Ausschaltscript
			$newScriptOFF 	= IPS_CreateScript(0);
			$ScriptPath = $newScriptOFF . ".ips.php";
			IPS_SetParent($newScriptOFF, $VarPort);
			IPS_SetName($newScriptOFF, $PortScripts[$x] . " - OFF");

			// Script erzeugen
   		$Script2="<?"."
";
      	$Script2.="/*"."
";
      	$Script2.="// Script zum Ausschalten von " . $PortScripts[$x] ."
";
      	$Script2.="*/"."

";
      	$Script2.="\$IPAddress = GetValueString(". $VarIP .");" . "
";
      	$Script2.="\$Username = GetValueString(". $VarUser .");" . "
";
      	$Script2.="\$Password = GetValueString(". $VarPass .");" . "
";
      	$Script2.="
";
      	$Script2.="// Kommandos definieren " . "
";
      	$Script2.="\$Login = \"http://\$IPAddress/tgi/control.tgi?login=p:\$Username:\$Password\";" . "
";
			$Script2.="\$Switch = \"http://\$IPAddress/tgi/control.tgi?p=" . $SwitchOffCommand . "\";" ."
";
			$Script2.="\$GetStatus = \"http://\$IPAddress/tgi/control.tgi?p=l\";" ."
";
			$Script2.="\$Logout = \"http://\$IPAddress/tgi/control.tgi?quit=quit\";" ."
";
      	$Script2.="
";
			$Script2.="\$DoLogin = Sys_GetURLContent(\$Login);"."
";
			$Script2.="\$DoSwitch = Sys_GetURLContent(\$Switch);"."
";
			$Script2.="\$PortStatus = Sys_GetURLContent(\$GetStatus);"."
";
			$Script2.="\$DoLogout = Sys_GetURLContent(\$Logout);"."
";
			$Script2.="
";
      	$Script2.="// Statusvariable für Port aktualisieren: " . "
";
			$Script2.=$PortStatus ."
";
			$Script2.="SetValue(" . $StatusVarIDs[$x] . ",\$Port" . $y . "Status)";
			$Script2.="
";
	      $Script2.="
" . "?>"."
";
   	   $fn = IPS_GetKernelDir()."scripts\\".$newScriptOFF.".ips.php";
      	$handle=fopen($fn,"w");
      	fwrite($handle,$Script2);
      	fclose($handle);
			IPS_SetScriptFile($newScriptOFF, $ScriptPath);


			// Umschaltscript
			$newScriptToggle 	= IPS_CreateScript(0);
			$ScriptPath = $newScriptToggle . ".ips.php";
			IPS_SetParent($newScriptToggle, $VarPort);
			IPS_SetName($newScriptToggle, $PortScripts[$x] . " - Toggle");

			$Script3="<?"."
";
      	$Script3.="/*"."
";
      	$Script3.="// Script zum Umschalten von " . $PortScripts[$x] ."
";
      	$Script3.="*/"."

";
			$Script3.="\$PortStatus = GetValueBoolean(". $StatusVarIDs[$x] .");". "
";
			$Script3.="if (\$PortStatus){ " . "
";
			$Script3.="  IPS_RunScript(". $newScriptOFF .");" . "
";
			$Script3.="}" . "
";
			$Script3.="else {" . "
";
			$Script3.="  IPS_RunScript(". $newScriptON .");" . "
";
			$Script3.="}" . "
";
   	   $fn = IPS_GetKernelDir()."scripts\\".$newScriptToggle.".ips.php";
      	$handle=fopen($fn,"w");
      	fwrite($handle,$Script3);
      	fclose($handle);
			IPS_SetScriptFile($newScriptToggle, $ScriptPath);

 		}

 		// Script zur Abfrage der Ports
		$newScriptStatus = IPS_CreateScript(0);
		$ScriptPath = $newScriptStatus . ".ips.php";
		IPS_SetParent($newScriptStatus, $ID_Category);
		IPS_SetName($newScriptStatus, $NAME . " - Status");

		// Script erzeugen
  		$Script4="<?"."
";
     	$Script4.="/*"."
";
     	$Script4.="// Script zur Abfrage von allen Ports." . "
";
     	$Script4.="*/"."

";
     	$Script4.="\$IPAddress = GetValueString(". $VarIP .");" . "
";
     	$Script4.="\$Username = GetValueString(". $VarUser .");" . "
";
     	$Script4.="\$Password = GetValueString(". $VarPass .");" . "
";
    	$Script4.="
";
     	$Script4.="// Kommandos definieren " . "
";
     	$Script4.="\$Login = \"http://\$IPAddress/tgi/control.tgi?login=p:\$Username:\$Password\";" . "
";
		$Script4.="\$GetStatus = \"http://\$IPAddress/tgi/control.tgi?p=l\";" ."
";
		$Script4.="\$Logout = \"http://\$IPAddress/tgi/control.tgi?quit=quit\";" ."
";
		$Script4.="\$DoLogin = Sys_GetURLContent(\$Login);"."
";
		$Script4.="\$Portstatus = Sys_GetURLContent(\$GetStatus);"."
";
		$Script4.="\$DoLogout = Sys_GetURLContent(\$Logout);"."
";
     	$Script4.="
";
		$Script4.="\$Port1Status = substr(\$Portstatus,6,1);"."
";
		$Script4.="\$Port2Status = substr(\$Portstatus,8,1);"."
";
		$Script4.="\$Port3Status = substr(\$Portstatus,10,1);"."
";
		$Script4.="\$Port4Status = substr(\$Portstatus,12,1);"."
";
     	$Script4.="
";
		$Script4.="SetValue(" . $StatusVarIDs[0] . ",\$Port1Status);"."
";
		$Script4.="SetValue(" . $StatusVarIDs[1] . ",\$Port2Status);"."
";
		$Script4.="SetValue(" . $StatusVarIDs[2] . ",\$Port3Status);"."
";
		$Script4.="SetValue(" . $StatusVarIDs[3] . ",\$Port4Status);"."
";
      $Script4.="
" . "?>"."
";
  	   $fn = IPS_GetKernelDir()."scripts\\".$newScriptStatus.".ips.php";
     	$handle=fopen($fn,"w");
     	fwrite($handle,$Script4);
     	fclose($handle);
		IPS_SetScriptFile($newScriptStatus, $ScriptPath);

		// Script um alle Ports gleichzeitig auszuschalten
		$newScriptAllOFF 	= IPS_CreateScript(0);
		$ScriptPath = $newScriptAllOFF . ".ips.php";
		IPS_SetParent($newScriptAllOFF, $ID_Category);
		IPS_SetName($newScriptAllOFF, $NAME . " - alle aus");

		// Script erzeugen
   	$Script5="<?"."
";
     	$Script5.="/*"."
";
     	$Script5.="// Script zum Ausschalten von allen Ports gleichzeitig
";
     	$Script5.="*/"."

";
     	$Script5.="\$IPAddress = GetValueString(". $VarIP .");" . "
";
     	$Script5.="\$Username = GetValueString(". $VarUser .");" . "
";
     	$Script5.="\$Password = GetValueString(". $VarPass .");" . "
";
      $Script5.="
";
      $Script5.="// Kommandos definieren " . "
";
      $Script5.="\$Login = \"http://\$IPAddress/tgi/control.tgi?login=p:\$Username:\$Password\";" . "
";
		$Script5.="\$Switch = \"http://\$IPAddress/tgi/control.tgi?p=0000\";" ."
";
		$Script5.="\$GetStatus = \"http://\$IPAddress/tgi/control.tgi?p=l\";" ."
";
		$Script5.="\$Logout = \"http://\$IPAddress/tgi/control.tgi?quit=quit\";" ."
";
      $Script5.="
";
		$Script5.="\$DoLogin = Sys_GetURLContent(\$Login);" ."
";
		$Script5.="\$DoSwitch = Sys_GetURLContent(\$Switch);"."
";
		$Script5.="\$PortStatus = Sys_GetURLContent(\$GetStatus);"."
";
		$Script5.="\$DoLogout = Sys_GetURLContent(\$Logout);"."
";
		$Script5.="
";
      $Script5.="// Statusvariable für alle Ports aktualisieren: " . "
";
		$Script5.="\$Port1Status = substr(\$PortStatus,6,1);"."
";
		$Script5.="\$Port2Status = substr(\$PortStatus,8,1);"."
";
		$Script5.="\$Port3Status = substr(\$PortStatus,10,1);"."
";
		$Script5.="\$Port4Status = substr(\$PortStatus,12,1);"."
";
     	$Script5.="
";
		$Script5.="SetValue(" . $StatusVarIDs[0] . ",\$Port1Status);"."
";
		$Script5.="SetValue(" . $StatusVarIDs[1] . ",\$Port2Status);"."
";
		$Script5.="SetValue(" . $StatusVarIDs[2] . ",\$Port3Status);"."
";
		$Script5.="SetValue(" . $StatusVarIDs[3] . ",\$Port4Status);"."
";
	   $Script5.="
" . "?>"."
";
   	$fn = IPS_GetKernelDir()."scripts\\".$newScriptAllOFF.".ips.php";
      $handle=fopen($fn,"w");
      fwrite($handle,$Script5);
      fclose($handle);
		IPS_SetScriptFile($newScriptAllOFF, $ScriptPath);

?>


Hallo @DerStandart,

habe dein Script mal testen wollen und es einfach in ein neues, leeres Script mit Namen „Netio“ kopiert.
Bei Ausführung läuft es in einen Fehler:



Parse error:  syntax error, unexpected T_NS_SEPARATOR in [Netio] on line 86


Das Installscript von die liegt bei im Root.
Ich verwende die V2.3 #1840

Gruß,
kpiep

Arrghhh:

Erledigt !

Mein Fehler:

<?

Am Anfang des Scriptes fehlte.

Gruß,
kpiep

Okay … :slight_smile:

Hallo @DerStandart,

Respekt!
Läuft super dein Script.
Hatte Anfangs noch einige Socket-Timeouts - habe dann aber auf die neuste Firmware upgegradet und schon klappts wunderbar…

Danke,
kpiep

Danke für das Feedback! Freut mich, wenn es bei Dir gut läuft!

Schönes WE!

Und nicht vergessen:

wird das NetIO auf einen anderen Port gelegt (<> 80 - ist mir nämlich passiert), so muss dieser auch an die IP Adresse angehängt werden.

aus $IP = „192.168.126.13“;

wird dann für Port 8088:

$IP = „192.168.126.13:8088“;

Logisch, aber man(n) vergisst es halt leicht :wink:

Gruß Tom

Hmmm,

ich bekomme bei jedem Aufruf (Skript händisch gestartet) von:

$content = Sys_GetURLContent($loginremote);
$content = Sys_GetURLContent($schaltremote);
$content = Sys_GetURLContent($logoutremote);

ein:

Warning: Connection Closed Gracefully

zurückgeliefert. Woran kann das liegen. Es tritt sowohl bei dem Skript von „Raketenschnecke“ auf, als auch bei dem Ur-Skript von „Computer Kübler“ … die im Prinzip identisch sind. Der Schaltvorgang selbst aber funktioniert.

Any ideas ?

Mit Dank vorab

Gruß Tom

Hmm, also ich hab leider keine Idee, Sorry!

Hat denn keiner die gleichen Probleme mit der Fehlermeldung „Warning: Connection Closed Gracefully.“ ?
Bzw. läuft es bei Euch NETIO-Nutzern komplett „rund“ ?

Google meint:

a) Ist ja nur eine Warnung (die mich aber mächtig stört)

b) Die Ursache liegt irgendwo innerhalb von DLPHI

Hatte gehofft, mit V2.4 verschwindet dies vielleicht von selbst - ist aber leider immer noch da …

Dank & Gruß
Tom

b) Die Ursache liegt irgendwo innerhalb von DLPHI

Ja, in den Indy Komponenten die fuer die TCP/IP Kommunikation zustaendig
sind. Vielleicht hat Paresy eine „try except“ vegessen, das „Problem“
kenne ich zur Genuege von meinen eigenen Programmen.

Wundert mich aber das es nur bei einem auftritt.

VG
Stephan

ich habs auch, ignorier das aber nicht mal :smiley:

Hallo,

ich habe zwar keinen NetIO 230, aber einen baugleichen IP9258.

Das Schalten über WebInterface klappt gut, aber ich wollte mal probieren, die NetIO Firmware drauf zu machen. Leider ist wohl ein Bug in der Firmware vom 9258, sodass er mich beim Updatevorgang nicht in die Auswahlmaske für die Firmwaredatei bringt. Schade.

Jetzt hab ich hier Euere PHP Scripte gesehen und nun wollte ich das mal testen.

Wenn ich aber versuche das Script aufzurufen (es liegt in „htdocs“ und ich rufe es wie folgt auf: 127.0.0.1/test.php), passiert folgendes:

Der Browser gibt mir nur das als Rückmeldung:

„.“
„; $fn = IPS_GetKernelDir().„scripts\“.$newScriptON.“.ips.php"; $handle=fopen($fn,„w“); fwrite($handle,$Script1); fclose($handle); IPS_SetScriptFile($newScriptON, $ScriptPath); // Ausschaltscript $newScriptOFF = IPS_CreateScript(0); $ScriptPath = $newScriptOFF . „.ips.php“; IPS_SetParent($newScriptOFF, $VarPort); IPS_SetName($newScriptOFF, $PortScripts[$x] . " - OFF"); // Script erzeugen $Script2=""."
„; $fn = IPS_GetKernelDir().„scripts\“.$newScriptOFF.“.ips.php"; $handle=fopen($fn,„w“); fwrite($handle,$Script2); fclose($handle); IPS_SetScriptFile($newScriptOFF, $ScriptPath); // Umschaltscript $newScriptToggle = IPS_CreateScript(0); $ScriptPath = $newScriptToggle . „.ips.php“; IPS_SetParent($newScriptToggle, $VarPort); IPS_SetName($newScriptToggle, $PortScripts[$x] . " - Toggle"); $Script3=""."
„; $fn = IPS_GetKernelDir().„scripts\“.$newScriptStatus.“.ips.php"; $handle=fopen($fn,„w“); fwrite($handle,$Script4); fclose($handle); IPS_SetScriptFile($newScriptStatus, $ScriptPath); // Script um alle Ports gleichzeitig auszuschalten $newScriptAllOFF = IPS_CreateScript(0); $ScriptPath = $newScriptAllOFF . „.ips.php“; IPS_SetParent($newScriptAllOFF, $ID_Category); IPS_SetName($newScriptAllOFF, $NAME . " - alle aus"); // Script erzeugen $Script5=""."
„; $fn = IPS_GetKernelDir().„scripts\“.$newScriptAllOFF.“.ips.php"; $handle=fopen($fn,„w“); fwrite($handle,$Script5); fclose($handle); IPS_SetScriptFile($newScriptAllOFF, $ScriptPath); ?>

Kann mir jemand helfen?

Ich bin leider Änfänger was PHP angeht. Aber die Scripte meiner Temperaturmessungen laufen auf dem Rechner ohne Probleme, sodass ich Xampp als Fehlerquelle wohl außen vor lassen kann!??

Vielen Dank im Voraus.

@ remote-it,

ich bekomme bei jedem Aufruf (Skript händisch gestartet) von:

$content = Sys_GetURLContent($loginremote);
$content = Sys_GetURLContent($schaltremote);
$content = Sys_GetURLContent($logoutremote);

ein:

Warning: Connection Closed Gracefully
Setz einfach mal ein @ vor den Befehl.

@Sys_GetURLContent($loginremote);

@ iphone,

wenn Du kein IPS einsetzt, wird das so mit den Scripts nichts.

IPS??

Kann mir da jemand auf die Sprünge helfen?

Naja, Du bist hier im IP-Symcon Forum. Die Scripts die hier veröffentlicht werden, sind für diese Software geschrieben.

IPS ist der Grund für die Existenz dieses Forums. Um diese Software dreht sich hier alles… alles Andere ist Nebensache:D

Setz einfach mal ein @ vor den Befehl.

@Sys_GetURLContent($loginremote);

Wow - Super,

Danke … so funktioniert es - ENDLICH :wink:

Gruß Tom

Es hat ja auch vorher funktioniert. Einzig die Meldung ist ein bischen irre führend. Warung ist es in dem Sinn ja keine, nur eine Info das die Verbindung ordnungsgemäss geschlossen wurde.

Mit dem @ unterdrückst Du schlußendlich solche Meldungen, was nicht immer sinnvoll ist. In deinem Fall, aber kein Problem.

Mal eine Frage in die Runde:

Gibt es so eine schaltbare Mehrfachsteckdose auch für Schuko- und Eurostecker ?

Wenn ich es richtig sehe, gibt es keine Adapter von den hier verbauten auf Schuko, resp. Euro - oder irre ich mich ?

Ich will damit Fernseher, Anlage, xbox, etc. schalten. Im Moment mache ich das mit FS 20 - das ist mir aber auf Dauer zu unzuverlässig…

Viele Grüße

Martin