Azure IoT Hub에 HTTP POST로 메시지 보내기 참고

소개


HTTP POST에서 Azure IoT Hub에 메시지를 보내는 메모입니다.

Node.js & MQTT 메모는 Node.js에서 Azure IoT Hub에 원격 분석을 보내는 샘플 코드를 이동하는 메모에 요약되어 있습니다.
공식 문서는 여기 : IoT Hub REST .
원하는 정보가 전혀 발견되지 않았기 때문에, 아래의 기사도 참고로 했습니다.

  • Azure IoT Hub를 원시 MQTTS (mosquitto) 및 HTTP REST에서 사용하는 방법 ( @ma2shita 씨)
  • HTTP REST API로 Azure IoT Hub에 메시지 보내기(C#)

  • (2021/02/11 추가)
    참조를 찾았습니다.
    기기에서 메시지 보내기(https://docs.microsoft.com/ko-kr/rest/api/iothub/device/senddeviceevent)

    준비



  • 절차 을 참고하여 IoT Hub를 배포한다. (스케일은 F1 선택.)

  • HTTP POST로 메시지 보내기


    URL

    https://{IOT_HUB_NAME}.azure-devices.net/devices/{DEVICE_ID}/messages/events?api-version=2018-06-30
    품목
    내용
    비고

    IOT_HUB_NAMEAzure IoT Hub의 이름
    サイドバー > プロパティ > 名前DEVICE_ID기기 ID
    サイドバー > IoTデバイス > デバイス一覧 > デバイスID


    제 경우에는 다음과 같습니다.https://azure-iot-m5atom-lite-sample.azure-devices.net/devices/http-rest-client-1/messages/events?api-version=2018-06-30

    HTTP 헤더에 SAS 토큰 설정


    IoT Hub에 대한 액세스 제어 에 SAS 토큰의 발행 방법이 써 있습니다.
    이번에는 Azure CLI를 사용해 보겠습니다.

    Azure CLI 설치


    Azure Command-Line Interface (CLI) documentation 에서 Azure CLI를 설치합니다.
    설치가 끝나면 터미널에서 az 명령을 실행해 봅시다.
    아래와 같이 표시되면 OK입니다.
    $az
    
    Welcome to Azure CLI!
    ---------------------
    Use `az -h` to see available commands or go to https://aka.ms/cli.
    
    Telemetry
    ---------
    The Azure CLI collects usage data in order to improve your experience.
    The data is anonymous and does not include commandline argument values.
    The data is collected by Microsoft.
    
    You can change your telemetry settings with `az configure`.
    
    
         /\
        /  \    _____   _ _  ___ _
       / /\ \  |_  / | | | \'__/ _\
      / ____ \  / /| |_| | | |  __/
     /_/    \_\/___|\__,_|_|  \___|
    
    ()
    
    잊지 마세요, Azure CLI에서도 로그인합니다.
    $ az login
    

    SAS 토큰 발급


    터미널에서 다음 명령을 실행합니다.
    $ az iot hub generate-sas-token --hub-name {IOT_HUB_NAME}
    
    제 경우에는 이렇게 됩니다.
    $ az iot hub generate-sas-token --hub-name azure-iot-m5atom-lite-sample
    
    실행할 때 SAS 토큰이 발행되었습니다.
    {
      "sas": "SharedAccessSignature sr=azure-iot-m5atom-lite-sample.azure-devices.net&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&se=xxxxxxxxxxxxxxx&skn=iothubowner"
    }
    
    여기를 HTTP 헤더 Authorization로 설정합니다.

    POST하기


    CURL에서는 이런 느낌의 요청이 됩니다.
    curl -i -X POST \
       -H "Content-Type:application/json" \
       -H "Authorization:SharedAccessSignature sr=azure-iot-m5atom-lite-sample.azure-devices.net&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&se=xxxxxxxxxxxxxxx&skn=iothubowner" \
       -d '"test"' \
     'https://azure-iot-m5atom-lite-sample.azure-devices.net/devices/http-rest-client-1/messages/events?api-version=2018-06-30'
    
    동작 확인합니다.
    위의 일 에서 작성한 Node.js의 수신 프로그램을 이동해, 제대로 수신할 수 있는지 확인합니다.

    메시지를 보낼 때마다받을 수 있습니다.

    요약


    Azure IoT Hub에 HTTP POST로 메시지를 보낼 수 있습니다.
    공식 문서가 읽기 어려워서 조금 헤매었습니다.
    메시지를 보내는 방법으로서 MQTT와 HTTP POST는 장점 단점이 있을 것 같습니다만, 잘 검토해 사용해 나가려고 생각합니다.

    좋은 웹페이지 즐겨찾기