Script API
Script API, diğer script’leri yönetme ve script’ler arası veri paylaşımı sağlar.
Script Yönetimi
Section titled “Script Yönetimi”| Fonksiyon | Açıklama |
|---|---|
| ins.scheduleScript(name) | Script’i zamanlayıcısına göre başlat |
| ins.cancelScript(name) | Çalışan script’i durdur |
| ins.executeScript(name) | Script’i anında çalıştır, sonucu döndür |
Örnekler
Section titled “Örnekler”// Script'i zamanlayıcısına göre başlatins.scheduleScript("Chart_ActiveReactivePower");// → OK// Script'i durdurins.cancelScript("Chart_ActiveReactivePower");// → OK// Başka bir script'i anında çalıştır ve sonucunu alvar result = ins.executeScript("Calculate_DailyTotal");Global Nesne (Script’ler Arası Veri Paylaşımı)
Section titled “Global Nesne (Script’ler Arası Veri Paylaşımı)”Script’ler birbirinden izole çalışır. Ancak setGlobalObject / getGlobalObject ile script’ler arası veri paylaşımı yapılabilir.
| Fonksiyon | Açıklama |
|---|---|
| ins.setGlobalObject(name, obj) | Paylaşımlı nesne kaydet |
| ins.getGlobalObject(name) | Paylaşımlı nesneyi oku |
| ins.setGlobalObject(name, obj, ms) | TTL ile paylaşımlı nesne (otomatik silinir) |
Basit Değer
Section titled “Basit Değer”// Script A: değer kaydetins.setGlobalObject("daily_counter", 42);
// Script B: değeri okuvar counter = ins.getGlobalObject("daily_counter");// → 42Karmaşık Nesne
Section titled “Karmaşık Nesne”// Script A: vardiya bilgisi kaydetins.setGlobalObject("shift_data", { shift: "A", count: 150, startTime: ins.now().toString()});
// Script B: vardiya bilgisini okuvar data = ins.getGlobalObject("shift_data");Yanıt:
{ "shift": "A", "count": 150, "startTime": "Sat Mar 28 12:10:21 TRT 2026"}TTL ile Geçici Nesne
Section titled “TTL ile Geçici Nesne”Belirli süre sonra otomatik silinen geçici veri:
// 60 saniye sonra otomatik silinecek cacheins.setGlobalObject("temp_cache", {value: 99}, 60000);
var cached = ins.getGlobalObject("temp_cache");// → { value: 99 }// 60 saniye sonra → nullKullanım Senaryoları
Section titled “Kullanım Senaryoları”// Senaryo 1: Periyodik script hesaplama sonucunu UI script'ine aktar// Backend script (her 10 saniye):var power = ins.getVariableValue("ActivePower_kW").value;var voltage = ins.getVariableValue("Voltage_V").value;ins.setGlobalObject("dashboard_summary", { power: power, voltage: voltage, updatedAt: ins.now().toString()});
// Frontend/UI script:var summary = ins.getGlobalObject("dashboard_summary");// Senaryo 2: Rate limiting — son çalışma zamanını kontrol etvar lastRun = ins.getGlobalObject("report_last_run");var now = ins.now().getTime();
if (!lastRun || (now - lastRun) > 3600000) { // 1 saatten fazla olmuş, raporu çalıştır ins.scheduleReport("hourly_report"); ins.setGlobalObject("report_last_run", now);}