MQTT (mesaj kuyruğu telemetri taşımacılığı), cihazlar arasında güvenilir ve verimli iletişim için IoT (Nesnelerin İnterneti) uygulamalarında yaygın olarak kullanılan hafif bir mesajlaşma protokolüdür. Bir Raspberry Pi'de bir MQTT sunucusu barındırmak, IoT projeleriniz için yerel bir mesajlaşma merkezi oluşturmanızı sağlar. Bu kılavuz, bir Raspberry Pi'de bir MQTT sunucusu kurup çalıştırarak size yürür.
Ne İhtiyacınız Olacak
- Ahududu pi (GPIO destekli herhangi bir model, örneğin Pi 3, Pi 4)
- MicroSD kart (en az 8GB, Sınıf 10 veya daha iyi)
- Güç kaynağı (5V, Pi 3 için minimum 2.5a; 5V, Pi 4 için 3A)
- Raspberry Pi OS (Lite veya masaüstü sürümü)
- İnternet bağlantısı
- MQTT Müşterileri (ör. ESP8266, ESP32 veya MQTT yazılım araçları)
1. Adım: Raspberry Pi'yi güncelleyin
- Raspberry Pi'nizin güncel olduğundan emin olun:
sudo apt update && sudo apt upgrade -y
2. Adım: Mosquitto MQTT komisyoncusu yükleyin
Mosquitto hafif ve yaygın olarak kullanılan bir MQTT komisyoncusudur.
-
Mosquitto ve istemci araçlarını yükleyin:
sudo apt install -y mosquitto mosquitto-clients
-
Mosquitto'nun önyüklemeye başlamasını sağlayın:
sudo systemctl enable mosquitto
-
Mosquitto hizmetini başlatın:
sudo systemctl start mosquitto
Adım 3: MQTT Broker'ı test edin
-
Raspberry Pi'nize iki terminal penceresi veya SSH seansları açın.
-
İlk terminalde, bir test konusuna abone olun:
mosquitto_sub -h localhost -t test/topic
-
İkinci terminalde bir test mesajı yayınlayın:
mosquitto_pub -h localhost -t test/topic -m "Hello, MQTT!"
-
"Merhaba, MQTT!" İlk terminalde.
Adım 4: Harici bağlantılar için sivrisinek yapılandırın
-
Mosquitto yapılandırma dosyasını açın:
sudo nano /etc/mosquitto/mosquitto.conf
-
Harici bağlantılara izin vermek için aşağıdaki satırları ekleyin:
listener 1883 allow_anonymous true
Not: Üretim ortamları için, anonim erişim sağlamak yerine kullanıcı kimlik doğrulamasını ayarlayın.
-
Değişiklikleri uygulamak için sivrisinek hizmetini yeniden başlatın:
sudo systemctl restart mosquitto
-
Bir MQTT istemci aracı (örn. MQTT.FX veya MQTT Explorer) kullanarak aynı ağdaki başka bir cihazdan gelen bağlantıyı test edin.
Adım 5: MQTT Broker'ı (isteğe bağlı) sabitleyin
-
Parola kimlik doğrulamasını etkinleştirin:
sudo mosquitto_passwd -c /etc/mosquitto/passwd <username>
- Kullanıcı için bir şifre girin ve onaylayın.
-
Parola dosyasını kullanmak için Mosquitto yapılandırma dosyasını güncelleyin:
allow_anonymous false password_file /etc/mosquitto/passwd
-
Mosquitto hizmetini yeniden başlatın:
sudo systemctl restart mosquitto
-
Bağlantıyı kullanıcı adı ve şifreyi kullanarak test edin.
Adım 6: IoT cihazlarını MQTT komisyoncusuna bağlayın
-
ESP8266/ESP32 için: Raspberry Pi MQTT komisyoncunuzdaki konulara yayınlamak/abone olmak için IoT cihazlarınızı programlamak için Arduino IDE'yi kullanın.
#include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "YourSSID"; const char* password = "YourPassword"; const char* mqtt_server = "<raspberry-pi-ip>"; WiFiClient espClient; PubSubClient client(espClient); void setup() { WiFi.begin(ssid, password); client.setServer(mqtt_server, 1883); } void loop() { if (!client.connected()) { client.connect("ESPClient"); } client.loop(); client.publish("test/topic", "Hello from ESP8266!"); delay(1000); }
-
Yazılım istemcileri için: MQTT.FX, MQTT Explorer veya Python'u kullanın.
paho-mqtt
kütüphane.import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("test/topic") def on_message(client, userdata, msg): print(msg.topic+" "+str(msg.payload)) client = mqtt.Client() client.on_connect = on_connect client.on_message = on_message client.connect("<raspberry-pi-ip>", 1883, 60) client.loop_forever()
Sorun giderme
-
MQTT komisyoncusuna bağlanılamıyor:
- Sivrisinek çalıştırdığından emin olun:
sudo systemctl status mosquitto
- Raspberry Pi'nizdeki güvenlik duvarı ayarlarını kontrol edin.
- Sivrisinek çalıştırdığından emin olun:
-
Kimlik Doğrulama Hataları:
- Mosquitto yapılandırmasında ve istemci kurulumundaki kullanıcı adını ve şifreyi doğrulayın.
-
Bağlantı reddedildi:
- Cihazın Raspberry Pi ile aynı ağda olduğundan emin olun.
- 1883 bağlantı noktasının açık olduğunu kontrol edin.
MQTT uygulamaları
- IoT cihaz iletişimi
- Ev Otomasyon Sistemleri
- Gerçek Zamanlı Veri Akışı
- Uzaktan İzleme ve Kontrol
Çözüm
Bir Raspberry Pi'de bir MQTT sunucusunu barındırmak, IoT projeleriniz için hafif ve güvenilir iletişimi sağlamak için mükemmel bir yoldur. Bu kılavuzu izleyerek, bir Mosquitto MQTT komisyoncusu kurabilir ve sabitleyebilir, IoT cihazlarını bağlayabilir ve güçlü uygulamalar oluşturmaya başlayabilirsiniz. MQTT'nin tam potansiyelini keşfetmek için farklı konfigürasyonlarla deneyin!