这是我的代码,用于检测婴儿的位置并将其插入到我的仅包含1行的数据库中。我使用limit删除旧行并保留最新行。
#!/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>
一旦我的数据库从传感器获得新状态,网页将如何重新加载?
答案 0 :(得分:1)
您将需要指示客户端(即浏览器)从服务器获取新数据。最简单的方法是告诉浏览器每隔一段时间刷新一次页面,例如使用html <head>
中的以下代码:
<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>
答案 1 :(得分:0)
我认为每15秒刷新一次页面不会带来良好的用户体验。为什么不使用针对此类工作量身定制的服务。 Firebase Realtime Database是一个非常好的选择,它允许您在应用程序中进行实时更新。而且它是由Google经营的,因此必须正确。
否则,您将必须实现自己的服务器端脚本才能为您进行更新。让我提醒您,一次又一次地刷新刷新页面,尤其是在移动网络上,对您和用户而言都可能昂贵。