mosquitto-client + TLS로 Nifty Cloud IoT 디바이스 허브 API에 액세스
4201 단어 mqttNiftyCloud
환경
준비
먼저
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에 액세스 할 수있었습니다.
약간의 검증 등에 편리하므로, 좋으면 시험해 주세요.
참고 자료
Reference
이 문제에 관하여(mosquitto-client + TLS로 Nifty Cloud IoT 디바이스 허브 API에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tily/items/2d1b7e7abf0c2061ce5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)