티스토리 뷰

구현개요

 

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 코드를 넣었음에도 속도저하가 거의 없었으며, 데이터 손실도 거의 발견되지 않았음

 


반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함