按钮执行python脚本,使用jquery


button executes python script, using jquery?

我正在RaspberryPi上建立一个网站。我有JustGage读取温度和其他传感器,并显示他们实时已经工作。但是现在,我试图创建一个按钮,当按下时,执行python脚本。

就是这个简单的按钮:

<form method="post">
  <button id="led" name="led" checked data-toggle="toggle">▲</button>
</form>

现在,当这个按钮被按下时,我想让它执行一个python脚本led。py:

import os
import smbus
import time
import datetime
import os, sys
rom datetime import datetime
import pytz
import datetime

states = open('/home/pi/Desktop/UV.txt', 'r+')
on=open('/home/pi/Desktop/on.txt', 'r+')
    os.system('sudo /drcontrol/drcontrol.py -d DAE001XA -r 3 -c state | tee /home/pi/Desktop/UV.txt')
state = states.readlines()
on = on.readlines()
state = str(state)
rstate= str(on)
    if (rstate == state):
        print ("Relay on!")
    else:
        print ("Relay Off!")
#--------------------
if (rstate != state):
    os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c on')
    print("on")
else:
    os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c off')
            print("off")
#------------------------------------------------------------------------------------
import os, sys
if os.popen('whoami').readline().strip() == 'root' :
    print( "OK, you're root")
    root = True
else:
    print( "Attention: please run as root with 'sudo'. This scripts GPIO which need root-rights.")
    print( "Now exiting ...")
    sys.exit(1)
    root = False
if __name__ == '__main__':
    main()
print ("Finished")

这个python脚本在终端运行时工作。当继电器关闭时,它将激活继电器,反之亦然。但是,当按下index.php页面上的按钮时,我如何运行这个脚本?最好使用Jquery或PHP(但我不希望页面重新加载),但不要使用Flask。

或者有一个简单的方法来使用引导开关或其他东西?并且,使用保存在"/home/pi/Desktop/UV.txt"中的继电器的当前状态作为开关的默认位置?有关于这个的清晰教程吗?

编辑1

python脚本on.py:导入os, sys

os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c on')
f=open("/var/www/test.txt", a+)

index.php的按钮:

<button id="led">on</button>
<script>
  $("#led").click(function(){
    $.ajax({
      url:"/var/www/on.php",
    });
  });
</script>

和最后on.php:

<?php
  exec("sudo /usr/bin/python3.2 /var/www/on.py")
?>

当php文件在浏览器中打开时,它只显示内容,没有错误(我在.py和.php文件上运行了chmod 777和chmod +x)。

只要我点击按钮,chrome显示在开发人员模式,on.php是"GET"。所以,按钮工作了,但是pythonscript没有运行。当我用sudo php var/www/on.php在终端上测试它时,它就像一个魅力。我还错过了什么?wwwwww-data被添加到sudo'ers中。apache也应该在里面吗?

你需要调用一个调用脚本的页面你可以设置cgi或其他东西来调用。py脚本并直接点击它或者你可以创建一个PHP页面,像

exec("python myscript.py arg1 arg2 ..."); 

然后按下按钮直接跳转到那个页面…

这是几个选项,假设服务器运行在raspberry pi上