Sıkça Sorulan Sorular (SSS)¶
Kurulum & Bağlantı¶
S: Paketi kurdum ama palette'te görünmüyor?¶
Node-RED'i yeniden başlatın. Eğer hâlâ görünmüyorsa:
ile paketin gerçekten yüklü olduğundan emin olun. Yoksa:
S: cookie@0.7.2 not found hatası alıyorum¶
Node.js sürümünüz çok eski. Node.js 18.16 veya üzeri kullanın:
S: trex Subscriber "Triggered" çıkmıyor¶
- trexMes Edge'de Node-RED Connector eklentisi etkin mi?
- Panel'in Node-RED IP/port ayarı doğru mu?
- Node-RED
httpNodeRootayarı varsayılan (/) mu? - Tarayıcıdan
http://<node-red-host>:1880/GetSubscribeddenenince cevap geliyor mu?
S: Birden fazla trex Subscriber koyabilir miyim?¶
Hayır. Aynı Node-RED kurulumunda yalnızca bir tane olmalıdır. Birden fazla varsa HTTP path çakışması olur ve panel kayıt listesi karışır.
Olay (Event) Sorunları¶
S: Olay node'um trigger almıyor¶
Kontrol edin:
trex Subscriberdeploy edildi mi? Triggered çıktı mı?- Event ismi panel tarafıyla birebir mi eşleşiyor (büyük/küçük harf!)?
- Panel tarafında olay gerçekten tetikleniyor mu? (Panel log'una bakın)
- Akışı deploy ettiniz mi?
S: Aynı olayı birden fazla akışta yakalayabilir miyim?¶
Yalnızca Business Events node'u ile mümkündür. Diğer Event node türleri (System Events, Form Events vb.) aynı olay adıyla birden fazla kullanılamaz.
Business Events'te bu, suffix alanı aracılığıyla sağlanır. Aynı olayı yakalayacak her ek node'a benzersiz bir suffix değeri (_2, _3 gibi) verilmesi yeterlidir:
| Node | event |
suffix |
|---|---|---|
| 1. node | OnPlanLoaded |
(boş) |
| 2. node | OnPlanLoaded |
_2 |
Panel OnPlanLoaded'ı tetiklediğinde her iki node da devreye girer ve kendi akışını bağımsız olarak çalıştırır. Her akışın sonunda bir Responser bulunmalıdır; birden fazla dal tek bir Responser'a bağlanabilir.
S: ishandled ne zaman true, ne zaman false?¶
true→ "Bu olayı biz işledik, panel kendi default handler'ını ÇALIŞTIRMASIN."false→ "Panel kendi default handler'ını da çalıştırsın."
Akış ortasında dinamik karar verecekseniz Handle Setter kullanın.
Custom Form & Designer¶
S: Custom Form Designer çalışmıyor¶
settings.jsiçindecustomFormDesignerPathtanımlı mı?- Bu yoldaki .exe gerçekten var mı?
- Node-RED'in bu dosyayı çalıştırma izni var mı?
- Designer çıktısının yazılacağı
C:\temp\klasörü erişilebilir mi?
// settings.js içinde olmalı
functionGlobalContext: {
customFormDesignerPath: "C:\\trex\\tools\\customFormDesigner.exe"
}
S: Form panelde açılıyor ama alanlar boş¶
Yaygın nedenler:
Form Bind Controls'takipropslistesindeki kontrol isimleri XML'deki ile eşleşmiyor (büyük/küçük harf!)datavedataTypedoğru veri kaynağını göstermiyorForm Bind ControlsakıştaCustom Form'dan sonra geliyor mu? (Önce form, sonra bağlama!)
S: Custom Form XML'imi nasıl versiyonlamalıyım?¶
customformxml alanını boş bırakıp Form Design config node kullanın. Tasarımlarınız flow JSON'una dahil olur ve Git'te değişiklikleri takip edebilirsiniz.
S: formainform: true ne zaman kullanılır?¶
Modal dialog (ayrı pencere) yerine panelin ana ekranı üzerinde form basmak istiyorsanız. formname otomatik olarak "AppForm" olur.
Property & Buton¶
S: Control Properties'le butonu disable ettim ama hala basılabiliyor¶
- Property adını PascalCase ile yazdığınızdan emin olun:
Enabled≠enabled dataType: boolseçtiniz mi?dalanına gerçekten"true"/"false"(string) yazdınız mı?
S: Buton tıklamasını yakalayamıyorum¶
Button Configurator'da o buton için e (IsToOverrideDefaultHandler) true olmalı. Aksi takdirde panel default handler çalışır, sizin akışınız tetiklenmez.
S: Buton indeks numaraları nereden bakacağım?¶
Button Configurator sayfasındaki görselde tüm buton indeksleri görünmektedir. Görsel paket içinde assets/button-configurator.png olarak da bulunur.
Method Invoker & Returns¶
S: Method'u çağırdım ama cevap gelmiyor¶
Method Returnsnode'u eklediniz mi?methodname(Returns'te) ilemethod(Invoker'da) aynı mı?- Panel tarafı gerçekten cevap dönüyor mu? (panel log'larına bakın)
S: JSONata ifademde hata var¶
Önce başka bir akışta change node ile JSONata ifadenizi test edin. Doğru sonucu verdiğinden emin olduktan sonra Method Invoker veya Control Properties içine yapıştırın.
S: Parametre olarak null göndermem gerek¶
dataType: json seçip d alanına null yazabilirsiniz. Veya akışta flow context'e null koyup dataType: flow ile okutabilirsiniz.
Responser¶
S: Akışım timeout veriyor¶
Çoğunlukla Responser eksik demektir. Tüm olay akışlarının sonunda bir Responser olmalı. trex Subscriber istisnadır (kendi cevabını yönetir).
S: Birden fazla Responser mı koymalıyım?¶
Gerekli değildir. Birden fazla dal tek bir Responser'a bağlanabilir. Kesinlikle kaçınılması gereken durum, aynı dalda peş peşe birden fazla Responser kullanmaktır; HTTP cevabı yalnızca bir kez gönderilebilir.
LLM Flow Builder¶
S: API anahtarımı nereye girdim?¶
Config node (llm-flow-builder-config) içinde API Key alanına. Bu alan password tipinde olduğu için flow JSON export'unda görünmez.
S: Üretilen akış JSON parse hatası veriyor¶
LLM bazen markdown code-fence (```) ile cevap döndürür. Node'un kendi temizleyicisi var ama bazen yetmez. Çözüm: systemPrompt alanına ekleyin: "Cevabını sadece valid JSON olarak ver, markdown formatlamadan."
S: Maliyet kontrolü nasıl yaparım?¶
- Geliştirme yaparken
autoDeploy: falsetutun - Sistem prompt'unuzu kısaltın (her çağrıda gönderilir)
- Daha ucuz modeller deneyin (örn.
gpt-4o-mini,claude-3-5-haiku) - Test akışlarını sürekli çalıştırmaktan kaçının
Performans¶
S: 200 panel aynı anda çalışıyor, Node-RED yavaşladı¶
- Akış başına 1-2
debugnode'u bırakın, fazlasını devre dışı bırakın Communication Eventsgibi yüksek frekanslı node'lardafunctionile filtreleme yapın- Node-RED projeyi mümkünse flow başına ayırın, her panel grubu için ayrı flow tab
- Async işlemleri
Method Invokerile yapın, fire-and-forget ile bloklamayın
S: Tek bir akış 5 saniye sürüyor¶
Akış sonu Responser panele cevap dönmedikçe panel beklemede kalır. Bu süre büyük olasılıkla:
- Bir
functionnode'unda async I/O - Veritabanı sorgusu
- HTTP request
Çözüm:
- Eğer cevabı gerçekten beklemek gerekiyorsa: optimizasyon yapın (cache, paralel)
- Beklemek gerekmiyorsa: işlemi
Method Invokerile fire-and-forget yapın, hemenResponserdöndürün
Geliştirme & Test¶
S: Akışı panelsiz test edebilir miyim?¶
Evet, ancak tarayıcı adres satırından değil. Tüm event node'ları POST metodunu kullanır ve veriyi request body'den bekler; adres satırına parametre geçilemez.
Postman veya benzeri bir HTTP istemcisi ile test edebilirsiniz:
- Method:
POST - URL:
http://<node-red-host>:1880/<EventAdı> - Body:
raw / JSON
S: msg.payload array'inin içeriğini nasıl debug ederim?¶
Her form/aksiyon node'undan sonra bir debug node ekleyip complete msg seçin. Sağ paneldeki çıktıda payload array'inin her elemanını görürsünüz.
S: Akışımı GitHub'a koyabilir miyim?¶
Evet. Sadece credentials alanları (LLM API key gibi) flow JSON'una dahil edilmez, bunları ayrıca yönetmeniz gerekir.
Genel¶
S: Bu paket trexMes Edge olmadan çalışır mı?¶
Hayır. trexMes Edge'in Node-RED Connector eklentisi bağlantı kurmazsa hiçbir event tetiklenmez, form basılmaz. Paket trexMes ekosistemine özgüdür.
S: Lisans nedir, ticari kullanabilir miyim?¶
GPL-3.0-or-later. Ticari kullanım serbesttir ancak değişiklik yapıp dağıtıyorsanız aynı lisansla dağıtmalısınız.
S: Katkıda bulunabilir miyim?¶
Evet, GitHub repository'sinde issue açabilir veya pull request gönderebilirsiniz.
Sorununuz burada yoksa GitHub Issues üzerinden iletişime geçin.