LoginSignup
2
0

More than 1 year has passed since last update.

PHPのソケット通信(Client)でESP32と疎通してみる

Last updated at Posted at 2022-06-02

はじめに

各バージョンはこちら

$ 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に入力した文字列が送信される

image.png

ESP32側のコンソールを確認してみるとしっかりとデータが送信されていることがわかる

image.png

ためしに日本語も送信してみる
image.png

ちゃんと送信されていたすごい!
image.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0