【问题标题】:button executes python script, using jquery?按钮执行python脚本,使用jquery?
【发布时间】:2015-10-12 17:47:07
【问题描述】:

我正在 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。

或者有没有一种简单的方法来使用 Bootstrap Switch 之类的?并且,使用保存在“/home/pi/Desktop/UV.txt”中的继电器的当前状态作为开关的默认位置?有没有关于这个的明确教程?

编辑 1

.py 上的 python 脚本: 导入操作系统,系统

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也应该在里面吗?

【问题讨论】:

标签: javascript php jquery python button


【解决方案1】:

你需要调用一个页面来调用你可以设置的脚本或调用.py脚本并直接点击它,或者你可以创建一个带有类似

的行的php页面
exec("python myscript.py arg1 arg2 ..."); 

按下按钮即可转到该页面...

这些是几个选项,假设服务器在树莓派上运行

【讨论】:

  • 服务器确实也在 RaspBerry 上运行。而且我有 添加,但这不起作用,即使使用 exec 命令定向到 php 页面也是如此。而且,当按下按钮时,它仍然会重新加载页面。不过感谢您的快速回复!
  • 那么如果它在按钮按下时重新加载,你就不会进入页面......如果它不是按钮 type="submit" 我什至看不到页面重新加载的可能性
  • 您将需要 sudo ... 来运行该脚本(php 不太可能将其运行为)...尝试制作一个更简单的 python 脚本,该脚本只在您有写权限的地方创建一个文件与 www-data ...
  • 谢谢。但这还行不通。我用最近的尝试编辑了这个问题..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2022-12-25
  • 2013-02-15
  • 2018-07-11
  • 1970-01-01
  • 2015-01-03
相关资源
最近更新 更多