mosquitto 설치가 잘 되었다면 통신이 되어야 한다. mosquitto 통신을 하기 위해서 해당 서비스가 잘 돌아가고 있어야 된다.
1. 해당 서비스 잘 돌아가는지 확인하기
sudo systemctl status mosquitto
위의 명령어를 쳐서 해당 서비스가 잘 돌아가는지 확인해준다.
내 경우 잘 안 돌아가기 때문에 이를 고쳐줘야 한다.
2. 오류 확인하기
위의 사진에서 보면 날짜와 함께 시스템 로그가 찍혀 나온다. 이를 자세히 확인해야 한다.
1) 로그 확인하기
sudo journalctl -u mosquitto.service -b
위의 명령어를 치면 mosquitto의 로그가 나온다. 이를 보고 에러가 났는지 확인할 수 있다.
sudo journalctl -u mosquitto.service -f
해당 로그가 너무 많이 나오면 확인하기 힘들므로 -f옵션을 통해 맨 마지막의 몇 줄의 로그만 확인할 수 있다.
sudo journalctl -u mosquitto.service -n 20
너무 적게 나온다면 20줄 정도로 늘려 해당 로그를 확인할 수 있는데 이는 숫자만 변경해서 로그의 숫자를 늘이거나 줄일 수 있다.
2) 에러 확인하기
2-1) invalid-user 에러
2024.07.23 - [Error] - [Error] Invalid user ‘mosquitto’
위의 에러는 mosquitto라는 유저가 없을 때 나는 오류를 고친 것이다.
2-2) mosquitto.log 에러
2024.07.24 - [Error] - [Error] Unable to open log file /var/log/mosquitto/mosquitto.log for writing.
mosquitto.log라는 파일이 없어서 나는 오류이다.
2-3) address already in use 에러
2024.07.24 - [Error] - [Error] Address already in use
1883이라는 포트가 이미 돌아가고 있을 때 해당 에러가 난다.
3. 상태 확인하기
위와 같은 오류들이 다 고쳐졌다면 다시 상태가 잘 돌아가고 있는지 확인해준다.
sudo systemctl status mosquitto
그럼 위와 같이 active의 상태가 active한 것을 확인할 수 있다.
4. 통신하기
마지막으로 서로 잘 통신이 주고 받아진다면 완료가 되는 것이다. 두 개의 터미널을 틀어서 각각의 터미널에서 메시지를 주고 받는 것을 확인하면 된다.
1) mosquitto_sub
mosquitto_sub -h localhost -t my-topic
- -h : host의 약자로, host ip를 의미한다.
- -t : topic의 약자로, 뒤에 보내고자 하는 topic을 작성해주면된다.
2) mosquitto_pub
mosquitto_pub -h localhost -t my-topic -m "status check"
- -m : message의 약자로, 해당 옵션 뒤에 보내고자 하는 메시지를 작성해서 보낸다.
3) 순서대로 표시
처음에 sub로 해당 메시지를 받을 준비를 한다.
pub로 하여 해당 topic과 message를 sub에 보내준다. 그러면 위와 같이 같은 토픽을 가지고 메시지를 주고 받는 것을 볼 수 있다.
👇🏻 참고 사이트
https://itstudy402.tistory.com/16