ESP32를 MQTT 브로커로 사용해 보았습니다.
소개
Mongoose 라는 web server용의 라이브러리를 사용해 ESP32를 브로커로 해 보았으므로, 그 정보 공유입니다. ※ESP-IDF로 개발하고 있습니다
앞으로 설명하는 절차는 궁극적으로 아래 그림과 같이 동작을 확인합니다.
ESP32( ESPr® Developer 32 사용)를 브로커로 실행하고 MQTT Box(PC 응용 프로그램)에서 보낸 {'hello':'world'}라는 문자열을 ESP32를 통해 다시 MQTT Box에서 받는 간단한 구성과 내용입니다.
※ESP32는 STA 모드로 동작시키고 있습니다
이 동작 확인에서는 MQTT Box를 Publisher(데이터 송신하는 사람)와 Subscriber(데이터를 수신하는 사람)로서 사용하고 있습니다만, 실제로는 ESP32를 Publisher나 Subscriber로 할 수 있습니다.
즉, ESP32만으로 MQTT 통신을 할 수 있다는 것입니다. 오, 뭐야?
사용한 것
절차
전제
이전에 작성한 mongoose 샘플 프로젝트 의 환경을 그대로 사용하는 것으로 합니다
이번은 그 프로젝트의 이하의 2파일(★)을 변경하는 것만으로 실현할 수 있습니다.
mongoose_example
┣ main
┃ ┗ main.c ★
┃
┣ components
┃ ┗ mongoose
┃ ┗ mongoose.h ★
:
1. main.c를 MQTT 브로커 코드로 변경
main.c를 이 코드 (github)의 내용으로 바꿉니다.
※다만, 코드중의 이하의 ①과 ②는 자신의 환경에 맞추어 변경할 필요가 있습니다.
①사용 환경의 WiFi 정보
#define WIFI_SSID "xxxxx"
#define WIFI_PASS "xxxxx"
②액세스처(ESP32)의 IP주소
IP4_ADDR(&ipInfo.ip, 192,168,99,3);
IP4_ADDR(&ipInfo.gw, 192,168,99,1);
2. mongoose 라이브러리에서 MQTT 브로커 활성화 (mongoose.h)
mongoose.h에서 다음과 같이 MG_ENABLE_MQTT_BROKER를 활성화 (1)합니다.
#ifndef MG_ENABLE_MQTT_BROKER
#define MG_ENABLE_MQTT_BROKER 1
#endif
3. 동작을 확인한다
프로그램을 빌드하고 ESP32에 쓰기 및 모니터 시작
$ make
$ make flash
$ make monitor
그런 다음 MQTT Box를 시작하고 ESP32에 연결한 후 Publish하면 데이터를 받을 수 있습니다.
MQTT Box의 구체적인 작동:
①MQTT의 설정※을 실시한 후에 「Connect」한다
② Subscribe
③Topic과 Payload 입력
④Publish하기
⑤ 보낸 데이터와 받은 데이터가 표시된다
※MQTT Box의 설정 내용:
한편, ESP32의 모니터상에서는 다음과 같은 표시가 나옵니다.
MQTT Box 조작에 따라 MG_EV_MQTT_XXX가 표시됩니다.
끝에
ESP32를 브로커로 만드는 것은 어렵다고 생각하면 Mongoose라는 라이브러리 덕분에 의외로 쉽게 실현할 수있었습니다.
그리고, 이 순서로 브로커로서 동작시키고 있는 ESP32는 STA 모드로 동작하고 있기 때문에, 지금 그대로는 무선 라우터가 필요하기 때문에, 조금 열심히 AP 모드로 하고 싶은 곳입니다. (필요하게 다가오지 않으면 아마 하지 않는 느낌이 든다)
보고 주셔서 감사합니다.
tnejk чoμ_〆(・ω・。)
업데이트 내역
mongoose_example
┣ main
┃ ┗ main.c ★
┃
┣ components
┃ ┗ mongoose
┃ ┗ mongoose.h ★
:
#define WIFI_SSID "xxxxx"
#define WIFI_PASS "xxxxx"
IP4_ADDR(&ipInfo.ip, 192,168,99,3);
IP4_ADDR(&ipInfo.gw, 192,168,99,1);
#ifndef MG_ENABLE_MQTT_BROKER
#define MG_ENABLE_MQTT_BROKER 1
#endif
$ make
$ make flash
$ make monitor
ESP32를 브로커로 만드는 것은 어렵다고 생각하면 Mongoose라는 라이브러리 덕분에 의외로 쉽게 실현할 수있었습니다.
그리고, 이 순서로 브로커로서 동작시키고 있는 ESP32는 STA 모드로 동작하고 있기 때문에, 지금 그대로는 무선 라우터가 필요하기 때문에, 조금 열심히 AP 모드로 하고 싶은 곳입니다. (필요하게 다가오지 않으면 아마 하지 않는 느낌이 든다)
보고 주셔서 감사합니다.
tnejk чoμ_〆(・ω・。)
업데이트 내역
Reference
이 문제에 관하여(ESP32를 MQTT 브로커로 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TwDaiki/items/2d2a370d9a416fc4a99b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)