IoT Otomasyon

Home Assistant Harici MQTT Broker: TLS Üzerinden Bulut Broker'a Bağlanma

Home Assistant ile harici MQTT broker kullanmanın kanıtlanmış iki yolu: entegrasyonu TLS üzerinden doğrudan bir bulut broker'ına bağlayın ya da yerel Mosquitto eklentisini köprüleyerek cihazların çevrimdışıyken de çalışmasını sağlayın.

Home assistant harici mqtt broker kurulumunda tek bir bulut broker'ını paylaşan iki ev ve bir yazlık
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

Home Assistant harici MQTT broker kurulumu, broker'ı evinizin dışına taşır; böylece yazlıktaki, atölyedeki ya da bir akrabanızın dairesindeki cihazlar port yönlendirme veya VPN olmadan aynı Home Assistant ile konuşabilir. Bu rehberde Home Assistant'ı TLS üzerinden bir bulut broker'ına bağlayacak, birden fazla konum için topic'leri düzenleyecek ve alternatif olarak yerel Mosquitto eklentisini buluta köprüleyerek internet kesildiğinde yerel cihazların çalışmaya devam etmesini sağlayacaksınız.

Neden Harici Bir Broker Kullanmalı?

Mosquitto eklentisinin varsayılan tercih olmasının bir nedeni var: yereldir, hızlıdır ve basittir. Ancak cihazlar ev LAN'ınızda olmadığında işler zorlaşır:

  • İkinci bir mülkteki sensörün ev ağınıza ulaşması gerekir; bu da port yönlendirme, dinamik DNS ve bir broker'ı internete açmak ya da pille çalışan donanımda VPN çalıştırmak anlamına gelir.
  • Birden fazla Home Assistant örneği (sizinki, ailenizinki) tek bir cihaz setini kolayca paylaşamaz.
  • Bir sunucudaki Grafana yığını veya bir mobil uygulama gibi diğer uygulamaların kendi erişim yollarına ihtiyacı vardır.

Harici bir broker yönü tersine çevirir. Home Assistant dahil her istemci aynı buluttaki MQTT broker'ına dışa doğru bağlanır. Evinizde hiçbir şey dinlemez ve her konum eşittir.

Yaklaşım İnternet kesildiğinde yerel cihazlar Uzak cihazlar Karmaşıklık
Yalnızca yerel Mosquitto Çalışır VPN veya port yönlendirme gerekir Düşük
Doğrudan bulut broker'ı Yeniden bağlanana kadar raporlamayı keser Her yerde çalışır Düşük
Buluta köprülenmiş yerel Mosquitto Çalışır Her yerde çalışır Orta

Cihazların çoğu uzaktaysa veya sadeliğe önem veriyorsanız doğrudan bağlantıyı seçin. Kritik yerel otomasyonlar (aydınlatma, ısıtma) evdeki MQTT cihazlarına bağlıysa köprüyü seçin.

Seçenek 1: Home Assistant'ı Doğrudan Bulut Broker'ına Bağlayın

Broker'ı ve kimlik bilgilerini oluşturun

ConnectMQ portalına kaydolun, bir broker oluşturun ve üretilen kullanıcı adını, parolayı ve client ID'yi not edin. Home Assistant ve her uzak cihaz için ayrı kimlik bilgileri oluşturun; böylece birini diğerlerine dokunmadan iptal edebilirsiniz.

Home Assistant'a dokunmadan önce kimlik bilgilerini bir bilgisayardan test edin:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID \
  -t "sites/#" -v

Homebrew kullanılan macOS'ta --capath /etc/ssl/certs yerine bir CA paketini gösteren --cafile kullanın; örneğin $(brew --prefix)/etc/ca-certificates/cert.pem. Bu komut bağlanıp sessizce bekliyorsa kimlik bilgileri ve TLS yolu sorunsuzdur.

Entegrasyonu yapılandırın

  1. Home Assistant kullanıcı profilinizde Advanced mode'u etkinleştirin. Bu olmadan client ID ve TLS seçenekleri gizli kalır.
  2. Settings > Devices & services > Add integration > MQTT yolunu izleyin (veya mevcut MQTT kaydınızı yeniden yapılandırın).
  3. Şunları girin:
    • Broker: broker.connectmq.com
    • Port: 8883
    • Username / Password: Home Assistant kimlik bilgileri
    • Client ID: verilen client ID, birebir aynı
    • Broker certificate validation: Auto
    • Transport: TCP
    • MQTT protocol: 5 (veya 3.1.1; ikisi de desteklenir)
  4. Gönderin ve entegrasyonun bağlı göründüğünü kontrol edin.

Auto doğrulama, broker'ın sunduğu Let's Encrypt sertifikasına güvenen sistem CA deposunu kullanır. İnternet bağlantısı için asla Off seçmeyin. Ağınız dışa giden 8883'ü engelliyorsa, transport'u 8084 portu ve /mqtt yolu ile WebSockets olarak değiştirin; bu, çoğu güvenlik duvarının izin verdiği HTTPS benzeri trafik üzerinden çalışır. Ayrıntılar için WebSocket üzerinden MQTT yazısına bakın.

Uzak bir cihaz

Uzaktaki bir ESP32, kendi kimlik bilgileriyle aynı broker'a yayın yapar:

#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>

WiFiClientSecure net;
PubSubClient mqtt(net);

void setup() {
  WiFi.begin("CABIN_WIFI", "CABIN_WIFI_PASSWORD");
  while (WiFi.status() != WL_CONNECTED) delay(250);
  net.setCACert(ISRG_ROOT_X1);   // Let's Encrypt kök sertifikası, PEM dizesi başka yerde tanımlı
  mqtt.setServer("broker.connectmq.com", 8883);
}

void loop() {
  if (!mqtt.connected()) {
    if (mqtt.connect("YOUR_CLIENT_ID", "YOUR_USERNAME", "YOUR_PASSWORD",
                     "sites/cabin/boiler-room/availability", 1, true, "offline")) {
      mqtt.publish("sites/cabin/boiler-room/availability", "online", true);
    } else {
      delay(5000);
      return;
    }
  }
  mqtt.loop();
  static unsigned long last = 0;
  if (millis() - last > 60000) {
    last = millis();
    mqtt.publish("sites/cabin/boiler-room/climate", "{\"temperature\":6.4,\"humidity\":71}");
  }
}

ESP32 MQTT eğitimi kök sertifikanın nasıl gömüleceğini gösterir. Home Assistant'ta sensörü YAML ile tanımlayın ya da cihazın kendini Home Assistant MQTT discovery ile duyurmasına izin verin.

Birden Fazla Konum İçin Topic Tasarımı

Tek bir broker'da çok sayıda konum varsa, konumu en başa koyun:

sites/<site>/<room>/<device>/<measurement-or-command>
sites/home/livingroom/climate
sites/cabin/boiler-room/climate
sites/cabin/boiler-room/availability
sites/workshop/compressor/power

Faydaları: konum başına tek bir wildcard (sites/cabin/#), kolay köprü kuralları ve ConnectMQ topic gezgininde net sahiplik. Discovery config'lerini varsayılan homeassistant/ öneki altında tutun; iki Home Assistant örneği broker'ı paylaşıyorsa, birbirlerinin varlıklarını almamaları için her birine kendi discovery önekini verin.

Seçenek 2: Mosquitto Eklentisini Buluta Köprüleyin

Köprü, yerel Mosquitto'nuzdan harici broker'a uzanan ve seçilen topic'leri tek ya da iki yönde ileten bir bağlantıdır. Home Assistant ve yerel cihazlar yerel broker ile konuşmaya devam eder; böylece otomasyonlar internet kesintilerinden etkilenmez, uzak konumlar ise köprü üzerinden görünür.

  1. Mosquitto eklentisi yapılandırmasında özel config'i etkinleştirin:
customize:
  active: true
  folder: mosquitto
  1. /share/mosquitto/bridge.conf dosyasını oluşturun (örneğin File editor veya Samba eklentisiyle):
connection connectmq
address broker.connectmq.com:8883
bridge_protocol_version mqttv311
remote_clientid YOUR_CLIENT_ID
remote_username YOUR_USERNAME
remote_password YOUR_PASSWORD
bridge_capath /etc/ssl/certs
bridge_insecure false
cleansession true
try_private false
notifications false
restart_timeout 10 60

# yerel ev verisi yukarı çıkar, uzak konumlar aşağı iner
topic sites/home/# out 1
topic sites/cabin/# in 1
topic sites/workshop/# in 1
  1. Eklentiyi yeniden başlatın ve günlüğünde köprünün bağlandığını belirten satırı kontrol edin.

Uzak taraf başka bir Mosquitto örneği değilse try_private false önerilir. Eklenti sizin sürümünüzde CA dizinini bulamıyorsa, ISRG Root X1 PEM dosyasını /share/mosquitto/ içine indirin ve bunun yerine bridge_cafile /share/mosquitto/isrgrootx1.pem kullanın. # topic'ini asla iki yönde köprülemeyin; döngüler ve yinelenen mesajlar oluşturur.

Köprü, bulut broker'ının sıradan bir MQTT istemcisi gibi davranan standart bir Mosquitto özelliğidir; bu nedenle TLS ve kimlik bilgilerini kabul eden her barındırılan MQTT broker'ıyla çalışır.

Bağlantıyı İzleme

Home Assistant harici bir broker'a bağımlı hale geldiğinde bağlantı sorunlarını görünür kılın. Her uzak cihaza retained bir online mesajı ve offline last will içeren bir erişilebilirlik topic'i verin ve bunu varlık tanımlarınızda kullanın; böylece uzak sensörler eski değerleri göstermek yerine kullanılamaz duruma geçer. Uzak bir konumun erişilebilirlik varlığı on dakika boyunca kullanılamaz kaldığında sizi bilgilendiren basit bir Home Assistant otomasyonu, ikinci mülkteki elektrik kesintilerini ve modem arızalarını yakalar. Broker tarafında canlı topic gezgini bir konumun hâlâ yayın yapıp yapmadığını gösterir ve eşik uyarı kuralları, yazlıktaki don riski sıcaklığı gibi kritik değerleri izleyebilir.

Güvenlik Kontrol Listesi

  1. Her internet bağlantısında TLS (8883 veya 8084); gerçek kimlik bilgileriyle asla düz 1883 kullanmayın.
  2. Konum veya cihaz başına bir kimlik bilgisi seti; her şeyi yenilemek yerine iptal edin.
  3. Client ID'ler verilen kimlik bilgileriyle eşleşmelidir; ConnectMQ bunları birbirine bağlar ve tekrarlanan başarısız girişlerden sonra IP'leri engeller.
  4. Kapı kilidi durumlarını, alarm kodlarını veya varlık (presence) verilerini hiçbir herkese açık MQTT test broker'ına yayınlamayın; bunları özel broker'ınızda tutun.
  5. Komut topic'lerini dar tutun ve cihazların yalnızca bilinen değerleri kabul etmesini sağlayın.

Genel ilkeler MQTT güvenliği en iyi uygulamaları yazısında yer alıyor.

Sorun Giderme

Belirti Neden Çözüm
Günlükte "Not authorized" Yanlış parola veya client ID Kimlik bilgilerini yeniden kopyalayın; client ID birebir eşleşmeli
Certificate verify failed Doğrulama CA olmadan custom olarak ayarlanmış veya çok eski sistem Auto doğrulamayı kullanın; işletim sistemini güncelleyin
Bağlanıyor, sonra birkaç saniyede bir kopuyor Aynı client ID iki istemci tarafından kullanılıyor Her istemciye kendi kimlik bilgilerini verin
Köprü bağlı ama veri yok Topic kalıpları eşleşmiyor Kalıpları topic gezginindeki gerçek topic'lerle karşılaştırın
Yinelenen mesajlar Topic iki yönde köprülenmiş Çakışan kalıplar için both değil, in veya out kullanın

Home Assistant'ı ConnectMQ'ya Bağlayın

app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun. Ücretsiz plan 25 bağlantıya kadar destekler; bu da Home Assistant, bir köprü ve bir dizi uzak cihaz için yeterlidir ve daha sonra topic'leri değiştirmeden yükseltebilirsiniz. ConnectMQ broker'ı çalıştırır, sertifikaları yeniler ve trafiğinizi izole eder. Daha fazla proje için IoT otomasyon rehberine ve temel Home Assistant MQTT kurulumuna göz atın.

Sık Sorulan Sorular

İnternet kesilirse otomasyonlarım durur mu?

Doğrudan bulut bağlantısında, MQTT varlıkları bağlantı geri gelene kadar güncellenmez. Yerel otomasyonlar MQTT cihazlarına bağlıysa, yerel trafiğin evden hiç çıkmaması için Mosquitto köprüsünü kullanın.

Modemimde port açmam gerekir mi?

Hayır. Home Assistant, köprü ve uzak cihazların tümü harici broker'a dışa doğru bağlanır; bu nedenle gelen port gerekmez.

İki Home Assistant örneği tek bir harici broker'ı paylaşabilir mi?

Evet. Her örneğe kendi kimlik bilgilerini ve discovery önekini verin ve topic'leri konuma göre düzenleyin; böylece her örnek yalnızca ihtiyaç duyduğu topic'lere abone olur.

8883 engelliyse hangi portu kullanmalıyım?

/mqtt yolu ile 8084 portunda güvenli WebSocket kullanın; Home Assistant bunu WebSockets transport seçeneğiyle destekler.

İlgili yazılar

Zigbee2MQTT Kurulum Rehberi: Koordinatörden Panoya

Zigbee2MQTT'yi Docker ile kurun, koordinatörü ve MQTT bağlantısını yapılandırın, cihazları eşleştirip yeniden adlandırın, onları MQTT üzerinden kontrol edin ve durumlarını bir panoda görüntüleyin; önce ücretsiz herkese açık bir broker'da test edin.

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.