Cześć wszystkim, piszę aplikację jako projekt na uczelnię. Aplikacja ma symulować interfejs webowy z pracy inteligentnego domu, czyli wyświetlać stany (włączone/wyłączone) różnych urządzeń w domu, manipulować nimi np. przyciskiem "wyłącz wszystkie światła" - wszystko w czasie rzeczywistym. Całość opiera się na bazie danych do której trafiają zmienne. Póki co stworzyłem taki interfejs.
Połączyłem się za pomocą PHP. Również w PHP podczas załadowania strony tworzy się tabela w bazie danych i dodają się stany (0 lub 1 czyli włączone lub wyłączone), daty i reszta kolumn.
Teraz utknąłem:
1. Potrzebuję aby co X sekund aktualizowały się rekordy tabeli, wraz z datami dodania tych rekordów. Narazie działa przy odświeżaniu strony, a docelowo ma działać bez oraz losowo (znaczy raz zmieni się stan w 1 rekordzie, raz w 4, raz 7 itd) - taka symulacja.
2. Zaraz obok działania symulacji, przyciski poniżej tabel powinny funkcjonować zgodnie z opisem, niezależnie od symulacji - np. program działa, wyłącza się światło (stan z 1 na 0), a ja przyciskiem włączam stan z 0 na 1 z powrotem. W jaki sposób manipulować w czasie rzeczywistym przyciskami i rekordami w tabeli?
Czy da się to zrobić przy pomocy samego php i js+ajax? Czytałem też o możliwości node.js + Express.
Poniżej kod z index.php.
<html>
<head>
<title>Inteligentny dom</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="data">
<h1>Światło</h1>
<table>
<tr>
<th>Nr</th>
<th>Port</th>
<th>Wejście/Wyjście</th>
<th>Stan</th>
<th>Obszar</th>
<th>Poziom</th>
<th>Pomieszczenie</th>
<th>Nazwa</th>
<th>Funkcja</th>
<th>DataGodzina</th>
</tr>
<?php
include 'connect.php';
include 'deleteTableSwiatlo.php';
include 'createTableSwiatlo.php';
include 'addDataSwiatlo.php';
$sql = "SELECT Nr, Port, wejscieWyjscie, Stan, Obszar, Poziom, Pomieszczenie, Nazwa, Funkcja, DataGodzina from swiatlo";
$result = $conn-> query($sql);
if($result-> num_rows > 0){
while($row = $result-> fetch_assoc()){
echo "<tr><td>".$row["Nr"]."</td><td>".$row["Port"]."</td><td>".$row["wejscieWyjscie"]."</td><td>".$row["Stan"]."</td><td>".$row["Obszar"]."</td><td>".$row["Poziom"]."</td><td>".$row["Pomieszczenie"]."</td><td>".$row["Nazwa"]."</td><td>".$row["Funkcja"]."</td><td>".$row["DataGodzina"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0";
}
?>
</div>
<form class="form" action="" method="POST">
<div class="btn-group">
<button type="submit" class="btn">Wyłącz wszystkie światła</button>
<button type="submit" class="btn">Włącz wszystkie światła</button>
</div>
<div class="btn-group">
<button type="submit" class="btn">Wyłącz światło w piwnicy</button>
<button type="submit" class="btn">Włącz świtało w piwnicy</button>
</div>
<div class="btn-group">
<button type="submit" class="btn">Wyłącz wszystkie światła na parterze</button>
<button type="submit" class="btn">Włącz wszystkie światła na parterze</button>
</div>
<div class="btn-group">
<button type="submit" class="btn">Wyłącz wszystkie światła na piętrze</button>
<button type="submit" class="btn">Włącz wszystkie światła na piętrze</button>
</div>
<div class="btn-group">
<button type="submit" class="btn">Wyłącz światło w ogrodzie</button>
<button type="submit" class="btn">Włącz świtało w ogrodzie</button>
</div>
<div class="btn-group">
<button type="submit" class="btn">Pokaż wszystkie zapalone światła</button>
</div>
</form>
<!--TEMPERATURA-->
<div class="data">
<h1>Pomiar temperatury</h1>
<table>
<tr>
<th>Nr</th>
<th>Port</th>
<th>Wejście/Wyjście</th>
<th>Stan</th>
<th>Obszar</th>
<th>Poziom</th>
<th>Pomieszczenie</th>
<th>Nazwa</th>
<th>Funkcja</th>
<th>Wartość [℃]</th>
<th>DataGodzina</th>
</tr>
<?php
include 'connect.php';
include 'deleteTableTemp.php';
include 'createTableTemp.php';
include 'addDataTemp.php';
$sql = "SELECT Nr, Port, wejscieWyjscie, Stan, Obszar, Poziom, Pomieszczenie, Nazwa, Funkcja, Wartość, DataGodzina from temperatura";
$result = $conn-> query($sql);
if($result-> num_rows > 0){
while($row = $result-> fetch_assoc()){
echo "<tr><td>".$row["Nr"]."</td><td>".$row["Port"]."</td><td>".$row["wejscieWyjscie"]."</td><td>".$row["Stan"]."</td><td>".$row["Obszar"]."</td><td>".$row["Poziom"]."</td><td>".$row["Pomieszczenie"]."</td><td>".$row["Nazwa"]."</td><td>".$row["Funkcja"]."</td><td>".$row["Wartość"]."</td><td>".$row["DataGodzina"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0";
}
?>
</div>
<form class="form" action="" method="POST">
<div class="btn-group temp-div">
<label class="temp-label" for="temp">Ustaw temperaturę w:</label>
<select id="temp" name="temp" class="temp-select">
<option value="1">Piwnica</option>
<option value="2">Pokój gościnny</option>
<option value="3">Kuchnia</option>
<option value="4">Garaż</option>
<option value="5">Salon</option>
<option value="6">Łazienka1</option>
<option value="7">Pokój1</option>
<option value="8">Pokój2</option>
<option value="9">Łazienka2</option>
<option value="10">Garderoba</option>
</select>
<input type="text" class="temp-input" name="temp">
<button type="submit" class="btn">Ustaw</button>
</div>
</form>
<!--BRAMA GARAŻOWA-->
<div class="data">
<h1>Brama garażowa</h1>
<table>
<tr>
<th>Nr</th>
<th>Port</th>
<th>Wejście/Wyjście</th>
<th>Stan</th>
<th>Obszar</th>
<th>Poziom</th>
<th>Pomieszczenie</th>
<th>Nazwa</th>
<th>Funkcja</th>
<th>DataGodzina</th>
</tr>
<?php
include 'connect.php';
include 'deleteTableGarage.php';
include 'createTableGarage.php';
include 'addDataGarage.php';
$sql = "SELECT Nr, Port, wejscieWyjscie, Stan, Obszar, Poziom, Pomieszczenie, Nazwa, Funkcja, DataGodzina from garaz";
$result = $conn-> query($sql);
if($result-> num_rows > 0){
while($row = $result-> fetch_assoc()){
echo "<tr><td>".$row["Nr"]."</td><td>".$row["Port"]."</td><td>".$row["wejscieWyjscie"]."</td><td>".$row["Stan"]."</td><td>".$row["Obszar"]."</td><td>".$row["Poziom"]."</td><td>".$row["Pomieszczenie"]."</td><td>".$row["Nazwa"]."</td><td>".$row["Funkcja"]."</td><td>".$row["DataGodzina"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0";
}
?>
</div>
<form class="form" action="" method="POST">
<div class="btn-group">
<button type="submit" class="btn">Otwórz bramę garażową</button>
<button type="submit" class="btn">Zamknij bramę garażową</button>
</div>
</form>
<!--OGRÓD: ZRASZACZE-->
<div class="data">
<h1>Zraszacze</h1>
<table>
<tr>
<th>Nr</th>
<th>Port</th>
<th>Wejście/Wyjście</th>
<th>Stan</th>
<th>Obszar</th>
<th>Poziom</th>
<th>Pomieszczenie</th>
<th>Nazwa</th>
<th>Funkcja</th>
<th>DataGodzina</th>
</tr>
<?php
include 'connect.php';
include 'deleteTableGarden.php';
include 'createTableGarden.php';
include 'addDataGarden.php';
$sql = "SELECT Nr, Port, wejscieWyjscie, Stan, Obszar, Poziom, Pomieszczenie, Nazwa, Funkcja, DataGodzina from ogrod";
$result = $conn-> query($sql);
if($result-> num_rows > 0){
while($row = $result-> fetch_assoc()){
echo "<tr><td>".$row["Nr"]."</td><td>".$row["Port"]."</td><td>".$row["wejscieWyjscie"]."</td><td>".$row["Stan"]."</td><td>".$row["Obszar"]."</td><td>".$row["Poziom"]."</td><td>".$row["Pomieszczenie"]."</td><td>".$row["Nazwa"]."</td><td>".$row["Funkcja"]."</td><td>".$row["DataGodzina"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0";
}
?>
</div>
<form class="form" action="" method="POST">
<div class="btn-group">
<button type="submit" class="btn">Wyłącz zraszacze</button>
<button type="submit" class="btn">Włącz zraszacze</button>
</div>
</form>
<!--OGRÓD: ZRASZACZE-->
<div class="data">
<h1>Alarm</h1>
<table>
<tr>
<th>Nr</th>
<th>Port</th>
<th>Wejście/Wyjście</th>
<th>Stan</th>
<th>Obszar</th>
<th>Poziom</th>
<th>Pomieszczenie</th>
<th>Nazwa</th>
<th>Funkcja</th>
<th>DataGodzina</th>
</tr>
<?php
include 'connect.php';
include 'deleteTableAlarm.php';
include 'createTableAlarm.php';
include 'addDataAlarm.php';
$sql = "SELECT Nr, Port, wejscieWyjscie, Stan, Obszar, Poziom, Pomieszczenie, Nazwa, Funkcja, DataGodzina from alarm";
$result = $conn-> query($sql);
if($result-> num_rows > 0){
while($row = $result-> fetch_assoc()){
echo "<tr><td>".$row["Nr"]."</td><td>".$row["Port"]."</td><td>".$row["wejscieWyjscie"]."</td><td>".$row["Stan"]."</td><td>".$row["Obszar"]."</td><td>".$row["Poziom"]."</td><td>".$row["Pomieszczenie"]."</td><td>".$row["Nazwa"]."</td><td>".$row["Funkcja"]."</td><td>".$row["DataGodzina"]."</td></tr>";
}
echo "</table>";
}
else{
echo "0";
}
?>
</div>
<form class="form" action="" method="POST">
<div class="btn-group">
<button type="submit" class="btn">Wyłącz alarm</button>
<button type="submit" class="btn">Włącz alarm</button>
</div>
</form>
</body>
</html>
addTableSwiatlo.php
<?php
$createDataGarden= "CREATE TABLE IF NOT EXISTS ogrod(Nr INT NOT NULL AUTO_INCREMENT,
Port INT,
wejscieWyjscie VARCHAR(55),
Stan INT,
Obszar VARCHAR(55),
Poziom INT,
Pomieszczenie VARCHAR(55),
Nazwa VARCHAR(55),
Funkcja VARCHAR(55),
DataGodzina DATETIME,
PRIMARY KEY (Nr)
)";
mysqli_query($conn,$createDataGarden);
addDataSwiatlo.php
<?php
//losowa data
$start = strtotime("2020-11-19 00:00:00");
$end = strtotime("2020-11-20 23:59:59");
//zmienne
$pomieszczenia = array('piwnica', 'pokoj', 'kuchnia','garaż','salon','łazienka1','ogród','pokój1','pokój2','łazienka2','garderoba');
$poziomy = array(-1,0,0,0,0,0,0,1,1,1,1);
$stan = array();
$randomDate = array();
//pętla przypisująca dane
for($x=0; $x<=10; $x++){
array_push($stan, rand(0,1));
array_push($randomDate, date("Y-m-d H:i:s", rand($start, $end)));
$sql[$x] = "INSERT INTO swiatlo (Port,wejscieWyjscie,Stan,Obszar,Poziom,Pomieszczenie,Nazwa,Funkcja,DataGodzina) VALUES (8080,'wyjście','$stan[$x]','dom','$poziomy[$x]','$pomieszczenia[$x]','dom','światło','$randomDate[$x]')";
mysqli_query($conn,$sql[$x]);
}
Z góry dzięki!!