새로운 사업에 참여하게되어 기존에 썼던 python-MQTT통신 방법을 다시 상기시키고 되짚어 보기 위해 작성하는 포스트
MQTT |
- 센서, 디바이스 + 모바일 기기들의 연결을 위한 프로토콜, 오픈 소스
- 브로커(broker)를 중앙에 두고 publish / subscribe 메시징 체제로 데이터를 주고 받는다.
- 토픽(topic)으로 자신들이 주고받는 데이터가 무엇인지 구분한다.
paho.mqtt.client |
- Python으로 MQTT 통신을 구현할 때 import해야 하는 라이브러리
- 브로커 접속(connect) / 발행(publish) / 구독(subscribe) / 구독한 메세지 처리 등 각 상황에 맞는 콜백 함수 설정으로
원하는 기능 구현 가능 - 해당 포스트와 관련한, MQTT 포스트는 Python 언어를 이용한 비동기연결 위주의 설명
client 객체 생성과 connect() |
1 2 3 4 5 6 | import paho.mqtt.client as mqtt broker_address="XXX.XXX.XXX.XXX" broker_port=1883 client = mqtt.Client() //mqtt client 객체 생성 client.connect(host=broker_address, port=broker_port) | cs |
▲ 이렇게 연결하면 브로커와 연결을 유지하기때문에 다른 작업을 할 수 없다.
5 6 | client.connect_async(host=broker_address, port=broker_port) client.loop_start() | cs |
▲ 비동기 연결
client.connect() 선택적 매개변수
1 | client.connect(host=broker_address, port=1883 , keepalive=60 , bind_address=””) | cs |
host이름(브로커 주소)은 도메인이든 IP 주소로든 꼭 입력 해야한다.
on_connect() callback |
- 연결 상태를 확인 하고 싶을 때, 연결 직후 수행해야 할 기능이 있을 때
- client 객체안에는 callback 함수 자리(?)가 있는데 그 자리에 사용자가 만든 함수를 연결하여 callback 함수 역할을 하도록 함.
on_connect() callback 순서 |
- Client 객체 생성
- callback 함수인 on_connect()를 만든다.
- callback 함수로 사용자가 만든 on_connect()를 가지고 온다.
- 브로커와 연결한다.
- loop 시작
1 2 3 | def on_connect(self, client, userdata, flags, rc): //connect 직후 수행해야 할 기능 print "connect with result code "+str(rc) | cs |
'PROGRAMMING > PYTHON' 카테고리의 다른 글
[Python3] requests로 웹서버에 데이터 전달하기 (0) | 2018.08.23 |
---|---|
[Python3] ARTIK 시리얼 포트로 LoRa(stm32) 데이터 수신 (0) | 2018.08.23 |
C에서 보내는 HTTP-POST 데이터 python flask로 받기 (0) | 2018.08.16 |
pip3 install on Ubuntu 16.04.4 LTS (0) | 2018.07.19 |
[MQTT] Python subscribe, publish (0) | 2018.06.27 |