PICOWでhttpリクエスト

#テスト条件
ファームウエア:RPI_PICO_W-20231005-v1.21.0.uf2
urequestsを使ってGETでデータを送信
phpでgetで受信してファイルに書き出し

#注意(重要!)
ネット上でurequestsのライブラリ読み出しをうたっているが
すでにこのファームには組み込まれているので読み込まない事
インストールすると実行時エラーがライブラリのini.pyで発生する。

#記載はしないが
WiFiでIPアドレスが取得できてNetworkに接続されている事

#まずは単純に?D1=111&D2=222&D3=333方式で
#単純なpyソース

import urequests
r = urequests.get('http://192.168.11.12/mytest/test_get.php?D1=1234&D2=456', timeout=10)
print(r.content)
r.close()

#PHP側

<?php
// GETリクエストのデータを確認
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    // POSTデータを取得
    $temperature = isset($_GET['D1']) ? $_GET['D1'] : 'データなし';
    $humidity = isset($_GET['D2']) ? $_GET['D2'] : 'データなし';
    $pressure = isset($_GET['D3']) ? $_GET['D3'] : 'データなし';

    file_put_contents("sample.txt", $temperature . $humidity, FILE_APPEND );
    // データを表示
	/*
    echo "温度: " . htmlspecialchars($temperature) . "<br>";
    echo "湿度: " . htmlspecialchars($humidity) . "<br>";
    echo "気圧: " . htmlspecialchars($pressure) . "<br>";
	*/
} else {
    echo "GETリクエストではありません。";
}
?>


#送信側(JSON)

import urequests
import ujson
#データをDICT型
data = {"D1":"23.4","D2":"56.4","D3":"22.4"}
#jsonデータで送信するという事を明示的に宣言
header = {'Content-Type':'application/json'}
#HTTPリクエストをPOSTと
url='http://192.168.11.12/mytest/test_post.php'
res = urequests.post(url,data = ujson.dumps(data).encode("utf-8"),headers = header)
#サーバ側からのレスポンスを受け取って表示
print (res.json())
#終了
res.close()

#PHP側(json)

<?php
//送られてきたPOSTデータを受け取って,JSONデータをデコードして$inに入れる.
$in = json_decode(stripslashes(file_get_contents('php://input')),true);

//送られてきたデータを取り出す
$d1 = $in["D1"]; 
$d2 = $in["D2"];
$d3 = $ib["D3"]
;

file_put_contents("sample.txt", $d1 . $d2 .$d3, FILE_APPEND );
//レスポンスを「Completed!」とし,それをJSONとして再度エンコード
//そして送信元へ返す.
echo json_encode("Completed!");
?>
カテゴリー iot