Eigenes WebInterface für Studio unter PHP

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

caveman_1966
Beiträge: 10
Registriert: 09.05.2008, 15:31

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von caveman_1966 » 17.08.2008, 13:38

hallo zusammen,

hab alle notwendige software, webserver funktioniert einwandfrei, studiosoftware drauf, php und alles nötige auch.
meine frage war nur, es läauft alles auf einer maschine, wie krieg ich das ganze zusammen um mit php zu arbeiten, das will irgendwie nicht in meinen schädel.

gruß caveman

einfach die grobe richtung, vermutlich recht einfach für euch.

danke

leknilk0815
Beiträge: 6693
Registriert: 19.03.2007, 08:21

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von leknilk0815 » 17.08.2008, 13:43

caveman_1966 hat geschrieben:meine frage war nur, es läauft alles auf einer maschine, wie krieg ich das ganze zusammen um mit php zu arbeiten, das will irgendwie nicht in meinen schädel.
Ich verstehe Deine Frage nicht, was willst Du denn eigentlich?
Daß alles auf einer Maschine läuft, ist so OK, mit PHP kann man eben von aussen (Internet) per Web auf die Kiste zugreifen und z.B. irgendwelche Inhalte reinschreiben (Beispiel Gästebuch oder so...)
Gruß - Toni

KS300 + Sonnendauer + Windrichtung, KS888, HM-CC-TC/HM-CC-VD, FHT80b, und etwas FS20-xx, Keymatic, EM1000, CCU2 und FHZ2000 sowie HP Studio, HPCL + Upgrade für FHZ

caveman_1966
Beiträge: 10
Registriert: 09.05.2008, 15:31

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von caveman_1966 » 17.08.2008, 14:21

hallo,

meine frage ist einfach, ich will eine eigene page für die fhz.
die page ist auch nicht das problem, wie oder welche funktionen brauche ich, damit meine php´s mit der studiosoftware "reden".
das ist das einzige wo ich einfach was nicht begreife.
welche software muß laufen damit das ganze hand in hand läuft.
hab die erklärung eingangs zig mal gelesen, irgend etwas übersehen ich vermutlich.

danke

tsa
Beiträge: 724
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von tsa » 21.08.2008, 14:45

Hallo caveman,

ich verstehe Dein Begehren, nicht aber Deine Frage. Shen hat alle Deine Fragen im Start-Artikel dieses Thread's ausführlich dargestellt, inclusive aller notwendigen Voraussetzungen, sogar eine kleine Bibliothek zum direkten Zugriff auf Studio-Objekte hat er veröffentlicht:
Shen hat geschrieben:- GetStudio() fragt den Zustand eines Objektes ab
- GetStudioArray() fragt den Zustand mehrerer Objekte mit nur einem Aufruf von ExecStudio ab
- SetStudio() setzt den Zustand eines Objektes
- RunStudio() führt ein Makro aus
Du brauchst den Beitrag nur aufmerksam zu lesen. Sollten dann KONKRETE Fragen anfallen, können wir auch konkret helfen.

Das bei Dir der WEB-Server auf der gleichen Maschine läuft, wie Homeputer-Studio, tut der Sache keinen Abbruch, shen's Lösung funktioniert auch für diesen Spezialfall.

Wenn Du diese Lösung aber nicht verwenden WILLST, dann bleibt Dir nur über PHP-Befehle direkt das externe Programm ExecStudioCo mit den notwendigen Kommandozeilenparametern aufzurufen. Das geht aber nur, wenn (wie bei Dir) der WEB-Server auf der gleichen Maschine läuft, wie Homeputer-Studio.
:?: :| :?:

Gruss
Thomas
Zuletzt geändert von tsa am 21.03.2009, 06:33, insgesamt 1-mal geändert.

Teas1512
Beiträge: 9
Registriert: 14.01.2008, 18:59
Wohnort: NRW
Kontaktdaten:

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von Teas1512 » 18.11.2008, 21:24

Hallo FHZ-Gemeinde

ich habe ein kleines Problem mit dem selbstgebauten WebInterface.
So weit funktioniert das WebInterface sehr gut nur ab und zu habe ich die Fehlermeldung im Browser
"Warning: fsockopen() [function.fsockopen]: unable to connect to 192.168.0.92:54711 (Ein Socketvorgang konnte nicht ausgeführt werden, da dem System Pufferspeicher fehlte oder eine Warteschlange voll war. ) in C:\Programme\xampp\htdocs\admin\FS20\studio.inc.php4 on line 65
Fehler beim Einlesen"

Ich bekomme den Fehler nur weg in dem ich die Studiosoftware neustarte.

Kennt zufällig einer das Problem oder eine Idee was das sein könnte ?
Ich habe auch mal das HTML-Script beigefügt und ein Screenshot von der Webseite wie der Bau von der Webseite bis jetzt aussieht.

Code: Alles auswählen


<head>
<base target="_self">
</head>
<html><body>

<body style="background-image:url(Erdgeschoss.jpg); background-attachment:scroll; background-repeat:no-repeat; margin:30px; solid #CCCCFF; font-size:100%;">

<meta http-equiv="refresh" content="120"> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

</body></html>

<?php
  include("studio.inc.php4");
// ----------------------------------------------------------------------------
// Statustabelle
// ----------------------------------------------------------------------------

$data = GetStudioArray("Uhr,
                          Aussenlampe,
                          Daemmerungssensor1,
                          Daemmerungssensor2,
                          Lampe_Flur,
                          Lampe_Durchgang,
                          Lampe_Esszimmer,
                          Rollade_Kueche,
                          Rollade_Wohnzimmer_Links,
                          Rollade_Wohnzimmer_Rechts,
                          Tuerkontakt_Eingang2,
                          HTPC") or die("<br><b>Fehler beim Einlesen");
                            
   echo "<table border='2' width='370' Style='position: absolute; left: 10; top:575; Font-size: 14px'> \n";
   foreach($data as $objekt => $wert) {
     echo "<tr><td>$objekt</td><td>$wert</td></tr> \n"; 
   }
   echo "</table><br> \n";

// ----------------------------------------------------------------------------
// Aussenlicht Ein und ausschalten
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Aussenlampe") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=aussenlicht.php><img border=0 src=lampe_ein_90.jpg width='30' height='26' align='right' style='position: absolute; left: 746; top: 145'alt=Aussenlicht_ein></a> \n";
     } else {
      echo "<a href=aussenlicht.php><img border=0 src=lampe_aus_90.jpg width='30' height='26' align='right' style='position: absolute; left: 746; top: 145'alt=Aussenlicht_aus></a> \n";
     };


// ----------------------------------------------------------------------------
// Dämmerungssensor 1
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Daemmerungssensor1") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<img border=0 src=mond.jpg width='30' height='30' align='right' style='position: absolute; left: 35; top: 70'alt=Dämmerungssensor_1> \n";
     } else {
      echo "<img border=0 src=sonne.jpg width='30' height='30' align='right' style='position: absolute; left: 35; top: 70'alt=Dämmerungssensor_1> \n";
     }



// ----------------------------------------------------------------------------
// Dämmerungssensor 2
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Daemmerungssensor2") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<img border=0 src=mond.jpg width='30' height='30' align='right' style='position: absolute; left: 35; top: 100'alt=Dämmerungssensor_2> \n";
     } else {
      echo "<img border=0 src=sonne.jpg width='30' height='30' align='right' style='position: absolute; left: 35; top: 100'alt=Dämmerungssensor_2> \n";
     }

// ----------------------------------------------------------------------------
// Haustür
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Tuerkontakt_Eingang2") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==offen){
      echo "<img border=0 src=Tuer_auf.jpg width='45' height='45' align='right' style='position: absolute; left: 720; top: 90'alt=Haustür_offen> \n";
     } else {
      echo "<img border=0 src=Tuer_zu.jpg width='45' height='45' align='right' style='position: absolute; left: 720; top: 90'alt=Haustür_geschlossen> \n";
     }

// ----------------------------------------------------------------------------
// Highboard Wohnzimmer (Schaltersteckdose2)
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Schaltsteckdose2") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<img border=0 src=birne_ein.jpg width='12' height='18' align='right' style='position: absolute; left: 374; top: 41'alt=Schaltersteckdose_2> \n";
     } else {
      echo "<img border=0 src=birne_aus.jpg width='12' height='18' align='right' style='position: absolute; left: 374; top: 41'alt=Schaltersteckdose_2> \n";
     }

// ----------------------------------------------------------------------------
// Stehlampe Wohnzimmer (Schaltersteckdose3)
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Schaltsteckdose3") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<img border=0 src=stehlampe_ein.jpg width='15' height='25' align='right' style='position: absolute; left: 254; top: 305'alt=Stehlampe_Wohnzimmer> \n";
     } else {
      echo "<img border=0 src=stehlampe_aus.jpg width='15' height='25' align='right' style='position: absolute; left: 254; top: 305'alt=Stehlampe_Wohnzimmer> \n";
     }

// ----------------------------------------------------------------------------
// Rollade Wohnzimmer links
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Rollade_Wohnzimmer_links") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==oben){
      echo "<img border=0 src=rollade_oben.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 235'alt=Rollade_Wohnzimmer_Rechts> \n";
      }

     if($wert==unten){
      echo "<img border=0 src=rollade_unten.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 235'alt=Rollade_Wohnzimmer_Rechts> \n";
      }

     if($wert==halb){
      echo "<img border=0 src=rollade_halb.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 235'alt=Rollade_Wohnzimmer_Rechts> \n";
      }


// ----------------------------------------------------------------------------
// Rollade Wohnzimmer rechts
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Rollade_Wohnzimmer_rechts") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==oben){
      echo "<img border=0 src=rollade_oben.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 120'alt=Rollade_Wohnzimmer_Links> \n";
      }

     if($wert==unten){
      echo "<img border=0 src=rollade_unten.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 120'alt=Rollade_Wohnzimmer_Links> \n";
      }

     if($wert==halb){
      echo "<img border=0 src=rollade_halb.jpg width='40' height='40' align='right' style='position: absolute; left: 225; top: 120'alt=Rollade_Wohnzimmer_Links> \n";
      }


// ----------------------------------------------------------------------------
// Rollade Kueche
// ----------------------------------------------------------------------------


   $data = GetStudioArray("Rollade_kueche") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==oben){
      echo "<img border=0 src=rollade_oben.jpg width='40' height='40' align='right' style='position: absolute; left: 720; top: 252'alt=Rollade_Wohnzimmer_Links> \n";
      }

     if($wert==unten){
      echo "<img border=0 src=rollade_unten.jpg width='40' height='40' align='right' style='position: absolute; left: 720; top: 252'alt=Rollade_Küche> \n";
      }

     if($wert==halb){
      echo "<img border=0 src=rollade_halb.jpg width='40' height='40' align='right' style='position: absolute; left: 720; top: 252'alt=Rollade_Wohnzimmer_Links> \n";
      }

// ----------------------------------------------------------------------------
// Licht Wohnzimmerlicht Ein und ausschalten
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Wohnzimmer1") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=Wohnzimmerlicht.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 396; top: 157'alt=Schalter_Wohnzimmerlicht></a> \n";
     } else {
      echo "<a href=Wohnzimmerlicht.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 396; top: 157'alt=Schalter_Wohnzimmerlicht></a> \n";
     };

// ----------------------------------------------------------------------------
// Licht im Esszimmer Ein und ausschalten (Schalter_Wohnzimmer2)
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Wohnzimmer2") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=esszimmerlicht.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 396; top: 139'alt=Schalter_Esszimmerlicht></a>";
     } else {
      echo "<a href=esszimmerlicht.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 396; top: 139'alt=Schalter_Essziimmerlicht></a>";
     };

// ----------------------------------------------------------------------------
// Licht im Flur Ein und ausschalten (Schalter_Eingang2)
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Eingang2") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=Flurlicht.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 722; top: 138'alt=Schalter_Flurlicht></a>";
     } else {
      echo "<a href=Flurlicht.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 722; top: 138'alt=Schalter_Flurlicht></a>";
     };

// ----------------------------------------------------------------------------
// Licht im Esszimmer Ein und ausschalten (Schalter_Flur_Esszimmer1)
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Flur_Esszimmer1") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=esszimmerlicht.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 566; top: 126'alt=Schalter_Esszimmerlicht></a>";
     } else {
      echo "<a href=esszimmerlicht.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 566; top: 126'alt=Schalter_Essziimmerlicht></a>";
     };

// ----------------------------------------------------------------------------
// Licht im Duchgang Ein und ausschalten (Schalter_Flur_Esszimmer2)
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Flur_Esszimmer2") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=duchgang.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 581; top: 126'alt=Schalter_Licht_Durchgang></a>";
     } else {
      echo "<a href=duchgang.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 581; top: 126'alt=Schalter_Licht_Durchgang></a>";
     };


// ----------------------------------------------------------------------------
// Licht im Flur Ein und ausschalten (Schalter_Flur_Esszimmer3)
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Schalter_Flur_Esszimmer3") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<a href=Flurlicht.php><img border=0 src=schalter_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 596; top: 126'alt=Schalter_Flurlicht></a>";
     } else {
      echo "<a href=Flurlicht.php><img border=0 src=schalter_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 596; top: 126'alt=Schalter_Flurlicht></a>";
     };

// ----------------------------------------------------------------------------
// Lampe im Flur
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Lampe_Flur") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert)     

     if($wert==0){
      echo "<img border=0 src=birne_aus.jpg width='20' height='20' align='right' style='position: absolute; left: 630; top: 52'alt=Flurlampe>";

     } else {
      echo "<img border=0 src=birne_ein.jpg width='20' height='20' align='right' style='position: absolute; left: 630; top: 52'alt=Flurlampe>";
     
     };

      // Wert anzeigen
      if($wert==0){
      } else {
      echo "<table border='0' Style='position: absolute; left: 632; top:67; Font-size: 10px'></td><td>$wert</td></tr>";
      }

// ----------------------------------------------------------------------------
// Lampe im Esszimmer
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Lampe_Esszimmer") or die("<br><b>Fehler beim Einlesen");
                       
     foreach($data as $objekt => $wert)     

     if($wert==0){
      echo "<img border=0 src=birne_aus.jpg width='20' height='20' align='right' style='position: absolute; left: 481; top: 231'alt=Esszimmerlampe>";

     } else {
      echo "<img border=0 src=birne_ein.jpg width='20' height='20' align='right' style='position: absolute; left: 481; top: 231'alt=Esszimmerlampe>";
     
     };

      // Wert anzeigen
      if($wert==0){
      } else {
      echo "<table border='0' Style='position: absolute; left: 483; top:246; Font-size: 10px'></td><td>$wert</td></tr>";
      }

// ----------------------------------------------------------------------------
// Lampe im Duchgang
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Lampe_Durchgang") or die("<br><b>Fehler beim Einlesen");
                       
     foreach($data as $objekt => $wert)     

     if($wert==0){
      echo "<img border=0 src=birne_aus.jpg width='15' height='15' align='right' style='position: absolute; left: 560; top: 95'alt=Licht_Duchgang>";

     } else {
      echo "<img border=0 src=birne_ein.jpg width='15' height='15' align='right' style='position: absolute; left: 560; top: 95'alt=Licht_Duchgang>";
     
     };

      // Wert anzeigen
      if($wert==0){
      } else {
      echo "<table border='0' Style='position: absolute; left: 560; top:107; Font-size: 8px'></td><td>$wert</td></tr>";
      }

// ----------------------------------------------------------------------------
// Anwesenheitssimulation
// ----------------------------------------------------------------------------

   $data = GetStudioArray("Anwesenheitssimulation") or die("<br><b>Fehler beim Einlesen");
       
                          
     foreach($data as $objekt => $wert) 
     
     echo "<table border='0' Style='position: absolute; left: 420; top:360; Font-size: 14px'> \n";
     echo "<tr><td>";
            if($wert==an){
             echo "<a href=Anwesenheitssimulation.php><img border=0 src=button_ok.jpg width='15' height='15' alt=Anwesenheitssimulation_ein></a>";
             } else {
             echo "<a href=Anwesenheitssimulation.php><img border=0 src=button_cancel.jpg width='15' height='15' alt=Anwesenheitssimulation_aus></a>";
             };
     
      echo "<td><td>Anwesenheitssimulation<tr><td></table>\n";

// ----------------------------------------------------------------------------
// Termin
// ----------------------------------------------------------------------------

  $data = GetStudioArray("termine") or die("<br><b>Fehler beim Einlesen");
                                 
     foreach($data as $objekt => $wert) 
     $wert = ereg_replace("<<","<br>",$wert);
     $wert = ereg_replace("Verpasste Termine:","<B>Verpasste Termine:</B>",$wert);
     $wert = ereg_replace("Heutige Termine:","<B>Heutige Termine:</B>",$wert);
     $wert = ereg_replace("Künftige Termine:","<B>Künftige Termine:</B>",$wert);
     
     echo "<table border='2' width='370' Style='position: absolute; left: 420; top:400; Font-size: 14px'> \n";
     echo "<tr><td><B><center>Termine</b></center><tr><td>$wert\n </table>";

// ----------------------------------------------------------------------------
// Letzte 10 Aktivitäten
// ----------------------------------------------------------------------------

  $data = GetStudioArray("loganzeige") or die("<br><b>Fehler beim Einlesen");
                                 
     foreach($data as $objekt => $wert) 
     $wert = ereg_replace("<<","<br>",$wert);
     
     echo "<table border='2' width='370' Style='position: absolute; left: 10; top:360; Font-size: 14px'> \n";
     echo "<tr><td><B><center>Die Letzten 10 Aktivitäten </b></center><tr><td>$wert\n </table>";

// ----------------------------------------------------------------------------
// Status HTPC
// ----------------------------------------------------------------------------


   $data = GetStudioArray("HTPC") or die("<br><b>Fehler beim Einlesen");
                            
     foreach($data as $objekt => $wert) 
 
     if($wert==an){
      echo "<img border=0 src=computer_ein.jpg width='20' height='20' align='right' style='position: absolute; left: 276; top: 311'alt=HTPC_eingeschaltet> \n";
     } else {
      echo "<img border=0 src=computer_aus.jpg width='20' height='20' align='right' style='position: absolute; left: 276; top: 311'alt=HTPC_ausgeschaltet> \n";
     }

?>
MFG
Teas1512
Dateianhänge
Webansicht.jpg

Teas1512
Beiträge: 9
Registriert: 14.01.2008, 18:59
Wohnort: NRW
Kontaktdaten:

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von Teas1512 » 24.03.2009, 18:59

Hallo FHZ-Gemeinde

ich habe den zuvor beschriebenen Fehler gefunden. Es lag an dem Netzwerkmonitor. Ich hatte den Ausführungsintervall auf 1 Minute gestellt.
Mir ist aufgefallen das der Fehler meistens nur dann auftauchte wenn ein Teilnehmer im Netzwerk länger Zeit nicht erreichbar war. Dann habe ich den Ausführungsintervall auf 5 Minuten geändert und er Fehler ist nie wieder aufgetreten.

Gruss
Stephan

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von mfreye » 27.05.2010, 19:08

Hallo,

hätte da mal eine Frage, kann man und wenn ja, das ganze auch per vb(a) machen?

Danke für Eure Hilfe.

MfG
Maik

mhill
Beiträge: 2
Registriert: 09.09.2010, 10:41
Wohnort: Malsch

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von mhill » 08.10.2012, 22:04

Hallo,

nach dem ich mein HomeputerStudio jetzt ca. 1,5 Jahre am laufen hatte und immer wieder erweitert hatte habe ich mich jetzt mal wieder mit dem Aktivieren der Heizung an die nächste Ausbaustufe gemacht. Und das Webinterface eingerichtet. Meine Lösung sieht ähnlich aus wie Teas1512.

Ausschnitt aus der Webseite:

Code: Alles auswählen

<?php
	include("studio.inc.php");
	
	$link = $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];

	$wert = GetStudio("ST_Sideboard") or die("<br><b>Fehler beim Einlesen");

	if($wert=="an")
	{
		echo "<a href=schalten.php?o=ST_Sideboard&s=aus&r=".$link."><img border=0 src='png/LAMPST3E.png' align='right' style='position: absolute; left: 830; top: 470'alt=ST_Sideboard></a> \n";
	} else 
	{
		echo "<a href=schalten.php?o=ST_Sideboard&s=an&r=".$link."><img border=0 src='png/LAMPST3A.png' align='right' style='position: absolute; left: 830; top: 470'alt=ST_Sideboard></a> \n";
	}
?>
Beim anklicken der "Lampe" wird schalten.php aufgerufen und der Objektname, der zu schaltende Zustand und der Link zurück zur aufrufenden Seite übergeben.

die Datei "schalten.php"

Code: Alles auswählen

<?php
	include("studio.inc.php");
     
	$status = $_GET["s"];
	$objekt = $_GET["o"];
	$link   = $_GET["r"];

	SetStudio($objekt,$status);

	header("Location: http://".$link); /* Redirect browser */

	/* Make sure that code below does not get executed when we redirect. */
	exit;
?>
Das klappt auch wirklich super, ich bin begeistert.

Jetzt hab ich aber ein Problem beim Schalten der Rollladen. :shock:

:roll: Oh nein ich hab das Problem gefunden.
Beim Schreiben hier ist es mir wie Schuppen von den Augen gefallen.
Wenn ich es dann im Reinen habe werde ich es Posten. :D

Gruß
Markus

DJDieter
Beiträge: 231
Registriert: 11.01.2008, 14:41
Hat sich bedankt: 10 Mal
Danksagung erhalten: 11 Mal

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von DJDieter » 11.02.2016, 20:16

Hallo Zusammen,

ich komme nicht weiter und brauche fachmännische Hilfe.

Folgenden php-Code habe ich zur Steuerung via Geofency erstellt und läuft auf einem Webserver.

Code: Alles auswählen

<?php
  
    // Incoming POST parameters provided by Geofency.
   // Extract parameters from http request (using “_POST”).
   // $date is a rfc3339 formatted date in the form: yyyy-MM-ddTHH:mm:ssZ
   $studio_server    = "192.168.178.24"; // IP oder Hostname des Servers
   $studio_port      = 54231;          // Port des Servers
   $studio_timeout   = 10;             // Timeout in Sekunden
   $studio_password  = "Geheim";       // Passwort für ServerExecStudio
   $date=$_POST["date"];
   $isEntry=($_POST["entry"] == "1");
   $locationName=$_POST["name"];
   $locationID=$_POST["id"];
   $longitude=$_POST["longitude"];
   $latitude=$_POST["latitude"];
   $macro = "WAC_Alarm_aus";
   $macro2 = "WAC_Alarm_ein";

    if ($isEntry)
        $out = date('Y-m-d H:i:s') . " entryDate: " . $date . ", entered at " . $locationName . "\n";
    else
        $out = date('Y-m-d H:i:s') . "  exitDate: " . $date . ", exited  at " . $locationName . "\n";

    echo $out;

    $filename = "geofency2.log";
    file_put_contents($filename, $out, FILE_APPEND | LOCK_EX);

// Ausführung des jeweiligen Makros
    if ($isEntry)
	{
      function RunStudio($macro) {
    global $studio_server, $studio_port, $studio_timeout, $studio_password;
    if ($socket = fsockopen($studio_server, $studio_port, $errno, $errstr, $studio_timeout)) {
      fputs($socket, trim("$studio_password r$macro") ."\r\n");
      $data = trim(fgets($socket));
      fclose($socket);
      if ((substr($data,  0, 5) != "Error") and (substr($data,  0, 13)  != "access denied"))  {
        return(true);
      } else {
        return(false);
      }
    } else {
      return(false);
    }
  } 
	}
    else
	{
      function RunStudio($macro2) {
    global $studio_server, $studio_port, $studio_timeout, $studio_password;
    if ($socket = fsockopen($studio_server, $studio_port, $errno, $errstr, $studio_timeout)) {
      fputs($socket, trim("$studio_password r$macro2") ."\r\n");
      $data = trim(fgets($socket));
      fclose($socket);
      if ((substr($data,  0, 5) != "Error") and (substr($data,  0, 13)  != "access denied"))  {
        return(true);
      } else {
        return(false);
      }
    } else {
      return(false);
    }
  } 
	}
?>
Die Auswertung des Webhook funktioniert. Nur gibt das Script den Befehl zum Ausführen des Makros nicht weiter. Wenn ich über die Konsole ClientExecStudio mit dem Makronamen ausführe, funktioniert es.

Folglich liegt wohl irgendwo ab "function RunStudio($macro)" der Fehler. Die Datei ClientExecStudio.exe liegt im gleichen Verzeichnis wie die php-Datei.

Ich bin Anfänger was php betrifft und mir ist unverständlich, wie das Script die ClientExecStudio.exe aufruft und die Parameter übergibt.

Jetzt hab ich mal testweise das Script von Shen 1:1 übernommen (natürlich mit den Daten meiner Studio): funktioniert auch nicht. Aus irgend einem Grund werden die Befehle RunStudio, etc. nicht ausgeführt. Wo liegt mein Fehler? Müssen die ClientExecStudio.exe und ClientExecStudio.ini in einem bestimmten Verzeichnis liegen?
CCU3 mit RaspberryMatic und 4 LAN-Gateways mit 959 Kanälen auf 187 Geräten
CUxD mit 180 Kanälen auf 43 Geräten
Zusatzsoftware: HVL, XML-API, CUxD-Highcharts, NEO-Server, CL-Studio, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

digitron
Beiträge: 1
Registriert: 05.01.2021, 13:23
System: in Planung

Re: Eigenes WebInterface für Studio unter PHP

Beitrag von digitron » 05.01.2021, 14:49

He - ist ja en halbes PHP Forum hier :)))

schon auf die neue Vers upedatet?

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“