Raspberry Piで計測した値をPythonを使ってPOST/GETリクエストしwebページで取得してみる

スポンサーリンク

前回の タクトスイッチを使ってLEDを点灯してみる の応用編として、タクトスイッチを押されたら別ホストにあるwebページ上に結果を出力する単純なシステムを作成してみる。

はじめる前に

前回の タクトスイッチを使ってLEDを点灯してみる で作成した電子工作のパーツをそのまま使います。設計回路もそのままです。

PythonでPOST/GET送信できるようにする

前回のタクトスイッチのON/OFFの制御で使ったスクリプトに少し手を加えます。

GETで送信する場合

# coding: utf-8
import RPi.GPIO as GPIO
import time
import urllib
import urllib2

url = 'http://example.com/hoge.php'

GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN)
GPIO.setup(25, GPIO.OUT)

try:
 while True:
  if GPIO.input(24) == GPIO.HIGH:
   GPIO.output(25, GPIO.HIGH)
   params = {'ledFlag': GPIO.HIGH}
   params = urllib.urlencode(params)
   urllib2.urlopen(url + '?' + params)
  else:
   GPIO.output(25, GPIO.LOW)
  time.sleep(0.5)
except KeyboardInterrupt:
 GPIO.cleanup()

GETで値を送信する場合です。
7行目で送信先のURLを指定します。
17行目〜19行目がGETでリクエストするスクリプトです。
17行目で送信したいパラメータを作成します。
18行目でurlのエンコードを行います。
19行目で指定したURLへの送信を開始します。

POSTで送信する場合

# coding: utf-8
import RPi.GPIO as GPIO
import time
import urllib
import urllib2

url = 'http://example.com/hoge.php'

GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN)
GPIO.setup(25, GPIO.OUT)

try:
 while True:
  if GPIO.input(24) == GPIO.HIGH:
   GPIO.output(25, GPIO.HIGH)
   params = {'ledFlag': GPIO.HIGH}
   params = urllib.urlencode(params)
   urllib2.urlopen(url, params)
  else:
   GPIO.output(25, GPIO.LOW)
  time.sleep(0.5)
except KeyboardInterrupt:
 GPIO.cleanup()

基本、上記のGET送信とフローは変わりません。

7行目で送信先のURLを指定します。
17行目から19行目までがPOSTでリクエストするスクリプトです。
17行目で送信したいパラメータを作成します。
18行目でurlのエンコードを行います。
19行目で指定したURLへの送信を開始します。

webページでPOST/GETのリクエストをレスポンスする

実際に送られてきた情報を取得します。

http://example.com/hoge.phpに下記の様にPHPスクリプトを書くことで情報の取得が可能です。

GETで受け取る場合

$ledFlag = $_GET['ledFlag'];

POSTで受け取る場合

$ledFlag = $_POST['ledFlag'];


この様にデータをローカル外に出すと出来ることがまた広がりますね。
後は受け取った情報を使ってデータをDBに保存するもよし、加工するもよし。

参考文献

・PythonでGET/POST送信:http://d.hatena.ne.jp/Pythonic/20100907/1283869285

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク