Hallo zusammen
Ich bin gerade eine Garagensteuerung mit Webinterface am balsteln das ganze läuft über einen Raspberry Pi mit einem Relais.
Jedoch habe ich das Problem das ich im Webinterface nur einen Button habe der das Relais dann immer hält solange er betätigt ist sprich: Ich klicke den Button Relais schaltet und bleibt dann muss ich wieder klicken um wieder auf die 0 Stellung zu kommen ganz schön wäre es bald wenn er automatisch wieder zurück auf die 0 Stellung gelangt leider habe ich keine grosse Ahnung von PHP weiss auch nicht ob dies mit PHP möglich wäre.
Hier mein verwendeter Code
[PHP]<?php
session_start();
//////////////////////////////
// EDIT THESE TWO VARIABLES //
//////////////////////////////
$MySQLUsername = „XXX“;
$MySQLPassword = „XXX“;
/////////////////////////////////
// DO NOT EDIT BELOW THIS LINE //
/////////////////////////////////
$MySQLHost = „XXX“;
$MySQLDB = „XXX“;
If (($MySQLUsername == „USERNAME HERE“) || ($MySQLPassword == „PASSWORD HERE“)){
print ‚ERROR - Please set up the script first‘;
exit();
}
$dbConnection = mysql_connect($MySQLHost, $MySQLUsername, $MySQLPassword);
mysql_select_db($MySQLDB, $dbConnection);
If (isset($_POST[‚action‘])){
If ($_POST[‚action‘] == „setPassword“){
$password1 = $_POST[‚password1‘];
$password2 = $_POST[‚password2‘];
If ($password1 != $password2){
header(‚Location: control.php‘);
}
$password = mysql_real_escape_string($_POST[‚password1‘]);
If (strlen($password) > 28){
mysql_close();
header(‚location: control.php‘);
}
$resetQuery = „SELECT username, salt FROM users WHERE username = ‚admin‘;“;
$resetResult = mysql_query($resetQuery);
If (mysql_num_rows($resetResult) < 1){
mysql_close();
header(‚location: control.php‘);
}
$resetData = mysql_fetch_array($resetResult, MYSQL_ASSOC);
$resetHash = hash(‚sha256‘, $salt . hash(‚sha256‘, $password));
$hash = hash(‚sha256‘, $password);
function createSalt(){
$string = md5(uniqid(rand(), true));
return substr($string, 0, 8);
}
$salt = createSalt();
$hash = hash(‚sha256‘, $salt . $hash);
mysql_query(„UPDATE users SET salt=‚$salt‘ WHERE username=‚admin‘“);
mysql_query(„UPDATE users SET password=‚$hash‘ WHERE username=‚admin‘“);
mysql_close();
header(‚location: control.php‘);
}
}
If ((isset($_POST[‚username‘])) && (isset($_POST[‚password‘]))){
$username = mysql_real_escape_string($_POST[‚username‘]);
$password = mysql_real_escape_string($_POST[‚password‘]);
$loginQuery = „SELECT UserID, password, salt FROM users WHERE username = ‚$username‘;“;
$loginResult = mysql_query($loginQuery);
If (mysql_num_rows($loginResult) < 1){
mysql_close();
header(‚location: control.php?error=incorrectLogin‘);
}
$loginData = mysql_fetch_array($loginResult, MYSQL_ASSOC);
$loginHash = hash(‚sha256‘, $loginData[‚salt‘] . hash(‚sha256‘, $password));
If ($loginHash != $loginData[‚password‘]){
mysql_close();
header(‚location: control.php?error=incorrectLogin‘);
} else {
session_regenerate_id();
$_SESSION[‚username‘] = „admin“;
$_SESSION[‚userID‘] = „1“;
mysql_close();
header(‚location: control.php‘);
}
}
If ((!isset($_SESSION[‚username‘])) || (!isset($_SESSION[‚userID‘]))){
print ’
GPIO Test Page - Login
Username: | |
Password: | |
‚;
die();
}
If (isset($_GET[‚action‘])){
If ($_GET[‚action‘] == „logout“){
$_SESSION = array();
session_destroy();
header(‚Location: control.php‘);
} else If ($_GET[‚action‘] == „setPassword“){
print ’
Enter New Password: Confirm:
‚;
} else {
$action = $_GET[‚action‘];
$pin = mysql_real_escape_string($_GET[‚pin‘]);
if ($action == „turnOn“){
$setting = „1“;
mysql_query("UPDATE pinStatus SET pinStatus=‘$setting‘ WHERE pinNumber=‚$pin‘;„);
mysql_close();
header(‚Location: control.php‘);
} else If ($action == „turnOff“){
$setting = „0“;
mysql_query(„UPDATE pinStatus SET pinStatus=‚$setting‘ WHERE pinNumber=‚$pin‘;“);
mysql_close();
header(‚Location: control.php‘);
} else IF ($action ==„edit“){
$pin = mysql_real_escape_string($_GET[‚pin‘]);
$query = mysql_query(„SELECT pinDescription FROM pinDescription WHERE pinNumber=‚$pin‘;“);
$descRow = mysql_fetch_assoc($query);
$description = $descRow[‚pinDescription‘];
print ’
Update Pin ’ . $pin . ‚
Description: |
‚;
mysql_close();
} else IF ($action ==„update“){
$pin = mysql_real_escape_string($_GET[‚pin‘]);
$description = mysql_real_escape_string($_GET[‚description‘]);
mysql_query("UPDATE pinDescription SET pinDescription=‘$description‘ WHERE pinNumber=‚$pin‘;“);
header(‚Location: control.php‘);
} else {
header(‚Location: control.php‘);
}
}
} else {
print ’
GPIO Test Page
GPIO Test Page Change Password
';
$query = mysql_query(„SELECT pinNumber, pinStatus FROM pinStatus;“);
$query2 = mysql_query(„SELECT pinNumber, pinDescription FROM pinDescription;“);
$totalGPIOCount = mysql_num_rows($query);
$currentGPIOCount = 0;
print ‚‘;
print ‚‘;
while ($currentGPIOCount < $totalGPIOCount){
$pinRow = mysql_fetch_assoc($query);
$descRow = mysql_fetch_assoc($query2);
$pinNumber = $pinRow[‚pinNumber‘];
$pinStatus = $pinRow[‚pinStatus‘];
$pinDescription = $descRow[‚pinDescription‘];
If ($pinStatus == „0“){
$buttonValue = „Turn On“;
$action = „turnOn“;
$image = „off.jpg“;
} else {
$buttonValue = „Turn Off“;
$action = „turnOff“;
$image = „on.jpg“;
}
print ‚‘;
print ‚‘;
print ‚‘;
$currentGPIOCount ++;
}
print ‚
GPIO # | GPIO Description | Status | Action | Edit |
---|---|---|---|---|
‘ . $pinNumber . ‚ | ‘ . $pinDescription . ‚ |
mysql_close();
print ’
Log out
';
}
?>
[/PHP]
Das Ganze geht wie sehr wahrscheinlich gesehen über MySQL ich bedanke mich schon jetzt sehr herzlich für eure Bemühungen und Ideen
Beste Grüsse
Dodoooh