질문과 답변
PC(node-RED)와 RaspberryPI, beagleboneblack의 mosquitto 연결시험용 코드
2023. 11. 24 (금) 15:01
goingdol
조회 44
좋아요 2
스크랩 0
댓글 0
안녕하세요.
오늘 Webinar에서 사용된 PC(node-RED)와 RaspberryPI, beaglebone black에 설치한 mosquitto의 시험용 code를 첨부하였습니다.
rasp_mqtt.py 파일 mqtt_broker_host = "192.168.0.3" 부분을 집에서 사용하고 계신 PC(node-RED가 설치된) 의 ip로 수정하시면 됩니다.
import paho.mqtt.client as mqtt
import time
# MQTT 브로커 정보 설정
mqtt_broker_host = "192.168.0.3" # MQTT 브로커의 IP 주소나 호스트명
mqtt_broker_port = 1883 # MQTT 브로커의 포트 (기본 포트는 1883입니다.)
# MQTT 클라이언트 생성
client = mqtt.Client("RaspberryPiClient")
# Callback function for successful connection
def on_connect(client, userdata, flags, rc):
client.subscribe("rasp/rcv/#")
print(f"Connected with result code {rc}")
# Callback function for disconnection
def on_disconnect(client, userdata, rc):
if rc != 0:
print(f"Unexpected disconnection. Reconnecting...")
while True:
try:
client.reconnect()
break # Exit the loop if reconnection is successful
except:
time.sleep(5)
# 메시지를 발행 (Publish)하는 함수
def publish_message(topic, message):
client.publish(topic, message)
print(f"rasp Published to {topic}: {message}")
def on_message(client, userdata, message):
received_message = message.payload.decode("utf-8")
print(f"rasp Received message on topic {message.topic}: {received_message}")
def on_pre_connect(client, userdata):
print(f"rasp on_pre_connect...")
# Set the callback functions
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.on_message = on_message
client.on_pre_connect = on_pre_connect
# MQTT 루프 시작
client.connect(mqtt_broker_host, mqtt_broker_port)
try:
print(f"rasp Node-RED client start.....")
client.loop_start()
while True:
print(f"{time.ctime()} rasp is running. ")
publish_message("rasp/send/dev", "from rasp")
time.sleep(5)
except KeyboardInterrupt:
print(f"Keyboard Interrupt, Stop Node-RED.....")
finally:
client.disconnect()
감사합니다.
로그인 후
참가 상태를 확인할 수 있습니다.