Yönetilen MQTT Bulutu

Öğrenciler ve Sınıflar için MQTT Broker: Sunucusuz IoT Laboratuvarları

Öğretmenler ve öğrenciler için pratik bir rehber: canlı demolarda genel broker kullanın, notlandırılan çalışmalar için her takıma izole ve ücretsiz bir broker verin ve klasik sınıf tuzaklarından kaçının.

ESP32 kartları ve dizüstü bilgisayarlarla ortak bir bulut broker'a yayın yapan takımlardan oluşan bir sınıfı gösteren öğrenciler için MQTT broker çizimi
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Öğ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ı

  1. Her client ID benzersiz olmalıdır. Client ID olarak esp32 kullanan iki öğrenci birbirlerinin bağlantısını durmadan koparır; bu, en sık karşılaşılan laboratuvar sorunudur.
  2. Her topic kendi önekinizle başlar. Genel broker'da connectmq/demo/<your-random-id>/.... Başkasının önekine yayın yapmak yok.
  3. Genel broker'da kişisel veri yok. Onu herkese açık bir ilan panosu gibi düşünün.
  4. Her yayın döngüsüne bir gecikme ekleyin. sleep içermeyen bir while True hız sınırına anında takılır.
  5. Kimlik bilgileri asla herkese açık bir Git deposuna girmez. .gitignore içinde listelenmiş bir yapılandırma dosyası veya ortam değişkenleri kullanın.
  6. 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.

İlgili yazılar

BYOC MQTT Broker: Kendi Bulutunuzu Getirin Modeli Açıklandı

BYOC MQTT broker sizin bulut hesabınızda çalışır ama bir sağlayıcı tarafından işletilir. Modelin nasıl işlediğini, sorumluluk paylaşımını ve hesabınızı buna nasıl hazırlayacağınızı öğrenin.

7 dk okuma

Google Cloud IoT Core Alternatifi: Kapanış Sonrası Seçenekler ve Geçiş

Google, Cloud IoT Core'u Ağustos 2023'te kullanımdan kaldırdı. Bu rehber gerçekçi alternatifleri karşılaştırıyor, IoT Core kavramlarını standart MQTT'ye eşliyor ve verileriniz Google Cloud'a akmaya devam ederken cihazlarınızı yönetilen bir broker'a nasıl taşıyacağınızı gösteriyor.

7 dk okuma

Saniyede MQTT Mesaj Sayısı: Verim Nasıl Tahmin Edilir ve Ölçülür

MQTT verim planlaması birkaç formüle ve tek bir dürüst ölçüme dayanır. Saniyedeki gelen ve giden mesaj sayısını nasıl tahmin edeceğinizi, tepe değerleri nasıl hesaba katacağınızı ve sonucu bir broker planına nasıl eşleyeceğinizi öğrenin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.