IoT core 말고 ec2로도 iot 디바이스와 연결할 수 있게 구성해보려 한다.. 나자신 화이팅!

먼저 디바이스와 통신할 수 있는 프로토콜에 대해 먼저 알아보자.(더보기 클릭)

 

더보기

IoT 통신 프로토콜

  • Bluetooth: 스마트 기기와 페어링하기 위한 웨어러블 기술 제공
  •  WiFi: 많은 양의 데이터를 제어하는 능력과 빠른 데이터 전송 속도(과도한 전력 소모가 단점)
  • ZigBee: 블루투스와 비슷, 산업체를 위해 설계된 느낌, 
  • MQTT IoT: Message Queue Telemety Transport, 원격지에서 모니터링하는 곳, TCP
  • CoAP: Constrained Application Protocol, 제한된 스마트 장치를 위해, HTTP
  • DDS: 고성능의 확장 가능한 실시간 M2M 통신을 위한 표준, 실시간 분산 애플리케이션
  • NFC: 안전한 양방향 통신 연결, 비접촉식 결제 거래
  • Cellular: 더 먼 거리에서 작동해야하는 느낌, 많은 비용과 높은 전력 소비
  • AMQP: 응용 프로그램 계층 프로토콜, Exchange / Message Queue / Binding
  • LoRaWAN: 장거리 광역 네트워크, IoT 프로토콜 광역 네트워크용
  • RFID: 무선 주파수 식별
  • Z-wave: IoT 프로토콜 저전력 RF, 무선 주파수 통신, 주로 홈 자동화 응용 프로그램에 사용
  • Sigfox: Cellular 및 WiFi 속성을 모두 포함
  • 실: 가장 최근의 IoT 프로토콜 중 하나, 홈 자동화 앱에서 사용, IPv6
  • EnOcean: 무선 감지 및 에너지 수확 플랫폼, 다양한 상황에서 응답이 필요할 때

 


AWS IoT Core가 제공하는 디바이스 통신 프로토콜은 MQTT HTTPS 이다.

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/protocols.html

 

메시지를 게시하고 구독하기 위한 MQTT / MQTT over WebSocket(WSS) 프로토콜,

메시지를 게시하기 위한 HTTPS 프로토콜을 사용하는 디바이스 및 클라이언트를 지원!

 

MQTT

  • 제약된 디바이스를 위해 설계된 경량의 메시징 프로토콜
  • clientId로 식별되는 디바이스 연결을 지원
  • AWS IoT Device SDK 지원(디바이스를 AWS IoT에 연결할 때 권장되는 방법)
    • 만약 SDK 사용 안하면, 필요한 연결과 통신 보안을 제공하면 됨
  • MQTT QoS level 0과 1만 지원(QoS level 2의 게시 또는 구독 지원 안함..)
    • QoS level 0: 신뢰할 수 있는 통신 링크를 통해 전송되거나 누락되어도 문제 없는 메시지에 이용
    • QoS level 1: 전송한 사람이 PUBACK 응답을 수신해 성공적인 전달을 나타낼 때까지는 완료 안한 것

https://www.hardcopyworld.com/?p=3369

HTTPS

  • HTTP 1.0 또는 1.1 사용해 REST API에 요청하여 메시지 게시 가능
  • clientId 값 지원 안함
  • 클라이언트별 엔드포인트 및 주제별 URL에 대한 POST 요청을 함으로서 메시지를 게시
    • https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1"
    • IoT_data_endpoint: AWS IoT 디바이스 데이터 엔드포인트
    • url_encoded_topic_name: 전송되는 메시지의 전체 topic name

EC2에 MQTT를 올리는 작업을 해보자.

참고로 MQTT 브로커 프로그램에는 ActiveMQ, Apollo, IBM Message, Sight, RabbitMQ, Mosquitto 등이 자주 사용됨.

실습에는 Mosquitto를 사용할 예정!

( https://github.com/mqtt/mqtt.org/wiki/server-support : 브로커 특징 비교 자료)

 

  • EC2에 mosquitto 설치
sudo amazon-linux-extras install epel //epel 설치
sudo yum -y install mosquitto //mosquitto 설치
sudo systemctl start mosquitto && sudo systemctl enable mosquitto //mosquitto 서비스 시작
sudo systemctl status mosquitto // mosquitto 서비스 상태 확인

 

  • Mosquitto 사용

Mosquitto: Message 브로커로 pub&sub 명령어 지원

토픽을 구독하고 메시지를 배포!

mosquitto_sub -d -t my-topic

mosquitto_pub -d -t my-topic -m "message check"

창 두개를 띄워서 한쪽 창에서 sub 먼저 하고 다른 창에서 pub 실행해보자.

 

로그 확인

sudo tail -f /var/log/messages

 

New client가 연결된 것을 볼 수 있다!

 

 

❗ 사실 이렇게만 보면 뭘 했는지 와닿진 않는다.. 메시지를 구독(sub)하고 게시(pub)하는 건 알겠는데.. 실질적으로 IoT에서 어떻게 활용되냐 이말이야.. ❗

+ Recent posts