Mit Boolean Variable schalten

Hallo liebe IPSler,

ich möchte mir eine Seite erstellen in der ich eine Boolean Variable schalten möchte. Dies „Anwesenheits“ Variable triggert ein Script.


<!--
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

<style type="text/css">@import "default.css";</style>
<style type="text/css">
html, body { margin: 0; padding: 0; }
</style>

</head><body>



<?php
    if(isset($_GET['action']) && $_GET['action'] == "toggleFS20" && isset($_GET['id']))
    {
        FS20_SwitchMode((int)$_GET['id'], !GetValue(IPS_GetStatusVariableID((int)$_GET['id'], "StatusVariable")));
    }
?>
<html><body>

<a href="?action=toggleFS20&id=39217">Anwesenheit <?php echo (!GetValue(IPS_GetStatusVariableID(39217, "StatusVariable"))) ? "anwesend" : "abwesend"; ?>!</a>

</body></html> 

Leider funktioniert es natürlich nicht, da ich in PHP nicht der Profi bin und mir die Sachen meistens nur zusammen kopiere und versuche anzupassen.

Die Seite hänge ich als Anlage an.

Wäre super wenn mir einen den oder die Fehler sagen könnte.

Grüße Mirco

Das HTML-Markup war erstmal falsch.

Habe das mal korrigiert.


<!--
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

<style type="text/css">@import "default.css";</style>
<style type="text/css">
html, body { margin: 0; padding: 0; }
</style>

</head>
<body>
<?php
    if(isset($_GET['action']) && $_GET['action'] == "toggleFS20" && isset($_GET['id']))
    {
        FS20_SwitchMode((int)$_GET['id'], !GetValue(IPS_GetStatusVariableID((int)$_GET['id'], "StatusVariable")));
    }
?>
</body>
</html>

Hallo sysrun,

danke für korrigieren. Darunter kommt doch dann

?> 
<html><body> 

<a href="?action=toggleFS20&id=39217">Anwesenheit <?php echo (!GetValue(IPS_GetStatusVariableID(39217, "StatusVariable"))) ? "anwesend" : "abwesend"; ?>!</a> 

</body></html> 

oder?

So habe ich es gerade versucht. Ohne Erfolg. Liegt es an der Custom.php?

<script type="text/javascript">
	var WebFrontConfigVersion = 2.1;

	dojo.registerModulePath("webfront", "../../webfront");
	dojo.require("webfront.Main");
	dojo.require("webfront.applications.basic.Basic");
	dojo.require("webfront.widgets.clock.BasicView");
	dojo.require("webfront.modules.ips.BasicView");
	dojo.require("webfront.modules.dwd.BasicView");
	dojo.require("webfront.modules.iview.Presenter");
	dojo.require("webfront.modules.iview.BasicView");
	

	new webfront.Main("webfront");
	webfront.controller.setApplication(new webfront.applications.basic.Basic("basic", "WebFront"));

	var ipsCommunicationHandler = new webfront.modules.ips.CommunicationHandler("data/data.php");

	var clockWidgetPresenter = new webfront.widgets.clock.Presenter();
	clockWidgetPresenter.registerView(new webfront.widgets.clock.BasicView());
	webfront.controller.getApplication().addBarTopWidget(clockWidgetPresenter.getView());

	var ipsPresenter = new webfront.modules.ips.Presenter(ipsCommunicationHandler);
	ipsPresenter.registerView(new webfront.modules.ips.BasicView("ips", "IP-Symcon", "IPS"));
	webfront.controller.getApplication().addPage(ipsPresenter.getView());

	var dwdPresenter = new webfront.modules.dwd.Presenter("data/dwd.php");
	dwdPresenter.registerView(new webfront.modules.dwd.BasicView("dwd", "Wetter", "Cloud"));
	webfront.controller.getApplication().addPage(dwdPresenter.getView());

	var videoueberwachungPresenter = new webfront.modules.iview.Presenter("user/videoueberwachung.php", 30000);
	videoueberwachungPresenter.registerView(new webfront.modules.iview.BasicView("videoueberwachung", "Video-Ueberwachung", "Camera"));
	webfront.controller.getApplication().addPage(videoueberwachungPresenter.getView());

	var sicherheitPresenter = new webfront.modules.iview.Presenter("user/sicherheit.php", 30000);
	sicherheitPresenter.registerView(new webfront.modules.iview.BasicView("sicherheit", "Sicherheit", "IPS"));
	webfront.controller.getApplication().addPage(sicherheitPresenter.getView());

</script>

Mit dem Original Webfront kenn ich mich leider nicht aus :frowning:

<script type="text/javascript"> 
    var WebFrontConfigVersion = 2.1; 
 
    dojo.registerModulePath("webfront", "../../webfront"); 
    dojo.require("webfront.Main"); 
    dojo.require("webfront.applications.basic.Basic"); 
    dojo.require("webfront.widgets.clock.BasicView"); 
    dojo.require("webfront.modules.ips.BasicView"); 
    dojo.require("webfront.modules.dwd.BasicView"); 
    dojo.require("webfront.modules.iview.BasicView"); 
     
 
    new webfront.Main("webfront"); 
    webfront.controller.setApplication(new webfront.applications.basic.Basic("basic", "WebFront")); 
 
    var ipsCommunicationHandler = new webfront.modules.ips.CommunicationHandler("data/data.php"); 
 
    var clockWidgetPresenter = new webfront.widgets.clock.Presenter(); 
    clockWidgetPresenter.registerView(new webfront.widgets.clock.BasicView()); 
    webfront.controller.getApplication().addBarTopWidget(clockWidgetPresenter.getView()); 
 
    var ipsPresenter = new webfront.modules.ips.Presenter(ipsCommunicationHandler); 
    ipsPresenter.registerView(new webfront.modules.ips.BasicView("ips", "IP-Symcon", "IPS")); 
    webfront.controller.getApplication().addPage(ipsPresenter.getView()); 
 
    var dwdPresenter = new webfront.modules.dwd.Presenter("data/dwd.php"); 
    dwdPresenter.registerView(new webfront.modules.dwd.BasicView("dwd", "Wetter", "Cloud")); 
    webfront.controller.getApplication().addPage(dwdPresenter.getView()); 
 
    var videoueberwachungPresenter = new webfront.modules.iview.Presenter("user/videoueberwachung.php", 30000); 
    videoueberwachungPresenter.registerView(new webfront.modules.iview.BasicView("videoueberwachung", "Video-Ueberwachung", "Camera")); 
    webfront.controller.getApplication().addPage(videoueberwachungPresenter.getView()); 
 
    var sicherheitPresenter = new webfront.modules.iview.Presenter("user/sicherheit.php", 30000); 
    sicherheitPresenter.registerView(new webfront.modules.iview.BasicView("sicherheit", "Sicherheit", "IPS")); 
    webfront.controller.getApplication().addPage(sicherheitPresenter.getView()); 
 
</script>  

Läuft leider auch nicht.

Danke trotzdem

Grüße Mirco

Wenn ich mir da Deinen Screenshot ansehe würde ich noch am ehesten sagen, dass Du Dich beim Dateinamen vertippt hast. Die Konfiguration liefert ja schließlich ein iframe mit nicht gefundener Seite (Code 404).

Hallo Mirco,

zum anzeigen ist auf der Seite auch nichts vorhanden. Du hast ja nur einen Aufruf definiert.

<div class="standardContainer">standardContainer</div>
<a href="?action=toggleFS20&id=39217">Anwesenheit <?php echo (!GetValue(IPS_GetStatusVariableID(39217, "StatusVariable"))) ? "anwesend" : "abwesend"; ?>!>Link</a><br /><br />
Text<br /><br />

Morgen Rainer,

verrätst du mir auch wie es aussehen müsste damit ich was sehe? :smiley:

Grüße Mirco

Hallo Mirco,

eigentlich mit dem Code von meinem letzen Beitrag.

Deine Seite heisst aber auch sicherheit.php?

Hallo Rainer. Ja die Seite heißt sicherheit.php. Nur um sicher zu gehen, da es leider immer noch nicht geht, das ganze sollte so

<!-- 
<!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
--> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> 
<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 

<style type="text/css">@import "default.css";</style> 
<style type="text/css"> 
html, body { margin: 0; padding: 0; } 
</style> 

</head> 
<body> 
<?php 
    if(isset($_GET['action']) && $_GET['action'] == "toggleFS20" && isset($_GET['id'])) 
    { 
        FS20_SwitchMode((int)$_GET['id'], !GetValue(IPS_GetStatusVariableID((int)$_GET['id'], "StatusVariable"))); 
    } 
?> 
</body> 
</html> 

<div class="standardContainer">standardContainer</div>
<a href="?action=toggleFS20&id=39217">Anwesenheit <?php echo (!GetValue(IPS_GetStatusVariableID(39217, "StatusVariable"))) ? "anwesend" : "abwesend"; ?>!>Link</a><br /><br />
Text<br /><br /> 
</body></html>

zu guter letzt aussehen oder ?

verregnete Grüße
Mirco

Hallo Mirco,

setzte mal dieses ein und schau mal ob Du dann was siehst.

Ansonsten hast Du oben body und html doppelt drinnen.
?>
</body>
</html>

<!--
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

<style type="text/css">@import "default.css";</style>

</head><body>

<div class="standardContainer">standardContainer</div>
<a href="about:blank">Link</a><br /><br />
Text<br /><br />

</body></html>

Mal als Zwischenstand: Kommt bei Dir noch das „Seite nicht gefunden“ ?

Leider ja. :frowning:

Mirco

Dann brauchst Du Dich um die sicherheit.php noch gar nicht zu kümmern. Solange die nicht gefunden wird ist der Inhalt darin auch egal. Datei ist auch wirklich unter \IP-Symcon\webfront\user\sicherheit.php zu finden? Ist die Seite unter http://SERVER:82/user/sicherheit.php zu erreichen?

Hallo Horst.

Das war der Fehler. Nachdem ich das Script in den Ordner „User“ geschoben habe bekomme ich das Bild im Anhang. Zwar noch nicht so wie ich es gerne hätte aber schon mal ein Schritt in die richtige Richtung. Wenn wir es jetzt noch so wie auf der IPS Seite mit dem Button auf der rechten Seite hinbekommen ist es perfekt.

Mirco

Hallo Mirco,

wie meinst Du. Sag wie und was Du willst und ich mach es dir zusammen.

Etwas so.

Hallo Rainer,

ja genau so.

Grüße Mirco

Hallo Mirco,

bitte schön. :slight_smile:

Hier musst Du die Status ID deiner Steckdose im Script eintragen.

<?php if(GetValue(21167)==0)

Die CSS Datei bitte nach webfront/user kopieren.
Wenn Du alles richtig gemacht hast, schaltet die Steckdose bei rot Abwesend und grün Anwesend(Steckdose aus).

<!--
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-->

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

<style type="text/css">@import "webintern.css";</style>
<style type="text/css">
html, body { margin: 0; padding: 0; }
</style>

</head><body>

<?php 
    if(isset($_GET['action']) && $_GET['action'] == "toggleFS20" && isset($_GET['id'])) 
    { 
        FS20_SwitchMode((int)$_GET['id'], !GetValue(IPS_GetStatusVariableID((int)$_GET['id'], "StatusVariable"))); 
    } 
?>  
<div class="variablesContainer" style="height: auto;">
            <div class="variableContainer" style="background: transparent url(img/icons/png/Power.png) no-repeat scroll 10px 4px;">
         <div class="deviceTitle">
           <div class="deviceTitleContent">Anwesenheit</div>
        </div>
            <div class="deviceState"><a href="?action=toggleFS20&id=39217"><?php if(GetValue(21167)==0)echo "<div class='SwitchBasic SwitchBasicOn'> <div class='deviceStateContent'>Anwesend</div>"; else echo "<div class='SwitchBasic SwitchBasicOff'> <div class='deviceStateContent'>Abwesend</div>";?></a></div></div></div>
     </div>
</div>
      
</body></html>     

Hallo Rainer,

vielen Dank. Sieht super aus. Kann ich jetzt im Script „sicherheit“ mit Hilfe von

?>  
<div class="variablesContainer" style="height: auto;">
            <div class="variableContainer" style="background: transparent url(img/icons/png/Power.png) no-repeat scroll 10px 4px;">
         <div class="deviceTitle">
           <div class="deviceTitleContent">Anwesenheit</div>
        </div>
            <div class="deviceState"><a href="?action=toggleFS20&id=39217"><?php if(GetValue(21167)==0)echo "<div class='SwitchBasic SwitchBasicOn'> <div class='deviceStateContent'>Anwesend</div>"; else echo "<div class='SwitchBasic SwitchBasicOff'> <div class='deviceStateContent'>Abwesend</div>";?></a></div>
     </div>
</div>

das ganze für belibig viele Geräte erweitern. Natürlich nur soviel das Display hergibt ohne das meine Frau gleich schreit.

Mirco