Embedded

[Jetson Nano] docker에 MQTT(mosqitto) 설치해서 외부에서 작동확인 해보기

변화의 물결1 2023. 10. 9. 23:33

 

 

 안녕하세요.

 

 Jetson Nano 테스트 요청받은 것이 있어서 간단하게  docker로 MQTT를 설치해서 broker 서버로 가능한지 테스트해 보는 것으로 하였습니다.

 간단하게 가능하구나 확인 삼아 보시면 도움이 될 것으로 생각됩니다. 사전작업으로 Jetson Nano에 Ub


 1. 프로그램 설치

 - 기본적으로 Jetson Nano에 Ubuntu 18.04 버전이 설치되어 있고, apt update와 apt upgrade를 했다는 전제하에 추가 진행사항이라고 보시면 됩니다.

 

 - 위의 내용 진행되었다면 docker 기본버전이 같이 설치되어 있습니다. 이제 간단하게 컨테이너 하나를 생성합니다.

 

 - 컨테이너 하나를 생성할 때 옵션에 ubuntu20.04 버전을 기본 OS로 하고 외부와 통신할 수 있도록 포트를 1883으로 외부, 내부 포트로 설정을 합니다. 알다시피 mosquitto 기본 설정이 1883으로 되어 있습니다.

  

nano@snano:~$ sudo docker run -d -it  -p 1883:1883 --name mosquitto_ubuntu ubuntu:20.04 /bin/bash

  

- 백그라운드 모드로 컨테이너 안에서 mosquitto 필요한 패키지를 설치를 설치합니다.

nano@snano:~$ sudo docker exec -it mosquitto_ubuntu /bin/bash

  

/# sudo apt update
/# apt update
/# apt upgrade
/# apt update
/# apt install -y mosquitto systemctl pip
/# apt install -y mosquitto-clients
/# pip install paho-mqtt

 

- mosquitto broker 시작합니다.

 

/etc/init.d/mosquitto stop
/etc/init.d/mosquitto start

 

  

- mosquitto 가 작동하고 있는지 포트 상태로 확인합니다.

 

/# netstat -tulpn | grep LISTEN

 

 

2. mosquitto 구독과 발행하기

- 'topic/sensor1'을 토픽으로 해서 구독하기를 실행합니다.

 

/# mosquitto_sub -v -t 'topic/sensor1'

 

- 발행은 Windows 프로그램으로도 할 수 있는데 터미널창을 하나 더 열어서 백그라운드로 컨테이너에 접속합니다.

 

nano@snano:~$ sudo docker exec -it mosquitto_ubuntu /bin/bash

 

- 토픽옵션(-t)과 메시지 옵션(-m)을 사용해서 메시지를 발행합니다. 그러면 발행한 메시지가 구독한 터미널창에 나타나는 것을 알 수 있습니다.

 

/# mosquitto_pub -v -t 'topic/sensor1' -m ‘s1 value 100’

 

 

3. Windows에서 확인

- MQTT를 제공해 주는 Client 프로그램을 설치합니다. 내용에서는 MQTT Explorer를 사용했습니다.

- 간단한 Name(별칭)과 Jetson Nano의 IP 주소를 입력하고 Connect를 누릅니다.

 

 

- Jetson Nano 터미널에서 토픽을 변경해서 구독 설정을 다시 해봅니다.

 

/# mosquitto_sub -v -t 'topic/sensors'

 

- Windows MQTT Explorer 프로그램에서 Publish 메뉴에 topic을 ‘topic/sensors’으로 동일하게 해서 raw를 선택 후에 값을 넣어서 PUBLISH 버튼을 누르면 구독자(subscriber)에 전달되고, 현재 받은 메시지를 확인할 수 있습니다.

 

 

참고로 호스트(IP)를 지정해서 보내고 싶은 경우는 옵션 (-h) 사용하면 됩니다.

mosquitto_sub -h 호스트 -t 토픽명 

ex) mosquitto_sub -h 192.168.0.12 -t /topic/data1

 

mosquitto_pub -h 호스트 -t 토픽명 -m 메시지

ex) mosquitto_pub -h 192.168.0.12 -t /topic/data1 -m ‘Messge 1’

 

 

<참고 사이트>

https://deneb21.tistory.com/416

 

 

 

 

 

반응형