Raspberry PI通过URL将数据发送到PHP脚本

时间:2018-10-09 00:35:33

标签: python raspberry-pi

我正在做一个有趣的项目。我需要将数据发送到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。

请让我朝正确的方向

谢谢

山姆

1 个答案:

答案 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

在堆栈上和其他地方都有很多对这些方法的引用,但这是开始构建回调部分的简便位置。