IoT Eğitimleri

Grafana MQTT Veri Kaynağı: Broker'ınızdan Canlı Akış Panelleri

Grafana'nın MQTT veri kaynağı eklentisini kurup yapılandırın, broker.connectmq.com'dan sayısal ve JSON payload'ları canlı panellere aktarın ve InfluxDB gibi bir zaman serisi veritabanının ne zaman daha iyi bir seçim olduğuna karar verin.

Bir broker'dan gerçek zamanlı panel grafiğine canlı sıcaklık değerleri aktaran Grafana MQTT veri kaynağı
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

Grafana MQTT veri kaynağı (datasource) eklentisi, bir panelin broker topic'lerine subscribe olmasını ve değerleri publish edildikleri anda, arada hiçbir veritabanı olmadan çizmesini sağlar. Bu eğitimde eklentiyi kuracak, broker.connectmq.com adresine bağlayacak, sayısal ve JSON payload'lardan canlı paneller oluşturacak ve bunun yerine tam olarak ne zaman bir zaman serisi veritabanı eklemeniz gerektiğini öğreneceksiniz.

Grafana MQTT Veri Kaynağı Nasıl Çalışır

Grafana veri kaynaklarının çoğu sorgu tabanlıdır: bir panel bir veritabanından bir zaman aralığı ister ve sonucu çizer. MQTT veri kaynağı farklıdır. Grafana Live üzerine kurulu bir akış (streaming) veri kaynağıdır. Bir panel açıldığında Grafana sunucusu belirttiğiniz topic'e subscribe olur ve her mesaj bir WebSocket üzerinden tarayıcıya iletilip grafiğe eklenir.

Bu tasarımın, ciddi bir şey kurmadan önce anlamanız gereken iki sonucu vardır:

  1. Gecikme mükemmeldir. Bir cihazın publish ettiği değer panelde neredeyse anında görünür; bu da devreye alma, canlı demolar ve kontrol odası tarzı görünümler için idealdir.
  2. Geçmiş yoktur. Eklenti yalnızca panel açıkken gelenleri gösterir. Paneli yeniden yükleyin, grafik boş başlar. Dünü görmek için uzaklaşamazsınız, çünkü dün hiç saklanmadı.

Her ikisini de aklınızda tutun. MQTT veri kaynağı canlı akışa açılan bir penceredir, onun kaydı değildir.

Eklentiyi Kurun

Eklenti ID'si grafana-mqtt-datasource'tur. Yerel bir Grafana kurulumunda:

grafana cli plugins install grafana-mqtt-datasource
sudo systemctl restart grafana-server

Eski Grafana sürümleri grafana cli yerine grafana-cli ikili dosyasını kullanır. Docker ile container'ın eklentiyi başlangıçta kurmasına izin verin:

services:
  grafana:
    image: grafana/grafana:11.3.0
    ports:
      - "3000:3000"
    environment:
      GF_INSTALL_PLUGINS: grafana-mqtt-datasource
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  grafana-data:

docker compose up -d komutunu çalıştırın ve http://localhost:3000 adresini açın. Varsayılan giriş admin / admin'dir ve Grafana sizden bunu değiştirmenizi ister.

Bağlantıyı Yapılandırın

Grafana'da Connections, ardından Data sources, ardından Add data source bölümüne gidin ve MQTT'yi arayın. Ayarlar sayfası bir URI ve isteğe bağlı kimlik bilgileri ister.

Ayar Herkese açık test broker'ı Özel broker (üretim)
URI tcp://broker.connectmq.com:1883 tls://broker.connectmq.com:8883
Kullanıcı adı boş YOUR_USERNAME
Parola boş YOUR_PASSWORD
TLS seçenekleri yok CA'yı boş bırakın; Let's Encrypt sertifikası herkesçe güvenilirdir

Save and test'e tıklayın. Yeşil bir onay, broker'a tarayıcınızın değil Grafana sunucusunun ulaştığı anlamına gelir. Bu ayrım kısıtlı ağlarda önemlidir: sunucunun 1883 veya 8883 portuna dışarı erişimi olması gerekir. Eklenti sürümünüz bir client ID alanı gösteriyorsa ve client ID'leri kimlik bilgilerine bağlayan yönetilen bir broker'a bağlanıyorsanız, kullanıcı adınızla birlikte verilen client ID'yi girin.

Biraz Test Verisi Publish Edin

Test topic'lerinizin herkese açık broker'da ayrı kalması için connectmq/demo/a1b2c3 gibi benzersiz bir önek seçin. Bu Bash döngüsü her iki saniyede bir düz sayısal bir sıcaklık publish eder:

ID=a1b2c3
while true; do
  T=$(awk -v r=$RANDOM 'BEGIN { printf "%.2f", 20 + r / 32767 * 5 }')
  mosquitto_pub -h broker.connectmq.com -p 1883 -i "pub-$ID" \
    -t "connectmq/demo/$ID/room1/temperature" -m "$T"
  sleep 2
done

Bu ise birkaç değer içeren bir JSON nesnesi publish eder:

ID=a1b2c3
while true; do
  T=$(awk -v r=$RANDOM 'BEGIN { printf "%.2f", 20 + r / 32767 * 5 }')
  H=$(awk -v r=$RANDOM 'BEGIN { printf "%.1f", 40 + r / 32767 * 15 }')
  mosquitto_pub -h broker.connectmq.com -p 1883 -i "pubjson-$ID" \
    -t "connectmq/demo/$ID/room1/telemetry" \
    -m "{\"temperature\": $T, \"humidity\": $H}"
  sleep 2
done

Aynı anda çok sayıda cihaz için Python ile MQTT cihaz simülatörünü çalıştırın ve panelleri tek tek cihaz topic'lerine yönlendirin.

Grafana MQTT Veri Kaynağı ile Canlı Bir Panel Oluşturun

  1. Yeni bir dashboard oluşturun ve bir görselleştirme ekleyin.
  2. MQTT veri kaynağını seçin.
  3. Sorgu düzenleyicisine topic'i girin, örneğin connectmq/demo/a1b2c3/room1/temperature.
  4. Time series görselleştirmesini seçin. Değerler saniyeler içinde görünmeye başlar.
  5. Dashboard zaman aralığını son 5 dakika gibi kısa bir değere ayarlayın. Panel akış halinde olduğu için otomatik yenilemeye gerek yoktur.

JSON topic'i için eklenti, nesnedeki her sayısal anahtarı kendi alanına dönüştürür; böylece temperature ve humidity aynı panelde iki seri olur. Nemi sağ taraftaki bir eksene koymak veya her seriye kendi birimini vermek için field override'ları kullanın. Stat ve Gauge panelleri tekil güncel değerler için iyi çalışır; her zaman en yeni ölçümü göstermeleri için hesaplamalarını "Last" olarak ayarlayın.

Eklentinin güncel sürümleri topic alanında + ve # wildcard'larını kabul eder; bu, bir grup sensörü tek bir panelde izlemek için kullanışlıdır. Sürümünüz wildcard'ları reddediyorsa, her panel birden fazla sorgu barındırabildiği için bunun yerine topic başına bir sorgu ekleyin.

Yaygın Sorunlar ve Çözümleri

Belirti Neden Çözüm
"Save and test" başarısız Grafana sunucusu broker'a ulaşamıyor Sunucudan mosquitto_sub ile test edin; güvenlik duvarlarını ve URI şemasını kontrol edin
Panel boş kalıyor Topic uyuşmazlığı veya henüz hiçbir şey publish edilmemiş mosquitto_sub -t "connectmq/demo/a1b2c3/#" -v ile doğrulayın
Yeniden yüklemeden sonra grafik boş Beklenen davranış; geçmiş saklanmaz Geçmiş için bir zaman serisi veritabanı ekleyin
Sayılar yerine metin Payload 21.5 C gibi birimler içeriyor Çıplak sayılar veya JSON sayıları publish edin
Panel tarayıcıda donuyor Tek bir topic'te çok yüksek mesaj hızı Daha seyrek publish edin veya publish etmeden önce toplayın
Özel broker'da yetkisiz hatası Yanlış kimlik bilgileri veya client ID Değerleri broker portalından yeniden kopyalayın

Ne Zaman Bir Zaman Serisi Veritabanı Eklemeli

Akış veri kaynağı dar bir iş kümesi için doğru araçtır. Geçmişe, toplamaya veya zaman içinde alarmlara ihtiyaç duyduğunuz anda broker ile Grafana arasına bir veritabanı koyun.

Gereksinim Yalnızca MQTT veri kaynağı Telegraf + InfluxDB + Grafana
Saniyenin altında canlı görünüm Evet Yakın, flush aralığıyla sınırlı
Geçen haftayı görmek Hayır Evet
Saatlik ortalamalar, min/maks Hayır Evet, sorgu içinde
Zaman pencereleri üzerinde alarm kuralları Sınırlı Evet
Dashboard yeniden yüklemesinden etkilenmemek Hayır Evet
Çalıştırılacak ek bileşenler Yok İki

Yaygın bir desen ikisini birleştirir: eğilim için veritabanı destekli bir panel, güncel değer için bir akış paneli. Telegraf MQTT consumer eğitimi aynı topic'lerin InfluxDB'ye nasıl yazılacağını gösterir; Docker Compose ile TIG stack ise hazır dashboard'larla tüm yığını tek bir dosyada sunar. Geçmiş oluştuğunda IoT sensör verisi için Grafana alarmları mümkün hale gelir.

Üretim için Notlar

Herkese açık broker'ı herkes okuyabilir; bu yüzden onu yalnızca test verileri için kullanın. Gerçek ekipmanlar için Grafana'yı özel, TLS korumalı bir broker'a bağlayın. ConnectMQ'nun barındırılan MQTT broker hizmeti 8883 portunda TLS ve portaldan kimlik bilgileri sağlar; Grafana ona diğer tüm MQTT istemcileri gibi bağlanır. Her Grafana sunucusu bağlantısının planınızın bağlantı sınırına dahil olduğunu unutmayın; bu sınır Serverless (Free) planında 25'tir.

Hiç Grafana sunucusu istemediğiniz yalnızca tarayıcı tabanlı kullanım senaryolarında, 8084 portunda WebSocket üzerinden MQTT kullanan küçük bir web sayfası canlı değerleri doğrudan gösterebilir. Bunun veya cihaz kodunun için doğru istemci yığınını seçmek üzere MQTT istemci kütüphaneleri rehberine bakın. Eklentinin kendi Grafana MQTT veri kaynağı sayfası güncel seçeneklerini belgeler.

ConnectMQ ile Başlayın

Eklentiyi broker.connectmq.com adresine yönlendirin, dakikalar içinde canlı bir paneliniz olsun. Dashboard gerçek cihazları gösterecekse broker'ınızı ConnectMQ üzerinde çalıştırın; burada panelleri bağlamadan önce topic'leri kontrol etmek için tarayıcı içi bir MQTT istemcisi ve canlı bir topic gezgini de edinirsiniz. Kredi kartı gerektirmeden app.connectmq.com adresinde ücretsiz bir Serverless broker oluşturun. Daha büyük bir yaygınlaştırma mı planlıyorsunuz? Bulut MQTT broker rehberimiz ölçek büyüdüğünde nelerin değiştiğini ele alır.

Sık Sorulan Sorular

Grafana MQTT veri kaynağı veri saklar mı?

Hayır. Mesajları Grafana Live aracılığıyla açık panellere aktarır ve panel kapandığında hiçbir şey tutmaz. Geçmişe ihtiyacınız olduğunda InfluxDB gibi bir zaman serisi veritabanı kullanın.

Topic alanında wildcard kullanabilir miyim?

Güncel eklenti sürümleri + ve # destekler. Eski sürümlerde topic başına bir sorgu ekleyin.

Eklentiyle hangi payload formatları çalışır?

Düz sayısal payload'lar ve sayısal değerler içeren JSON nesneleri en iyi sonucu verir. Her sayısal JSON anahtarı panelde ayrı bir alan olur.

Tarayıcı broker'a doğrudan mı bağlanır?

Hayır. MQTT bağlantısını Grafana sunucusu tutar ve verileri Grafana Live üzerinden tarayıcılara iletir; bu yüzden broker'a yalnızca sunucunun ağ erişimi olması gerekir.

İlgili yazılar

Test, Betik ve Hata Ayıklama için En İyi MQTT CLI Araçları

mosquitto_pub/sub, MQTTX CLI, HiveMQ MQTT CLI, MQTT.js CLI, curl ve mqttui'nin uygulamalı karşılaştırması; betik yazma ve hata ayıklama için doğru aracı seçebilmeniz için aynı test broker.connectmq.com üzerinde çalıştırıldı.

7 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.