<IOT> 라즈베리파이 MQTT

kukjunLEE·2022년 6월 14일
3

IOT

목록 보기
1/1

이 내용을 수행하기 위해서는 ...

  • 라즈베리파이에 운영체제가 설치되어 있어야 합니다.
  • 아래 내용은 ssh 연결을 통해서 라즈베리파이 모니터를 사용하지 않습니다. ssh 연결을 할 수 있어야 하고, linux 명령어를 알고 있어야 합니다.
  • 라즈베리파이의 업데이트가 완료된 상태입니다. 먼저 업데이트를 다 진행해주셔야 합니다.



1. MQTT ?


MQTT 는 사물인터넷을 사용하기 위해 개발된 TCP 기반의 프로토콜로서 낮은 전력, 낮은 대역폭, 낮은 성능의 환경에서도 사용 가능한 통신입니다.

통신의 방법은 publisher -> broker -> subscrivber로 진행됩니다.

통신 방법에 있어서 topic을 사용하여 데이터를 주고받을 수 있는 경로를 지정할 수 있습니다.

  • 해당 내용처럼 component/device의 topic을 가지는 전송의 경우, 해당 data가 component/server로 전송되지 않습니다.



2. 라즈베리파이에 직접 Publish / Subscribe 가능 환경 설정

mosquitto 는 MQTT 브로커를 실행할 수 있는 오픈소스입니다. 이 브로커는 publish/subscribe를 위한 커맨드라인 유틸리티까지 제공합니다.


  1. 먼저 mosquitto 설치 전 서명키를 다운로드 합니다.

    cd ~
    wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
    sudo apt-key add mosquitto-repo.gpg.key
  2. mosquitto 저장소 패키지를 등록합니다.

    cd /etc/apt/source.list.d/
    sudo wget http://repo.mosquitto.org/debian/mosquitto-stretch.list
  3. mqtt broker를 설치합니다.

    sudo apt-get update
    sudo apt-cache search mosquitto
    sudo apt-get install mosquitto mosquitto-clients
  4. mosquitto를 실행합니다.

    ```bash
    sudo /etc/init.d/mosquitto start
    ```


환경 설정을 하고 나면 topic을 이용해 메시지를 보내고 받을 수 있습니다.

  • 메시지 받기 (hello/world)
    mosquitto_sub -d -t hello/world
  • 메시지 보내기 (hello/world)
    mosquitto_pub -d -t hello/world -m "Hi!"


동일 Wifi를 사용하는 외부와 라즈베리파이 통신

그냥 사용하려고 하는 경우에는 라즈베리파이 내부에서 publish, subscribe는 원활하게 잘 동작하지만, 외부와는 접근이 차단됩니다. 이를 해결하기 위한 선행 과제가 있습니다.


Mac Mosquitto 설정 및 설치

Mac에도 Mosquitto가 설치되어 있어야 라즈베리파이로 topic을 가지는 메시지를 전달할 수 있습니다.

  • Mac 환경이므로 brew를 사용해 설치하도록 하겠습니다.

    # 모스키토 설치
    brew install mosquitto
    
    # 모스키토 서비스 실행
    brew services start mosquitto

라즈베리파이에서 외부 IP 허용

라즈베리파이에서 설치한 mosquitto 의 경우 기본적으로 외부 IP로부터 접근을 차단합니다. conf 파일 편집을 통해서 외부 IP 허용과 권한을 부여하겠습니다.


  1. 포트 포워딩
  • 라즈베리파이에서 mosquitto 경로 이동
    cd /etc/mosquitto/
  • conf 파일 편집기 실행
    sudo vi mosquitto.conf
  • conf 파일 내용 추가
bind_address 0.0.0.0 # 모든 IP 허용
allow_anonymous true # 외부인에 대한 권한 허용
  1. mqtt 재실행
sudo systemctl restart mosquitto
  1. Mac에서 Pub, Raspberry Pi에서 Sub 진행
  • RaspberryPi 에서 구독 진행
    mosquitto_sub -d -t hello/world
  • Mac에서 메시지 전송
    mosquitto_pub -h 192.168.10.74 -t hello/world -m "Hi Mosquitto"
  1. 결과

참고 자료

profile
Backend Developer

0개의 댓글