IoT Otomasyon

Tasmota MQTT Komutları Kopya Kâğıdı: cmnd, stat ve tele Topic'leri Açıklaması

Tasmota'nın cmnd, stat ve tele topic'lerine ve gerçekten kullanacağınız komutlara pratik bir başvuru; her MQTT istemcisi veya ConnectMQ web istemcisi için gönderilmeye hazır örneklerle.

Bir akıllı priz ve dizüstü bilgisayar terminalinin yanında tasmota mqtt komutlarını listeleyen başvuru kartı
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

Bu Tasmota MQTT komutları kopya kâğıdı, Tasmota cihazlarını herhangi bir MQTT istemcisinden açıp kapatmak, sorgulamak ve ince ayar yapmak için her gün kullanacağınız topic'leri ve komutları bir araya getirir. cmnd, stat ve tele öneklerinin birbiriyle nasıl çalıştığını, her komutun hangi payload'ı beklediğini ve bunları bir terminalden, bir betikten veya ConnectMQ web istemcisinden nasıl göndereceğinizi öğreneceksiniz.

Tasmota MQTT Topic'leri Nasıl Oluşturulur?

Her Tasmota topic'i, varsayılan değeri %prefix%/%topic%/ olan Full Topic şablonunu izler. Komut adı en sona eklenir. Topic değeri plug1 olan bir cihaz için:

Önek Yön Örnek topic Amaç
cmnd Sizden cihaza cmnd/plug1/POWER Komut gönderme
stat Cihazdan size stat/plug1/RESULT Bir komuta verilen JSON yanıtı
stat Cihazdan size stat/plug1/POWER Her değişiklikten sonra düz güç durumu
tele Cihazdan size tele/plug1/STATE Periyodik durum (çalışma süresi, Wi-Fi, güç)
tele Cihazdan size tele/plug1/SENSOR Periyodik sensör ve enerji okumaları
tele Cihazdan size tele/plug1/LWT Online / Offline, retained Last Will

İki kural hataların çoğunu önler. Birincisi, komutlar her zaman cmnd önekine gider; stat önekine yayın yapmak hiçbir şey yapmaz. İkincisi, bir komut topic'ine gönderilen boş payload, mevcut değeri değiştirmeden sorgular.

Full Topic'iniz bir önek ekliyorsa, örneğin home/%prefix%/%topic%/, bu sayfadaki her topic o öneki alır: home/cmnd/plug1/POWER. Cihazda MQTT'yi henüz kurmadıysanız Tasmota MQTT kurulum rehberiyle başlayın.

Tasmota MQTT Komutlarını Göndermek

Bu sayfadaki her komutu üç şekilde gönderebilirsiniz.

Terminalden mosquitto istemcileriyle. Ücretsiz herkese açık MQTT broker üzerinde Full Topic'inizde connectmq/demo/k4w9ra/%prefix%/%topic%/ gibi benzersiz bir önek kullanın:

mosquitto_pub -h broker.connectmq.com -p 1883 -i cli-k4w9ra \
  -t 'connectmq/demo/k4w9ra/cmnd/plug1/POWER' -m 'ON'

ConnectMQ web istemcisinden. Portalda tarayıcı içi MQTT istemcisini açın, home/stat/plug1/# topic'ine abone olun, ardından home/cmnd/plug1/POWER topic'ine TOGGLE payload'ı ile yayın yapın. Canlı topic gezgini RESULT yanıtını orijinal durum topic'inin yanında gösterir.

Koddan. Herhangi bir MQTT kütüphanesi işinizi görür; işte paho-mqtt 2.x ile Python:

import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/k4w9ra"

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="py-k4w9ra")
client.connect("broker.connectmq.com", 1883, keepalive=30)
client.loop_start()
info = client.publish(f"{PREFIX}/cmnd/plug1/POWER", "TOGGLE", qos=1)
info.wait_for_publish()
client.loop_stop()
client.disconnect()

Güç ve Röle Komutları

Komut Payload Etki
POWER ON, OFF, TOGGLE 1. röleyi açar/kapatır
POWER boş 1. röleyi sorgular
POWER2 ... POWER8 aynı Çok kanallı cihazlar, her röle için bir tane
POWER0 ON, OFF Tüm röleleri aynı anda açar/kapatır
POWER BLINK, BLINKOFF Yanıp sönmeyi başlatır veya durdurur
PowerOnState 0-5 Elektrik geldikten sonraki röle durumu: 0 kapalı, 1 açık, 2 tersine çevir, 3 son kaydedilen (varsayılan)
PulseTime1 0-64900 Otomatik kapanma zamanlayıcısı: 1-111 arası 0,1 sn adımlarla, 111 üzerinde saniye için 100 çıkarın
PowerRetain 0 / 1 stat/.../POWER mesajını retained olarak yayınlar

PulseTime, "N dakika çalış" anahtarı oluşturmanın güvenli yoludur. Örneğin PulseTime1 400, arada ağ bağlantısı kopsa bile röleyi açıldıktan 300 saniye sonra kapatır.

PowerRetain 1, cihazdan sonra başlayan panolar için kullanışlıdır; çünkü son güç durumu abone olunur olunmaz iletilir. Komut topic'lerini retained yapmayın; retained bir cmnd/.../POWER ON mesajı, her yeniden bağlantıdan sonra röleyi tekrar açar.

Telemetri ve Durum Komutları

Komut Payload Etki
TelePeriod 10-3600 tele/STATE ve tele/SENSOR mesajları arasındaki saniye (varsayılan 300)
TelePeriod boş Aralığı sorgular veya anında bir telemetri mesajı gönderilmesini sağlar
Status 0 Tüm durum bilgilerini tek yanıtta verir
Status 2 Yazılım sürümü ve derleme
Status 5 Ağ: IP, ağ geçidi, MAC
Status 6 MQTT host, port, client ve kullanıcı
Status 8 Güncel sensör okumaları
Status 11 tele/STATE gibi güncel durum
SensorRetain 0 / 1 tele/SENSOR mesajını retained olarak yayınlar

Status yanıtları numaraya bağlı olarak stat/<topic>/STATUS, STATUS2 gibi topic'lere gelir. Kısa TelePeriod değerleri test sırasında işe yarar, ancak her 10 saniyede bir rapor veren birkaç yüz cihaz ciddi bir yük oluşturur. Panonuza hâlâ hizmet eden en yavaş aralığı seçin.

Işık ve Dimmer Komutları

Komut Payload Etki
Dimmer 0-100 Yüzde olarak parlaklık
Color FF8800 veya 255,136,0 RGB renk
CT 153-500 Mired cinsinden renk sıcaklığı (soğuktan sıcağa)
HSBColor 30,100,80 Ton, doygunluk, parlaklık
Fade 0 / 1 Yumuşak geçişleri açar veya kapatır
Speed 1-40 Geçiş hızı

Yapılandırma Komutları

Komut Örnek payload Notlar
Topic plug1 Cihaz topic'i; yeniden başlatmayı tetikler
FullTopic home/%prefix%/%topic%/ Topic şablonu; yeniden başlatmayı tetikler
GroupTopic1 kitchen Cihazın komut için dinlediği ek topic
MqttHost / MqttPort broker.connectmq.com / 8883 Broker adresi
MqttUser / MqttPassword YOUR_USERNAME Temizlemek için 0 kullanın
MqttClient YOUR_CLIENT_ID Broker başına benzersiz olmalıdır
SetOption103 1 TLS içeren derlemelerde TLS
SetOption19 0 / 1 Home Assistant'taki Tasmota entegrasyonu için 0, eski MQTT discovery için 1
Timezone 99 veya +02:00 99 yaz saati kurallarını kullanır

Grup topic'leri toplu kontrolü kolaylaştırır: GroupTopic1 kitchen ayarlı her cihaz cmnd/kitchen/POWER OFF mesajına tepki verir. Yerleşik varsayılan grup topic'i tasmotas'tır. Cihazlarınız bir broker'ı başkalarıyla paylaşıyorsa bunu benzersiz bir değerle değiştirin; aksi takdirde başıboş bir cmnd/tasmotas/... mesajı cihazlarınıza ulaşabilir.

Şifreli bağlantıların kendine özgü gereksinimleri vardır; bunlar Tasmota MQTT TLS rehberinde ele alınır.

Bakım Komutları

Komut Payload Etki
Restart 1 Yeniden başlatır
Upgrade 1 OtaUrl üzerinden OTA yükseltmesini başlatır
OtaUrl URL Yükseltmeler için yazılım kaynağı
WebServer 0, 1, 2 Devre dışı, kullanıcı modu, yönetici modu
WebPassword metin Web arayüzünü korur
Reset 1 Fabrika ayarlarına sıfırlar, dikkatli kullanın

Backlog ile Birden Fazla Komut Çalıştırmak

Backlog, noktalı virgülle ayrılmış bir komut listesini çalıştırır; bunu MQTT üzerinden de gönderebilirsiniz:

mosquitto_pub -h broker.connectmq.com -p 1883 -i cli-k4w9ra \
  -t 'connectmq/demo/k4w9ra/cmnd/plug1/Backlog' \
  -m 'Power ON; Delay 50; Power OFF'

Delay 0,1 saniyelik birimler kullanır; dolayısıyla Delay 50 beş saniye bekler. Backlog, her cihazın web arayüzünü tek tek ziyaret etmeden tüm bir yapılandırmayı cihaz filosuna göndermenin en temiz yoludur.

Kurallar: Cihazda Tetiklenen Komutlar

Kurallar (rules), bir cihazın herhangi bir sunucu olmadan tepki vermesini sağlar. Klasik bir örnek, röle değiştiğinde özel bir mesaj yayınlar:

Rule1 ON Power1#State DO Publish home/events/plug1 {"power":"%value%"} ENDON
Rule1 1

Bir kuraldan çalışan Publish, istediğiniz herhangi bir topic'e gönderim yapar; bu, başka bir sistem belirli bir format beklediğinde işe yarar.

Hızlı Başvuru Kontrol Listesi

  1. Komutları cmnd/<topic>/<Command> adresine gönderin; yanıtları stat/<topic>/RESULT üzerinden okuyun.
  2. Boş payload "kapat" değil, "sorgula" anlamına gelir.
  3. Erişilebilirlik için tele/<topic>/LWT topic'ini izleyin.
  4. Panolar ihtiyaç duyuyorsa durum topic'lerini retained yapın; komutları asla retained yapmayın.
  5. Paylaşılan broker'larda benzersiz client ID, topic ve grup topic'leri kullanın.

Tasmota Cihazlarınızı ConnectMQ Üzerinde Çalıştırın

Herkese açık broker'da test yapmak sorun değildir, ancak özel bir broker yabancıları rölelerinizden uzak tutar. ConnectMQ'nun barındırılan MQTT broker hizmeti her cihaza kendi kimlik bilgilerini, yanıtları kontrol etmek için canlı bir topic gezginini ve ESP32 derlemeleri için 8883 portunda TLS sunar. app.connectmq.com adresinde kredi kartı gerekmeden ücretsiz bir Serverless broker oluşturun ve proje fikirleri için IoT otomasyon rehberine göz atın.

Sık Sorulan Sorular

Tasmota'da cmnd, stat ve tele arasındaki fark nedir?

cmnd komut gönderdiğiniz yerdir, stat yanıtları ve durum değişikliklerini taşır, tele ise periyodik telemetriyi ve Online/Offline erişilebilirlik mesajını taşır.

Bir Tasmota cihazının durumunu değiştirmeden nasıl kontrol ederim?

Komut topic'ine, örneğin cmnd/plug1/POWER adresine boş bir payload yayınlayın. Cihaz stat/plug1/RESULT üzerinden yanıt verir.

Birden fazla Tasmota komutunu tek bir MQTT mesajıyla nasıl gönderirim?

Komutları noktalı virgülle ayırarak cmnd/<topic>/Backlog adresine yayınlayın; örneğin Power ON; Delay 50; Power OFF.

Tasmota komutlarım neden yok sayılıyor?

Genellikle topic yanlıştır: komutlar cmnd önekini kullanmalı ve ek önekler ile büyük/küçük harf dahil cihazın Full Topic'iyle birebir eşleşmelidir.

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