2017-12-10 2 views
0

Mit meinem Raspberry PI 3 versuche ich ein Dual-Relais über das Internet zu steuern, die Python-Codes sind in Ordnung, ich habe sie getestet und sie funktionieren gut. Das Problem ist der PHP-Code, ich habe keine Ahnung, wie man die Website macht. Ich möchte nur zwei Tasten zeigen, eines mit Relais EIN und eines mit Relais AUS, fand ich ein auf dem Internet, das ist der Code:PHP mit 2 Tasten, die Relais steuern

<html> 
<head> 
<meta charset="UTF-8" /> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
</head> 


<?php 
if (isset($_POST['LightON'])) 
{ 
exec("sudo python /home/pi/relay1on.py"); 
} 
if (isset($_POST['LightOFF'])) 
{ 
exec("sudo python /home/pi/relay1off.py"); 
} 
?> 

<form method="post"> 
<button class="btn" name="LightON">Light ON</button>&nbsp; 
<button class="btn" name="LightOFF">Light OFF</button><br><br> 
</form> 


</html> 

ich einen nano mit dem Code aus (ursprünglich war es zum Schalten ein Licht an und aus, mit Relais natürlich, nur ein wenig bearbeitet, so dass es die Python ausführen wird, die ich brauche, wenn die Taste gedrückt wird) und setzen Sie es in/var/www/html/

Ich bekomme, was ich sollte bekommen, aber die Tasten werden nicht funktionieren. Ich kann sie berühren, aber die Seite nur aktualisiert und das Relais tut nichts. Wenn jemand könnte mir helfen, ich würde apreciate.Thanks im Voraus

+0

anstelle von Schaltflächen sollten Sie 'input type = 'radio'' mit der Schaltfläche submit verwenden, um einen Wert zu erhalten. – urfusion

+0

Danke für die Antwort, ich werde versuchen, dann wieder mit Feedback kommen, danke nochmal. –

Antwort

0

Dies ist ein PHP-Skript ist: light.php

<?php 
    if(isset($_POST['light']) && $_POST['light'] == "on") 
    { 
    exec("sudo python /home/pi/relay1on.py"); 
    echo "Light on!"; 
    } 
    if(isset($_POST['light']) && $_POST['light'] == "off") 
    { 
    exec("sudo python /home/pi/relay1off.py"); 
    echo "Light off!"; 
    } 
?> 

Dies ist die Seite index.html ist:

<html> 
    <head> 
    <meta charset="UTF-8" /> 
    </head> 
    <body> 
    <button id="btnLightON" class="btn">Light ON</button> 
    <button id="btnLightOFF" class="btn">Light OFF</button> 

    <script> 
     var buttonLightON = document.getElementById("btnLightON"); 
     var buttonLightOFF = document.getElementById("btnLightOFF"); 

     buttonLightON.onclick = function() 
     { 
     Light(true); 
     } 
     buttonLightOFF.onclick = function() 
     { 
     Light(false); 
     } 


     function Light(b) 
     { 
     var http = new XMLHttpRequest(); 
     var url = "light.php"; 
     var params = ""; 
     if(b == true) 
     { 
      params = "light=on" 
     } 
     else if(b == false) 
     { 
      params = "light=off" 
     } 
     http.open("POST", url, true); 

     http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

     http.onreadystatechange = function() 
     { 
      if(http.readyState == 4 && http.status == 200) { 
       console.log(http.responseText); 
      } 
     } 
     http.send(params); 
     } 
    </script> 
    </body> 

</html> 

ich gemacht es mit XMLHttpRequests, so würde es den PHP-Code ausführen, ohne die Seite neu zu laden. Im Falle der Light ON-Taste sendet es eine POST-Anfrage an die light.php mit dem Parameter light = on, und im Fall der anderen Taste, die gleiche Sache außer dem Parameter light = off. Der PHP-Code wird das richtige Python-Skript für jeden Fall ausführen und eine Nachricht schreiben, die Sie in der Konsole sehen können.