Herkese merhabalar,
Yaygın MQTT yapılarından birisi olan HiveMQ ile nasıl veri alışverişi yapacağımıza birlikte göz atalım…
Öncelikle HiveMQ’yu lokalimizde Docker vesilesiyle ayağa kaldırarak başlayabiliriz:
docker run -p 8080:8080 -p 1883:1883 hivemq/hivemq4
Servis ayağa kalktıktan sonra, “http://localhost:8080” e gittiğimizde giriş sayfası bizi karşılayacak:

Burada varsayılan kullanıcı adı “admin” parolası “hivemq” dur.
Şimdi gelelim sunucu ve istemci tarafına:
pip install paho-mqtt
Yükleme işleminin tamamlanmasının ardından, Connect.py dosyamızı oluşturup, kodumuzu ekliyoruz:
# Created by Sezer BOZKIR<admin@sezerbozkir.com> at 31.05.2021
import paho.mqtt.client as paho
def on_connect(client, userdata, flags, rc):
print(f"Connack received with code f{rc}, f{client}, f{userdata}, f{flags}")
if __name__ == '__main__':
client = paho.Client()
client.on_connect = on_connect
client.connect("localhost", 1883)
client.loop_forever()
Kodun içeriğine baktığımızda öncelikle bir client oluşturup, bağlandığında “on_connect” fonksiyonunu çalıştıran ve sürekli çalışması için de “loop_forever” fonksiyonunu çağırdığımız bir yapı görüyoruz.
Çalıştır dedikten sonra, şöyle bir çıktı alıyoruz:
Connack received with code f0, f<paho.mqtt.client.Client object at 0x7faf25982fd0>, fNone, f{'session present': 0}
Buraya kadar herşey yolunda olduğuna göre artık bir sunucu ve istemci de yazarak topic’e subscribe olabilir, bu topik için mesaj gönderimini Publisher ile yapabiliriz.
Publisher.py:
# Created by Sezer BOZKIR<admin@sezerbozkir.com> at 31.05.2021
import random
import paho.mqtt.client as paho
from time import sleep
def on_connect(client, userdata, flags, rc):
print(f"Connack received with code f{rc}")
def on_publish(client, userdata, mid):
print(f"mid: {mid}")
if __name__ == '__main__':
client = paho.Client()
client.on_connect = on_connect
client.on_publish = on_publish
client.connect("localhost", 1883)
while True:
temperature = random.randint(1, 100)
(rc, mid) = client.publish("sample/temperature", str(temperature), qos=1)
print(rc)
print(mid)
sleep(5)
subscribe.py:
# Created by Sezer BOZKIR<admin@sezerbozkir.com> at 31.05.2021
import paho.mqtt.client as paho
def on_subscribe(client, userdata, mid, granted_qos):
print("Subscribed: " + str(mid) + " " + str(granted_qos))
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
client = paho.Client()
client.on_subscribe = on_subscribe
client.on_message = on_message
client.connect("localhost", 1883)
client.subscribe("sample/#", qos=1)
client.loop_forever()
Öncelikle Publisher’ı çalıştırıyor, sonrasında da subsciber dosyasını başlatıyoruz. Sonuç?
sample/temperature 1 b'17' sample/temperature 1 b'60' sample/temperature 1 b'84' sample/temperature 1 b'15'
Kodlara ayrıca Github repomdan bakabilirsiniz.
Bir başka yazımda görüşmek üzere.