Uygulamalı Eğitimler

Tasmota MQTT Kurulumu: Topic'ler, Komutlar ve Telemetri

Tasmota'da MQTT kurun: broker, FullTopic ve Topic, cmnd/stat/tele yapısı, POWER komutları, TelePeriod telemetrisi, LWT ve online istemciyle test etme adımları.

Güncellendi · 9 dk okuma

Tasmota MQTT Kurulumu: Topic'ler, Komutlar ve Telemetri

Tasmota, ucuz ESP8266 ve ESP32 tabanlı akıllı prizleri, röleleri ve sensörleri düzgün çalışan MQTT cihazlarına dönüştürür. Bir broker'a yönlendirin, bir topic adı verin; cmnd/<topic>/… üzerinden komut kabul eder, sonuçları stat/<topic>/… üzerinden bildirir ve periyodik telemetriyi tele/<topic>/… üzerinden gönderir. Bu üç öneki kavradığınızda herhangi bir Tasmota cihazını herhangi bir MQTT istemcisinden kontrol edebilirsiniz.

Bu rehber broker bağlantısını yapılandırıyor, Topic ve FullTopic'i açıklıyor, her gün kullanacağınız komutları ve telemetriyi ele alıyor ve Home Assistant veya Node-RED'e bağlamadan önce her şeyi tarayıcıdan test ediyor.

Broker'ı yapılandırma

Cihazın web arayüzünü açın ve Configuration → Configure MQTT bölümüne gidin:

AlanDeğerNotlar
Hostbroker.connectmq.comBroker'ınızın hostname'i veya IP'si
Port18838883 yalnızca TLS destekli build'lerde (aşağıya bakın)
Clienttasmota-plug1Her cihaz için benzersiz olmalı; varsayılan DVES_%06X çip ID'sini kullanır
User / Passwordbroker kimlik bilgilerinizYalnızca kimlik doğrulamasız broker'larda boş bırakın
Topictestmqtt-plug1Cihazın kısa adı
Full Topictestmqtt/tasmota/%prefix%/%topic%/Tüm topic'lerin şablonu

Kaydettiğinizde cihaz yeniden başlar. Aynısını Console üzerinden Backlog ile tek satırda da yapabilirsiniz; çok sayıda cihaz yapılandırırken oldukça işe yarar:

Tasmota console
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttUser username; MqttPassword password; MqttClient tasmota-plug1; Topic testmqtt-plug1; FullTopic testmqtt/tasmota/%prefix%/%topic%/

MQTT'nin açık olduğundan emin olun (Configuration → Configure Other → MQTT enable veya SetOption3 1). Yeniden başlatmadan sonra konsol şunu yazdırmalıdır:

Console output
MQT: Attempting connection...
MQT: Connected

Bunun yerine MQT: Connect failed to broker.connectmq.com:1883, rc -2. Retry in 10 sec görüyorsanız cihaz TCP bağlantısı açamamıştır; rc 4 veya rc 5 kimlik bilgilerinin reddedildiği anlamına gelir. Tasmota bağlanmıyor rehberi tüm durumları ele alıyor.

Topic ve FullTopic

Tasmota her MQTT topic'ini FullTopic şablonundan üretir. Çalışma anında üç token değiştirilir:

  • %prefix% → cmnd, stat veya tele olur.
  • %topic% → cihazın Topic'i olur (testmqtt-plug1).
  • Çipten türetilmiş adları tercih ederseniz %hostname% ve %id% da kullanılabilir.

Varsayılan FullTopic %prefix%/%topic%/ ile kitchen adlı bir priz cmnd/kitchen/POWER kullanır. Paylaşımlı bir test broker'ında bu fazlasıyla genel kalır: sizin cmnd/kitchen/POWER topic'iniz başka herkesinkiyle çakışır. Yukarıdaki FullTopic her şeyin başına testmqtt/tasmota/ ekler; bu size ait bir isim alanı sağlar ve abonelikleri kolaylaştırır:

AmaçBizim FullTopic ile topic
Komut göndermetestmqtt/tasmota/cmnd/testmqtt-plug1/POWER
Komut sonucutestmqtt/tasmota/stat/testmqtt-plug1/RESULT
Güncel güç durumutestmqtt/tasmota/stat/testmqtt-plug1/POWER
Periyodik durumtestmqtt/tasmota/tele/testmqtt-plug1/STATE
Sensör okumalarıtestmqtt/tasmota/tele/testmqtt-plug1/SENSOR
Online / Offline (LWT)testmqtt/tasmota/tele/testmqtt-plug1/LWT

Daha büyük bir kurulumda konuma veya işleve göre bir şema seçin ve ona bağlı kalın; akıllı ev topic tasarımı ölçeklenen kalıplar sunuyor.

Komutlar: cmnd ve stat

Her konsol komutu MQTT üzerinden gönderilebilir. Komut adı topic'in son seviyesi, argüman ise payload'dur:

Control a relay with mosquitto_pub
# Aç
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -m ON

# Durum değiştir
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -m TOGGLE

# Durumu sorgula: boş payload hiçbir şeyi değiştirmeden sorar
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -n

Cihaz iki topic'te yanıt verir: {"POWER":"ON"} gibi bir JSON ile stat/testmqtt-plug1/RESULT ve düz ON değeriyle stat/testmqtt-plug1/POWER. Birden fazla röleli cihazlar POWER1, POWER2 vb. kullanır.

Sık kullanacağınız diğer komutlar:

KomutPayloadEtkisi
Status0Tam durum dökümü, birkaç stat/.../STATUS* mesajıyla yanıtlanır
Status6Yalnızca MQTT yapılandırması; FullTopic ve client ID'yi kontrol etmek için kullanışlı
TelePeriod60Her 60 saniyede telemetri gönderir (10–3600)
Dimmer0–100Kısılabilir ışıklarda parlaklık
Restart1Cihazı yeniden başlatır
Backlogcmd1 arg; cmd2 argBirkaç komutu sırayla çalıştırır

Backlog komutunu MQTT üzerinden de gönderebilirsiniz; bu sayede çok sayıda cihazın uzaktan yeniden yapılandırılması tek satırlık bir betiğe dönüşür. Daha fazla terminal kalıbı için mosquitto_pub ve mosquitto_sub örnekleri yazısına bakın.

Telemetri: tele

Her TelePeriod saniyede (varsayılan 300) Tasmota iki mesaj yayınlar:

tele/testmqtt-plug1/STATE
{"Time":"2026-10-17T10:15:00","Uptime":"0T02:14:31","Heap":25,"POWER":"ON","Wifi":{"SSId":"home","RSSI":72,"Signal":-64}}
tele/testmqtt-plug1/SENSOR (plug with energy monitoring)
{"Time":"2026-10-17T10:15:00","ENERGY":{"Total":3.214,"Yesterday":0.412,"Today":0.183,"Power":46,"Voltage":231,"Current":0.214}}

Alanların tam listesi cihaz şablonuna ve bağlı sensörlere göre değişir. tele/.../LWT özeldir: Tasmota bağlandıktan sonra retained Online yayınlar ve Offline mesajını Last Will olarak kaydeder; böylece subscriber'lar cihazın erişilebilir olup olmadığını her zaman bilir.

Değerlere TelePeriod'un izin verdiğinden daha hızlı ihtiyacınız varsa, değişiklikte yayın yapmak için bir kural kullanın. Kurallar doğrudan cihaz üzerinde çalışır:

Publish power changes immediately
Rule1 ON Power1#State DO Publish testmqtt/tasmota/events/testmqtt-plug1 {"power":%value%} ENDON
Rule1 1

Her şeyi tarayıcıdan test edin

  1. Online MQTT istemcisini açın ve /mqtt path'i ile 8084 portundan broker.connectmq.com adresine bağlanın.
  2. testmqtt/tasmota/# topic'ine subscribe olun. Retained tele/testmqtt-plug1/LWT = Online mesajını hemen almalısınız.
  3. testmqtt/tasmota/cmnd/testmqtt-plug1/POWER topic'ine TOGGLE yayınlayın. Röle tık sesi çıkarır; stat/.../RESULT ve stat/.../POWER saniyenin çok küçük bir bölümünde gelir.
  4. testmqtt/tasmota/cmnd/testmqtt-plug1/TelePeriod topic'ine 10 yayınlayın ve tele/.../STATE mesajının her on saniyede bir geldiğini izleyin. Ardından makul bir değere geri alın.
  5. Cihazı prizden çekin. Keep alive zaman aşımından sonra broker LWT = Offline yayınlar.

Tasmota cihazınızı online istemcide izleyin

Bir abonelik hiçbir şey göstermiyorsa filtreyi topic matcher ile gerçek bir topic'e karşı kontrol edin. Eksik bir son segment veya FullTopic'teki yanlış önek sırası genellikle suçludur.

Retained mesajlar ve güç durumu

Tasmota varsayılan olarak stat mesajlarını retained yayınlamaz. Bir dashboard'un subscribe olur olmaz güncel duruma ihtiyacı varsa ya durumu sorgulayın (cmnd/.../POWER topic'ine boş payload) ya da stat/.../POWER retained olsun diye PowerRetain 1 ayarını açın.

Komutları asla retain bayrağıyla yayınlamayın. cmnd/.../POWER üzerindeki retained bir ON, cihaz her yeniden bağlandığında tekrar teslim edilir ve röle her elektrik veya Wi-Fi kesintisinden sonra kendiliğinden açılır. Böyle olursa aynı topic'e boş bir retained mesaj yayınlayarak temizleyin:

Clear a retained command
mosquitto_pub -h broker.connectmq.com -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/tasmota/cmnd/testmqtt-plug1/POWER -r -n

Retain mekanizmasının nasıl çalıştığını MQTT retained mesajlar yazısında bulabilirsiniz.

TLS ve Home Assistant

TLS firmware build'ine bağlıdır. Birçok ESP32 build'i MQTT TLS desteği içerirken, ESP8266 build'lerinin çoğu USE_MQTT_TLS ile özel bir derleme gerektirir. TLS destekli bir build'de MqttPort 8883 ve SetOption103 1 ayarlayın, ardından build'inizin broker sertifikasını nasıl doğruladığını Tasmota TLS dokümantasyonundan kontrol edin. TLS'siz build'lerde 1883 portunda kalın ve güvenilir bir yerel ağ kullanın.

Home Assistant, Tasmota'nın kendi discovery mesajlarını okuyan Tasmota entegrasyonunu kullanır (varsayılan olarak SetOption19 0 ile açıktır). Home Assistant'ın MQTT entegrasyonunu aynı broker'a yönlendirin, cihazlar otomatik olarak görünür. Home Assistant tarafı Home Assistant MQTT yazısında anlatılıyor.

Önekler oturduğunda Tasmota'nın MQTT modeli basittir: komutlar cmnd üzerinden girer, yanıtlar stat üzerinden çıkar ve telemetri her TelePeriod'da tele üzerinden gelir. Her cihaza benzersiz bir client ID ve cihazlarınızı kendi isim alanında tutan bir FullTopic verin, komutları, telemetriyi ve LWT'yi online istemciden doğrulayın; üzerine kuracağınız her otomasyon öngörülebilir şekilde davranacaktır.

Sıkça sorulan sorular

Tasmota'da Topic ile FullTopic arasındaki fark nedir?

Topic, cihazın kısa adıdır; örneğin kitchen-plug. FullTopic ise her MQTT topic'ini bundan üreten şablondur; varsayılanı %prefix%/%topic%/ olup %prefix% cmnd, stat veya tele olur. Bir cihazı yeniden adlandırmak için Topic'i, tüm cihazları ortak bir isim alanına taşımak için FullTopic'i değiştirin.

Tasmota ne sıklıkla telemetri gönderir?

Her TelePeriod saniyede bir; varsayılan 300. TelePeriod komutuyla ayarlayın, örneğin TelePeriod 60. Sensör değerleri tele/<topic>/SENSOR, cihaz durumu ise tele/<topic>/STATE topic'ine gider.

Tasmota rölem neden yeniden başlatmadan sonra kendiliğinden açılıyor?

Genellikle bir cmnd topic'indeki retained mesaj yüzünden: broker, cihaz her yeniden bağlandığında onu tekrar teslim eder. O topic'e boş bir retained mesaj yayınlayarak temizleyin ve komutları asla retain bayrağıyla yayınlamayın.