MQTT cihazları (LED, gong, saat, Home Assistant)
Panelde MQTT cihazları sayfasından bir cihaz eklersin; PushBell’in MQTT sunucusu bildirimleri o cihaza iletir. Bir satış geldiğinde dükkândaki gong çalar, LED şerit yanar, saat ekranında yazı akar. MQTT cihazları Pro paketten itibaren var; cihaz sayısı pakete göre sınırlıdır. Cihazlar kişi sayılmaz, kotadan düşmez.
Sunucu
Bölüm başlığı “Sunucu”| Adres | mqtt.pushbell.app |
| TLS (önerilen) | 8883 |
| TLS’siz | 1883 (WLED ve Ulanzi TC001 TLS desteklemez) |
| WebSocket | wss://mqtt-ws.pushbell.app |
Her cihazın kendi kullanıcı adı ve şifresi var. Kullanıcı adı aynı zamanda cihazın konu kodu; cihaz sadece kendi konularını görür. Şifre bir kez gösterilir, unutursan Yeni şifre ile değiştirirsin (eski şifre hemen geçersiz olur).
TLS’siz bağlantıda şifre ağda okunabilir. Bu yüzden cihaz butonuyla acil bildirim onayı varsayılan olarak kapalı; ağına güveniyorsan cihazın ayarlarından aç.
Görünüm
Bölüm başlığı “Görünüm”Her cihazda bildirimin nasıl görüneceğini seçersin:
- Renk, efekt (WLED), süre: süre bitince cihaz eski haline döner. WLED kapanır ya da seçtiğin ön ayara geçer.
- Röle ve bip sayısı (Tasmota), melodi (AWTRIX NG, RTTTL).
- Tiplere göre: bildirim tipinin anahtarına göre farklı görünüm. Örneğin
salealtın renk ve havai fişek,refundkırmızı. Gösterme ile o tip bu cihazda hiç görünmez. - Acil bildirimde: varsayılanı kırmızı ve onaylanana kadar. Onaylanınca (uygulamadan, panelden, kanaldan ya da cihazın butonuyla) cihazdaki uyarı kapanır; onaylanmadan süresi dolarsa da kapanır.
Projeler ile cihazın hangi projelerin bildirimlerini alacağını seçersin. Uçtan uca şifreli bildirimler cihazlara gitmez.
Deneme göster cihazda bir deneme bildirimi gösterir. Liste cihazın çevrimiçi olup olmadığını da gösterir (WLED, Tasmota ve AWTRIX NG kendiliğinden bildirir). Çevrimdışı uyarısı verirsen cihaz o kadar dakika bağlanmazsa sana bildirim gelir, tekrar bağlanınca da haber verilir.
5 dakikada satış gongu
Bölüm başlığı “5 dakikada satış gongu”- Tasmota yüklü bir akıllı priz ya da röle al, ona bir zil ya da döner lamba bağla. (LED şerit istersen WLED.)
- Panelde MQTT cihazları → Cihaz ekle → Tasmota röle / siren. Ad ver; Süre’yi 2 saniye yap. Tiplere göre bölümünde satış tipini ekle; diğer bildirimlerde çalmasın istiyorsan Görünüm’de Sadece aşağıdaki tipleri göster’i seç.
- Açılan kurulum penceresindeki Backlog komutunu kopyala, Tasmota’nın web arayüzünde Console’a yapıştır ve Enter’a bas. Cihaz yeniden bağlanır.
- Deneme göster’e bas: gong çalar. Artık her satış bildiriminde çalacak.
WLED’de Config → Sync Interfaces → MQTT:
- Enable MQTT’yi aç.
- Broker
mqtt.pushbell.app, Port1883, kurulum penceresindeki Username ve Password. - Device Topic’e kurulumdaki konuyu (
pb/…) yaz. - Butonla onay istiyorsan Publish on button press’i aç.
- Save, sonra cihazı yeniden başlat.
WLED TLS desteklemez (sadece 1883). Süre sonunda ön ayara dönmesini istersen o ön ayarı WLED’de kaydet ve numarasını görünüme yaz.
Tasmota
Bölüm başlığı “Tasmota”Kurulum penceresindeki komut hepsini bir kerede yapar:
Backlog MqttHost mqtt.pushbell.app; MqttPort 8883; MqttUser pb…; MqttPassword …; Topic pb…; FullTopic %prefix%/%topic%/; SetOption103 1- TLS (
SetOption103 1, port 8883) sadece tasmota32 (ESP32) sürümlerinde var. ESP8266’da TLS’siz kullan:MqttPort 1883veSetOption103olmadan. - Röle
Power1 ON; Delay; Power1 OFFile süre kadar açılır. Buzzer GPIO’su tanımlıysa bip sayısı kadar öter. Acil bildirimde onaylanana kadar açık kalır. - Butonla onay:
SetOption73 1(buton röleden ayrılır, basış PushBell’e gider) ve cihazın ayarlarında Cihazın butonu acil bildirimi onaylar’ı aç.
Ulanzi saat (AWTRIX NG)
Bölüm başlığı “Ulanzi saat (AWTRIX NG)”AWTRIX NG’de System → MQTT: adres, port, kullanıcı adı, şifre ve Prefix olarak kurulumdaki konu. Kaydet ve yeniden başlat. Bildirim başlık ve metinle, seçtiğin renkte akar; acil bildirim onaylanana kadar ekranda kalır. Orta buton (açıksa) onaylar.
- TC001’de TLS yok (1883); TC002 TLS kullanabilir (8883).
- AWTRIX NG’nin lisansı (PolyForm Noncommercial) ticari kullanıma kapalı: dükkânda ya da işte kullanmak için yazarından izin gerekir. İşletmeler için WLED ya da Tasmota öneriyoruz.
Home Assistant
Bölüm başlığı “Home Assistant”Home Assistant’ta PushBell cihazı üç parçayla görünür: Bildirim olayı (notification, emergency, acknowledged), Son bildirim sensörü (başlık; özniteliklerde metin, proje, öncelik) ve Gördüm butonu (acil bildirimi onaylar). Otomasyonlarını bunlarla kurarsın.
Doğrudan: Ayarlar → Cihazlar ve servisler → MQTT ekle (ya da yapılandır): adres mqtt.pushbell.app, port 8883, TLS açık, kurulumdaki kullanıcı adı ve şifre. MQTT seçeneklerinde keşif öneki pb/…/ha ve doğum mesajı konusu pb/…/ha/status (kurulum penceresinde yazıyor).
Yerel Mosquitto’nla (köprü): Home Assistant zaten kendi Mosquitto eklentini kullanıyorsa, eklentiye bir köprü ekle:
connection pushbelladdress mqtt.pushbell.app:8883bridge_capath /etc/ssl/certsremote_username pb…remote_password …remote_clientid pb…topic pb/pb…/# both 1Home Assistant’ta keşif önekini yine pb/…/ha yap.
ESP32 / Arduino
Bölüm başlığı “ESP32 / Arduino”Kodun pb/<kullanıcı adı>/notify konusuna abone olur; bildirim JSON olarak gelir:
{"event_type": "notification", "id": "0199f…", "project": "Mağaza", "type": "sale", "title": "Yeni satış", "message": "1.250 TL", "priority": 0, "color": "#ffd700", "duration": 5, "timestamp": 1793000000}Acil bildirimde "event_type": "emergency" ve receipt gelir; onaylanınca pb/<kullanıcı adı>/dismiss konusuna {"receipt": "…"} gelir. Cihazın butonuyla onaylamak için pb/<kullanıcı adı>/ack konusuna {"receipt": "…"} yayınla. pb/<kullanıcı adı>/state konusuna online / offline (son vasiyet) yayınlarsan panelde durumu görünür.
PubSubClient 2.8, ArduinoJson 7 ve arduino-esp32 3.x ile örnek:
#include <WiFi.h>#include <WiFiClientSecure.h>#include <PubSubClient.h>#include <ArduinoJson.h>
const char* WIFI_SSID = "…";const char* WIFI_PASS = "…";const char* MQTT_USER = "pb…"; // panel → MQTT cihazları → Kurulumconst char* MQTT_PASS = "…";// ISRG Root X1: https://letsencrypt.org/certs/isrgrootx1.pem dosyasının içeriğiconst char* ROOT_CA = R"(-----BEGIN CERTIFICATE-----…-----END CERTIFICATE-----)";const int LED = 2, BUTTON = 0;
WiFiClientSecure net;PubSubClient mqtt(net);String base = String("pb/") + MQTT_USER;String receipt;
void onMessage(char* topic, byte* payload, unsigned int len) { JsonDocument doc; if (deserializeJson(doc, payload, len)) return; String t = topic; if (t == base + "/notify") { digitalWrite(LED, HIGH); // doc["title"], doc["message"], doc["color"], doc["duration"] receipt = doc["receipt"] | ""; } else if (t == base + "/dismiss") { digitalWrite(LED, LOW); receipt = ""; }}
void connect() { while (!mqtt.connected()) { // Bağlantı koparsa sunucu "offline" yayınlar (son vasiyet). if (mqtt.connect(MQTT_USER, MQTT_USER, MQTT_PASS, (base + "/state").c_str(), 1, true, "offline")) { mqtt.publish((base + "/state").c_str(), "online", true); mqtt.subscribe((base + "/notify").c_str(), 1); mqtt.subscribe((base + "/dismiss").c_str(), 1); } else { delay(5000); } }}
void setup() { pinMode(LED, OUTPUT); pinMode(BUTTON, INPUT_PULLUP); WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) delay(500); net.setCACert(ROOT_CA); mqtt.setServer("mqtt.pushbell.app", 8883); mqtt.setBufferSize(2048); mqtt.setCallback(onMessage);}
void loop() { if (!mqtt.connected()) connect(); mqtt.loop(); if (digitalRead(BUTTON) == LOW && receipt != "") { // butonla acil bildirimi onayla mqtt.publish((base + "/ack").c_str(), ("{\"receipt\":\"" + receipt + "\"}").c_str()); receipt = ""; delay(500); }}Diğer sistemler
Bölüm başlığı “Diğer sistemler”Diğer (JSON) türü ESP32 ile aynı konuları ve JSON’u kullanır; Node-RED, kendi sunucun ya da başka bir yazılım bağlanabilir.
Bildirimleri PushBell’in sunucusuna değil kendi MQTT sunucuna göndermek istersen Kanallar → Kendi MQTT sunucum (Kanallar): her bildirim verdiğin konuya JSON olarak yayınlanır.