MQTT kod oluşturucu

Bir broker, transport ve topic’leri seçin; Python, Node.js, tarayıcı JavaScript’i, ESP32/Arduino, Go, Java, C# veya mosquitto komut satırı için eksiksiz, çalıştırılabilir bir MQTT client’ı alın — bağlanma, abone olma ve yayınlama tek bir kopyala-yapıştırla.

Kendi kimlik bilgilerinize mi ihtiyacınız var? Özel bir broker oluşturun

Transport

MQTT (TCP)

MQTT sürümü

Oluşturulan kod

Online client’ta aç

paho-mqtt 2.xpip install "paho-mqtt>=2.0"

mqtt_client.py
import uuid

import paho.mqtt.client as mqtt

BROKER = "broker.connectmq.com"
PORT = 1883
SUB_TOPIC = "testmqtt/demo/#"
PUB_TOPIC = "testmqtt/demo/hello"
PAYLOAD = "TestMQTT’den merhaba"
QOS = 1
CLIENT_ID = f"python-{uuid.uuid4().hex[:8]}"


def on_connect(client, userdata, flags, reason_code, properties):
    if reason_code.is_failure:
        print(f"Connection failed: {reason_code}")
        return
    print(f"Connected to {BROKER}:{PORT}")
    # Subscribing here means the subscription is renewed after every reconnect.
    client.subscribe(SUB_TOPIC, qos=QOS)
    client.publish(PUB_TOPIC, PAYLOAD, qos=QOS)


def on_message(client, userdata, msg):
    print(f"{msg.topic}: {msg.payload.decode(errors='replace')}")


def on_disconnect(client, userdata, flags, reason_code, properties):
    print(f"Disconnected: {reason_code}")


client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=CLIENT_ID,
    protocol=mqtt.MQTTv311,
    transport="tcp",
)
client.on_connect = on_connect
client.on_message = on_message
client.on_disconnect = on_disconnect

client.connect(BROKER, PORT, keepalive=60)
client.loop_forever()  # blocks; handles reconnects. Stop with Ctrl+C

Oluşturulan kod nasıl çalışır?

Her kod parçası aynı akışı izler: broker’a bağlantı açılır, bağlantı onaylanınca topic’inize abone olunur, bir mesaj yayınlanır ve program çalışmaya devam ederek gelen her şeyi ekrana yazar. Abone olma işlemini bağlantı handler’ı içinde yapmak (kütüphanede varsa) göründüğünden daha önemlidir — böylece abonelikler yeniden bağlantıdan sonra otomatik olarak geri yüklenir. Client ID’yi boş bırakırsanız her program çalışırken rastgele bir ID üretir; böylece iki kopya birbirini broker’dan asla düşürmez.

URL şemasını transport belirler. Düz TCP genellikle 1883, TLS ise 8883 port’unda çalışır; WebSocket listener’ları ise broker’a göre değişir — port ve yolun hazır ayardan doldurulmasının nedeni budur. Tüm kurallar için MQTT port’ları rehberine bakın.

Neden bu kütüphaneler?

  • Python — paho-mqtt 2.x. Eclipse’in referans client’ı, on yılı aşkın süredir kararlı. 2. sürüm callback imzalarını değiştirdiği için eski eğitimler artık çalışmıyor; bu kod yeni VERSION2 API’sini hedefler. Ayrıntılar Python ile MQTT yazısında.
  • Node.js ve tarayıcı — MQTT.js v5. Her iki ortam için tek kütüphane; connectAsync ve publishAsync gibi promise tabanlı metotlar sunar. Tarayıcıda yalnızca WebSocket üzerinden bağlanır; JavaScript ile MQTT ve WebSocket üzerinden MQTT yazılarını okuyun.
  • ESP32 / Arduino — PubSubClient. Küçük, sahada kendini kanıtlamış ve Kütüphane Yöneticisi’nde mevcut. MQTT 3.1.1’i TCP veya TLS üzerinden konuşur ve QoS 0 ile yayın yapar. ESP32 MQTT rehberi Wi-Fi yeniden bağlantılarını ve sertifikaları anlatıyor.
  • Go — paho.mqtt.golang. En yaygın kullanılan Go client’ı; otomatik yeniden bağlanma ve WebSocket desteği yerleşik. MQTT 3.1.1’i uygular; MQTT 5 için paho.golang kullanın.
  • Java — Eclipse Paho v3. Senkron MqttClient örneği kısa tutar; üretim servisleri için MqttAsyncClient’a veya Paho v5 client’ına geçin.
  • C# — MQTTnet v4. .NET’in fiilî standart MQTT kütüphanesi; tamamen asenkron ve MQTT 5 destekli. Kod, .NET 6+ üst düzey ifadelerini kullanır.
  • Komut satırı — mosquitto_pub / mosquitto_sub. Kod yazmadan önce bir broker’ın çalıştığını kanıtlamanın en hızlı yolu. mosquitto_pub ve mosquitto_sub örneklerine bakın.

Dillere göre kısa notlar

TLS: Python, Node.js, Go, Java ve C# kodları broker sertifikasını işletim sisteminin güvenilir CA’larına göre doğrular; bu, herkese açık sertifikası olan broker’larda çalışır. ESP32’de örnek, bağlanabilmeniz için setInsecure() çağırır; cihazları sahaya göndermeden önce broker’ın kök CA’sını setCACert() ile yükleyin. Kendinden imzalı broker’larda CA dosyasının her dilde açıkça verilmesi gerekir.

MQTT 5: Python, MQTT.js, MQTTnet ve mosquitto CLI tek bir seçenekle protokol değiştirir. PubSubClient, paho.mqtt.golang ve Paho Java v3 ise MQTT 3.1.1’de kalır — her MQTT 5 broker’ı bunu hâlâ kabul eder.

Test: oluşturulan programı çalıştırın ve aynı topic’i online MQTT client üzerinden izleyin. Hiçbir şey gelmiyorsa broker test kontrol listesi port’ları, kimlik bilgilerini ve topic yazım hatalarını adım adım ele alır. Herkese açık bir broker’da topic’lerinizi herkesin okuyabileceğini unutmayın — gerçek verileri kimlik doğrulaması olan bir broker’da tutun.

MQTT kod oluşturucu hakkında sık sorulan sorular

Python için hangi MQTT kütüphanesini kullanmalıyım?

Eclipse Paho (paho-mqtt), en yaygın kullanılan Python MQTT client’ıdır. 2.x sürümü, client oluşturulurken bir callback API sürümü belirtilmesini gerektirir; oluşturulan kod hem MQTT 3.1.1 hem de MQTT 5 ile çalışan CallbackAPIVersion.VERSION2’yi kullanır.

Tarayıcı kodu neden yalnızca WebSocket ile çalışıyor?

Web sayfaları ham TCP soketleri açamaz; bu nedenle tarayıcıdaki MQTT client’ları MQTT’yi bir WebSocket bağlantısı üzerinden taşır. Broker’ınızın bir WebSocket listener’ı olmalı ve HTTPS ile sunulan sayfalar güvenli bir wss:// URL’si kullanmalıdır.

ESP32, WebSocket üzerinden MQTT kullanabilir mi?

En yaygın Arduino MQTT kütüphanesi olan PubSubClient ile hayır — yalnızca düz TCP ve TLS destekler. Bu nadiren bir kısıttır: ESP32 doğrudan TCP ve TLS soketleri açabilir ve bunlar zaten WebSocket’ten daha hafiftir.

Broker şifremi oluşturulan koda yazmak güvenli mi?

Kod tarayıcınızda oluşturulur ve hiçbir sunucuya gönderilmez. Yine de şifreleri sürüm kontrolüne commit etmeyin: ortam değişkenlerinden veya bir secrets dosyasından yükleyin ve tarayıcı JavaScript’inde asla yönetici kimlik bilgileri bulundurmayın.

TestMQTT’nin yapımcılarından

Bu kodu kendi broker’ınızda çalıştırın

Genel test broker’ları binlerce yabancıyla paylaşılır. ConnectMQ, gerçek cihazlarınızla güvenle kullanabileceğiniz özel bir MQTT broker sunar — dakikalar içinde hazır.

  • Size özel, izole broker — topic’lerinizi başka kimse okuyamaz
  • Kullanıcı adı / şifre ile kimlik doğrulama ve topic bazlı erişim kontrolü
  • TLS ve güvenli WebSocket, MQTT 3.1.1 ve MQTT 5
  • İlk testten üretime kadar aynı istemci kodu