Sunucu betikleri
Sunucu betiği, bir ekran açık olsun olmasın sunucuda çalışan küçük bir TypeScript programıdır: sinyal değişimlerine, alarmlara, koşullara ya da bir takvime tepki verir, sonuçları dahili sinyallere yazar ve izin verilmişse komut gönderir. Etkin her betik kendi sürecinde çalışır; bu yüzden hata veren bir betik diğerlerini, sürücüleri ya da ağ geçidini etkilemez. Ekran betiklerinden farkı için bkz. Hangi betik nerede çalışır.
Başlamadan önce
- Proje konfigürasyon editöründe açık ve kullanıcınızın Editor access (Editör erişimi) yetkisi var.
- Betiğin yazacağı dahili sinyaller var; burada sayısal bir dahili sinyal
CheckCount.
Adımlar
1. Sunucu betiklerini açın
Etkinlik çubuğunda Automation'a (Otomasyon), sonra Server scripts'e (Sunucu betikleri) tıklayın. Liste her betiği Name, Description, Active, Can command, Command targets ve daha sağda sınırlar ve Kind (betik ya da kütüphane) ile gösterir.

2. Betik oluşturun
new_script_name kutusuna bir ad yazın (harf, rakam ve _, en çok 64 karakter) ve New script'e (Yeni betik)
tıklayın. Değişiklik önizlemesi açılır; Apply'a tıklayın. Yeni betik etkin değildir ve bir şablonla başlar.

New library (Yeni kütüphane) bunun yerine paylaşılan bir kütüphane oluşturur; bkz. Sunucu betiği API'si.
3. Kaynağı yazın
Source'ta (Kaynak) betiği yazın. Editör defineScript'i, ctx'i ve tırnak içindeki sinyal yollarını tamamlar:
defineScript({
every: "10s",
onTimer(ctx) {
const n = Number(ctx.state.get("count") ?? 0) + 1;
ctx.state.set("count", n);
ctx.setTag("CheckCount", n);
ctx.log("check", n);
},
});

Tüm tetikleyiciler ve işlevler için bkz. Sunucu betiği API'si.
4. Betiği deneyin
Run now / try'a (Şimdi çalıştır / dene) tıklayın. Editördeki kod, kaydedilmemiş olsa da sunucuda ayrı bir süreçte bir
kez çalışır: önce onStart, sonra listede seçilen tetikleyici (Automatic, betikte olan ilk işleyiciyi alır: onTimer,
onSchedule, onChange, onAlarm, onWhen). Hiçbir şey yazılmaz: her setTag not written (dry run) olarak
listelenir, durum değişiklikleri saklanmaz ve ctx.dryRun true'dur. Okumalar gerçek güncel değerleri kullanır.

Bir deneme en çok 256 MB, işleyici başına 10 saniye ve toplam 30 saniye kullanabilir; sunucuda aynı anda en çok dört deneme çalışır.
5. İzinleri ve sınırları ayarlayın
Permissions and limits'te (İzinler ve sınırlar) Active'i (Etkin) açın. Diğer alanlar:

| Alan | Varsayılan | Anlamı |
|---|---|---|
| Active (Etkin) | kapalı | Betik çalışır |
| Can command field points (Sahaya komut verebilir) | kapalı | Betik sürücülerin sinyallerine komut gönderebilir |
| Command target patterns (Komut hedef desenleri) | — | Komut verebileceği yollar; virgülle ayrılır, * ve ? ile, örneğin Line1.*, Boiler?.Sp; izinle birlikte en az bir desen gerekir |
| Can publish computed values (Hesaplanan değer yayınlayabilir) | kapalı | Betik hiçbir sürücüye bağlı olmayan sinyal noktalarına değer yayınlayabilir |
| Publish target patterns (Yayın hedef desenleri) | — | Yayın yapabileceği yollar |
| Command rate limit (per minute) (Komut hız sınırı) | 60 | 1–6000 |
| Memory limit (MB) (Bellek sınırı) | 64 | 8–1024 |
| Handler time limit (ms) (İşleyici süre sınırı) | 1000 | 10–60000 |
| Time zone (cron) (Saat dilimi) | sunucu saati | at takvimleri için, örneğin Europe/Istanbul |
Dahili bellek sinyallerine yazmak izin gerektirmez. Komut hedeflerini olabildiğince dar tutun: tek başına *
elektrik cihazlarının komut noktaları dışında bir sürücünün yazılabilir her noktasına izin verir. Bu alanları yalnız Editor access yetkisi olan kullanıcılar
değiştirebilir; değişiklikler denetim kaydına yazılır.
6. Derleyin ve kaydedin
Compile and save'e (Derle ve kaydet) tıklayın. Önce TypeScript denetlenir: hata varsa TypeScript errors: not saved listesi çıkar, her satır hataya gider ve hiçbir şey kaydedilmez. Yoksa değişiklik önizlemesi neyin değiştiğini gösterir; Apply'a tıklayın.

Her kayıt yeni bir sürümdür; çalışan betik onu kendiliğinden yükler. Versions'ta (Sürümler) eski bir sürümü seçerek şimdiki kaynakla satır satır karşılaştırın; Restore (Geri yükle) onu editöre geri koyar (yeni sürüm olması için kaydedin).
7. Günlüğü izleyin
Log and status'u (Günlük ve durum) açın. Günlük ctx.log satırlarını, uyarıları ve hataları gösterir; Follow tail
(Sona kaydır) en yeni satırı görünür tutar. Durum satırı Running, Quarantined, Version, Runs, Errors,
Last run, Last error, Avg (ms), Commands, Rejected, Published ve Skipped'i gösterir.

Ağ geçidi her betiğin son 500 günlük satırını tutar. Aynı durum değerleri ekranlar, alarmlar ve tarihçe için
System.Scripts.<ad>.* sinyalleri olarak da vardır.
Sonuç
Betik sunucuda çalışır ve durumunu (ctx.state) yeniden başlatmalarda korur. Gönderdiği her komut, tetikleyici ve sürümle
birlikte komut kaydında script:<ad> olarak yer alır.
Bilmekte yarar var
- Karantina. Bir betiğin süreci beş dakikada beş kez çökerse betik karantinaya alınır: bekler ve yüksek öncelikli bir
script_<ad>sistem alarmı üretilir. Karantinayı kaldırmak için betiği düzeltip yeniden kaydedin. - Sınırlar. Süre sınırından uzun süren işleyici kesilir ve hata sayılır; bellek sınırını aşan betik yeniden başlatılır. Bkz. Sınırlar.
- Toplu işlem. Betikleri dosya olarak yüklemek ya da yedeklemek için bkz. Sunucu betiklerini içe ve dışa aktarma.
- Örnekler. Bkz. Sunucu betiği örnekleri.