mosquitto-client + TLS로 Nifty Cloud IoT 디바이스 허브 API에 액세스

4201 단어 mqttNiftyCloud
제목대로 mosquitto-client + TLS에서 Nifty Cloud IoT 디바이스 허브의 API에 액세스해 보았습니다.

환경


  • Nifty Cloud Computing + Ubuntu 14.04 서버 (표준 이미지에서 생성)

  • 준비



    먼저 mosquitto-client를 설치합니다. 문서 에 쓰여진 명령을 시도하려면 ppa를 추가하여 새 버전을 설치해야 했습니다.
    (시행착오한 탓에 install/update/dist-upgrade의 순서가 이상합니다만, 용서해 주십시오.)
    # apt-get install -y mosquitto-client
    # apt-get install -y software-properties-common
    # apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
    # apt-get update
    # apt-get dist-upgrade -y
    

    mosquitto_pub/mosquitto_sub라는 명령을 사용할 수 있습니다.
    # mosquitto_pub --help | head -2
    mosquitto_pub is a simple mqtt client that will publish a message on a single topic and exit.
    mosquitto_pub version 1.4.10 running on libmosquitto 1.4.10.
    # mosquitto_sub --help | head -2
    mosquitto_sub is a simple mqtt client that will subscribe to a single topic and print all messages it receives.
    mosquitto_sub version 1.4.10 running on libmosquitto 1.4.10.
    

    그런 다음 IoT 장치 허브는 DigiCert SSL 인증서를 사용하므로 DigiCert 루트 CA 인증서를 다운로드하고 der 형식에서 mosquitto-client가 지원하는 pem 형식으로 변환합니다.
    # wget https://www.digicert.com/CACerts/DigiCertGlobalRootCA.crt
    # openssl x509 -in DigiCertGlobalRootCA.crt -inform der -out DigiCertGlobalRootCA.crt.pem
    

    여기까지 할 수 있으면 준비 완료입니다.

    이벤트 전송



    먼저 이벤트 전송을 시도합니다.
    명령줄에서 다음 명령을 실행합니다.
    (시험할 때는 ${DEVICE_ID}${DEVICE_API_KEY} 를 각자의 것으로 치환해 실행해 주세요.)
    # mosquitto_pub \
      -d \
      -V mqttv311 \
      -h iot-device.jp-east-1.mqtt.cloud.nifty.com \
      -p 8883 \
      --cafile DigiCertGlobalRootCA.crt.pem \
      -t /devices/${DEVICE_ID}/event \
      -m '{ "eventType": "test", "eventData": { "x": 123 } }' \
      -u ${DEVICE_ID} \
      -P ${DEVICE_API_KEY} \
      -q 1
    Client mosqpub/27898-e1iotstgc sending CONNECT
    Client mosqpub/27898-e1iotstgc received CONNACK
    Client mosqpub/27898-e1iotstgc sending PUBLISH (d0, q1, r0, m1, '/devices/${DEVICE_ID}/event', ... (50 bytes))
    Client mosqpub/27898-e1iotstgc received PUBACK (Mid: 1)
    Client mosqpub/27898-e1iotstgc sending DISCONNECT
    

    앱 시뮬레이터에서 이벤트가 전송되었음을 확인했습니다.



    명령 수신



    다음으로 명령 수신을 시도합니다.
    아래와 같은 명령을 실행하면, Subscribed 라고 표시되어 대기 상태가 됩니다.
    # mosquitto_sub \
      -d \
      -V mqttv311 \
      -h iot-device.jp-east-1.mqtt.cloud.nifty.com \
      -p 8883 \
      --cafile DigiCertGlobalRootCA.crt.pem \
      -t /devices/${DEVICE_ID}/command \
      -u ${DEVICE_ID} \
      -P ${DEVICE_API_KEY}
    Client mosqsub/27811-e1iotstgc sending CONNECT
    Client mosqsub/27811-e1iotstgc received CONNACK
    Client mosqsub/27811-e1iotstgc sending SUBSCRIBE (Mid: 1, Topic: /devices/${DEVICE_ID}/command, QoS: 0)
    Client mosqsub/27811-e1iotstgc received SUBACK
    Subscribed (mid: 1): 0
    

    그대로 두고 앱 시뮬레이터에서 기기로 명령을 보냅니다.



    대기 상태에 있던 mosquitto_sub 명령으로 돌아가면 아래와 같이 명령을 수신했음을 확인할 수있었습니다.
    Client mosqsub/27811-e1iotstgc received PUBLISH (d0, q0, r0, m0, '/devices/${DEVICE_ID}/command', ... (48 bytes))
    {"action":"test","parameters":{"hello":"world"}}
    

    요약



    mosquitto-client + TLS를 사용하여 Nifty Cloud IoT 디바이스 허브의 API에 액세스 할 수있었습니다.
    약간의 검증 등에 편리하므로, 좋으면 시험해 주세요.

    참고 자료


  • 클라우드 사용자 가이드(IoT 디바이스 허브: IoT 디바이스 허브에서 MQTT 사용) | Nifti Cloud
  • Using MQTT with MODE - MODE
  • 좋은 웹페이지 즐겨찾기