-
MQTT 쌍따옴표 이슈 해결MQTT 2026. 6. 26. 16:27
https://codezoo.tistory.com/133
[Part2] Arduino FreeRTOS로 CZ-ME310G1모뎀 MQTT Example 실시간 처리하기
시작하기 전에, UNO R4 보드(R4 Minima, R4 WiFi, NANO R4)로 Arduino FreeRTOS로 코드를 만들 때 태스크 스택 사이즈를 잘못 지정하거나 FreeRTOS에서 사용하는 메모리사이즈가 지정된 HeapSize를 넘어가서 Stack과
codezoo.tistory.com
올린 글과 관련된 내용입니다.

MQTT Publish를 위해 사용하는 AT#MQPUBS 명령어를 사용해서 전송하는 문자열에 ", \" 문자가 들어있을 경우 ERROR가 발생해서 전송이 되지 않는 문제가 있습니다. 이전 글에서 위 내용과 같이 쌍따옴표(") 대신 홑따옴표(')를 사용하라고 안내드렸습니다. 하지만 이렇게 보낼 경우 JSON포맷을 해석하기 위해 서버에서 해당 케이스 변환작업을 매번 해야 해서 번거롭습니다.
AT#MQPUBS 명령어는 아래와 같이 사용합니다.

AT#MQPUBS=1,myTopic,0,0,myMessage
OKTelit ME310G1-W3 모듈에서 MQTT Publish를 기능을 수행하는 명령어가 한가지 더 있습니다.
AT#MQPUBSEXT 명령어 인데, 메시지를 즉시 보내지 않고 보낼 메시지의 길이를 먼저 보낸 후 >>> 응답을 받으면 메시지 길이만
큼 데이터를 넣어주는 명령입니다. 그런데 이 명령의 경우 따옴표를 넣어도 ERROR가 발생하지 않고 정상전송이 가능했습니다.

Publish 7 byte message
AT#MQPUBSEXT=1,myTopic,0,0,7
>>>
"hello" 입력
OK동작이 확인되어 아래와 같은 작업을 진행했습니다.
1. 아두이노 라이브러리 변경
mqtt_publish함수에서 AT#MQPUBS 명령어로 구현된 내용을 AT#MQPUBSEXT 명령어로 변경해서 다시 구현했습니다.

2. MQTT Publish 할 때 쌍따옴표로 출력하도록 수정했습니다.
기존 : sprintf(jsonBuf, "{'temp':%.1f,'hum':%.1f}", data[0], data[1]);
변경 : sprintf(jsonBuf, "{\"temp\":%.1f,\"hum\":%.1f}", data[0], data[1]);변경한 라이브러리와 example은 ME310G1 라이브러리 0.1.12 버전부터 사용하실 수 있습니다. 이전버전이면 UPDATE 하세요.

라이브러리가 준비되면 아래와 같이 example을 실행합니다.

시리얼모니터 동작로그입니다.
AT
AT
AT
AT
AT$GPSP=1
AT$GPSP=0
[INIT] Disconnecting Leftover MQTT Sessions...
AT#MQDISC=1
AT#MQEN=1,0
AT#SGACT=1,0,"",""
AT+CMEE=2
AT+CPIN?
AT+CGDCONT=1,"IP","simplio.apn"
AT+CGDCONT?
AT+CGREG?
AT#SGACT=1,1
AT#MQEN?
AT#MQEN=1,1
AT#MQEN?
AT#MQCFG=1,"broker.emqx.io",1883,1,0
AT#MQCONN=1,"czme310g1001","",""
AT#MQSUB=1,"czme310/topic/get"
AT#MQPUBSEXT=1,"czme310/topic/put",1,0,18
Connected smoothly
>>> MQTT Setup Complete. Streaming Listening Loop Running...
[SYSTEM] Command Task Unlocked via Semaphore.
Current Free Heap: 312
-------------------------------------
[URC DETECTED] #MQRING: 1,1,czme310/topic/get,10
[INFO] MQTT Instance : 1
[INFO] Message ID : 1
-------------------------------------
1234567890
[MQTT] Status Report Sent.
Current Free Heap: 312MQTT Explorer에서 CZ-ME310G1으로 부터 받은 메시지입니다.
라이브러리 수정 후 쌍따옴표 처리가 제대로 된 것을 확인할 수 있습니다.


LTE-CATM1 내장형 모뎀 대량 구매 상담, 외주 개발, 협업 문의, vodafone IoT유심 문의
(주)코드주
장병남 대표 010-8965-1323 rooney.jang@codezoo.co.kr코드주 LTE-CatM1 내장형 모뎀 CZ-ME310G1 / GNSS(GPS) 지원 / 외장 LTE 안테나 포함 / Zephyr 및 Arduino 지원
메카솔루션 공식 쇼핑몰
www.mechasolution.com
iot유심 : codezoo
[codezoo] IoT Global SIM, IoT Connectivity, IoT Device
smartstore.naver.com
CodeZoo LTE-CatM1 전용 아두이노 브레이크아웃 쉴드
메카솔루션 공식 쇼핑몰
mechasolution.com
iot유심 : codezoo [codezoo] IoT 글로벌 SIM, IoT Connectivity, IoT 디바이스 smartstore.naver.com'MQTT' 카테고리의 다른 글
[Part2] Arduino FreeRTOS로 CZ-ME310G1모뎀 MQTT Example 실시간 처리하기 (0) 2026.06.20 Arduino FreeRTOS로 CZ-ME310G1모뎀 MQTT Example 실시간 처리하기 (0) 2026.06.15 HiveMQ TLS MQTT를 Type1SC AT커맨드로 연결하기 (2) 2025.06.10 hivemq.com broker에 접속이 안되요 (1) 2025.04.29 아두이노에서 실시간으로 MQTT 메시지를 받을수 있을까요? (0) 2025.02.02