Ana içeriğe geç

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:

cd ~/.node-red
npm list node-red-trexmes-service

ile paketin gerçekten yüklü olduğundan emin olun. Yoksa:

npm install node-red-trexmes-service

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:

node --version  # v18.16.0+ olmalı

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 httpNodeRoot ayarı varsayılan (/) mu?
  • Tarayıcıdan http://<node-red-host>:1880/GetSubscribed denenince 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:

  1. trex Subscriber deploy edildi mi? Triggered çıktı mı?
  2. Event ismi panel tarafıyla birebir mi eşleşiyor (büyük/küçük harf!)?
  3. Panel tarafında olay gerçekten tetikleniyor mu? (Panel log'una bakın)
  4. 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

  1. settings.js içinde customFormDesignerPath tanımlı mı?
  2. Bu yoldaki .exe gerçekten var mı?
  3. Node-RED'in bu dosyayı çalıştırma izni var mı?
  4. 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:

  1. Form Bind Controls'taki props listesindeki kontrol isimleri XML'deki ile eşleşmiyor (büyük/küçük harf!)
  2. data ve dataType doğru veri kaynağını göstermiyor
  3. Form Bind Controls akışta Custom 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: Enabledenabled
  • dataType: bool seçtiniz mi?
  • d alanı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

  1. Method Returns node'u eklediniz mi?
  2. methodname (Returns'te) ile method (Invoker'da) aynı mı?
  3. 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: false tutun
  • 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 debug node'u bırakın, fazlasını devre dışı bırakın
  • Communication Events gibi yüksek frekanslı node'larda function ile 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 Invoker ile 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 function node'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 Invoker ile fire-and-forget yapın, hemen Responser dö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
{
  "param1": "value1",
  "param2": "value2"
}

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.