はじめに
各バージョンはこちら
$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2022-03-16T16:53:42
$ php -v
PHP 7.2.34-28+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 19 2021 06:36:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
ESP32の実装(Socket Server)
以前書いたこちらを参考に実装します
import socket #モジュールのインポート
port = 8080 #ポート指定
listenSocket = None #初期化
ip = wifi.ifconfig()[0] #自分のipアドレスを取得
listenSocket = socket.socket() #socketを作成
listenSocket.bind((ip, port)) # ソケットを特定のIPアドレスとポートに紐付け
listenSocket.listen(5) # 接続の待受を開始
listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #指定されたソケットオプションの値を設定
while True:
print("accepting.....")
conn, addr = listenSocket.accept() #接続を受信
print(addr, "connected") #接続した相手のipアドレスを表示 (xxx.xxx.xxx.xxx connected)
data = conn.recv(1024) #一度に受け取るデータのサイズを指定
conn.close() #接続を切断
print(data)
サーバ側の実装(Socket Client)
<?php
$sendFlag = "false";
$port = 8080;
$result = "";
if ($_POST['action'] == 'text'){
$host = "<ESP32のipアドレス>";
$msg = $_POST["msg"];
$address = gethostbyname($host);
echo "Sent " . strlen($msg) . " bytes : " . htmlspecialchars($msg) . "<br>";
socket_close($sock);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<form action="socket_send.php" method="post">
<input type="textarea" name="msg" value="">
<button type="submit" name="action" value="text">送信</button>
</form>
</body>
</html>
動作確認
サーバ側にこのようなフォームが表示される
送信を押下するとESP32に入力した文字列が送信される
ESP32側のコンソールを確認してみるとしっかりとデータが送信されていることがわかる