Steuerung auf HTML-Basis ins WFE einbauen - wie?

Hi @ll,

ich bin seit einigen tagen am überlegen, wie man eine HTML-Seite baut, die man als Steuerungsoberfläche ins WFE einbaut. Die Idee ist, über grafische Steuerelemente in der im WFE eingebaute HTML-Seite a) den Status von IPS-Variablen anzuzeigen und b) ausgehend von diesem Status ein extern angebundenes Device zu steuern. Weiterhin müssen Informationen die vom externen Device komen (nur lesend) dargestellt werden (können alternativ auch aus IPS-Variablen gelesen werden).

Da ich fachlich noch ganz weit weg bin wäre es super, wenn ich hier einige Hilfestellungen bekäme. Mich beschäftigen derzeit folgende Fragen:

  1. wie liest man eine IPS-Variable aus und stellt den Wert/Status im HTML-WFE dar?
  2. wie steuert man sinnvollerweise das externe Device: schreibt man a) eine Änderung aus HTML in die Variable und den Rest übernimmt IPS (alles ab IPS kann ich schon selbst handeln) oder b) schickt man den Wert direkt aus HTML an das externe Device und sieht dann zu dass der neue Wert irgendwie in der IPS-Variable landet?

Wie würdet Ihr das prinzipiell und im Detail machen?

Vielleicht ahnt der Experte jetzt schon, wie weit ich davon weg bin, aber ich habe ein Thema welches ich gern über diese methode umsetzen würde. Freue mich auf reichlich Hilfestellungen und hoffe das Thema dann schnell in eigenregie aufnehmen und entwickeln zu können.

Hallo,

sieh Dir doch mal meine Entertainment Steuerung an, habe das so ähnlich für meine diversen Remote Controls gelöst, Kommunikation erflogt über Javascript (JQuery, siehe Files, die im …/Webfront/User Ordner liegen). Hole bzw. setze mit damit diverse Variablen in IPS…

lg
Andreas

Hi Brownson, danke für den Tipp, schau ich mir auf jeden Fall an. Allerdings schreckt mich JS etwas ab - habe gerade vor 5 Monaten begonnen PHP zu lernen (davor keinerlei Berührung mit Programmierung) - ich befürchte das ist im Moment etwas to much… aber das werd ich merken wenn ich reingeschaut habe;)

Ich erzeuge für Sonos derzeit Links ohne eine Javascript oder Ajax Library und stelle diese in einer HTML-Box dar:

		// AJAX or Jscript link to user page
				  foreach ( $curzonegroup as $curmember) {
						if($curmember['Rincon']!=$curCoord) {
							$ZoneStatus = $ZoneStatus . "<a href=\"RemoveMember " . $curmember['CurrentZoneName']."\"  style=\"text-decoration:none; color:white;\" 
onclick=\"new Image().src = '/user/sonoscmd.php?Name=" . $curmember['CurrentZoneName'] . "&sonosip=" . $arrzoneplayers[$curCoord]['IP'] . "&sonosid=" . $arrzoneplayers[$curCoord]['Rincon'] .
							"&cmd=RemoveMember&memberip=".$arrzoneplayers[$curmember['Rincon']]['IP']."&memberid=".$curmember['Rincon']."'; return false;\">".$curmember['CurrentZoneName'] .
							"<img src='/user/icons/fixed/minus.png' height='10' width='10' border='0'> </a> ";

Das Ergebniss fange ich ähnlich wie Brownson über eine Userseite auf:

<?
// Teststring:
//http://192.168.0.5:82/user/sonoscmd.php?sonosip=192.168.0.11

//&sonosid=RINCON_000E5832FB5C01400&cmd=RemoveMember&memberip=

//192.168.0.111&memberid=RINCON_000E5825411201400

//http://192.168.0.5:82/user/sonoscmd.php?sonosip=192.168.0.115

//&sonosid=RINCON_000E5832FB5C01400&cmd=AddMember&memberip=

//192.168.0.111&memberid=RINCON_000E5825411201400


require ("../../scripts/functions.inc.php"); // use PHPSonos.inc.php here




        if ($cmd == "RemoveMember") {
         echo "$sonosip $sonosid $cmd $memberip $memberid";
          // Talk to Coord
          $sonos = new PHPSonos($sonosip); //Sonos ZP IPAdresse
          $RemoveMember = $sonos->RemoveMember($memberid);
          // Talk to slave
          $sonos = new PHPSonos($memberip); //Slave Sonos ZP IPAddress
          // needed for stop of playback on Slave
          $sonos->SetAVTransportURI("");
          //Playing stops
          	br_sonos_read_all();
	}
        if ($cmd == "AddMember") {
        // echo "$sonosip $sonosid $cmd $memberip $memberid";
          // Talk to Coord
          $sonos = new PHPSonos($sonosip); //Sonos ZP IPAdresse
          $AddMember = $sonos->AddMember($memberid);
          // Talk to slave
          $sonos = new PHPSonos($memberip); //Slave Sonos ZP IPAddress
          // needed to start playback on Slave
          $ret = $sonos->SetAVTransportURI("x-rincon:" . $sonosid);
          //Playing starts
          	br_sonos_read_all();
	}

?>

Das ist nicht optimal, aber einfach und es funktioniert.