我正在做一个有趣的项目。我需要将数据发送到PHP脚本,该脚本将使用MySQLi将其写入MySQL数据库。当跟踪的输入引脚接收到打开信号时,我的Raspberry PI需要通过url将数据发送到脚本。
Python代码:
import RPi.GPIO as GPIO # Import Raspberry Pi GPIO library
def button_callback1(channel):
print("Left(07) energized.")
def button_callback2(channel):
print("Right(13) energized.")
GPIO.setwarnings(False) # Ignore warning for now
GPIO.setmode(GPIO.BOARD) # Use physical pin numbering
GPIO.setup(07, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set pin 07 to be an input pin and set initial value to be pulled low (off)
GPIO.add_event_detect(07,GPIO.RISING,callback=button_callback1) # Setup event on pin 07 rising edge
GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set pin 13 to be an input pin and set initial value to be pulled low (off)
GPIO.add_event_detect(13,GPIO.RISING,callback=button_callback2) # Setup event on pin 13 rising edge
message = input("Press enter to quit\n\n") # Run until someone presses enter
GPIO.cleanup() # Clean up
在回调中,我需要以“ localhost / datagrab.php?pin = #PIN#&status = 1 的格式将数据发送到“ localhost / datagrab.php” >”,只要引脚通电即可。
我计划在将来进一步扩展此功能,并让python脚本访问相同的链接,如果15秒钟内没有打开信号,则将变量状态传递为0。
请让我朝正确的方向
谢谢
山姆
答案 0 :(得分:1)
您是否想真正打开网页并查看它,或者只是使用更新的信息来调用它,这使您的问题有点不清楚。这是其中一种选择。
要像脚本一样调用它:
import subprocess
# if the script doesn't need output.
subprocess.call("php /path/to/your/script.php?pin=#" + pin + "#&status=1")
#obviously modify '+ pin +' to match your variable
# if you want output
proc = subprocess.Popen("php /path/to/your/script.php?pin=#" + pin + "#&status=1", shell=True,
stdout=subprocess.PIPE)
script_response = proc.stdout.read()
如果在插入失败等情况下引发某种错误,则输出可能有用。
如果要在调用时真正让Python打开浏览器,则需要执行以下操作-使用“ webbrowser”模块:
import webbrowser
webbrowser.open("http://your/php/script.php?pin=#"+ pin +"#&status=1")
# open the file in the browser with your variable matched to your script
在堆栈上和其他地方都有很多对这些方法的引用,但这是开始构建回调部分的简便位置。