Öğrenciler için bir MQTT broker seçmek büyük ölçüde sürtünmeyi ortadan kaldırmakla ilgilidir: Hiç kimse Mosquitto kurmakla, kampüs güvenlik duvarıyla boğuşmakla ya da ortak bir topic'i hangi takımın sensörünün doldurduğunu bulmaya çalışmakla bir laboratuvar dersini kaybetmemelidir. Bu rehber, öğretmenlere canlı demolar için broker.connectmq.com'u, notlandırılan projeler için ise her takıma izole ve ücretsiz bir ConnectMQ Serverless broker'ı kullanarak IoT laboratuvarlarını nasıl yürüteceklerini gösteriyor; buna bir ders sırası, çalıştırmaya hazır kod ve olağan kaosu önleyen sınıf kuralları da dahil.
Bir Sınıfın Broker'dan Beklentileri
MQTT öğretmenin öncelikleri, üretim sistemleri işletmekten farklıdır:
- Laboratuvar bilgisayarlarında sıfır kurulum. Öğrenciler ilk on dakika içinde yayın yapıyor olmalı.
- Her yerden erişilebilirlik. Laboratuvar bilgisayarları, öğrencilerin evdeki dizüstüleri ve kampüs Wi-Fi'ındaki ESP32 kartlarının hepsi aynı uç noktaya ihtiyaç duyar.
- Görünür trafik. Mesajların aktığını görmek "işte bu" anıdır; bir topic gezgini bu konuda çok yardımcı olur.
- Değerlendirme için izolasyon. Notlandırılan bir proje, aynı topic'e yayın yapan başka bir takım yüzünden bozulmamalıdır.
- Maliyetsizlik. Çoğu dersin öğrenci başına altyapıya ayıracak bütçesi yoktur.
Bir laboratuvar sunucusunda kendi barındırdığınız bir broker işe yarayabilir, ancak birinin onun bakımını yapması, portları açması ve laboratuvar günü sabah 9'da bozulduğunda düzeltmesi gerekir. Barındırılan bir hizmet bundan kurtarır. Temel kavram için öğrenciler bir MQTT broker'ın ne yaptığı yazısıyla başlayabilir.
İki Katmanlı Kurulum: Demolar için Genel, Projeler için Özel
| Kullanım | Broker | Kimlik doğrulama | İzolasyon | Neden |
|---|---|---|---|---|
| Ders demoları, ilk laboratuvarlar | broker.connectmq.com (genel alan) | Yok, herhangi bir benzersiz client ID | Yok, herkes okuyabilir | Anında başlangıç, herkes her şeyi görür |
| Takım projeleri, notlandırılan çalışmalar | ConnectMQ Serverless (Free), takım başına bir tane | Oluşturulan kullanıcı adı, parola, client ID | İzole tenant | Takımlar birbirini etkileyemez, kimlik bilgileri iyi alışkanlık kazandırır |
Demolar için Genel Broker
Genel MQTT test broker'ı 1883, 8883, 8083 ve 8084 portlarında anonim bağlantıları kabul eder. Sınırları öğretime çok uygundur: Mesaj başına 64 KB, client başına saniyede 10 mesaj, client başına 10 abonelik, 8 topic seviyesi, QoS 0-2 ve 30 dakikaya kadar oturumlar. Bu sınırlar aynı zamanda bir öğrencinin kodundaki kontrolden çıkmış bir döngünün herhangi bir şeyi boğmasını da engeller.
Genel alan internetteki herkes tarafından okunabilir. Bunu bir dipnot yerine bir öğretim noktası haline getirin: Oraya asla isim, öğrenci numarası, konum veya kişisel başka bir bilgi yayınlamayın.
Notlandırılan Projeler için Özel Serverless Broker'lar
Her takım ücretsiz bir ConnectMQ Serverless broker için kaydolur. Bir kullanıcı adı, parola ve client ID, 25'e kadar bağlantı, en fazla QoS 1 ve 256 KB mesaj alırlar; bu da birkaç sensör, bir dashboard ve bir Node-RED akışı içeren bir proje için fazlasıyla yeterlidir. Takımlar çalışmalarını portalın tarayıcı içi client'ı, canlı topic gezgini ve dashboard'u ile gösterebilir ve eşik tabanlı uyarı kuralları yapılandırabilir; bu da değerlendirme sırasında iyi bir gösterim sağlar.
Beş Laboratuvarlık Bir Sıra
Laboratuvar 1: Komut Satırından Yayınlama ve Abone Olma
Her öğrenci kısa ve rastgele bir kimlik seçer; örneğin baş harfleri artı dört rastgele karakter. İki terminal:
# Terminal 1
mosquitto_sub -h broker.connectmq.com -p 1883 -i sub-ab7k2q -t 'connectmq/demo/ab7k2q/#' -v
# Terminal 2
mosquitto_pub -h broker.connectmq.com -p 1883 -i pub-ab7k2q \
-t 'connectmq/demo/ab7k2q/hello' -m 'my first MQTT message'
Ardından öğretmen connectmq/demo/+/hello topic'ine abone olur ve sınıf mesajların gelişini izler. Bu tek komut topic'leri, joker karakterleri ve ayrıştırmayı (decoupling) bir slayttan çok daha iyi öğretir.
Laboratuvar 2: QoS, Retained Message ve Last Will
Bir retained message yayınlayın, bağlantıyı kesin, yeniden bağlanın ve mesajın hemen geldiğini gözlemleyin. Last Will kaydı yapılmış bir client'ı sonlandırın ve will mesajının görünmesini izleyin. Bu laboratuvarı MQTT QoS seviyeleri açıklaması ile birlikte kullanın.
Laboratuvar 3: Python Sensör Simülatörü
import json
import random
import time
import uuid
import paho.mqtt.client as mqtt
STUDENT_ID = "ab7k2q" # kendi rastgele kimliğinizle değiştirin
BASE = f"connectmq/demo/{STUDENT_ID}/room"
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
client_id=f"py-{STUDENT_ID}-{uuid.uuid4().hex[:4]}")
client.will_set(f"{BASE}/status", "offline", qos=1, retain=True)
def on_connect(client, userdata, flags, reason_code, properties):
print("Connected:", reason_code)
client.publish(f"{BASE}/status", "online", qos=1, retain=True)
client.subscribe(f"{BASE}/setpoint")
def on_message(client, userdata, msg):
print("New setpoint:", msg.payload.decode())
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()
while True:
reading = {"temp": round(random.uniform(19.0, 24.0), 1), "ts": int(time.time())}
client.publish(f"{BASE}/temperature", json.dumps(reading), qos=1)
print("Sent", reading)
time.sleep(2)
pip install paho-mqtt ile kurun. Öğrenciler ardından komut satırından bir ayar noktası (setpoint) yayınlar ve betiklerinin tepki verdiğini görür.
Laboratuvar 4: Donanım
ESP32 kartlarına geçin. ESP32 MQTT eğitimi bir kartın tek derste yayın yapmasını sağlar; takımlar ardından gerçek bir sensör ekler. Captive portal veya WPA2-Enterprise kullanan kampüs Wi-Fi ağları gömülü kartları sıklıkla engeller; bu yüzden ağı laboratuvardan önce test edin ya da ayrı bir erişim noktası getirin.
Laboratuvar 5: Özel Broker Üzerinde Takım Projesi
Takımlar kendi Serverless broker'larını oluşturur, TLS ve kimlik bilgileriyle 8883 portuna geçer ve uçtan uca bir şey inşa eder: sensörler, bir Node-RED veya web dashboard'u ve bir uyarı. Anonim bağlantılardan kimliği doğrulanmış bağlantılara geçiş başlı başına bir güvenlik dersidir; takımları MQTT güvenliği en iyi uygulamaları yazısına yönlendirin.
Kaosu Önleyen Sınıf Kuralları
- Her client ID benzersiz olmalıdır. Client ID olarak
esp32kullanan iki öğrenci birbirlerinin bağlantısını durmadan koparır; bu, en sık karşılaşılan laboratuvar sorunudur. - Her topic kendi önekinizle başlar. Genel broker'da
connectmq/demo/<your-random-id>/.... Başkasının önekine yayın yapmak yok. - Genel broker'da kişisel veri yok. Onu herkese açık bir ilan panosu gibi düşünün.
- Her yayın döngüsüne bir gecikme ekleyin.
sleepiçermeyen birwhile Truehız sınırına anında takılır. - Kimlik bilgileri asla herkese açık bir Git deposuna girmez.
.gitignoreiçinde listelenmiş bir yapılandırma dosyası veya ortam değişkenleri kullanın. - Topic derinliğini makul tutun. Genel broker 8 seviyeye izin verir.
Laboratuvarda Sorun Giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Client bağlanıyor, sonra tekrar tekrar kopuyor | Yinelenen client ID | Benzersiz, rastgele bir kimlik kullanın |
| Hiçbir şey gelmiyor | Topic yazım hatası veya büyük/küçük harf uyuşmazlığı | Topic'ler büyük/küçük harfe duyarlıdır; her şeyi görmek için prefix/# aboneliği yapın |
| Kampüste bağlantı reddediliyor | Port engelli | 8883'ü ya da tarayıcıdan 8084 üzerinden WebSocket'i deneyin |
| Mesajlar bir patlamadan sonra duruyor | Genel broker'daki hız sınırı | Yayınlar arasına gecikme ekleyin |
| ESP32 Wi-Fi'a hiç bağlanmıyor | Enterprise veya captive portal ağı | Bir laboratuvar erişim noktası ya da telefon hotspot'u kullanın |
| Özel broker'da TLS hatası | Yanlış port veya eksik CA | Sistem CA deposuyla 8883'ü kullanın |
Tüm Sınıf için Kimlik Bilgilerini Yönetmek
Özel broker'lar kimlik bilgileri demektir ve bir sınıfta kimlik bilgileri kolayca kaybolur. Her takımdan, broker'ı oluşturacak ve kimlik bilgilerini herkese açık bir sohbette değil, yalnızca takım içinde ders platformu üzerinden paylaşacak bir üye belirlemesini isteyin. Takımları, depolarında yer tutucu değerler içeren küçük bir config.example dosyası tutmaya ve gerçek dosyayı sürüm kontrolünün dışında bırakmaya teşvik edin. Dönem sonunda takımlar kimlik bilgilerini silebilir veya yeniden oluşturabilir; bu da kimlik bilgisi rotasyonu üzerine kısa bir ders işlevi görür.
Değerlendirme Fikirleri
MQTT çalışmasını değerlendirmek, çalışma gözlemlenebilir olduğunda en kolaydır. Takımlardan topic gezgininde bir topic ağacı sunmalarını ve tasarımını gerekçelendirmelerini, dashboard'da bir cihazı çevrimdışı gösteren bir Last Will'i göstermelerini, tetiklenen bir uyarı kuralını sergilemelerini ve QoS seçimlerini açıklamalarını isteyin. Cihaz başına kimlik bilgileri, her yerde TLS veya kapasite gibi üretim için nelerin değişeceğine dair kısa bir yazılı değerlendirme işi tamamlar. MQTT eğitimimiz ön okuma olarak iyi çalışır, bulut MQTT broker rehberi ise ileri düzey öğrencilere barındırma seçeneklerinin büyük resmini sunar.
IoT Laboratuvarınızı ConnectMQ ile Başlatın
İlk demonuzu bugün kayıt olmadan broker.connectmq.com üzerinde çalıştırın, ardından her takımın app.connectmq.com adresinde kredi kartı gerektirmeden ücretsiz bir Serverless broker oluşturmasını sağlayın. ConnectMQ bir yönetilen MQTT broker olduğundan sunucu yönetimi yerine MQTT öğretirsiniz.
Sık Sorulan Sorular
Öğrenciler için ücretsiz bir MQTT broker var mı?
Evet. broker.connectmq.com demolar için ücretsiz bir genel alan sunar ve her öğrenci ya da takım, özel kimlik bilgileri ve 25'e kadar bağlantıyla ücretsiz bir ConnectMQ Serverless broker oluşturabilir.
Öğrenciler bitirme projeleri için genel broker'ı kullanabilir mi?
Teknik olarak çalışır, ancak oradaki her şey herkes tarafından okunabilir ve başka bir öğrenci aynı topic'lere yayın yapabilir. Notlandırılan çalışmalar için özel bir Serverless broker kullanın.
Öğrencilerin yerel olarak bir broker kurması gerekir mi?
Hayır. mosquitto_pub, paho-mqtt veya portalın tarayıcı içi client'ı gibi client'lar yeterlidir; bu da laboratuvar kurulum süresinden tasarruf sağlar.
Öğrencilerin bağlantısı neden sürekli kopuyor?
Neredeyse her zaman iki client aynı client ID'yi paylaştığı için. Her bağlantının kendine ait benzersiz bir kimliği olmalıdır.
Kampüs Wi-Fi'ında ESP32 kartlarını kullanabilir miyiz?
Genellikle yalnızca basit WPA2 parolalı ağlarda. Enterprise kimlik doğrulama ve captive portal'lar kartları çoğunlukla engeller; bu yüzden ayrı bir laboratuvar erişim noktası güvenilir seçenektir.



