EMQX Nedir? MQTT ile Nesnelerin İnterneti (IoT) Rehberi
Nesnelerin interneti (IoT) projelerinde en kritik karar, cihazların bulutla nasıl konuşacağıdır. Bu noktada fiilî standart MQTT protokolü, en yaygın açık kaynak sunucu tarafı çözümü ise EMQX broker'ıdır. Bu rehberde EMQX'in ne olduğunu, MQTT 5.0 özelliklerini, QoS seviyelerini, ESP32 gibi kartlarla entegrasyonunu ve —çoğu zaman atlanan— IoT kartının donanım tasarımının MQTT kararlılığına etkisini adım adım ele alıyoruz.

EMQX Nedir?
EMQX, Erlang/OTP üzerinde geliştirilen dağıtık bir MQTT broker'ıdır. Yayınla/abone ol modelinde çalışır: sensör kartları veriyi bir topic'e yayınlar, ilgilenen istemciler (bulut servisi, mobil uygulama, SCADA) aynı topic'e abone olur. Cihazlar birbirini tanımaz; tek bağlantı noktası broker'dır. Öne çıkan özellikleri:
- MQTT 5.0 tam desteği: shared subscription, topic alias, mesaj süresi (message expiry), kullanıcı özellikleri ve sebep kodları.
- Çoklu protokol: MQTT over TCP/TLS, WebSocket, QUIC (MQTT over QUIC), ayrıca CoAP, LwM2M ve MQTT-SN köprüleri.
- Kümeleme: düğümler yatayda eklenerek milyonlarca eşzamanlı bağlantı taşınabilir.
- Kural motoru (Rule Engine): gelen mesajlar SQL benzeri kurallarla filtrelenip PostgreSQL, InfluxDB, Kafka, MQTT köprüsü veya HTTP servisine yönlendirilir.
- Kimlik doğrulama ve yetkilendirme: kullanıcı/parola, JWT, X.509 istemci sertifikası, LDAP ve HTTP tabanlı ACL.
- Açık kaynak: Apache 2.0 lisansı, GitHub üzerinde aktif geliştirme ve geniş topluluk.
MQTT Nedir? Nesnelerin İnterneti için Neden Uygun?
MQTT, 1999'da petrol boru hatlarındaki uydu bağlantılı telemetri için tasarlandı; yani daha doğuşunda "zayıf hat, düşük güç, küçük paket" problemine odaklıydı. Bugün nesnelerin interneti uygulamalarının büyük bölümü bu nedenle MQTT üzerinde çalışıyor.
| Kriter | MQTT | HTTP/REST |
|---|---|---|
| Model | Publish / Subscribe | İstek / Yanıt |
| Başlık yükü | 2 bayttan başlar | Yüzlerce bayt |
| Bağlantı | Kalıcı, çift yönlü | Her istekte yeniden kurulur |
| Sunucudan cihaza komut | Doğal (abonelik) | Polling veya websocket gerekir |
| Güç tüketimi | Düşük (pil dostu) | Yüksek |
| Kesintili hat davranışı | Oturum kalıcılığı, LWT | İstek başarısız olur |
Topic tasarımı
Topic, eğik çizgi ile ayrılan hiyerarşik bir metindir: fabrika/hat1/kart-12/sicaklik. Aboneliklerde + tek seviye, # çok seviye joker karakteridir. Sahada en sık yapılan hata, cihaz kimliğini topic'in sonuna koymaktır; kimliği baştan ikinci seviyeye almak filtreleme ve yetkilendirmeyi kolaylaştırır.
QoS seviyeleri
| QoS | Garanti | Tipik kullanım |
|---|---|---|
| 0 | En fazla bir kez | Saniyelik sıcaklık/nem telemetrisi |
| 1 | En az bir kez (tekrar olabilir) | Röle komutu, alarm, durum değişimi |
| 2 | Tam olarak bir kez | Sayaç endeksi, faturalama, kritik olay |
Pratik kural: veriyi kaybetseniz bir sonraki mesaj telafi ediyorsa QoS 0, kaybı telafi edilemiyorsa QoS 1 ve idempotent (tekrara dayanıklı) bir uygulama katmanı, sayısal bütünlük şartsa QoS 2 kullanın.
Retained mesaj ve Last Will (LWT)
Retained bayrağı ile yayınlanan son mesaj broker'da saklanır; yeni abone bağlandığı anda güncel durumu görür. Last Will and Testament ise cihaz beklenmedik şekilde koptuğunda broker'ın otomatik olarak yayınladığı mesajdır — cihaz/12/durum = offline gibi. Saha uygulamalarında cihaz sağlığını izlemenin en ucuz yoludur.
EMQX Kurulumu: Docker ile Hızlı Başlangıç
- Broker'ı başlatın:
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 18083:18083 emqx/emqx:latest - Yönetim paneline girin:
http://sunucu-ip:18083(varsayılanadmin / public— ilk girişte parolayı mutlaka değiştirin). - Kimlik doğrulamayı açın: Access Control > Authentication bölümünden kullanıcı/parola veya JWT tabanlı doğrulama ekleyin. Anonim erişimi kapatın.
- TLS'i etkinleştirin: 8883 portu için sunucu sertifikanızı yükleyin; kritik projelerde istemci sertifikası (mTLS) zorunlu kılın.
- Test edin:
mosquitto_sub -h sunucu-ip -t "test/#" -vvemosquitto_pub -h sunucu-ip -t test/1 -m "merhaba". - Üretimde ölçekleyin: ikinci düğümü kümeye katın, kural motoruyla veriyi zaman serisi veritabanına aktarın.
ESP32 ve Diğer Kartlarla MQTT Entegrasyonu
Arduino ekosisteminde PubSubClient, ESP-IDF tarafında yerleşik esp-mqtt bileşeni en sık kullanılan istemcilerdir. Tipik akış: Wi-Fi bağlan → broker'a bağlan (istemci kimliği + kullanıcı/parola) → komut topic'ine abone ol → periyodik olarak sensör verisini yayınla → bağlantı koptuğunda üstel geri çekilmeli (exponential backoff) yeniden bağlan.
- Keepalive: mobil şebekede 60–120 saniye iyi bir başlangıçtır; çok kısa değerler gereksiz uyanma ve pil tüketimi yaratır.
- Clean session: komutları kaçırmak istemiyorsanız kalıcı oturum (clean start = false) kullanın.
- TLS: ESP32'de kök sertifikayı firmware'e gömün; RAM sınırları nedeniyle sertifika zincirini kısa tutun.
- Payload: JSON okunabilir ama pahalıdır; dar bant hatlarda CBOR veya ikili paket tercih edin.
ESP32 tarafında prototipleme adımlarını ESP32 ile prototip geliştirme yazımızda; uzun menzilli mesh senaryolarını ise Meshtastic PCB tasarımı rehberimizde ayrıntılı olarak ele aldık.
MQTT Kararlılığı Donanımda Başlar: IoT PCB Tasarımı
Sahada "MQTT sürekli kopuyor" şikâyetlerinin önemli bir kısmının kaynağı yazılım değil, kart tasarımı ve dizgi kalitesidir. RF modülünün anten bölgesinde bakır bırakılması, besleme hattının zayıf dekuplajı ya da modül altında soğuk lehim, TCP oturumunu saniyeler içinde düşürür. Dikkat edilmesi gerekenler:
- Anten ve modül anten çıkışının altında/yanında keep-out alanı; toprak dökümü ve iz geçişi yok.
- Anten besleme hattında 50 Ω kontrollü empedans; mümkün olan en kısa yol, keskin köşe yerine yay geçiş.
- Modül VDD pinine yakın 100 nF + 10 µF dekuplaj; iletim anındaki akım sıçraması (ESP32'de tepe ~500 mA) için düşük ESR kapasitör.
- Uyku akımını bozan yüksek kaçaklı pull-up'lardan kaçının; pil ömrü doğrudan MQTT keepalive periyoduyla etkileşir.
- Modül toprak pedlerinde yeterli via stitching; termal ped altında void oranını X-Ray ile doğrulayın.
Bu kuralların üretim tarafındaki karşılığı için DFM rehberimize ve modül altındaki lehim kalitesini görünür kılan AOI ve X-Ray kalite kontrol yazımıza göz atın. RF modüllerinin lehim profili hassastır; reflow lehimleme profili doğru kurulmadığında anten empedansı bile etkilenebilir.
EMQX Güvenlik Kontrol Listesi
- Anonim erişimi kapatın; her cihaza benzersiz kimlik verin.
- 8883 portunda TLS 1.2+; kritik projelerde istemci sertifikası (mTLS) zorunlu olsun.
- ACL kurallarıyla her cihazı yalnızca kendi topic ağacına kısıtlayın (
cihaz/{id}/#). - Bağlantı ve yayın hızı sınırları (rate limit) tanımlayın; bozulan bir cihaz broker'ı meşgul etmesin.
- Yönetim panelini genel internete açmayın; VPN veya IP kısıtı kullanın.
Türkiye'de Tipik EMQX + MQTT Senaryoları
- Endüstriyel izleme: makine üzerindeki sensör kartları titreşim/sıcaklık verisini MQTT ile gönderir, kural motoru eşik aşımında alarm üretir.
- Akıllı sayaç ve enerji: QoS 2 ile endeks verisi, kalıcı oturumla kesinti sonrası telafi.
- Bina otomasyonu: aydınlatma ve iklimlendirme kontrolü; retained mesajla panelde anlık durum.
- Tarım ve sulama: NB-IoT modülleriyle günde birkaç yayın, pil ömrü için uzun keepalive.
- Filo ve lojistik: mobil hatta kesinti toleransı için LWT ile araç çevrimdışı durumunun anında bilinmesi.
Bu senaryoların hepsinde donanım tarafı aynı yere çıkar: doğru tasarlanmış ve düzgün dizilmiş bir kart. IoT ürünlerinde ARGE'den seri üretime geçiş sürecini IoT PCB tasarımı ve ARGE yazımızda anlattık; üretim tarafını PCB dizgi hizmetimiz ve elektronik kart üretimi sayfalarımızdan inceleyebilirsiniz.
EMQX'e Alternatifler
| Broker | Güçlü yanı | Uygun olduğu ölçek |
|---|---|---|
| EMQX | Kümeleme, kural motoru, MQTT 5.0/QUIC | Binlerce–milyonlarca cihaz |
| Mosquitto | Çok hafif, tek ikili dosya | Prototip, küçük saha kurulumu |
| NanoMQ | Uç (edge) cihazda düşük kaynak | Gateway üzerinde yerel broker |
| VerneMQ | Erlang tabanlı dağıtık mimari | Orta–büyük ölçek |
Sıkça Sorulan Sorular
IoT kartınızı üretime hazırlayalım
MQTT tarafı hazırsa sıra donanımda. Dizgi Hizmeti olarak RF modüllü IoT kartlarınızın prototip ve seri üretimini IPC-A-610 Class 3 kalite seviyesinde, AOI ve X-Ray kontrolüyle yapıyoruz. Gerber ve BOM dosyalarınızı gönderin, 24 saat içinde teklif ve DFM geri bildirimi alın.