Я хочу отображать текущую температуру на веб-странице.
Я использую Raspberry Pi 3 в Джесси.
Я использую Chromium в качестве браузера.
Я поместил скрипт Python внутри цикла для таймера обратного отсчета.
Затем я запускаю его каждые 5 секунд. Я сопровождал его с console.log («здесь»), чтобы проверить, не зацикливается ли функция. Он отображает множество «здесь», но я получаю только одно значение
<?php shell_exec('sudo python /var/www/html/31856.py'); ?>
var tout = <?php echo shell_exec('sudo python /var/www/html/31856.py'); ?>
console.log(tout);
1 & 2 работает (он получает временное значение), и в / var / log / apache2 нет ошибки, но я не могу заставить его передавать значения в реальном времени.
Вот коды:
1.
#! / usr / bin / env python
from Adafruit_MAX31856 import max31856
import RPi.GPIO as GPIO
sensor = max31856.max31856(csPin=8, misoPin=9, mosiPin=10, clkPin=11)
thermoTempC = sensor.readJunctionTemp()
st = "%.2f" % thermoTempC
print st
GPIO.cleanup()
2.
#! / usr / bin / env python
from Adafruit_MAX31856 import max31856
from datetime import datetime
import RPi.GPIO as GPIO
import MySQLdb
import time
db = MySQLdb.connect(host="192.168.1.10", user="root", passwd="root", db="test")
cur = db.cursor()
data = ""thermoTempC = 0.00
def send_temp():
try:
rt = "%.2f" % thermoTempC
cur.execute("""INSERT INTO log (Cntl_Id, Temperature) VALUES (%s, %s)""", ("C01", rt))
#print("Write to DB. Success")
#print rt
db.commit()
except:
db.rollback()
try:
cur.execute("""SELECT Status FROM controller WHERE Number='C01'""")
data = cur.fetchone()[0]
#print data
db.commit()
except:
db.rollback()
if str(data) == "1":
sensor = max31856.max31856(csPin=8, misoPin=9, mosiPin=10, clkPin=11)
thermoTempC = sensor.readJunctionTemp()
send_temp()
GPIO.cleanup()
Циклическая функция
function timer(seconds) {
var h = Math.floor(seconds / 3600), m = Math.floor(seconds / 60) % 60, s = seconds % 60;
if (h < 10) { h = "0" + h; }
if (m < 10) { m = "0" + m; }
if (s < 10) { s = "0" + s; }
if (seconds >= 0) {
if ((seconds % 5) == 0) {
//var tout = 0;
//console.log(tout);
var tout = <?php echo shell_exec('sudo python /var/www/html/31856.py'); ?>
console.log(tout);
console.log("get temp");
}
$("#remaining_time").val(h + ":" + m + ":" + s);
}
else
{
$("#remaining_time").val("00:00:00");
}
}
Я не вижу работающий цикл в вашем Javascript — вы должны использовать setInterval
(или что-то подобное), чтобы повторить ваш код / функцию / метод ….
Попробуй это:
цикл таймера JavaScript
или это:
https://raspberrypi.stackexchange.com/questions/12209/show-io-value-on-webpage-in-realtime
Других решений пока нет …