![](/img/trans.png)
[英]Create a hyperlink (or button) that executes a python script and then redirects when script completes
[英]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。
還是有使用Bootstrap Switch或其他方法的簡便方法? 並且,使用繼電器的當前狀態作為開關的默認位置,該狀態保存在“ /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
在終端中對其進行測試時,它就像一種魅力。 我還缺少什么? www和www-data被添加到sudo'ers中。 apache也應該在其中嗎?
您需要調用一個調用腳本的頁面,您可以設置cgi或調用.py腳本並直接將其命中,或者您可以使用以下行創建一個php頁面
exec("python myscript.py arg1 arg2 ...");
然后按一下按鈕即可轉到該頁面...
這些是幾個選項,並假設服務器在樹莓派上運行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.