티스토리 뷰
구현개요
1) windows 에 broker 설치
2) windows 에 subscriber 구현
3) 라즈베리파이에 publisher 구현. 센서정보 전달
실제 구현
참고링크: http://www.steves-internet-guide.com/into-mqtt-python-client/
참고링크2: http://www.hardcopyworld.com/ngine/aduino/index.php/archives/2725
다양한 callback 사용 코드: https://github.com/eclipse/paho.mqtt.python/tree/master/examples
이번에는 라즈베리파이에서 vds1/data 라는 토픽으로 Broker 에게 publish 하는 Publisher 를 구현해보자
실습하는 라즈베리파이에는 센서가 하나 달려있고, 매우 빠르게 (= 약 3ms) 값을 갱신한다.
paho-mqtt package 설치
- 파이썬으로 mqtt Client 로서 publish, subscribe 를 할 수 있게 해주는 패키지이다.
- 라즈베리 파이에서는 sudo pip3 install paho-mqtt 명령으로 설치할 수 있었다.
코드 보기
- mqtt 와 관계없는 부분은 생략합니다.
import datetime as dt import paho.mqtt.client as mqtt
count = 0
# mqtt publisher broker_address="192.168.2.9" client2 = mqtt.Client("ClientPublisher") client2.connect(broker_address)
while True:
count += 1 dist = lidar.getDistance() time = dt.datetime.now().strftime("%M%S.%f") pub_data = "{0},{1},{2}".format(count, dist, time)
# mqtt publisher client2.publish("vds1/data", pub_data) |
1) 시간값을 얻기위한 datetime 패키지와 paho mqtt 패키지를 import
2) 전송되는 메시지의 id 값의 의미로 count 를 순증가하여 넣게 함
3) lidar.getDistance() 함수를 통해 센서의 값을 읽어온다.
4) datetime.datetime.now() 함수로 현재 시간값을 읽어와 string 으로 바꿔준다.
5) pub_data 라는 변수에 전송할 메시지를 구성해둔다. - count, 센서값, 측정시간
여기서부터 mqtt client 를 이용한 publish 과정이다.
1) 접속할 broker 서버의 ip 주소를 알고 있어야 한다.
2) broker 서버에 연결후
3) 특정한 topic 으로 (여기서는 vds1/data) message 를 publish 하면 끝 |
구현 후기
- 생각보다 매우 쉽고도 깔끔하게 동작하였다.
- 다양한 상황을 대비한 구현 방법, 옵션이 많아 보인다.
→ 앞으로 몇 개의 publisher 와 몇 개의 subscriber, 혹은 publisher 이며 subscriber 인 구조,
데이터의 양이 크지 않은 구조일때는 mqtt 를 선택하게 될 것 같다.
- 현재 센서의 측정주기는 3ms 인데, 위 #mqtt publisher 코드를 넣었음에도 속도저하가 거의 없었으며, 데이터 손실도 거의 발견되지 않았음
'embedded' 카테고리의 다른 글
banana pi quick start - 원격 접속 (0) | 2018.07.18 |
---|---|
banana pi quick start - microSD 용량 (0) | 2018.07.18 |
banana pi quick start - os 설치 (2) | 2018.07.18 |
mqtt - raspberry pi 센서 데이터를 서버로 보내기 (2) (0) | 2018.07.13 |
mqtt - raspberry pi 센서 데이터를 서버로 보내기 (1) (0) | 2018.07.13 |
- Total
- Today
- Yesterday
- solid
- bun
- Gin
- Bug
- 티스토리챌린지
- 인텔리제이
- go
- strange
- 독서
- github
- OpenAI
- API
- ChatGPT
- folklore
- 클린 애자일
- 독서후기
- 영화
- 엉클 밥
- 체호프
- clean agile
- intellij
- 잡학툰
- 오블완
- 제이펍
- golang
- websocket
- agile
- 2023
- 노션
- notion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |