2015-10-12 229 views
1

我正在RaspberryPi上構建一個網站。我有JustGage閱讀溫度和其他傳感器,並顯示他們實時已經工作。但現在,我試圖創建一個按鈕,當按下時,執行一個python腳本。按鈕執行python腳本,使用jquery?

所以,正是這種簡單的按鈕:

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

這條巨蟒腳本從終端運行時起作用。它將在關閉時激活繼電器,反之亦然。但是,如何在index.php頁面上按下按鈕時運行此腳本?最好使用Jquery或PHP(但我不希望頁面重新加載),但不使用Flask。

還是有一種簡單的方法來使用Bootstrap Switch或什麼?並且,使用保存在「/home/pi/Desktop/UV.txt」中的繼電器的當前狀態作爲開關的默認位置?有沒有關於這個清楚的教程?

編輯1

的Python腳本on.py: 進口操作系統,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也應該在其中嗎?

+0

http://raspberrypi.stackexchange.com/questions/7365/php-to -execute-python-scripts-for-gpio – cmorrissey

回答

0

你就需要調用調用腳本,您可以設置什麼叫的.py腳本,直接打它,或者你可以用一條線創建一個PHP頁面一樣

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

,並在頁面按鈕按下剛去該網頁...

這些都是一些選擇,然後假定服務器上的樹莓PI運行

+0

服務器是我的ndeed也運行在RaspBerry上。我有<?php exec(「python myscript.py arg1 arg2 ...」); ?>添加了,但這不起作用,即使在使用exec命令指向php頁面時也是如此。並且,當按鈕被按下時,它仍然重新加載頁面。但是,感謝您的快速回復! –

+0

然後你不去頁面,如果它重新加載按鈕按下...如果它不是一個按鈕類型=「提交」我什至不知道如何可能該頁面重新加載 –

+0

你需要sudo ...運行該腳本(該php不太可能運行它)...嘗試製作一個更簡單的python腳本,只需創建一個文件,您可以使用www-data寫入訪問... –