javascript — получает значения в реальном времени из скрипта python внутри jquery и переполнения стека.

Я хочу отображать текущую температуру на веб-странице.

Я использую Raspberry Pi 3 в Джесси.
Я использую Chromium в качестве браузера.

Я поместил скрипт Python внутри цикла для таймера обратного отсчета.
Затем я запускаю его каждые 5 секунд. Я сопровождал его с console.log («здесь»), чтобы проверить, не зацикливается ли функция. Он отображает множество «здесь», но я получаю только одно значение

  1. я пытался
    <?php shell_exec('sudo python /var/www/html/31856.py'); ?>
    Скрипт добавляет температуру к таблице Mysql, но запускается только после того, как я обновил страницу.
  2. я пытался 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");
}
}

0

Решение

Я не вижу работающий цикл в вашем Javascript — вы должны использовать setInterval (или что-то подобное), чтобы повторить ваш код / ​​функцию / метод ….

Попробуй это:
цикл таймера JavaScript
или это:
https://raspberrypi.stackexchange.com/questions/12209/show-io-value-on-webpage-in-realtime

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]