Azure IoT Hub의 REST API를 사용하여 M5ATOM Lite에서 데이터를 보내는 방법



소개



Azure IoT Hub에 M5ATOM Lite에서 데이터를 보내는 메모입니다.
IoT Hub의 REST API를 활용합니다.

소스 코드는 GitHub에 게시됩니다.
htps : // 기주 b. 이 m / t Mitsuoka 0423 / m5s CK-Azurei-Thh tp-po st

Azure IoT Hub 주변 작업



Azure IoT Hub 배포



공식 빠른 시작 을 참고로 IoT Hub의 인스턴스를 작성합니다.
  • 스케일은 F1 를 선택. (무료 버전)

  • Azure IoT Hub REST API 엔드포인트의 루트 인증서 얻기



    ESP32에서 HTTPS 통신을 수행하는 경우 루트 인증서를 지정해야합니다.

    이 기사( Arduino – ESP32 WiFiClientSecure 라이브러리에서 안정적으로 https (SSL) 기사를 GET하는 방법 )를 참고로 하여 루트 증명서를 취득합니다.
    https://<Iot Hubの名前>.azure-devices.net/를 Chrome에서 열어 인증서를 얻습니다.
    (실제로 열면 Bad Request가 됩니다만, 루트 증명서를 취하는 것만이므로 문제 없음)

    IoT 기기 등록



    Azure IoT Hub 콘솔을 열고 IoTデバイス > 新規에서 장치를 등록합니다.

    장치 ID는 원하는 값을 지정하고 다른 것은 변경 없이 OK입니다.


    M5ATOM Lite 프로그램



    샘플 코드



    상기 (M5ATOM Lite에서 HTTP POST하는 간단한 샘플 코드) 에서 만든 코드를 변경합니다.test 라는 문자열을 보냅니다.
    arduino-esp32HTTPClient.h 를 보면 begin 메서드에 URLルート証明書 를 전달하면 좋을 것 같습니다.

    htps : // 기주 b. 이 m / e sp ret f / ar zue-e sp 32 / bb b / t d513df124bd39736 96c2b03b23d48b t. h#L160
    bool begin(String url, const char* CAcert);
    

    코드는 다음과 같습니다.
    #define FASTLED_INTERNAL
    
    #include <M5Atom.h>
    #include <WiFi.h>
    #include <HTTPClient.h>
    
    const char* ssid = "YOUR_WIFI_SSID";
    const char* password = "YOUR_WIFI_PASSWORD";
    
    const char *url = "https://<IoT Hubの名前>.azure-devices.net/devices/<デバイスID>/messages/events?api-version=2018-06-30";
    const char* azure_iot_hub_root_ca =
        "-----BEGIN CERTIFICATE-----\n" \
        "MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ\n" \
        "RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD\n" \
        "VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX\n" \
        "DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y\n" \
        "ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy\n" \
        "VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr\n" \
        "mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr\n" \
        "IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK\n" \
        "mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu\n" \
        "XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy\n" \
        "dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye\n" \
        "jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1\n" \
        "BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3\n" \
        "DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92\n" \
        "9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx\n" \
        "jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0\n" \
        "Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz\n" \
        "ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS\n" \
        "R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp\n" \
        "-----END CERTIFICATE-----\n";
    
    const char *sasToken = "SharedAccessSignature sr=xxxxxxxxxx&sig=xxxxxxxxxxxxxxxx&se=xxxxxxxxxxxxxxx&skn=xxxxxxxxxxxxxxxxxx";
    
    void post() {
      HTTPClient http;
      http.begin(url, azure_iot_hub_root_ca);
      http.addHeader("Content-Type", "application/json");
      http.addHeader("Authorization", sasToken);
      http.POST("test");
      Serial.println(http.getString());
      http.end();
    }
    
    void setup() {
      M5.begin();
      Serial.begin(115200);
    
      Serial.print("WiFi connecting.");
      WiFi.begin(ssid, password);
      while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(100);
      }
    
      post();
    }
    
    void loop() { /* 起動時のみ送信するため、ループでは何もしない。*/ }
    

    실제로 사용하는 경우 WiFi 설정과 Azure 매개 변수를 설정하십시오.
    Azure 매개 변수에 대한 자세한 내용은 다음과 같습니다.


    이름
    내용
    비고


    url
    Azure IoT Hub REST API URL
    생성한 IoT Hub 인스턴스의 이름과 등록한 디바이스 ID를 지정

    sasToken
    SAS 토큰

    SAS 토큰 발급 에서 발행 가능


    동작 확인



    공식 샘플 코드 을 사용하여 수신되었는지 확인합니다.

    샘플 코드를 다운로드한 후 Node.js에서 Azure IoT Hub에 원격 분석 전송 샘플 코드 이동 메모/전송된 데이터 수신의 단계에 따라 프로그램을 실행합니다.

    //TODO 이미지

    요약



    M5ATOM Lite에서 Azure IoT Hub의 REST API를 사용하여 데이터를 전송했습니다.
    HTTP POST로 보내면 비교적 간단한 코드로 보낼 수있었습니다.

    이번, SAS 토큰은 PC로 발행하고 나서 M5ATOM Lite에 기입하고 있으므로, 시간이 지나면 기한이 끊겨 버립니다.
    마이크로 컴퓨터에서 SAS 토큰을 발행하는 방법도 살펴 보겠습니다.

    좋은 웹페이지 즐겨찾기