Tasmota MQTT desteği, ucuz bir ESP8266 veya ESP32 akıllı prizi herhangi bir betikten, panodan ya da ev otomasyon sisteminden açıp kapatabileceğiniz ve izleyebileceğiniz bir cihaza dönüştürür. Bu eğitimde MQTT host, client ID, topic ve full topic ayarlarını yapacak, ardından broker.connectmq.com adresindeki herkese açık test broker üzerinden bir prizi kontrol edip enerji telemetrisini okuyacaksınız.
Tasmota MQTT'yi Nasıl Kullanır?
Tasmota, ESP tabanlı cihazlar için açık kaynaklı bir yazılımdır (firmware). Kutudan çıktığı haliyle bir web arayüzü sunar, ancak asıl gücü MQTT'dir: konsola yazabildiğiniz her komut bir MQTT mesajı olarak da gönderilebilir ve her durum değişikliği ile sensör okuması geri yayınlanır. Bu da bir Tasmota prizini Node-RED, Home Assistant, openHAB veya kendi kodunuzda birinci sınıf bir bileşen haline getirir.
Tasmota her topic'i üç parçadan oluşturur:
- Prefix (önek) - gönderdiğiniz komutlar için
cmnd, yanıtlar ve durum değişiklikleri içinstat, periyodik telemetri ve erişilebilirlik içintele. - Topic -
plug1gibi kısa ve benzersiz bir cihaz adı. - Full topic - bunları birleştiren bir şablon; varsayılan değeri
%prefix%/%topic%/.
Varsayılan full topic ile cmnd/plug1/POWER adresine bir komut gönderdiğinizde cihaz stat/plug1/RESULT ve stat/plug1/POWER üzerinden yanıt verir; telemetri ise tele/plug1/STATE ve tele/plug1/SENSOR topic'lerine gider. Tasmota MQTT komutları kopya kâğıdı en kullanışlı komutları ayrıntılı olarak listeler.
Neye İhtiyacınız Var?
- Hâlihazırda Tasmota çalıştıran (13 veya daha yeni sürüm önerilir) ve Wi-Fi ağınıza bağlı bir cihaz.
- Web arayüzünü açabilmeniz için cihazın IP adresi.
mosquitto_pubvemosquitto_subkurulu bir bilgisayar ya da portaldaki ConnectMQ web istemcisi gibi herhangi bir MQTT istemcisi.
Adım 1: Benzersiz Adlar Seçin
broker.connectmq.com adresindeki ücretsiz herkese açık MQTT broker herkes tarafından ortak kullanılır ve oraya yayınlanan her şeyi herkes okuyabilir. Tasmota'yı yapılandırmadan önce şunları belirleyin:
- rastgele bir kimlik, örneğin
t7x2pk, tasmota-t7x2pkgibi bir client ID,plug1gibi bir topic,- mesajlarınızı kendi önekiniz altında tutan bir full topic:
connectmq/demo/t7x2pk/%prefix%/%topic%/.
Ortaya çıkan topic'ler altı seviye derinliğindedir (connectmq/demo/t7x2pk/cmnd/plug1/POWER) ve herkese açık broker'ın sekiz seviyelik sınırı içinde kalır.
Adım 2: Tasmota MQTT'yi Web Arayüzünden Yapılandırın
Cihazın IP adresini tarayıcıda açın ve Configuration, ardından Configure MQTT menüsüne gidin. Şu alanları doldurun:
| Alan | Herkese açık test için değer | Üretim ortamı için değer |
|---|---|---|
| Host | broker.connectmq.com |
broker host adresiniz |
| Port | 1883 |
1883 veya TLS destekli derlemeyle 8883 |
| Client | tasmota-t7x2pk |
YOUR_CLIENT_ID |
| User | boş bırakın | YOUR_USERNAME |
| Password | boş bırakın | YOUR_PASSWORD |
| Topic | plug1 |
plug1 |
| Full Topic | connectmq/demo/t7x2pk/%prefix%/%topic%/ |
home/%prefix%/%topic%/ |
Save düğmesine tıklayın. Tasmota yeniden başlar ve bağlanır. Configure Other sayfasında MQTT onay kutusu işaretli değilse etkinleştirin; standart derlemelerde MQTT varsayılan olarak açıktır, ancak bazı şablonlar onu devre dışı bırakır.
Adım 3: Veya Tasmota MQTT'yi Konsoldan Yapılandırın
Konsol (Ana Menü, ardından Console) daha hızlıdır ve betiklenebilir. Backlog birden fazla komutu tek seferde çalıştırır ve cihaz yalnızca en sonda bir kez yeniden başlar:
Backlog MqttHost broker.connectmq.com; MqttPort 1883; MqttClient tasmota-t7x2pk; MqttUser 0; MqttPassword 0; Topic plug1; FullTopic connectmq/demo/t7x2pk/%prefix%/%topic%/
MqttUser 0 ve MqttPassword 0, varsayılan DVES_USER / DVES_PASS değerlerini temizler; böylece cihaz anonim olarak bağlanır. Yeniden başlatmanın ardından konsol günlüğünde MQT: Connected benzeri bir satır ve onu izleyen Online LWT mesajı görünmelidir.
Adım 4: Cihazı İzleyin
Önekinizin altındaki her şeye abone olun:
mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-t7x2pk \
-t 'connectmq/demo/t7x2pk/#' -v
Birkaç saniye içinde şuna benzer bir çıktı görürsünüz:
connectmq/demo/t7x2pk/tele/plug1/LWT Online
connectmq/demo/t7x2pk/cmnd/plug1/POWER (null)
connectmq/demo/t7x2pk/tele/plug1/INFO1 {"Info1":{"Module":"Generic","Version":"14.2.0(release-tasmota)",...}}
connectmq/demo/t7x2pk/tele/plug1/STATE {"Time":"2026-10-16T10:12:03","Uptime":"0T00:00:15","POWER":"OFF",...}
LWT topic'i retained olarak tutulur ve aynı zamanda cihazın Last Will mesajıdır; bu nedenle priz elektriği veya Wi-Fi bağlantısını kaybettiğinde değeri Offline olur. Erişilebilirliği izlemek için takip etmeniz gereken topic budur.
Adım 5: Akıllı Prizi MQTT ile Kontrol Edin
Komutları cmnd önekine gönderin:
# Aç
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'ON'
# Durumu tersine çevir
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -m 'TOGGLE'
# Mevcut durumu sorgula (boş payload)
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/POWER' -n
Her biri {"POWER":"ON"} içeriğiyle stat/plug1/RESULT ve ON içeriğiyle stat/plug1/POWER mesajı üretir. Enerji ölçümü yapan prizler ayrıca gerilim, akım ve güç değerleriyle tele/plug1/SENSOR yayınlar; varsayılan olarak her 300 saniyede bir. Test sırasında bunu hızlandırmak için:
mosquitto_pub -h broker.connectmq.com -p 1883 -i send-t7x2pk \
-t 'connectmq/demo/t7x2pk/cmnd/plug1/TelePeriod' -m '30'
TelePeriod 10 ile 3600 saniye arasında değer kabul eder. Herkese açık broker'da makul tutun; orada istemci başına saniyede 10 mesaj sınırı vardır ve 30 saniyede bir mesaj gönderen bir priz bu sınırın çok altında kalır.
Bir prizin elektrik kesintisinden sonra bilinen bir durumda geri gelmesi gerekiyorsa PowerOnState ayarını da yapın: PowerOnState 0 prizi kapalı tutar, 1 açar, varsayılan 3 ise son kaydedilen durumu geri yükler. Retained durum topic'leriyle birleştiğinde bu, prizin davranışını her pano için öngörülebilir kılar.
Tasmota MQTT Verisini Kodda Okumak
Aşağıda güç okumalarını ve erişilebilirlik durumunu yazdıran küçük bir Python dinleyicisi (paho-mqtt 2.x) bulunuyor:
import json
import paho.mqtt.client as mqtt
PREFIX = "connectmq/demo/t7x2pk"
def on_connect(client, userdata, flags, reason_code, properties):
client.subscribe(f"{PREFIX}/tele/plug1/SENSOR")
client.subscribe(f"{PREFIX}/tele/plug1/LWT")
client.subscribe(f"{PREFIX}/stat/plug1/POWER")
def on_message(client, userdata, msg):
text = msg.payload.decode()
if msg.topic.endswith("/SENSOR"):
energy = json.loads(text).get("ENERGY", {})
print("power W:", energy.get("Power"), "today kWh:", energy.get("Today"))
else:
print(msg.topic, text)
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="py-t7x2pk")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_forever()
Herkese Açık Broker'dan Üretim Ortamına Geçiş
Herkese açık broker denemeler içindir. Topic'i tahmin eden herkes prizinizi açıp kapatabilir; bu yüzden bir ısıtıcıyı veya sunucuyu besleyen bir priz asla orada kalmamalıdır. Kalıcı kurulum için:
- ConnectMQ portalında özel bir broker oluşturun ve üretilen kullanıcı adı, parola ve client ID değerlerini kopyalayın.
- Bunları
Backlog MqttHost <host>; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; MqttClient YOUR_CLIENT_ID; FullTopic home/%prefix%/%topic%/komutuyla ayarlayın. - Derlemeniz destekliyorsa TLS kullanın. ESP32
tasmota32derlemeleri destekler; çoğu ESP8266 derlemesi desteklemez. Tasmota MQTT TLS rehberi ayrıntıları adım adım anlatır. - Her cihaza kendi kimlik bilgilerini ve client ID'sini verin, çünkü broker her client ID için yalnızca bir oturum kabul eder.
Barındırılan bir MQTT broker, evde sürekli çalışan bir Mosquitto kutusu tutma ihtiyacını ortadan kaldırır ve port yönlendirme yapmadan prize dışarıdan erişmenizi sağlar. Daha fazla akıllı ev yapı taşı için akıllı priz MQTT rehberine ve IoT otomasyon genel bakışına göz atın.
Tasmota MQTT Sorun Giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
Konsolda MQT: Connect failed ... rc -2 görünüyor |
Host'a ulaşılamıyor veya port yanlış | MqttHost, DNS ve portu kontrol edin |
rc 5 (yetkisiz) |
Yanlış kullanıcı/parola veya client ID | Kimlik bilgilerini yeniden girin, MqttClient değerini kontrol edin |
| Bağlanıyor, sonra birkaç saniyede bir kopuyor | Yinelenen client ID | Her cihaza ve araca benzersiz bir ID verin |
| Önekinizin altında hiç mesaj yok | Full topic'te yazım hatası | Mevcut değeri yazdırmak için tek başına FullTopic çalıştırın |
| Komutlar yok sayılıyor | cmnd yerine stat veya tele önekine gönderilmiş |
Komutlar her zaman cmnd önekine gider |
Tasmota projesi her komutu ve ayarı resmi sitesinde, tasmota.github.io adresinde belgeler.
Tasmota Cihazlarını ConnectMQ ile Kontrol Edin
app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun, kimlik bilgilerini Configure MQTT sayfasına yapıştırın ve prizlerinizi portalın tarayıcı içi istemcisi ve canlı topic gezgini ile kontrol edin. ConnectMQ MQTT 3.1.1 ve 5.0'ı desteklediği için Tasmota herhangi bir özel ayar gerektirmeden bağlanır.
Sık Sorulan Sorular
Tasmota'da Topic ile Full Topic arasındaki fark nedir?
Topic, plug1 gibi kısa cihaz adıdır. Full Topic ise önek ve topic'ten tam topic'i oluşturan şablondur; örneğin home/%prefix%/%topic%/.
MQTT ayarlarını değiştirdikten sonra Tasmota neden yeniden başlıyor?
Tasmota MQTT host, port, kimlik bilgisi ve topic değişikliklerini yeniden başlayarak uygular. Backlog kullanmak birden fazla değişikliği tek bir yeniden başlatmada toplar.
Bir Tasmota cihazının durumunu değiştirmeden nasıl sorgularım?
Komut topic'ine, örneğin cmnd/plug1/POWER adresine boş bir payload yayınlayın. Cihaz mevcut durumunu stat/plug1/RESULT üzerinden bildirir.
Birçok Tasmota cihazını tek komutla kontrol edebilir miyim?
Evet. Her cihaz varsayılan olarak tasmotas adlı bir grup topic'ini de dinler; bu nedenle cmnd/tasmotas/POWER adresine gönderilen bir mesaj hepsine ulaşır. Broker'ı başkalarıyla paylaşıyorsanız bunu GroupTopic ile değiştirin.



