Google Cloud IoT Core를 MQTT 및 Node.js에서 사용해 보세요.

4441 단어 mqttgcpPubSub

Google Cloud IoT Core?





CloudIotCore가 제공하는 기능은 비교적 간단합니다.
  • ProtocolBridige (MQTT To HTTP)
  • DeviceManagement

  • 두.
    서비스 측에서 클라이언트에 브로드 캐스트로 설정 변경을 알리는,
    클라이언트 측에서 MQTT를 이용하고 싶지만, Cloud Pub/Sub는 HTTP 밖에 서포트하고 있지 않기 때문에, 그러한 경우의 브리지적인 사용법이거나 같은 유스 케이스를 상정하고 있다.
    MQTT의 브로커로서의 역할도 물론 해내므로, 스스로 RabbitMQ라든가 브로커씨를 세워, 신세를 하지 않아도 된다.

    CloudIotCore부터는 먼저 Cloud Pub/Sub에서 좋아하는 것 같은 느낌일까.

    AWS IoT에서도 비슷한 일은 할 수 있다고 생각합니다만, BigQuery나 Cloud Pub/Sub와 같은 GCP내에서의 제휴 용도라면 GCP 완결할 수 없을까-라고 욕망의 경우는 이쪽이 좋은 생각 했기 때문에 만져 보았습니다.

    덧붙여서 β(2018년 1월 현재).

    이전 준비



    CLI를 사용하려면 GCP의 SDK 설치가 필요합니다.
  • install
  • # SDK install
    $ curl https://sdk.cloud.google.com | bash
    #ブラウザで認証する場合は以下、しない場合はGCPコンソールから秘密鍵のダウンロードと設定が必要
    $ gcloud auth application-default login
    # beta componentをinstall
    $ gcloud components install beta
    

    GCP에서 터미널 레지스트리 만들기





    원격 측정 및 기기 상태에 대해서는 별도로 Cloud Pub/Sub에서 주제를 만듭니다.

    클라이언트 설정 및 시도



    공식 샘플QuickStart 를 보면서.

    우선 편하게 PC에서 js로 테스트할 수 있도록 해본다.

    클라이언트 샘플 clone


    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
    

    종속 패키지 install


    cd nodejs-docs-samples/iot/mqtt_example/
    npm install
    

    공개 키와 개인 키를 OpenSSL로 생성


     openssl req -x509 -newkey rsa:2048 -keyout rsa_private.pem -nodes \
        -out rsa_cert.pem -subj "/CN=unused"
    

    콘솔에서 방금 만든 장치 레지스트리에 기기 등록



    단말 ID는 임의.
    공개키는 RSA256-X509를 선택해, 방금 작성한 공개키를 붙여 주세요.



    레지스트리를 만들 때 지정한 주제 구독


    gcloud beta pubsub subscriptions create \
        projects/PROJECT_ID/subscriptions/your-subscription-name \
        --topic=projects/PROJECT_ID/topics/your-telemetry-topic
    
  • PROJECT_ID를 자신의 프로젝트로 바꾸십시오.
  • subscription 이름은 선호하며 이전에 장치 레지스트리에 설정한 topic을 참조하도록 합니다.

  • 주제에 메시지 게시


    node cloudiot_mqtt_example_nodejs.js \
        --projectId=my-proj \
        --registryId=my-device-registry \
        --deviceId=my-test-device \
        --numMessages=10 \
        --privateKeyFile=rsa_private.pem \
        --algorithm=RS256 \
        --cloudRegion=asia-east1
    
  • projectId는 자신의 프로젝트로 대체됩니다
  • registryId,deviceId는 이전에 등록한 것으로 대체.

  • 메시지가 도착했는지 확인


    gcloud beta pubsub subscriptions pull --auto-ack \
        projects/PROJECT_ID/subscriptions/your-telemetry-topic
    
    ┌──────────────────────────────────────────────┬────────────────┬───────────────────────────────────┐
    │                     DATA                     │   MESSAGE_ID   │             ATTRIBUTES            │
    ├──────────────────────────────────────────────┼────────────────┼───────────────────────────────────┤
    │ xxxxxxxxxxxxx/xxxxxxxxxxxxx-device-payload-3 │ 22232850207119 │ deviceId=xxxxxxxxxxxxxxxxxxxx     │
    │                                              │                │ deviceNumId=3155016929003157      │
    │                                              │                │ deviceRegistryId=xxxxxxxx-test    │
    │                                              │                │ deviceRegistryLocation=asia-east1 │
    │                                              │                │ projectId=xxxxxxxxx               │
    │                                              │                │ subFolder=                        │
    └──────────────────────────────────────────────┴────────────────┴───────────────────────────────────┘
    

    좋은 웹페이지 즐겨찾기