[WizFi310] MQTT 사용 관련 문의입니다.


#1

안녕하세요,

Microsoft Azure와 연결하기 위해서 MQTT 프로토콜을 사용하고 있는데요,

현재 AT 커맨드를 통해 Wifi 연결은 한 상태입니다.

문제는 at+mqttcon 에서 발생하는 것 같습니다.

아래는 시리얼 통신 내용입니다.

아래 결과와 같이 CONNECT 되자마자 DISCONNECT 가 바로 출력됩니다. 그리고 계속 CONNECT 와 DISCONNECT가 반복됩니다.

어떤 경우에 이와같은 현상이 일어나는지 확인할 길이 어려워 도움 요청드립니다.

코드 중에 어떤 경우에 CONNECT 와 DISCONNECT가 반복되는지 봐주셨으면 합니다.

이상입니다.
감사합니다.

임정세 드림.

============**=============

WizFi310 Version 1.0.3.3 (WIZnet Co.Ltd)
at+wset=0,rnd
[OK]
at+wsec=0,wpa2,greengreen
[OK]
at+wnet=1
[OK]
at+wjoin
[Link-Up Event]
IP Addr : ~~~~~~
Gateway : ~~~~~~
[OK]
at+mqttset=PVT-HUB.azure-devices.net/Wizmega_test/api-version=2016-11-14,SharedAccessSignature sr=PVT-HUB.azure-devices.net%2Fdevices%2FWizmega_test&sig=K5fydK0YBW1b6AYzBfinEUbd8gdGKTWY5QK0Rs2kPMg%3D&se=153544470
[OK]
at+sdname=PVT-HUB.azure-devices.n~(신규회원은링크가2개를넘을수없어 링크안되게 수정하였습니다.)
[OK]
at+mqttcon=1,0.0.0.0,8883,1
[MQTT CONNECT]
[OK]
[MQTT DISCONNECT]

============**=============


#2

안녕하세요

로그를 보니, 해당 연결은 Azure에서 MQTT 연결을 끊고 있는 것으로 보입니다.

원인은, User name, password, Client ID와 같은 인증 관련 정보들이 틀린 것 같습니다.
위 내용이 맞는지 확인 부탁드립니다.

위에 입력해주신 내용으로 보아, username은 PVT-HUB.azure-devices.net/Wizmega_test/api-version=2016-11-14
password는 SharedAccessSignature sr=PVT-HUB.azure-devices.net%2Fdevices%2FWizmega_test&sig=K5fydK0YBW1b6AYzBfinEUbd8gdGKTWY5QK0Rs2kPMg%3D&se=153544470 인것으로 보이는데, Client ID가 입력되지 않았습니다.


Question, about MQTT protocol
[WizFi310] MQTT 관련 AT 커맨드 사용 문의
#3

안녕하세요, 답변 감사드립니다.

ClientID는 Wizmega_test로 Azure에서 확인되는 DeviceID를 넣었습니다. username과 password(DeviceExplorer의 SAS 토큰 생성)도 규칙에 맞게 넣었습니다.
AliveTime은 60, 100, 200, 1000 등 다양하게 시도해 보았습니다.

at+mqttset=PVT-HUB.azure-devices.net/Wizmega_test/api-version=2016-11-14,SharedAccessSignature sr=PVT-HUB.azure-devices.net%2Fdevices%2FWizmega_test&sig=KubreBcTmG5lntt414SeO8IbGi4lfiU8j0pKv%2Bf1HZU%3D&se=1535585475,Wizmega_test,60

그러나 마찬가지 현상을 보이는 것 같습니다.
지금 이 문제가 Azure 측의 문제인지, 사용 미숙이 문제인지, Device의 문제인지 파악이 어려운 것 같습니다.
도움주시면 감사하겠습니다.

이상입니다.
감사합니다.

임정세 드림.


#5

안녕하세요

위에 작성해주신 mqtt 정보를 바탕으로 mqtt 테스트 툴인 mqtt.fx로 테스트 해보았습니다.

그 결과, mqtt.fx 툴로도 azure mqtt에 접속하지 못하는 것으로 확인되었습니다…

username, password, client id가 맞다면, broker가 접속 가능한 상태인지도 확인부탁드립니다.

<테스트 방법>



#6

안녕하세요, 답변 감사드립니다.

제가 해당 툴을 다운받아 설치하고 테스트 해 본 결과,

Connecting에 성공하였습니다.

아마 제가 이전에 올린 설정과 지금 상태에 변화가 있어 그런 듯 합니다.

올려주신 설정 중에 다른 부분만 알려드리겠습니다.

Client ID = Wizmega
User Name = PVT-HUB.azure-devices.net/Wizmega/api-version=2016-11-14
Password = SharedAccessSignature sr=PVT-HUB.azure-devices.net%2Fdevices%2FWizmega&sig=WQL0MIjpSRN%2BEQpMiS%2BkWtaBTm8kwOe3RNSiXr5ufaw%3D&se=1535590433

입니다.

위의 설정으로 테스트 해보신 뒤 피드백 주시기 바랍니다.
MQTT.fx 툴로 connecting에 성공했다면 이 문제를 어떻게 이해해야 할까요 ?


#7

안녕하세요,
Azure에 IoT Hub 작업 모니터링 이라는 게 있는 것 같습니다.
Node.js를 설치하고 해당 프로그램을 설치하여 실행하고 로그인 하니 다음과 같은 것들이 올라옵니다.

ip를보면 Wizmega_test 는 제가 처음에 알려드렸던 정보로 wiznet사에서 접속을 시도하시는 것 같고,
제가 방금 디바이스ID를 하나 만들어서 시도하는 것이 Wizfi310_test 입니다.
두 디바이스 모두 접속을 못하고 있는 상태인 것 같습니다.

하지만 mqtt.fx로는 접속에 성공하는 것을 봤을 때 차이점을 찾아보니,
나머지는 모두 같은것 같은데 Wizfi310 디바이스 측에서는 mqtt.fx와 달리 SSL/TLS에 관한 설정은 없는 것 같습니다.
혹시 mqtt.fx의 Enable SSL/TLS 체크 박스, 혹은 Protocol이 TLS인지, SSL인지, 버전이 몇인지에 따라 상관이 있는걸까요?
그렇다면 Wizfi310에 퓨징되어있는 MQTT 프로토콜은 SSL.TLS와 관련한 버전이 무엇인지 궁금합니다.

그리고 위의 사진에서 보면 status 에 IoTHubUnauthorized 에 관련된 에러인것 같아서 이쪽이 더 의심이 가는 것 같습니다.
답변 부탁드립니다.

감사합니다.


#8

안녕하세요,

MS에 문의해보니,

=================**==============

아래의 내용을 보면, 401 에러는 token 이 뭔가 잘못된 것으로 나옵니다. Expired 가 될 수도 있고, URI 나 method 가 잘못될 수 있다고 하니, 다시 생성을 받거나 사용법이 맞는지 확인이 필요해 보입니다.
https://docs.microsoft.com/en-us/rest/api/iothub/common-error-codes
401
The authorization token cannot be validated; for example, it is expired or does not apply to the request’s URI and/or method.
401 Unauthorized

*참조


=================**==============

식으로 답변을 받았습니다.
그냥 봐서는 크게 잘못된 부분은 아직 못 찾았습니다.

제가 예전에 Wizfi310의 password부분을 입력받는 버퍼가 부족하여 device가 리셋되는 현상이 있으니 length를 늘려달라고 요청드렸고 그렇게 적용해 주셔서 버전 1.0.3.3에는 적용이 되었습니다.
지금 wifi에 접속된 뒤로는 at+mqttset과 at+mqttcon 이라는 명령으로 azure iot hub에 접속을 시도하고 있는데요,
혹시 at+mqttset 하는 부분에서 메모리에 들어가서 [OK]는 받았지만 at+mqttcon을 할 때 Azure로 온전히 전송되지 않는 부분이 있는 것은 아닐까요?

확인해 주시면 감사하겠습니다.

이상입니다.
감사합니다.


#9

안녕하세요,

이전 글에서 device 에서 Azure로 송신하는 부분에서 문제가 발생하는 것 같다고 말씀드렸습니다.
확인해 볼 방법이 있을까 고민하다가 서버 측을 쉽게 모니터링 할 수 있는 HiveMQ를 이용해 보았습니다.

사진을 보시면 토픽은 winet/wizfi310 으로 들어왔고
메시지에 at+mqttset 명령을 그대로 실어서 보내봤습니다.
이렇게 해보니 원래 at+mqttset=~ 명령은 총 269byte쯤 됩니다.

at+mqttset=PVT-HUB.azure-devices.net/Wizfi310_test/api-version=2016-11-14,SharedAccessSignature sr=PVT-HUB.azure-devices.net%2Fdevices%2FWizfi310_test%2Fapi-version%3D2016-11-14&sig=%2FwXDi5%2BW%2FKshGhubqZDNnzApOtSY7MQ%2B3gajvx%2Bnwj4%3D&se=1504941876,Wizfi310_test,60

하지만 송신된 명령 전체 byte는 250byte만 전송된 것을 확인할 수 있습니다.
제 생각에 프로그램이 250byte로 한정해 놓고 있는 것 같습니다.
혹시 전송되는 byte를 조금 늘리는 방향으로 wizfi310 펌웨어를 업데이트 해주실수 있으신지요.
이렇게 바뀌게 된다면 Azure 사용자도 Wizfi310으로 제품개발을 할 수 있을 것입니다.

검토 부탁드립니다.
감사합니다.


#10

안녕하세요,

제가 가지고 있는 솔내시스템사의 PHPoC-Blue 라는 다른 디바이스는 현재 Iot hub에 접속이 되는 장치입니다.
이 장치의 password 부분을 일부러 몇개의 문자를 추가해서 다르게 설정했더니

다음과 같이 iothub 모니터링에서 Wizmega에서 발생했던 오류와 동일한 오류메시지가 나왔습니다.

아마도 wizfi310의 tcp로 송수신하는 버퍼 사이즈가 azure password의 토큰 사이즈를 커버 못하는 게 아닐까 싶습니다.
또는 ssl 인증을 위한 수신 버퍼 사이즈가 부족할 수 도 있을 것 같습니다.

확인부탁 드립니다.
감사합니다.


#11

안녕하세요!!

우선, 저희 제품을 사용하여 주셔서 정말 감사합니다.

문의 주신 부분에 대해서 환경 구성과 테스트가 추가적으로 필요할 것 같습니다.

내일 중으로 환경 구성과 테스트를 완료하여 답변 드리도록하겠습니다.

감사합니다.


#12

안녕하세요,

말씀해주신 부분 체크 하여 답변 드립니다!

WizFi310 AT 커맨드 버퍼 및 MQTT 버퍼에서 Azure password 일부가 짤리는 현상을 발견하여 AT 커맨드 및 MQTT 버퍼 사이즈를 크게하였습니다.

이와 비슷한 문제로 데이터를 주고 받을 때 사용되는 Azure 토큰을 담는 버퍼 사이즈도 수정하였습니다.

메일 주소 기재해 주시면, 수정된 펌웨어 보내드리도록 하겠습니다.

감사합니다 !:slight_smile:


#13

안녕하세요,

찾아주시고 수정해주셔서 감사드립니다.

jeongsae@janghan.co.kr 입니다.

감사합니다.


#14

안녕하세요,

저희 제품을 활용해 주셔서 감사합니다 :slight_smile:

수정된 펌웨어 전달 드렸습니다.

감사합니다.


#15

Azure 토큰을 담는 버퍼 사이즈는 1500byte로 수정 된 건가요 ?