ESP32에서 Micropython으로 HTTP 요청 (POST)으로 데이터를 전송하고 PHP (서버)로 수신
6850 단어 JSONPHPmicropythonHTTPESP32
환경
마이크로컨트롤러: ESP32
펌웨어: Micropython1.3
서버: Ubuntu18.04
웹 서버: Apache2
PHP: PHP7.4
※ ESP32에 Micropython이 들어 있지 않으면 실행할 수 없으므로주의하시기 바랍니다.
※ 만약 Micropython을 넣는 방법을 알고 싶은 사람이 있으면 여기를 참조하십시오. >>> ESP32에 micropython을 넣는 방법 (uPyCraft 사용)
하고 싶은 일
예를 들어 ESP32에서 센서 데이터를 얻은 후 데이터를 서버로 보내고 싶습니다! 토카
이번에는 위 그림과 같이 ESP32에서 펌웨어 Micropython으로 서버 인 Ubuntu18.04 (Apache2)에 HTTP POST로 데이터를 전송합니다.
ESP32
Micropython에는 HTTP 요청을위한 모듈이 있습니다.
그것이 urequests라는 모듈입니다.
또한 이번에는 데이터를 JSON 형식으로 전송하기 때문에 ujson 모듈도 사용합니다.
※또한 urequest와 ujson은 Python의 모듈인 requests와 json과 사용법은 거의 같습니다.
이하 소스 코드가 됩니다.
import urequests
import ujson
#送信先のURLの指定
url = 'http://xxx.xxx.xxx.xxx/test.php'
#データをDICT型で宣言
powerdata = {
"value" : "23.4",
"text" : "Hello World!"
}
#jsonデータで送信するという事を明示的に宣言
header = {
'Content-Type' : 'application/json'
}
#HTTPリクエストをPOSTとして送信
res = urequests.post(
url,
data = ujson.dumps(powerdata).encode("utf-8"),
headers = header
)
#サーバ側からのレスポンスを受け取って表示(jsonのデコードも一緒にしている)
print (res.json())
#終了
res.close()
코드의 의미는 코멘트 아웃으로 쓰여 있으므로 그쪽을 참조하십시오.
서버
수신측의 프로그램은 PHP를 사용해 써 갑니다.
미리 웹 서버 인 Apache2를 시작하십시오.
만약 PHP의 인스톨이 끝나지 않은 분은 하기 커멘드로 인스톨을 부탁합니다.
sudo apt install php7.4 libapache2-mod-php7.4
$ sudo systemctl start apache2
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2020-12-09 08:01:07 UTC; 1 day 21h ago
Process: 8442 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 1049 (apache2)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/apache2.service
├─1049 /usr/sbin/apache2 -k start
├─4001 /usr/sbin/apache2 -k start
├─8446 /usr/sbin/apache2 -k start
├─8447 /usr/sbin/apache2 -k start
├─8448 /usr/sbin/apache2 -k start
├─8449 /usr/sbin/apache2 -k start
└─8450 /usr/sbin/apache2 -k start
다음으로 PHP 파일을 작성합니다.
Apache2는/var/www/html/하위에 파일을 넣습니다.
test.php
<?php
//送られてきたPOSTデータを受け取って,JSONデータをデコードして$inに入れる.
$in = json_decode(stripslashes(file_get_contents('php://input')),true);
//送られてきたデータを取り出す
$value = $in["value"]; // = 23.4
$text = $in["text"]; // = Hello World!
//レスポンスを「Completed!」とし,それをJSONとして再度エンコード
//そして送信元(ESP32)へ返す.
echo json_encode("Completed!");
?>
코드의 의미는 마찬가지로 코멘트 아웃을 참조하십시오.
실행
ESP32에서 실행합니다.
>>> execfile("test.py")
["Completed!"]
실행을하고 Completed!라는 문자열이 돌아 오면 성공입니다.
끝
이번에는 HTTP POST를 사용하여 ESP32에서 서버로 데이터를 보냈습니다.
이를 적용하면 수신 한 데이터를 데이터베이스에 저장할 수 있습니다.
시간이 있으면 그 기사도 쓸 생각입니다.
Reference
이 문제에 관하여(ESP32에서 Micropython으로 HTTP 요청 (POST)으로 데이터를 전송하고 PHP (서버)로 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sirius1000/items/5a4d18a76ddf67a6839c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
예를 들어 ESP32에서 센서 데이터를 얻은 후 데이터를 서버로 보내고 싶습니다! 토카
이번에는 위 그림과 같이 ESP32에서 펌웨어 Micropython으로 서버 인 Ubuntu18.04 (Apache2)에 HTTP POST로 데이터를 전송합니다.
ESP32
Micropython에는 HTTP 요청을위한 모듈이 있습니다.
그것이 urequests라는 모듈입니다.
또한 이번에는 데이터를 JSON 형식으로 전송하기 때문에 ujson 모듈도 사용합니다.
※또한 urequest와 ujson은 Python의 모듈인 requests와 json과 사용법은 거의 같습니다.
이하 소스 코드가 됩니다.
import urequests
import ujson
#送信先のURLの指定
url = 'http://xxx.xxx.xxx.xxx/test.php'
#データをDICT型で宣言
powerdata = {
"value" : "23.4",
"text" : "Hello World!"
}
#jsonデータで送信するという事を明示的に宣言
header = {
'Content-Type' : 'application/json'
}
#HTTPリクエストをPOSTとして送信
res = urequests.post(
url,
data = ujson.dumps(powerdata).encode("utf-8"),
headers = header
)
#サーバ側からのレスポンスを受け取って表示(jsonのデコードも一緒にしている)
print (res.json())
#終了
res.close()
코드의 의미는 코멘트 아웃으로 쓰여 있으므로 그쪽을 참조하십시오.
서버
수신측의 프로그램은 PHP를 사용해 써 갑니다.
미리 웹 서버 인 Apache2를 시작하십시오.
만약 PHP의 인스톨이 끝나지 않은 분은 하기 커멘드로 인스톨을 부탁합니다.
sudo apt install php7.4 libapache2-mod-php7.4
$ sudo systemctl start apache2
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2020-12-09 08:01:07 UTC; 1 day 21h ago
Process: 8442 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 1049 (apache2)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/apache2.service
├─1049 /usr/sbin/apache2 -k start
├─4001 /usr/sbin/apache2 -k start
├─8446 /usr/sbin/apache2 -k start
├─8447 /usr/sbin/apache2 -k start
├─8448 /usr/sbin/apache2 -k start
├─8449 /usr/sbin/apache2 -k start
└─8450 /usr/sbin/apache2 -k start
다음으로 PHP 파일을 작성합니다.
Apache2는/var/www/html/하위에 파일을 넣습니다.
test.php
<?php
//送られてきたPOSTデータを受け取って,JSONデータをデコードして$inに入れる.
$in = json_decode(stripslashes(file_get_contents('php://input')),true);
//送られてきたデータを取り出す
$value = $in["value"]; // = 23.4
$text = $in["text"]; // = Hello World!
//レスポンスを「Completed!」とし,それをJSONとして再度エンコード
//そして送信元(ESP32)へ返す.
echo json_encode("Completed!");
?>
코드의 의미는 마찬가지로 코멘트 아웃을 참조하십시오.
실행
ESP32에서 실행합니다.
>>> execfile("test.py")
["Completed!"]
실행을하고 Completed!라는 문자열이 돌아 오면 성공입니다.
끝
이번에는 HTTP POST를 사용하여 ESP32에서 서버로 데이터를 보냈습니다.
이를 적용하면 수신 한 데이터를 데이터베이스에 저장할 수 있습니다.
시간이 있으면 그 기사도 쓸 생각입니다.
Reference
이 문제에 관하여(ESP32에서 Micropython으로 HTTP 요청 (POST)으로 데이터를 전송하고 PHP (서버)로 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sirius1000/items/5a4d18a76ddf67a6839c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import urequests
import ujson
#送信先のURLの指定
url = 'http://xxx.xxx.xxx.xxx/test.php'
#データをDICT型で宣言
powerdata = {
"value" : "23.4",
"text" : "Hello World!"
}
#jsonデータで送信するという事を明示的に宣言
header = {
'Content-Type' : 'application/json'
}
#HTTPリクエストをPOSTとして送信
res = urequests.post(
url,
data = ujson.dumps(powerdata).encode("utf-8"),
headers = header
)
#サーバ側からのレスポンスを受け取って表示(jsonのデコードも一緒にしている)
print (res.json())
#終了
res.close()
수신측의 프로그램은 PHP를 사용해 써 갑니다.
미리 웹 서버 인 Apache2를 시작하십시오.
만약 PHP의 인스톨이 끝나지 않은 분은 하기 커멘드로 인스톨을 부탁합니다.
sudo apt install php7.4 libapache2-mod-php7.4
$ sudo systemctl start apache2
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2020-12-09 08:01:07 UTC; 1 day 21h ago
Process: 8442 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
Main PID: 1049 (apache2)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/apache2.service
├─1049 /usr/sbin/apache2 -k start
├─4001 /usr/sbin/apache2 -k start
├─8446 /usr/sbin/apache2 -k start
├─8447 /usr/sbin/apache2 -k start
├─8448 /usr/sbin/apache2 -k start
├─8449 /usr/sbin/apache2 -k start
└─8450 /usr/sbin/apache2 -k start
다음으로 PHP 파일을 작성합니다.
Apache2는/var/www/html/하위에 파일을 넣습니다.
test.php
<?php
//送られてきたPOSTデータを受け取って,JSONデータをデコードして$inに入れる.
$in = json_decode(stripslashes(file_get_contents('php://input')),true);
//送られてきたデータを取り出す
$value = $in["value"]; // = 23.4
$text = $in["text"]; // = Hello World!
//レスポンスを「Completed!」とし,それをJSONとして再度エンコード
//そして送信元(ESP32)へ返す.
echo json_encode("Completed!");
?>
코드의 의미는 마찬가지로 코멘트 아웃을 참조하십시오.
실행
ESP32에서 실행합니다.
>>> execfile("test.py")
["Completed!"]
실행을하고 Completed!라는 문자열이 돌아 오면 성공입니다.
끝
이번에는 HTTP POST를 사용하여 ESP32에서 서버로 데이터를 보냈습니다.
이를 적용하면 수신 한 데이터를 데이터베이스에 저장할 수 있습니다.
시간이 있으면 그 기사도 쓸 생각입니다.
Reference
이 문제에 관하여(ESP32에서 Micropython으로 HTTP 요청 (POST)으로 데이터를 전송하고 PHP (서버)로 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sirius1000/items/5a4d18a76ddf67a6839c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
>>> execfile("test.py")
["Completed!"]
이번에는 HTTP POST를 사용하여 ESP32에서 서버로 데이터를 보냈습니다.
이를 적용하면 수신 한 데이터를 데이터베이스에 저장할 수 있습니다.
시간이 있으면 그 기사도 쓸 생각입니다.
Reference
이 문제에 관하여(ESP32에서 Micropython으로 HTTP 요청 (POST)으로 데이터를 전송하고 PHP (서버)로 수신), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sirius1000/items/5a4d18a76ddf67a6839c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)