【问题标题】:Get real time values from python script inside jquery and php从 jquery 和 php 中的 python 脚本获取实时值
【发布时间】:2018-04-24 06:11:43
【问题描述】:

我想在网页上显示当前温度。

我在 Jessie 中使用 Raspberry Pi 3。
我使用 Chromium 作为浏览器。

我将 python 脚本放在一个循环中,用于倒数计时器。 然后我每 5 秒触发一次。我将它与 console.log("here") 一起检查该函数是否正在循环。它显示了许多“这里”,但我只得到一个值

  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");
    }
}

【问题讨论】:

    标签: javascript php python-2.7 raspberry-pi3 temperature


    【解决方案1】:

    我在您的 Javascript 中看不到有效的循环 - 您必须使用 setInterval(或类似的东西)来重复您的代码/功能/方法....

    试试这个:
    javascript timer loop
    或者这个:
    https://raspberrypi.stackexchange.com/questions/12209/show-io-value-on-webpage-in-realtime

    【讨论】:

      猜你喜欢
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2018-03-04
      • 1970-01-01
      相关资源
      最近更新 更多