Автоматическое обновление веб-страницы - PullRequest
0 голосов
/ 04 ноября 2018

Это мой код, который определяет положение ребенка и вставляет его в мою базу данных, которая состоит только из 1 строки. Я использую лимит, чтобы удалить старую строку и остаться последней строкой.

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import MySQLdb

db = MySQLdb.connect("localhost", "root", "raspberry", "cribdb")

GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN) #Right level-1
GPIO.setup(16, GPIO.IN) #Right level-2
GPIO.setup(18, GPIO.IN) #Right level-3

last_status = None

while True:

input12 = GPIO.input(12)

input16 = GPIO.input(16)

input18 = GPIO.input(18)

if (input12 == 1 and input16 == 0 and input18 == 0):
    status = "Lying down"
elif (input12 == 1 and input16 == 1 and input18 == 0):
    status = "Sitting"
elif (input12 == 1 and input16 == 1 and input18 == 1):
    status = "Standing"
elif (input12 == 0 and input16 == 1 and input18 == 1):
    status = "Trying to climb out"
elif (input12 == 0 and input16 == 0 and input18 == 1):
    status = "Almost out" 
else:
    status = "Out of the crib"

time.sleep(1)
if status != last_status:
    print(status)
    last_status = status
    curs = db.cursor()
    curs.execute(
    """INSERT INTO tbstatus values(NULL, %s)""", (status,)
)
db.commit()

number_of_rows= curs.execute("SELECT * FROM tbstatus")

if (number_of_rows >= 2:
    curs.execute("""DELETE FROM tbstatus order by id LIMIT 1""")
    db.commit()
    print("\n 1st row deleted ")

Это мой код в PHP, который отображает данные из базы данных. Он просто получает значения статуса в базе данных и отображает их на веб-странице.

<?php require("connection.php"); ?>
<!DOCTYPE html>
 <html>
<head>
    <title> BABY MONITORING SYSTEM </title>
    <link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div id="wrapper">

    <?php  

        $sql_cmd = "SELECT * FROM tbstatus ORDER BY id desc";

        $stmt = $con->prepare($sql_cmd);

        $stmt->execute();


        echo "<table>";
        echo "<tr>";
            echo "<td>STATUS OF THE BABY: </td>";
        echo "</tr>";


        while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {

            echo "<tr>";
                echo "<td>" . $result['status'] . "</td>";
            echo "</tr>";

        }

        echo "</table>";
    ?>

</div>

</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/main.js"></script>
</html>

Как веб-страница перезагрузится, когда моя база данных получит новый статус от моих датчиков?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Я не думаю, что обновление страницы каждые 15 секунд - это хороший пользовательский опыт. Почему бы не воспользоваться услугой, специально предназначенной для такой работы. База данных Firebase Realtime - это один очень хороший вариант, который позволяет вам иметь обновления в реальном времени в вашем приложении. И он управляется Google, так что это должно быть хорошо, правильно.

В противном случае вам придется реализовать свой собственный серверный скрипт, чтобы выполнить обновление за вас. Напомню, что обновление одной и той же страницы снова и снова, особенно в мобильной сети, может стоить как для вас, так и для пользователя.

0 голосов
/ 04 ноября 2018

Вам нужно будет указать клиенту (то есть браузеру), чтобы он получал новые данные с сервера. Самый простой способ - сказать браузеру обновлять страницу так часто, используя (например) следующий код в <head> HTML:

<meta http-equiv="refresh" content="15">

Значение в content - это количество секунд между обновлениями, поэтому в этом случае страница будет обновляться каждые 15 секунд. Конечно, вы можете настроить это в соответствии со своими потребностями.

Если вам нужна более сложная перезагрузка, вам придется использовать javascript для перезагрузки страницы или обновления части страницы, но это может быть излишним, если это простой проект для хобби - просто обновление может быть достаточно эффективным.

РЕДАКТИРОВАТЬ: head часть вашей страницы будет выглядеть следующим образом:

<head>
    <title> BABY MONITORING SYSTEM </title>
    <link rel="stylesheet" href="css/styles.css">
    <meta http-equiv="refresh" content="15">
</head>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...