자유게시판

Pico W to MS Azure IOT HUB 연결 오류 수정
2022. 9. 2 (금) 12:14 E4DSLAB 조회 66 좋아요 3 스크랩 0 댓글 4

안녕하세요,

지난 수요일 라이브 때 PicoW의 MS Azure IOT Hub 연결이 안되던 문제는 
MS Azure IOT 설정에서,
리소스 그룹 이름과 IoT Hub 이름,  장치 이름을 예제의 원본 내용과 동일하게 설정하여 연결이 됐습니다.

리소스 그룹: picoresources
IoT HUb: picohub2
장치: picow

 

code:

hostname = 'picowhub2.azure-devices.net'
clientid = 'picow'
user_name = 'picowhub2.azure-devices.net/picow/?api-version=2021-04-12'
passw = 'SharedAccessSignature sr=picowhub2.azure-devices.net%2Fdevices%2Fpicow&sig=GfzRxafWG9l1D48KNuFWllUax%2Bvy3k51xuxEZMGPNn4%3D&se=1662091306'
topic_pub = b'devices/picow/messages/events/'
topic_msg = b'{"buttonpressed":"1"}'
port_no = 8883
subscribe_topic = "devices/picow/messages/devicebound/#"

Variable

Usage

hostname

IoT Hub의 공용 엔드포인트

 

clientid

IoT Hub 장치의 장치 ID

user_name

IoT Hub에 연결하기 위한 인증의 일부

passw

IoT Hub에 대한 인증을 위해 생성된 SAS 토큰

topic_pub

텔레메트리 메시지를 게시할 MQTT 토픽

topic_msg

IoT Hub에 보낼 MQTT 메시지

port_no

MQTT를 통해 IoT Hub와 통신하는 데 사용할 포트 번호입니다. 0은 SSL을 사용할 때 기본 MQTT 포트를 사용합니다.이 경우 8883입니다.

subscribe_topic

IoT Hub 대 디바이스(클라우드-디바이스)를 수신할 수 있는 MQTT 주제 messages

 

Azure IoT Explorer에서 생성한 SAS token connection string으로 부터 

Hostname, DeviceID,  passw 스트링을 추출하여 파이썬 코드에 입력하여 SAS 접속을 하면 됩니다.

** 접속 에러가 나는 경우 SAS 접속 스트링을 다시 생성하시고, 코드를 수정해 주시면 다시 접속이 가능합니다.


-

 

* 이제 라이브 때 참조한 Petecode의 포스팅의 'Step10' IOT HUB에 텔리메트리 데이터 보내기를 해볼 차례인데,

현재 배포된 'Azure IoT Explorer'의 버그인지 Telemetry 기능은 오류가 나고 있습니다.

Github repository에 질문을 올려 뒀으니 곧 해결된 버전이 올려질 거 같습니다.

 

 

하지만, Step11의 클라우드로 부터 장치로 메시지 수신은 잘 됩니다.

저는 코드를 약간 수정하여, 클라우드 메시지로 LED를 토글 하도록 했는데,

def callback_handler(topic, message_receive):
    print("Received message")
    print(message_receive)
    if message_receive.strip() == b'led_on':
        led.value(1)
    elif message_receive.strip() == b'led_toggle':
        led.toggle()

    else:
        led.value(0)

 

 

죄측의 메뉴에서 'Cloud-to-device message'를 클릭 하시고,

우측의 Message bodyd에 led_toggle 이라는 메시지를 입력 하신 후,

위의 

를 클릭 하시면, Pico W 제작 보드의 LED가 On/Off되는 걸 보실 수 있습니다.

자~! 이렇게 어제 라이브에서 함께 해보지 못한 부분을 올려드렸는데요. 
따라 해보시는 분들 중 잘 안되시는분들은 질문을 남겨 주시면 함께 답을 찾아 보도록 하겠습니다.

 

다음 주에는, 라이브가 아닌, 자료로 AWS IOT 연결 테스트 과정을 공유해드리겠습니다.

주말 잘 보내세요~~~!

 

 

 

 

에산(Esan) 2022.09.10 18:47 답글  |  신고
추석연휴 동안 엄청 고생하다가 장치 이름을 다른 분 제출본 보고 picow로 바꿔서 연결은 성공했는데, led_on은 되지만 Telemetry는 안 되어 거의 포기 상태로 QnA에 질문했는데, 지금에서야 이 글을 찾아서 써 주신 내용 대로 했더니 Telemetry도 잘 되었습니다. 고맙습니다. ^^
lucid0sky 2022.09.09 19:54 답글  |  신고
Azure IoT Explorer Version 0.14.12 까지는 Telemetry 기능이 되고, 13 이후 버전이 안되네요.
에산(Esan) 2022.09.10 18:49 신고
댓글
저는 14 버전으로 위 본문 대로 허브명, 리소스명, 장치명 등을 모두 맞춰 했더니 잘 되었습니다. 이 글을 안 보고 다른 분 제출본에서 장치명만 picow로 바꾸기만 했을 때는 Telemetry가 안 되었었습니다.
IRON 2022.09.08 07:52 답글  |  신고
감사합니다. 자료대로 따라해보니 Azure에서 예제대로 실행이 되네요.

로그인 후
참가 상태를 확인할 수 있습니다.